' AMOS Adventure Game - Last Update 26/7/98 ' Newest addition - Finished Room 2, added extra Help ' I be public domain! Spread me around, I want to travel! ' Read docs for more info. ' Don't expect much explaination of the game engine tho'! ' A curse of a thousand horseflies on he who steals my code! Screen Open 0,640,256,8,Hires Palette ,,,,,,,$FF0 Dim DESC$(9) Dim _GETINST$(5) Ink 3 Autoback 1 Paper 0 Hide _GETINST$(1)="What do you want me to do now?" _GETINST$(2)="Give me an instruction" _GETINST$(3)="Tell me what to do" _GETINST$(4)="What should I do?" _GETINST$(5)="I await your command" Repeat Locate 0,0 ' Room 0 _PAPER=0 _KEY=0 _BOOK=0 _PLUNGER=0 _FISH=0 _SHELF=0 _WORKTOP=0 _SINK=0 _DOOR=0 _HOLE=0 _SPIDER=0 ' Room 1 _BIN=0 _BAG=0 _LADDER=0 _BUSH=0 _WOOD=0 _HAMMER=0 _CHEESE=0 _WINDOW=0 ' Room 2 _CABINET=0 _BED=0 _SHELF2=0 _RUG=0 _SAFE=0 _PILLOW=0 _MOUSE=0 _DOOR2=0 _HANDLE=0 _CUBE=0 _SCREWS=0 _SCREWDRIVER=0 _DIARY=0 ' Room 3 _PLANT=0 _TABLE=0 _DOOR3=0 _MATCHES=0 ' Misc _SCORE=0 _MOVES=0 _ENDEND=False _ROOM=0 Global _PAPER,_KEY,_BOOK,_PLUNGER,_FISH,_SHELF,_WORKTOP,_SINK,_DOOR Global _HOLE,_SPIDER,COUNT,COUNT2,COUNT3,VERB$,NOUN1$,NOUN2$,MESSAGE$ Global COMM$,DEAD,_SHELF,_SINK,_HOLE,_END,DESC$(),_ROOM,NAME$ Global _BIN,_BAG,_LADDER,_BUSH,_WOOD,_HAMMER,_CHEESE,_WINDOW,_SCORE Global _MOVES,_CABINET Global _BED,_SHELF2,_RUG,_SAFE,_PILLOW Global _MOUSE,_DOOR2,_HANDLE,_CUBE,_SCREWS,_SCREWDRIVER,_DIARY Global _PLANT,_TABLE,_DOOR3,_MATCHES DESC$(1)="Puzzle number one - how do you get out of the garden shed? There" DESC$(2)="are a few clues around, but it shouldn't be too hard to work out" DESC$(3)="what to do. Other rooms won't be as easy! Now, where's that key?" DESC$(4)="" DESC$(6)="You can see:" DESC$(8)="" DESC$(9)="What do you want me to do?" DEAD=False _END=False Cls 0 ' Verbs are: ' GET, TAKE, KILL, E(X)AMINE, (N)ORTH, (S)OUTH, (E)AST, (W)EST, USE, OPEN ' READ, TALK, QUIT, DIE, (I)NVENTORY, (U)P, (D)OWN, (L)OOK, HELP ' SAVE, LOAD, SCORE Pen 7 For LOP=1 To 4 Print DESC$(LOP) Next LOP Pen 5 Proc _LOOK COMM$=" " Repeat Pen 4 If COMM$<>"" Then Print DESC$(9) VERB$="" NOUN1$="" NOUN2$="" Pen 2 Input COMM$ If COMM$<>"" Then Proc _ANALYSE_INPUT Pen 5 MESSAGE$="" If VERB$="GET" Then Proc _GET If VERB$="TAKE" Then Proc _GET If VERB$="KILL" Then Proc _KILL If VERB$="EXAMINE" or VERB$="X" Then Proc _EXAMINE If VERB$="N" or VERB$="NORTH" Then Proc _NORTH If VERB$="S" or VERB$="SOUTH" Then Proc _SOUTH If VERB$="E" or VERB$="EAST" Then Proc _EAST If VERB$="W" or VERB$="WEST" Then Proc _WEST If VERB$="U" or VERB$="UP" Then Proc _UP If VERB$="D" or VERB$="DOWN" Then Proc _DOWN If VERB$="USE" Then Proc _USE If VERB$="OPEN" Then Proc _OPEN If VERB$="READ" Then Proc _EXAMINE If VERB$="QUIT" Then Proc _QUIT If VERB$="DIE" Then Proc _DIE : DEAD=True If VERB$="I" or VERB$="INVENTORY" Then Proc _I If VERB$="L" or VERB$="LOOK" Then Locate 0,0 : Cls 0 : Proc _LOOK If VERB$="HELP" Then Proc _HELP If VERB$="TALK" Then Proc _TALK If VERB$="SAVE" Then Proc _SAVE If VERB$="LOAD" Then Proc _LOAD If VERB$="SCORE" Then Proc _SCORE If MESSAGE$="" and COMM$<>"" Then MESSAGE$="That made no sense to me at all." : Print MESSAGE$ If MESSAGE$<>"" and VERB$<>"SCORE" Then Inc _MOVES RANDOM=Rnd(4)+1 DESC$(9)=_GETINST$(RANDOM) Until DEAD=True or _END=True If DEAD=True Then Proc DEADERTHANADOORNAIL Print Proc _SCORE Pen 5 Print Print "Another go? (Y/N)" Repeat Input _YESNO$ _YESNO$=Upper$(Left$(_YESNO$,1)) Until _YESNO$="Y" or _YESNO$="N" If _YESNO$="N" Then _ENDEND=True Until _ENDEND=True End Procedure DEADERTHANADOORNAIL Print "It seems you are dead. How stupid of you!" End Proc Procedure _ANALYSE_INPUT COMM$=Upper$(COMM$) COUNT=0 Repeat Add COUNT,1 If Mid$(COMM$,COUNT,1)=" " Then VERB$=Left$(COMM$,COUNT-1) If COUNT=Len(COMM$) Then VERB$=COMM$ Until COUNT=Len(COMM$) or VERB$<>"" If COUNT" " Then Proc NOUN1 Repeat If COUNT" " Then Proc NOUN2 Until NOUN2$<>"WITH" and NOUN2$<>"ON" and NOUN2$<>"TO" and NOUN2$<>"IN" End Proc Procedure NOUN1 COUNT2=COUNT Repeat Add COUNT,1 If Mid$(COMM$,COUNT,1)=" " Then NOUN1$=Mid$(COMM$,COUNT2+1,COUNT-COUNT2-1) If COUNT=Len(COMM$) Then NOUN1$=Right$(COMM$,COUNT-COUNT2) Until NOUN1$<>"" End Proc Procedure NOUN2 NOUN2$="" COUNT3=COUNT Repeat Add COUNT,1 If Mid$(COMM$,COUNT,1)=" " Then NOUN2$=Mid$(COMM$,COUNT3+1,COUNT-COUNT3-1) If COUNT=Len(COMM$) Then NOUN2$=Right$(COMM$,COUNT-COUNT3) Until NOUN2$<>"" End Proc Procedure _GET MESSAGE$="" ' Room 0 If NOUN1$="PAPER" or NOUN1$="NEWSPAPER" or NOUN1$="BOOK" or NOUN1$="NOTEBOOK" Then Proc _GETITEM If NOUN1$="SPIDER" or NOUN1$="PLUNGER" or NOUN1$="KEY" or NOUN1$="HERRING" Then Proc _GETITEM If NOUN1$="RED" or NOUN1$="FISH" Then Proc _GETITEM ' Room 1 If NOUN1$="PLASTIC" or NOUN1$="BAG" or NOUN1$="WOOD" or NOUN1$="HAMMER" or NOUN1$="CHEESE" Then Proc _GETITEM ' Room 2 If NOUN1$="SCREWS" or NOUN1$="HANDLE" or NOUN1$="MOUSE" or NOUN1$="DIARY" or NOUN1$="CUBE" or NOUN1$="SCREWDRIVER" or NOUN1$="DRIVER" or NOUN1$="PILLOW" Then Proc _GETITEM ' Room 0 If NOUN1$="WORKTOP" or NOUN1$="SINK" or NOUN1$="DOOR" or NOUN1$="SHELF" or NOUN1$="BUCKET" Then Proc _GETTHING If NOUN1$="SELF" or NOUN1$="YOURSELF" or NOUN1$="HOLE" Then Proc _GETTHING ' Room 1 If NOUN1$="DUSTBIN" or NOUN1$="LADDER" or NOUN1$="DOOR" or NOUN1$="SIGN" or NOUN1$="BUSH" Then Proc _GETTHING If NOUN1$="WINDOW" or NOUN1$="BIN" Then Proc _GETTHING ' Room 2 If NOUN1$="BED" or NOUN1$="CABINET" or NOUN1$="SHELF" or NOUN1$="SAFE" or NOUN1$="RUG" Then Proc _GETTHING If NOUN1$="" Then MESSAGE$=VERB$+" what?" If MESSAGE$="" Then MESSAGE$="I can't see a "+NOUN1$+" anywhere" Print MESSAGE$ End Proc Procedure _GETITEM ' Room 0 If NOUN1$="PAPER" or NOUN1$="NEWSPAPER" Then Proc _GETPAPER If NOUN1$="FISH" or NOUN1$="RED" or NOUN1$="HERRING" Then Proc _GETFISH If NOUN1$="BOOK" or NOUN1$="NOTEBOOK" Then Proc _GETBOOK If NOUN1$="SPIDER" Then Proc _GETSPIDER If NOUN1$="PLUNGER" Then Proc _GETPLUNGER If NOUN1$="KEY" Then Proc _GETKEY ' Room 1 If NOUN1$="HAMMER" Then Proc _GETHAMMER If NOUN1$="CHEESE" Then Proc _GETCHEESE If NOUN1$="WOOD" Then Proc _GETWOOD If NOUN1$="PLASTIC" or NOUN1$="BAG" Then Proc _GETBAG ' Room 2 If NOUN1$="CUBE" Then Proc _GETCUBE If NOUN1$="PILLOW" Then Proc _GETPILLOW If NOUN1$="SCREWS" Then Proc _GETSCREWS If NOUN1$="SCREWDRIVER" or NOUN1$="DRIVER" Then Proc _GETSCREWDRIVER If NOUN1$="DIARY" Then Proc _GETDIARY If NOUN1$="HANDLE" Then Proc _GETHANDLE If NOUN1$="MOUSE" Then Proc _GETMOUSE End Proc Procedure _GETPAPER If _PAPER=1 Then MESSAGE$="The Evening Herald is in your hand, silly" If _PAPER=0 and _SHELF=1 and _ROOM=0 Then _PAPER=1 : MESSAGE$="You reach across from the bucket to grab the paper, do so, and fall over" : Inc _SCORE End Proc Procedure _GETFISH If _FISH=1 Then MESSAGE$="You already have the red herring" If _FISH=0 and _ROOM=0 Then _FISH=1 : MESSAGE$="You take the rouge piscine. It is slimey and smelly." : Inc _SCORE End Proc Procedure _GETBOOK If _BOOK=1 Then MESSAGE$="The notebook is already in your possession" If _BOOK=0 and _WORKTOP=1 and _ROOM=0 Then _BOOK=1 : MESSAGE$="The notebook is taken. There is something written on it." : Inc _SCORE End Proc Procedure _GETSPIDER If _SPIDER=1 and _ROOM=0 Then MESSAGE$="Urgh, I'm not taking THAT gooey mess!!" If _WORKTOP=1 and _SPIDER=0 and _ROOM=0 Then MESSAGE$="The spider bites your hand off, and then devours the rest of you" : DEAD=True End Proc Procedure _GETPLUNGER If _PLUNGER=1 Then MESSAGE$="You already have the plunger" If _SPIDER=0 and _WORKTOP=1 and _ROOM=0 and _PLUNGER=0 Then MESSAGE$="You disturb the spider, which eats you whole (Blimey! It must have been big!)" : DEAD=True If _SPIDER=1 and _PLUNGER=0 and _ROOM=0 Then _PLUNGER=1 : MESSAGE$="You drag the sink plunger out of the hole" : Inc _SCORE End Proc Procedure _GETKEY If _KEY=1 Then MESSAGE$="You took the key earlier, and you still have it" If _SINK=1 and _KEY=0 and _ROOM=0 Then _KEY=1 : MESSAGE$="You pull the key out of the sink. Urgh, it's dirty." : Inc _SCORE End Proc Procedure _GETHAMMER If _HAMMER=1 Then MESSAGE$="You already have the hammer, and it is currently weighing your trousers down." If _BIN=1 and _HAMMER=0 and _ROOM=1 Then _HAMMER=1 : MESSAGE$="You heave the heavy hammer (wow! alliteration!) out of the dustbin." : Inc _SCORE End Proc Procedure _GETCHEESE If _CHEESE=1 Then MESSAGE$="From the smell it's obvious that you already have the cheese." If _BIN=1 and _CHEESE=0 and _ROOM=1 Then _CHEESE=1 : MESSAGE$="You hold your nose as you pull the cheese out of the bin. The smell nearly kills you." : Inc _SCORE End Proc Procedure _GETWOOD If _WOOD=1 Then MESSAGE$="The wood is still in your grasp." If _BUSH=1 and _WOOD=0 and _ROOM=1 Then _WOOD=1 : MESSAGE$="While being ripped to shreds on the thorns, you take the wood from the bush." : Inc _SCORE End Proc Procedure _GETBAG If _BAG=1 Then MESSAGE$="The (frankly quite useless looking) plastic bag is already in your hands." If _BAG=0 and _ROOM=1 Then _BAG=1 : MESSAGE$="You take the plastic bag. It is full of holes - useless!" : Inc _SCORE End Proc Procedure _GETCUBE If _CUBE>0 Then MESSAGE$="You already have this Really Useful Item." If _ROOM=2 and _SHELF2=1 and _CUBE=0 Then MESSAGE$="You take the Rubik cube, although it's use in this game is doubtful." : _CUBE=1 End Proc Procedure _GETPILLOW If _PILLOW=1 Then MESSAGE$="The pillow is already secreted about your person." If _ROOM=2 and _BED=1 and _PILLOW=0 Then MESSAGE$="You pick up the pillow, and after some difficulty manage to jam it in"+Chr$(10)+Chr$(13)+"your pocket. Now you look silly. There was a screwdriver underneath." : _PILLOW=1 End Proc Procedure _GETSCREWS If _SCREWS=1 Then MESSAGE$="You already have the screws."+Chr$(10)+Chr$(13)+"Perhaps you could use them to tighten up your brain?" If _SCREWS=0 and _ROOM=2 and _RUG=1 Then MESSAGE$="You bend down and pick up all the screws. There are four of them." : _SCREWS=1 End Proc Procedure _GETSCREWDRIVER If _SCREWDRIVER=1 Then MESSAGE$="That item is already in your inventory. Incidently, its the `tool~ kind,"+Chr$(10)+Chr$(13)+"not the `cocktail~ kind. Sadly." If _ROOM=2 and _SCREWDRIVER=0 and _PILLOW=1 Then MESSAGE$="The screwdriver is taken. Hmm, I wonder what you could use that for?" : _SCREWDRIVER=1 End Proc Procedure _GETDIARY If _DIARY=1 Then MESSAGE$="The diary has been taken already. It is in your pocket." If _ROOM=2 and _CABINET=1 and _DIARY=0 Then MESSAGE$="You take the diary. Someone is bound to notice that missing!" : _DIARY=1 End Proc Procedure _GETMOUSE If _MOUSE=1 Then MESSAGE$="Due to the gnawing sensation on your leg, it is obvious that you have the"+Chr$(10)+Chr$(13)+"mouse already." If _ROOM=2 and _MOUSE=0 and _BED=1 Then MESSAGE$="You take the little mouse. Aaaah, it squeaks at you!" : _MOUSE=1 End Proc Procedure _GETHANDLE If _HANDLE=1 Then MESSAGE$="The door handle is already in your inventory." If _HANDLE=0 and _ROOM=2 and _BED=1 Then MESSAGE$="The brass door handle is picked up." : _HANDLE=1 End Proc Procedure _GETTHING ' Room 0 If NOUN1$="SELF" or NOUN1$="YOURSELF" Then MESSAGE$="You can't do that!!" If NOUN1$="HOLE" and _WORKTOP=1 and _SPIDER=0 and _ROOM=0 Then MESSAGE$="You try to take the hole, but the spider prevents you." If NOUN1$="HOLE" and _SPIDER=1 and _WORKTOP=1 and _ROOM=0 Then MESSAGE$="Er, how?" If NOUN1$="HOLE" and _WORKTOP=0 and _ROOM=0 Then MESSAGE$="I can't see a HOLE anywhere." If NOUN1$="BUCKET" and _ROOM=0 Then MESSAGE$="No. I don't want to. Besides, it seems to be glued to the floor." If(NOUN1$="WORKTOP" or NOUN1$="SINK") and _ROOM=0 Then MESSAGE$="The "+NOUN1$+" is firmly bolted down. It ain't goin' anywhere." ' Room 1 If(NOUN1$="BIN" or NOUN1$="DUSTBIN") and _ROOM=1 Then MESSAGE$="The dustbin is far too heavy to lift." If NOUN1$="BUSH" and _ROOM=1 Then MESSAGE$="Think about it - bushes grow in the ground, if I take it, I take the ground too.It just won't happen." If NOUN1$="LADDER" and _ROOM=1 Then MESSAGE$="The ladder is a bit heavy for that." If NOUN1$="WINDOW" and(_ROOM=1 or _ROOM=2) Then MESSAGE$="No no no, can't do that!" ' Room 2 If NOUN1$="BED" and _ROOM=2 Then MESSAGE$="Oh, of course. I'll just put it in my pocket shall I?" If NOUN1$="SAFE" and _ROOM=2 Then MESSAGE$="I think Mr. Safe is quite happy where he is." If NOUN1$="RUG" and _ROOM=2 Then MESSAGE$="Luminous green with these stylish clothes? I'd rather die!" ' End bit If MESSAGE$="" Then MESSAGE$="The "+NOUN1$+" can't be taken." End Proc Procedure _TALK MESSAGE$="" If NOUN2$="SPIDER" and _SPIDER=1 and _ROOM=0 Then MESSAGE$="It isn't going to answer you - its dead y'see." If NOUN2$="SPIDER" and _SPIDER=0 and _WORKTOP=1 and _ROOM=0 Then MESSAGE$="Spiders are not well known for their conversational capabilities. Doh!" If NOUN2$="FISH" or NOUN2$="RED" or NOUN2$="HERRING" and(_ROOM=0 or _FISH=1) Then MESSAGE$="The fish looks blankly at you through long dead eyes." If NOUN2$="SELF" or NOUN2$="YOURSELF" Then MESSAGE$="Um, 'Hello me!'. 'Hi there!'. They're coming to take you away, haha...." If NOUN2$="BUSH" and _ROOM=1 Then MESSAGE$="`Well hello there Mr Bush!~ says you. `Please, call me George~ says the bush." If NOUN2$="DUSTBIN" or NOUN2$="BIN" and _ROOM=1 Then MESSAGE$="`3, 2, 1!~ you say. The dusty bin replies `Oh God, it's Ted Rogers!~. You're speechless at the insult." If NOUN2$="MOUSE" and _BED=1 and((_ROOM=2 and _MOUSE=0) or _MOUSE=1) Then MESSAGE$="`Aaaaah! Hello ikkle mousey!~ you say."+Chr$(10)+Chr$(13)+"`You're talking to a mouse? Who the hell do you think you are, Dr. Dolittle?~" If NOUN2$="DIARY" and(_ROOM=2 or _DIARY=1) and _CABINET=1 Then MESSAGE$="`Dear Diary, I've not been having a good day today. I woke up in a shed,"+Chr$(10)+Chr$(13)+"and I seem to be lost. Things just never go right for me.~" If NOUN2$="" Then MESSAGE$="TALK to what?" If MESSAGE$="" Then MESSAGE$="Talk to the "+Lower$(NOUN2$)+", eh? You're mad aren't you?" Print MESSAGE$ End Proc Procedure _KILL MESSAGE$="" If NOUN2$="" Then MESSAGE$="KILL "+NOUN1$+" with what?" If NOUN1$="SELF" or NOUN1$="YOURSELF" Then MESSAGE$="You commit suicide, and hence die" : DEAD=True If NOUN1$="SPIDER" and _ROOM=0 and(NOUN2$="PAPER" or NOUN2$="NEWSPAPER") and _SPIDER=1 Then MESSAGE$="The spider is already in the Netherworld" If NOUN1$="SPIDER" and _ROOM=0 and(NOUN2$="PAPER" or NOUN2$="NEWSPAPER") and _SPIDER=0 and _WORKTOP=1 Then MESSAGE$="`Whizzzzz!!~ says the paper. `Splaaat!!~ says the spider." : _SPIDER=1 : Inc _SCORE If(NOUN1$="FISH" or NOUN1$="RED" or NOUN1$="HERRING") and(_ROOM=0 or _FISH=1) Then MESSAGE$="No, its already dead, what with not being in water and all...." If NOUN1$="" Then MESSAGE$="KILL what?" If MESSAGE$="" Then MESSAGE$="That doesn't actually make any sense, does it?" Print MESSAGE$ End Proc Procedure _NORTH MESSAGE$=Chr$(0) Print "Not being a ghost, walking through solid walls is quite difficult. After a" Print "few hours of trying, you give up." Print MESSAGE$ End Proc Procedure _SOUTH MESSAGE$=Chr$(0) Print "Not being a ghost, walking through solid walls is quite difficult. After a" Print "few hours of trying, you give up." Print MESSAGE$ End Proc Procedure _EAST MESSAGE$=Chr$(0) If _ROOM<>1 Then MESSAGE$="Not being a ghost, walking through solid walls is quite difficult."+Chr$(10)+Chr$(13)+"After a few hours of trying, you give up." If _ROOM=1 Then Locate 0,0 : Cls 0 : Print "You go east." : _ROOM=0 : MESSAGE$=String$(Chr$(0),2) : Proc _LOOK If _ROOM=2 and _DOOR2<2 Then MESSAGE$="The door is closed. I'd open it first before trying to walk through it." If _ROOM=2 and _DOOR2=2 Then Locate 0,0 : Cls 0 : Print "You go east." : MESSAGE$=String$(Chr$(0),2) : _ROOM=3 : Proc _LOOK Print MESSAGE$ End Proc Procedure _WEST MESSAGE$=Chr$(0) If _ROOM=1 or _ROOM=2 or _ROOM=3 and MESSAGE$=Chr$(0) Then MESSAGE$="Not being a ghost, walking through solid walls is quite difficult."+Chr$(10)+Chr$(13)+"After a few hours of trying, you give up." If _DOOR<>2 and _ROOM=0 Then MESSAGE$="You try to walk through the door, but it's closed. Ouch." If _DOOR=2 and _ROOM=0 Then Locate 0,0 : Cls 0 : Print "You go west" : _ROOM=1 : MESSAGE$=String$(Chr$(0),2) : Proc _LOOK If _ROOM=3 Then Locate 0,0 : Cls 0 : Print "You go west, into the bedroom." : _ROOM=2 : MESSAGE$=String$(Chr$(0),2) : Proc _LOOK Print MESSAGE$ End Proc Procedure _UP MESSAGE$=Chr$(0) If _ROOM=1 and _WINDOW=0 Then MESSAGE$=String$(Chr$(0),2) : Print "You can't get through the window." If _ROOM=1 and _LADDER=2 and _WINDOW=1 Then MESSAGE$=String$(Chr$(0),2) : Locate 0,0 : Cls 0 : Print "You go up the ladder." : _ROOM=2 : Proc _LOOK If MESSAGE$=Chr$(0) Then Print "You cannot go that way." Print MESSAGE$ End Proc Procedure _DOWN MESSAGE$=Chr$(0) If _ROOM=2 Then MESSAGE$=String$(Chr$(0),2) : Locate 0,0 : Cls 0 : Print "You go down the ladder into the garden." : _ROOM=1 : Proc _LOOK If MESSAGE$=Chr$(0) Then Print "You cannot go that way." Print MESSAGE$ End Proc Procedure _OPEN ' Room 0 If NOUN1$="DOOR" and _DOOR=2 and(_ROOM=0 or _ROOM=1) Then MESSAGE$="The door is open already. You should know - you did it." If NOUN1$="DOOR" and _DOOR=0 and _ROOM=0 and NOUN2$<>"KEY" Then MESSAGE$="You yank the handle, pull and pull, then remember - its locked." If NOUN1$="DOOR" and _DOOR=0 and _ROOM=0 and NOUN2$="KEY" and _KEY=1 Then _DOOR=2 : MESSAGE$="You use the key on the door, then open it. You can see outside." : Inc _SCORE : Inc _SCORE If NOUN1$="DOOR" and _DOOR=1 and _ROOM=0 and NOUN2$<>"KEY" Then _DOOR=2 : MESSAGE$="You open the door, and can see outside" : Inc _SCORE ' Room 1 If(NOUN1$="DUSTBIN" or NOUN1$="BIN") and _ROOM=1 and _BIN=1 Then MESSAGE$="It is already open. You can tell by the smell!" If(NOUN1$="DUSTBIN" or NOUN1$="BIN") and _ROOM=1 and _BIN=0 Then _BIN=1 : MESSAGE$="You take the lid off the bin."+Chr$(10)+Chr$(13)+"There is some cheese and a hammer in the rubbish." : Inc _SCORE ' Room 2 If NOUN1$="DOOR" and _ROOM=2 and _DOOR2=2 Then MESSAGE$="The door is open. Either that or you have x-ray vision." If NOUN1$="DOOR" and _DOOR2=1 and _ROOM=2 Then MESSAGE$="You open the door, revealing what looks like an upstairs landing." : _DOOR2=2 If NOUN1$="DOOR" and _ROOM=2 and _DOOR2=0 Then MESSAGE$="That is difficult. The door is without a handle you see." If NOUN1$="SAFE" and _ROOM=2 and _SAFE=0 Then MESSAGE$="Somehow I don't think the programmer would have made it that simple."+Chr$(10)+Chr$(13)+"The safe is locked. Perhaps you should find the combination and try that?" If NOUN1$="SAFE" and _ROOM=2 and _SAFE=2 Then MESSAGE$="The safe is already open. You've done that bit." If NOUN1$="SAFE" and _ROOM=2 and _SAFE=1 Then MESSAGE$="You pull the handle, and as if by magic (or Physics), the door opens. Coo." : _SAFE=2 ' Misc If NOUN1$="SELF" or NOUN1$="YOURSELF" Then MESSAGE$="Your insides spill out all over the floor, you rapidly lose blood and die." : DEAD=True If NOUN1$="" Then MESSAGE$="OPEN what?" If MESSAGE$="" Then MESSAGE$="You can't do that!!" Print MESSAGE$ End Proc Procedure _I MESSAGE$=" " _HOLD=0 Print "You are holding: " If _PAPER=1 Then Print "A copy of The Evening Herald (dated 1966)." : _HOLD=1 If _KEY=1 Then Print "A rusty, smelly, slimey key." : _HOLD=1 If _FISH=1 Then Print "A useless red herring." : _HOLD=1 If _PLUNGER=1 Then Print "A sink plunger." : _HOLD=1 If _BOOK=1 Then Print "A notebook." : _HOLD=1 If _BAG=1 Then Print "A plastic bag which is full of holes." : _HOLD=1 If _CHEESE=1 Then Print "Some incredibly vile mouldy cheese (mmm, yummy)." : _HOLD=1 If _WOOD=1 Then Print "A piece of cylindrical wood, about 18 inches long and an inch wide." : _HOLD=1 If _HAMMER=1 Then Print "A just-itching-to-break-something hammer." : _HOLD=1 If _PILLOW=1 Then Print "A nice big fluffy pillow." : _HOLD=1 If _MOUSE=1 Then Print "A real live mouse." : _HOLD=1 If _HANDLE=1 Then Print "A door handle, sans door." : _HOLD=1 If _CUBE=1 Then Print "An Original Rubik Cube (TM, probably)." : _HOLD=1 If _SCREWS=1 Then Print "Some screws that look like they might be used in a door handle (a hint?)." : _HOLD=1 If _SCREWDRIVER=1 Then Print "A screwdriver for driving screws." : _HOLD=1 If _DIARY=1 Then Print "The Secret Diary of Some Bloke Or Other." : _HOLD=1 If _HOLD=0 Then Print "Absolutely nothing at all." End Proc Procedure _EXAMINE TEMP_FLAG=False ' Generally Room 0 If NOUN1$="FISH" or NOUN1$="RED" or NOUN1$="HERRING" and(_ROOM=0 or _FISH=1) Then MESSAGE$="It is a large, smelly, slimey, useless red herring" If _PAPER=1 and(NOUN1$="PAPER" or NOUN1$="NEWSPAPER") and _SPIDER=1 Then MESSAGE$="A copy of The Evening Herald with bits of dead spider stuck to it." If _PAPER=1 and(NOUN1$="PAPER" or NOUN1$="NEWSPAPER") and MESSAGE$="" Then MESSAGE$="The Evening Herald 2nd June 1966. The headline reads `ARACHNID SPLAT HORROR~." If(NOUN1$="PAPER" or NOUN1$="NEWSPAPER") and _SHELF=1 and _PAPER=0 and _ROOM=0 Then MESSAGE$="I can't read it from here" If NOUN1$="SHELF" and _SHELF=0 and _ROOM=0 Then MESSAGE$="Its too high" If NOUN1$="SHELF" and _SHELF=1 and _ROOM=0 and _PAPER=0 Then MESSAGE$="A high shelf. There is a newspaper on it." If NOUN1$="SHELF" and _SHELF=1 and _ROOM=0 and _PAPER=1 Then MESSAGE$="A high shelf." If NOUN1$="BUCKET" and _ROOM=0 Then MESSAGE$="Its an upturned bucket. It looks quite sturdy (hint, hint)" If NOUN1$="WORKTOP" and _ROOM=0 and _WORKTOP=1 Then MESSAGE$="There is a notebook on it, and a hole containing a spider and a sink plunger underneath it." If NOUN1$="WORKTOP" and _ROOM=0 and _WORKTOP=0 Then _WORKTOP=1 : MESSAGE$="There is a notebook on it, and a hole containing a spider and a sink plunger underneath it." : Inc _SCORE If NOUN1$="WORKTOP" and _ROOM=0 and _BOOK=1 and _SPIDER=0 Then MESSAGE$="An ordinary worktop with a hole containing a spider and a sink plunger under it." If NOUN1$="WORKTOP" and _ROOM=0 and _BOOK=1 and _SPIDER=1 and _PLUNGER=0 Then MESSAGE$="A wooden worktop. There is a dead spider and a plunger in a hole under it." If NOUN1$="WORKTOP" and _ROOM=0 and _BOOK=1 and _PLUNGER=1 Then MESSAGE$="A wooden worktop above a hole containing a dead spider." If NOUN1$="WORKTOP" and _ROOM=0 and _BOOK=0 and _SPIDER=1 and _PLUNGER=0 Then MESSAGE$="There is a notebook on it, and a spider (deceased) and a sink plunger in a hole underneath." If NOUN1$="WORKTOP" and _ROOM=0 and _BOOK=0 and _PLUNGER=1 Then MESSAGE$="A wooden worktop with a notebook on it, and a hole with a dead spider in under it." If NOUN1$="SINK" and _ROOM=0 Then MESSAGE$="A chrome sink with lead pipes, which seems to be blocked." If NOUN1$="SINK" and _ROOM=0 and _SINK=1 and _KEY=0 Then MESSAGE$="A chrome sink. There is a key in the plughole." If NOUN1$="SINK" and _ROOM=0 and _KEY=1 Then MESSAGE$="A chrome sink." If NOUN1$="HOLE" and _ROOM=0 and _WORKTOP=1 and _SPIDER=0 Then _HOLE=1 : MESSAGE$="A large hole containing a fearsome spider and what seems to be a sink plunger" If NOUN1$="HOLE" and _ROOM=0 and _SPIDER=1 and _PLUNGER=1 Then MESSAGE$="A large hole containing a dead spider" If NOUN1$="HOLE" and _ROOM=0 and _SPIDER=1 and _PLUNGER=0 Then MESSAGE$="A large hole containing a sink plunger and a dead spider" If NOUN1$="SPIDER" and _ROOM=0 and _SPIDER=0 and _WORKTOP=1 Then MESSAGE$="The spider won't allow you to do that" If NOUN1$="SPIDER" and _ROOM=0 and _ROOM=0 and _SPIDER=1 Then MESSAGE$="A gooey, squishy dead spider. Some of it is still stuck to the newspaper." If NOUN1$="DOOR" and _DOOR=0 and(_ROOM=0 or _ROOM=1) Then MESSAGE$="A locked door set in the west wall" If NOUN1$="DOOR" and _DOOR=1 and(_ROOM=0 or _ROOM=1) Then MESSAGE$="An unlocked door set in the west wall of the shed" If NOUN1$="DOOR" and _DOOR=2 and _ROOM=0 Then MESSAGE$="An open door to the west." If NOUN1$="DOOR" and _ROOM=1 Then MESSAGE$="An open door which leads east." If(NOUN1$="BOOK" or NOUN1$="NOTEBOOK") and _WORKTOP=1 and(_BOOK=1 or _ROOM=0) Then MESSAGE$="There are some words on it, they read `KNISEH TNISI YE KEHT~. Spooky!" If NOUN1$="SELF" or NOUN1$="YOURSELF" Then MESSAGE$="There is no mirror, so you can't do that" If NOUN1$="PLUNGER" and _ROOM=0 and _WORKTOP=1 and _SPIDER=0 Then MESSAGE$="The spider growls menacingly at you when you try, so you back away." If NOUN1$="PLUNGER" and(_ROOM=0 or _PLUNGER=1) and _SPIDER=1 Then MESSAGE$="It appears to be normal in every way. Except for the fact it is green with orange spots." If NOUN1$="KEY" and _SINK=1 Then MESSAGE$="A dirty key. Gosh, I wonder what it's for?" ' Generally Room 1 If(NOUN1$="DUSTBIN" or NOUN1$="BIN") and _ROOM=1 and _BIN=0 Then MESSAGE$="Its a normal looking dustbin. It is quite pongy though." If(NOUN1$="DUSTBIN" or NOUN1$="BIN") and _ROOM=1 and _BIN=1 Then MESSAGE$="An open dustbin." If MESSAGE$="An open dustbin." and _HAMMER=0 and _CHEESE=0 Then MESSAGE$=MESSAGE$+" There is a hammer and some cheese amongst the rubbish." If MESSAGE$="An open dustbin." and _HAMMER=0 Then MESSAGE$=MESSAGE$+" You can see a hammer inside." If MESSAGE$="An open dustbin." and _CHEESE=0 Then MESSAGE$=MESSAGE$+" There is some very smelly cheese in it." If NOUN1$="LADDER" and _ROOM=1 and _LADDER=0 Then MESSAGE$="An ordinary ladder lying on the floor. There is a rung missing." If NOUN1$="LADDER" and _ROOM=1 and _LADDER=1 Then MESSAGE$="An ordinary ladder lying on the floor." If NOUN1$="LADDER" and _ROOM=1 and _LADDER=2 Then MESSAGE$="A ladder propped up against the wall. Looks safe to me!" If NOUN1$="BUSH" and _BUSH=1 and _WOOD=0 and _LADDER=0 and _ROOM=1 Then MESSAGE$="A very prickly green bush (stabicus handia) with a bit of wood in it." If NOUN1$="BUSH" and _BUSH=1 and(_WOOD=1 or _LADDER>0) and _ROOM=1 Then MESSAGE$="A prickly bush to which some bits of your arm are stuck." If NOUN1$="BUSH" and _BUSH=0 and _ROOM=1 Then _BUSH=1 : MESSAGE$="A scary looking spikey green bush. There is a bit of wood in it." : Inc _SCORE If(NOUN1$="PLASTIC" or NOUN1$="BAG") and((_BAG=0 and _ROOM=1) or _BAG=1) Then MESSAGE$="A plastic bag which is full of holes." If NOUN1$="CHEESE" and(_CHEESE=1 or(_ROOM=1 and _BIN=1 and _CHEESE=0)) Then MESSAGE$="Some very smelly mouldy cheese. You feel sick." If NOUN1$="HAMMER" and(_HAMMER=1 or(_ROOM=1 and _BIN=1)) Then MESSAGE$="A very violent looking hammer. Mass destruction alert!!" If NOUN1$="SIGN" and _ROOM=1 Then MESSAGE$="It seems to be a normal house sign, except the name is in glowing neon lights. It reads - `DUNROAMIN~." If NOUN1$="WINDOW" and _ROOM=1 Then MESSAGE$="A large window high above you. It looks like it leads to a bedroom." If NOUN1$="WINDOW" and _ROOM=1 and _WINDOW=1 Then MESSAGE$="A broken window above you. Vandal!" If NOUN1$="WOOD" and((_ROOM=1 and _WOOD=0) or _WOOD=1) Then MESSAGE$="A short bit of round wood." ' Generally Room 2 If NOUN1$="BED" and _ROOM=2 Then MESSAGE$="A very comfortable looking double bed, neatly made." : _BED=1 If NOUN1$="BED" and _ROOM=2 and MESSAGE$<>"" and _MOUSE=0 Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+"Underneath the bed is a little brown mouse, nibbling at the carpet. Aaah!" If NOUN1$="BED" and _ROOM=2 and MESSAGE$<>"" and _HANDLE=0 Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+"A door handle is on the floor under the bed. Why?" If NOUN1$="BED" and _ROOM=2 and MESSAGE$<>"" and _PILLOW=0 Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+"A nice big fluffy pillow is at the head of the bed." If NOUN1$="BED" and _ROOM=2 and MESSAGE$<>"" and _PILLOW=1 and _SCREWDRIVER=0 Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+"A screwdriver is at the head of the bed. Obviously for `emergencies~." If NOUN1$="CABINET" and _ROOM=2 Then MESSAGE$="A nice and tasteful bright yellow cabinet." : _CABINET=1 If NOUN1$="CABINET" and _ROOM=2 and _CABINET=1 and _DIARY=0 Then MESSAGE$=MESSAGE$+" A diary is on top." If NOUN1$="RUG" and _ROOM=2 Then MESSAGE$="A nice and tasteful luminous green rug." : _RUG=1 If NOUN1$="RUG" and _ROOM=2 and _RUG=1 and _SCREWS=0 Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+"On inspection, there are some screws underneath it for some reason." If NOUN1$="WINDOW" and _ROOM=2 Then MESSAGE$="A window wot you broke. The owner isn't going to be pleased!" If NOUN1$="PILLOW" and _BED=1 and(_ROOM=2 or _PILLOW=1) Then MESSAGE$="A nice big fluffy pillow. A label on it reads `No Fighting~." If(NOUN1$="SCREWDRIVER" or NOUN1$="DRIVER") and _PILLOW=1 and(_ROOM=2 or _SCREWDRIVER=1) Then MESSAGE$="Its a normal flat-headed screwdriver. "+Chr$(10)+Chr$(13)+"I wonder what possible use it could have?" If NOUN1$="SHELF" and _ROOM=2 Then MESSAGE$="A quite ordinary shelf, used for shelving things." If NOUN1$="SHELF" and _ROOM=2 and _CUBE=0 Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+"Currently shelved is a Rubik cube. Golly, that's a useful item." : _SHELF2=1 If NOUN1$="SAFE" and _ROOM=2 Then MESSAGE$="Just like the `Safe Safe!~ advert... `If you want to keep it safe, buy a"+Chr$(10)+Chr$(13)+"Safe Safe! Safe Safe!~. This one is a combination lock safe." If NOUN1$="DOOR" and _ROOM=2 Then MESSAGE$="A door in the east wall." If NOUN1$="DOOR" and _ROOM=2 and _DOOR2=0 Then MESSAGE$=MESSAGE$+" There is no handle on the door." If NOUN1$="DOOR" and _ROOM=2 and _DOOR2=1 Then MESSAGE$=MESSAGE$+" A handle is now attached." If NOUN1$="DOOR" and _ROOM=2 and _DOOR2=2 Then MESSAGE$=MESSAGE$+" It is wide open." If NOUN1$="SCREWS" and _RUG=1 and(_ROOM=2 or _SCREWS=1) and _DOOR2=0 Then MESSAGE$="Some small brass screws. They are of the flat-head genus." If NOUN1$="MOUSE" and _ROOM=2 and _MOUSE=0 and _BED=1 Then MESSAGE$="A little brown mouse. Aaaaah, it's washing itself! Isn't that cute?" If NOUN1$="MOUSE" and _MOUSE=1 Then MESSAGE$="A little brown mouse, currently chewing through your pocket. Watch it!" If NOUN1$="HANDLE" and _BED=1 and(_ROOM=2 or _HANDLE=1) Then MESSAGE$="A nice brass door handle. The kind usually attached to a door." If NOUN1$="HANDLE" and _HANDLE=2 and _ROOM=2 Then MESSAGE$="A normal brass door handle, firmly affixed to the door." If NOUN1$="DIARY" and _CABINET=1 and(_ROOM=2 or _DIARY=1) Then MESSAGE$="A leather bound diary. It's full of all kind of appointments:" If Left$(MESSAGE$,8)="A leathe" Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+" Jan 27th - Take dog to vets for the chop. Do not tell dog." If Left$(MESSAGE$,8)="A leathe" Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+" Feb 14th - Buy some flowers or something." If Left$(MESSAGE$,8)="A leathe" Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+" Mar 2nd - Earth Invasion Day. Remember to pack Mini Ray Gun." If Left$(MESSAGE$,8)="A leathe" Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+" Mar 7th - Expected time for Earthling surrender. Victory is ours!" If Left$(MESSAGE$,8)="A leathe" Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+"Also scribbled in the back is the legend `808?~." If Left$(MESSAGE$,8)="A leathe" Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+Chr$(10)+Chr$(13)+"Earth Invasion Day? Does this mean Aliens are going to attack?"+Chr$(10)+Chr$(13)+"You also notice that today is Mar 1st." If NOUN1$="CUBE" and _ROOM=2 and _SHELF2=1 and _CUBE=0 Then MESSAGE$="I'd pick it up first if I was you." If NOUN1$="CUBE" and _CUBE>0 and _CUBE<5 Then MESSAGE$="An ordinary Rubik cube. However, it is all mixed up." If NOUN1$="CUBE" and _CUBE=5 Then MESSAGE$="A completed Rubik cube, with all the sides the correct colours. Well done!" ' Generally Room 3 If NOUN1$="PLANT" and _ROOM=3 Then MESSAGE$="Its a spider plant. It has eight leaves." If NOUN1$="PLANT" and _ROOM=3 and _MATCHES=0 Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+"In amongst the leaves is a box of matches." : _PLANT=1 If _ROOM=3 and NOUN1$="DOOR" Then MESSAGE$="Which one? There are three of them!" If _ROOM=3 and((NOUN1$="DOOR" and(NOUN2$="EAST" or NOUN2$="E")) or((NOUN1$="E" or NOUN1$="EAST") and NOUN2$="DOOR")) Then TEMP_FLAG=True If TEMP_FLAG=True and _ROOM=3 and _DOOR3=0 Then MESSAGE$="This door is locked shut. You can hear some awful singing from within."+Chr$(10)+Chr$(13)+"A sign on the door reads `Bathroom~. That'd be the bathroom then." If TEMP_FLAG=True and _ROOM=3 and _TABLE=2 Then MESSAGE$="The east door is shut. The singing has stopped though."+Chr$(10)+Chr$(13)+"A sign on the door reads `Bathroom~. That'd be the bathroom then." ' End bits If NOUN1$="" Then MESSAGE$=VERB$+" what?" If MESSAGE$="" Then MESSAGE$="I can't see a "+NOUN1$+" anywhere" Print MESSAGE$ End Proc Procedure _USE TEMP_FLAG=False MESSAGE$="" ' Room 0 Actions If NOUN1$="BUCKET" and _ROOM=0 and _BUCKET=0 Then _SHELF=1 : _BUCKET=1 : MESSAGE$="You stand on the bucket." : If _PAPER=0 Then MESSAGE$=MESSAGE$+" You can see a newspaper there on the shelf." : Inc _SCORE If NOUN1$="PLUNGER" and _ROOM=0 and _PLUNGER=1 and NOUN2$="SINK" and _SINK=0 Then MESSAGE$="You unblock the sink, and find a key in the plughole" : _SINK=1 : Inc _SCORE If NOUN1$="KEY" and _ROOM=0 and _KEY=1 and NOUN2$="DOOR" and _DOOR=0 Then _DOOR=1 : MESSAGE$="You put the key in the lock, and turn. CLICK!" : Inc _SCORE ' Room 1 Actions If NOUN1$="LADDER" and NOUN2$<>"" and _ROOM=1 Then MESSAGE$="No, thats not possible." If NOUN2$="LADDER" and NOUN1$="WOOD" and _ROOM=1 and _LADDER=0 and _WOOD=1 Then _LADDER=1 : _WOOD=2 : MESSAGE$="You fix the wood to the ladder. Golly, it fits in the missing rung's hole!" : Inc _SCORE If NOUN1$="LADDER" and NOUN2$="" and _ROOM=1 and _LADDER=0 Then MESSAGE$="Try fixing it first." If NOUN1$="LADDER" and NOUN2$="" and _ROOM=1 and _LADDER=1 Then _LADDER=2 : MESSAGE$="You place the ladder against the wall. You can now reach the window." : Inc _SCORE If NOUN1$="HAMMER" and NOUN2$="WINDOW" and _HAMMER=1 and _WINDOW=0 Then _WINDOW=1 : MESSAGE$="You throw the hammer at the window, SMASH!! Unsurprisingly, it breaks." : Inc _SCORE ' Room 2 Actions If NOUN1$="CUBE" and _CUBE>0 and _CUBE<4 Then MESSAGE$="You fiddle with the blasted thing for a few minutes."+Chr$(10)+Chr$(13)+"You're not very good with these kind of mental puzzles. It stays jumbled." : Inc _CUBE If NOUN1$="CUBE" and _CUBE=5 Then MESSAGE$="Now that WAS silly. You've only gone and jumbled the colours up again." : _CUBE=1 If NOUN1$="CUBE" and _CUBE=4 Then MESSAGE$="You give it another go, and whaddayaknow, you fluke it!" : _CUBE=5 If NOUN1$="HANDLE" and NOUN2$="SCREWS" and _ROOM=2 and _SCREWDRIVER=1 and _HANDLE=1 and _SCREWS=1 Then _HANDLE=2 : _SCREWS=2 : TEMP_FLAG=True If NOUN2$="HANDLE" and NOUN1$="SCREWS" and _ROOM=2 and _SCREWDRIVER=1 and _HANDLE=1 and _SCREWS=1 Then _HANDLE=2 : _SCREWS=2 : TEMP_FLAG=True If TEMP_FLAG=True Then MESSAGE$="You screw the handle to the door, and it fits perfectly!"+Chr$(10)+Chr$(13)+"What a Handy Man you are!" : _DOOR2=1 If NOUN1$="HANDLE" and NOUN2$="SCREWS" and _ROOM=2 and _SCREWDRIVER=0 and _HANDLE=1 and _SCREWS=1 Then MESSAGE$="What are you going to screw it with? Your fingers?" If NOUN2$="HANDLE" and NOUN1$="SCREWS" and _ROOM=2 and _SCREWDRIVER=0 and _HANDLE=1 and _SCREWS=1 Then MESSAGE$="What are you going to screw it with? Your fingers?" ' Room 3 Actions ' End bits If NOUN1$="" Then MESSAGE$="USE what?" If MESSAGE$="" Then MESSAGE$="You can't actually do that" Print MESSAGE$ End Proc Procedure _QUIT MESSAGE$=" " Print "Are you sure? (Y/N)" Repeat Input _YESNO$ _YESNO$=Upper$(_YESNO$) Until Left$(_YESNO$,1)="Y" or Left$(_YESNO$,1)="N" If Left$(_YESNO$,1)="Y" Then Print "Bye Then! Play again soon!" : Print : _END=True End Proc Procedure _DIE MESSAGE$=" " Print "You kill youself, and as a result, die. That was stupid." End Proc Procedure _LOOK If MESSAGE$=Chr$(0) Then MESSAGE$=Chr$(0) DESC$(7)="" DESC$(8)="" If _ROOM=3 Then DESC$(5)="You are standing on an upstairs landing. There is a lovely 60's carpet"+Chr$(10)+Chr$(13)+"on the floor. There are doors to the north, east and west." If _ROOM=3 Then DESC$(5)=DESC$(5)+Chr$(10)+Chr$(13)+"There are some stairs here too, leading down." If _ROOM=3 and _BATHROOM=0 Then DESC$(5)=DESC$(5)+Chr$(10)+Chr$(13)+"You can hear singing coming from the east door." If _ROOM=2 Then DESC$(5)="You are in a large, rather garishly decorated bedroom."+Chr$(10)+Chr$(13)+"It looks as though the decorator was colour blind, or just very misled." If _ROOM=1 Then DESC$(5)="You are in a fairly small and untidy garden, outside the shed."+Chr$(10)+Chr$(13)+"There is assorted rubbish on the floor, and very little vegitation, as it "+Chr$(10)+Chr$(13)+"is mostly concreted over. Nice." If _ROOM=0 Then DESC$(5)="You are inside what appears to be a garden shed, filled with the usual"+Chr$(10)+Chr$(13)+"shed-like junk. It smells in here too." If _ROOM=3 Then DESC$(7)=" A plant. A table. Some stairs." If _ROOM=2 Then DESC$(7)=" A bed. A door. A broken window. A safe. A shelf." If _ROOM=1 Then DESC$(7)=" A dustbin. A door. A bush. A ladder." If _ROOM=0 Then DESC$(7)=" A worktop. A sink. A high shelf. A door. A bucket." ' Room 0 If _SHELF=1 and _ROOM=0 and _PAPER=0 Then DESC$(7)=DESC$(7)+" A Newspaper." If _SINK=1 and _ROOM=0 and _KEY=0 Then DESC$(8)=DESC$(8)+" A dirty key." If _WORKTOP=1 and _ROOM=0 Then DESC$(7)=DESC$(7)+" A Dark Hole." If _WORKTOP=1 and _ROOM=0 and _BOOK=0 Then DESC$(8)=DESC$(8)+" A notebook." If _WORKTOP=1 and _ROOM=0 Then DESC$(8)=DESC$(8)+" A spider." If _WORKTOP=1 and _ROOM=0 and _PLUNGER=0 Then DESC$(8)=DESC$(8)+" A sink plunger." If _FISH=0 and _ROOM=0 Then DESC$(8)=DESC$(8)+" A red herring." ' Room 1 If _BUSH=1 and _WOOD=0 and _ROOM=1 Then DESC$(7)=DESC$(7)+" A piece of wood." If _BAG=0 and _ROOM=1 Then DESC$(7)=DESC$(7)+" A plastic bag." If _BIN=1 and _HAMMER=0 and _ROOM=1 Then DESC$(7)=DESC$(7)+" A hammer." If _BIN=1 and _CHEESE=0 and _ROOM=1 Then DESC$(8)=DESC$(8)+" A piece of cheese." If _ROOM=1 Then DESC$(8)=DESC$(8)+" A sign." If _WINDOW=0 and _ROOM=1 Then DESC$(8)=DESC$(8)+" A window." If _WINDOW=1 and _ROOM=1 Then DESC$(8)=DESC$(8)+" A window (broken)." ' Room 2 If _BED=1 and _MOUSE=0 and _ROOM=2 Then DESC$(7)=DESC$(7)+" A mouse." If _BED=1 and _HANDLE=0 and _ROOM=2 Then DESC$(8)=DESC$(8)+" A door handle." If _BED=1 and _PILLOW=0 and _ROOM=2 Then DESC$(8)=DESC$(8)+" A pillow." If _SHELF2=1 and _CUBE=0 and _ROOM=2 Then DESC$(8)=DESC$(8)+" A Rubik cube." If _CABINET=1 and _DIARY=0 and _ROOM=2 Then DESC$(7)=DESC$(7)+" A diary." If _ROOM=2 Then DESC$(7)=DESC$(7)+" A rug." If _ROOM=2 Then DESC$(8)=DESC$(8)+" A cabinet." If _RUG=1 and _SCREWS=0 and _ROOM=2 Then DESC$(8)=DESC$(8)+" Some screws." If _PILLOW=1 and _ROOM=2 and _SCREWDRIVER=0 Then DESC$(8)=DESC$(8)+" A screwdriver." ' Room 3 If _ROOM=3 and _PLANT=1 and _MATCHES=0 Then DESC$(8)=DESC$(8)+" A box of matches." If _ROOM=3 Then DESC$(8)=DESC$(8)+" North, East and West doors." If _ROOM=3 and _TABLE=1 Then DESC$(7)=DESC$(7)+" A cooked chicken." For LOP=5 To 8 Print DESC$(LOP) Next LOP End Proc Procedure _HELP MESSAGE$=Chr$(0) If NOUN1$="X" or NOUN1$="EXAMINE" or NOUN1$="READ" Then MESSAGE$="EXAMINE / X / READ"+Chr$(10)+Chr$(13)+"Usage: EXAMINE "+Chr$(10)+Chr$(13)+" Examines an object." If NOUN1$="L" or NOUN1$="LOOK" Then MESSAGE$="LOOK / L"+Chr$(10)+Chr$(13)+"Usage: LOOK"+Chr$(10)+Chr$(13)+" Used to give a room description." If NOUN1$="N" or NOUN1$="NORTH" Then MESSAGE$="NORTH / N"+Chr$(10)+Chr$(13)+"Usage: NORTH"+Chr$(10)+Chr$(13)+" Makes you go one location north, if possible." If NOUN1$="S" or NOUN1$="SOUTH" Then MESSAGE$="SOUTH / S"+Chr$(10)+Chr$(13)+"Usage: SOUTH"+Chr$(10)+Chr$(13)+" Makes you go one location south, if possible." If NOUN1$="E" or NOUN1$="EAST" Then MESSAGE$="EAST / E"+Chr$(10)+Chr$(13)+"Usage: EAST"+Chr$(10)+Chr$(13)+" Makes you go one location east, if possible." If NOUN1$="W" or NOUN1$="WEST" Then MESSAGE$="WEST / W"+Chr$(10)+Chr$(13)+"Usage: WEST"+Chr$(10)+Chr$(13)+" Makes you go one location west, if possible." If NOUN1$="U" or NOUN1$="UP" Then MESSAGE$="UP / U"+Chr$(10)+Chr$(13)+"Usage: UP"+Chr$(10)+Chr$(13)+" Makes you go one location up, if possible." If NOUN1$="D" or NOUN1$="DOWN" Then MESSAGE$="DOWN / D"+Chr$(10)+Chr$(13)+"Usage: DOWN"+Chr$(10)+Chr$(13)+" Makes you go one location down, if possible." If NOUN1$="OPEN" Then MESSAGE$="OPEN"+Chr$(10)+Chr$(13)+"Usage: OPEN "+Chr$(10)+Chr$(13)+" Useful for opening doors, boxes, etc." If NOUN1$="USE" Then MESSAGE$="USE"+Chr$(10)+Chr$(13)+"Usage: 1) USE "+Chr$(10)+Chr$(13)+" 2) USE WITH "+Chr$(10)+Chr$(13)+" 3) USE ON " If NOUN1$="USE" Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+" 4) USE IN "+Chr$(10)+Chr$(13)+" 5) USE TO "+Chr$(10)+Chr$(13)+" Alternatively, the connective can be ignored." If NOUN1$="USE" Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+" 6) USE " If NOUN1$="KILL" Then MESSAGE$="KILL"+Chr$(10)+Chr$(13)+"Usage: 1) KILL "+Chr$(10)+Chr$(13)+" Where is a person, animal etc. Sometimes though, you must:" If NOUN1$="KILL" Then MESSAGE$=MESSAGE$+Chr$(10)+Chr$(13)+" 2) KILL WITH " If NOUN1$="DIE" Then MESSAGE$="DIE"+Chr$(10)+Chr$(13)+"Usage: DIE"+Chr$(10)+Chr$(13)+" Makes you commit suicide." If NOUN1$="HELP" Then MESSAGE$="Oh, I wonder what this does?" If NOUN1$="QUIT" Then MESSAGE$="QUIT"+Chr$(10)+Chr$(13)+"Usage: QUIT"+Chr$(10)+Chr$(13)+" Allows you to quit the game. Not that you'd want to of course." If NOUN1$="TALK" Then MESSAGE$="TALK"+Chr$(10)+Chr$(13)+"Usage: TALK TO "+Chr$(10)+Chr$(13)+" Lets you talk to someone or something. Well, you never know..." If NOUN1$="GET" or NOUN1$="TAKE" Then MESSAGE$="TAKE / GET"+Chr$(10)+Chr$(13)+"Usage: TAKE "+Chr$(10)+Chr$(13)+" Allows you to pick something up an put it in your inventory." If NOUN1$="INVENTORY" or NOUN1$="I" Then MESSAGE$="INVENTORY / I"+Chr$(10)+Chr$(13)+"Usage: INVENTORY"+Chr$(10)+Chr$(13)+" Shows what you are currently carrying." If NOUN1$="LOAD" Then MESSAGE$="LOAD"+Chr$(10)+Chr$(13)+"Usage: LOAD"+Chr$(10)+Chr$(13)+" Loads a previously saved game." If NOUN1$="SAVE" Then MESSAGE$="SAVE"+Chr$(10)+Chr$(13)+"Usage: SAVE"+Chr$(10)+Chr$(13)+" Saves your current position to disk." If NOUN1$="SCORE" Then MESSAGE$="SCORE"+Chr$(10)+Chr$(13)+"Usage: SCORE"+Chr$(10)+Chr$(13)+" Tells you your current score, and how many moves you have taken." If MESSAGE$=Chr$(0) Print "Verbs are: E(X)AMINE, (L)OOK, (N)ORTH, (S)OUTH, (E)AST, (W)EST, OPEN, USE," Print " KILL, DIE, HELP, QUIT, READ, TALK, GET, TAKE, (I)NVENTORY," Print " (U)P, (D)OWN, SCORE, LOAD, and SAVE." Print Chr$(10)+Chr$(13)+"For help with commands, type Help ." Else Print MESSAGE$ End If End Proc Procedure _SCORE MESSAGE$=" " Pen 7 Print "Your score is";_SCORE;"." Print "You have taken";_MOVES;" moves." End Proc Procedure _SAVE On Error Proc _ERROR Resume Label JUMP Show NAME$=Fsel$("*.SAVE","","Save game position","You need not add .SAVE extension") Hide If Right$(NAME$,5)<>".SAVE" and NAME$<>"" Then NAME$=NAME$+".SAVE" Open Out 1,NAME$ Proc _DOSAVE JUMP: If NAME$="" Then MESSAGE$="Error: Invalid filename - file not saved" : Print MESSAGE$ Close End Proc Procedure _DOSAVE ' Room 0 Print #1,_PAPER Print #1,_KEY Print #1,_BOOK Print #1,_PLUNGER Print #1,_FISH Print #1,_SHELF Print #1,_WORKTOP Print #1,_SINK Print #1,_DOOR Print #1,_HOLE Print #1,_SPIDER ' Room 1 Print #1,_BIN Print #1,_BAG Print #1,_LADDER Print #1,_BUSH Print #1,_WOOD Print #1,_HAMMER Print #1,_CHEESE Print #1,_WINDOW ' Room 2 Print #1,_CABINET Print #1,_BED Print #1,_SHELF2 Print #1,_RUG Print #1,_SAFE Print #1,_PILLOW Print #1,_MOUSE Print #1,_DOOR2 Print #1,_HANDLE Print #1,_CUBE Print #1,_SCREWS Print #1,_SCREWDRIVER Print #1,_DIARY ' Room 3 Print #1,_PLANT Print #1,_TABLE Print #1,_DOOR3 Print #1,_MATCHES ' Misc Print #1,_SCORE Print #1,_MOVES Print #1,_ENDEND Print #1,_ROOM Close Pen 7 MESSAGE$="Game position saved as "+NAME$ Print MESSAGE$ Pen 5 End Proc Procedure _LOAD On Error Proc _ERROR Resume Label JUMP2 Show NAME$=Fsel$("*.SAVE","","Select a game to load","") Hide Open In 1,NAME$ Proc _DOLOAD JUMP2: If NAME$="" Then MESSAGE$="Error: Invalid filename - game not loaded" : Print MESSAGE$ Close End Proc Procedure _DOLOAD ' Room 0 Input #1,_PAPER Input #1,_KEY Input #1,_BOOK Input #1,_PLUNGER Input #1,_FISH Input #1,_SHELF Input #1,_WORKTOP Input #1,_SINK Input #1,_DOOR Input #1,_HOLE Input #1,_SPIDER ' Room 1 Input #1,_BIN Input #1,_BAG Input #1,_LADDER Input #1,_BUSH Input #1,_WOOD Input #1,_HAMMER Input #1,_CHEESE Input #1,_WINDOW ' Room 2 Input #1,_CABINET Input #1,_BED Input #1,_SHELF2 Input #1,_RUG Input #1,_SAFE Input #1,_PILLOW Input #1,_MOUSE Input #1,_DOOR2 Input #1,_HANDLE Input #1,_CUBE Input #1,_SCREWS Input #1,_SCREWDRIVER Input #1,_DIARY ' Room 3 Input #1,_PLANT Input #1,_TABLE Input #1,_DOOR3 Input #1,_MATCHES ' Misc Input #1,_SCORE Input #1,_MOVES Input #1,_ENDEND Input #1,_ROOM Close Locate 0,0 Cls 0 MESSAGE$="Game "+NAME$+" loaded." Pen 7 Print MESSAGE$ Pen 5 Proc _LOOK End Proc Procedure _ERROR ENUM=Errn MESSAGE$=Err$(ENUM) Pen 7 If NAME$<>"" Then Print "Error: "+MESSAGE$ Resume Label End Proc