Home » Archimedes archive » Archimedes World » AW-1994-10-Disc1.adf » Disk1Oct94 » !AWOct94/Goodies/Adventure/!Gorm/!RunImage
!AWOct94/Goodies/Adventure/!Gorm/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1994-10-Disc1.adf » Disk1Oct94 |
Filename: | !AWOct94/Goodies/Adventure/!Gorm/!RunImage |
Read OK: | ✔ |
File size: | 2C7EE bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >!RunImage 20REM for !Gorm 30Version$="1.40 (24th June 94)" 40REM Chris Allen 50REM LEN Archimedes World 60 70REM "Thou nosey users with peering eyes, 80REM Readers of this file, I despise, 90REM I'll create a curse of fear and dread, 100REM Hackers, I do not like," Chris said. 110REM "Let chaos free in the OS, 120REM I shall form a fearsome mess, 130REM From variables to CMOS RAM, 140REM It shall affect any man, 150REM Who dares to read my Gorm files, 160REM Be warned, foolish juveniles." 170 180open%=0:oldtime%=TIME:active%=-1:swear%=0:computer%=0:notimes%=0:oldword$="":roomno%=1:sleep%=0:sleepoldtime%=TIME:currentpic$="1":totalrooms%=312:altered%=0:written%=0:picsize%=464000:heaperror%=0:fonterror%=0:crier%=1 190noz%=4:zone%=1:nifok%=0:savegt%=1:whiz%=0:pamp%=0:dug%=0:mould%=0:fire%=1:firetime%=TIME:suitcase%=0:mapsize%=105:mapwidth%=15:shaded%=0:drugged%=0:poltime%=TIME:trapped%=0:trappedtime%=TIME:injure%=0:nbtm%=0 200renw%=0:dugged%=0:ill%=0:medium1%=0:medium2%=0:payed%=0 210DIM police%(3), poldir%(3), buffer% 64, icon$(4) 220police%(1)=107:poldir%(1)=4:police%(2)=143:poldir%(2)=4:police%(3)=206:poldir%(3)=1 230DIM wimp% 5000, advent% 15, sprite% 42000, menu% 500, info% 200, greet% 60, saver% 400, user% 502, quest$(11), inter% 600, posi% 200, messge% 250 240DIM default1$(totalrooms%,10), default2$(6), default3%(7) 250DIM rooms$(totalrooms%,9), exits(totalrooms%,10), objects$(totalrooms%,10), owns$(10), abbrev$(totalrooms%,2), mpdt%(noz%,mapsize%), mapyn%(totalrooms%), rentry$(totalrooms%), then%(10), ec$(14) 260sprite%!0=42000:sprite%!8=16 270SYS "OS_SpriteOp",&109,sprite% 280SYS "OS_SpriteOp",&10A,sprite%,"<Gorm$Dir>.!Sprites" 290SYS &400C0,200,&4B534154,"Gorm" TO ,apphan% 300templates$="<Gorm$Dir>.Templates" 310SYS "OS_ReadVarVal","Gorm$3D",buffer%,256 TO,,length%:buffer%?length%=13 320IF $buffer%="Yes" templates$="<Gorm$Dir>.Template3D" 330OSCLI"Unset Gorm$3D" 340SYS &400D9,,templates$ 350wimp%!64=sprite% 360SYS &400DB,,wimp%,greet%,greet%+60,-1,"greeting",0 370SYS &400C1,,wimp% TO greethan% 380SYS "XOS_ReadModeVariable",MODE,11 TO ,,width% 390SYS "XOS_ReadModeVariable",MODE,12 TO ,,height% 400SYS "XOS_ReadModeVariable",MODE,4 TO ,,xwidth% 410SYS "XOS_ReadModeVariable",MODE,5 TO ,,ywidth% 420width%=width%*xwidth%:height%=height%*ywidth% 430wimp%!0=greethan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!4=width%-427:wimp%!8=height%-286:wimp%!12=width%+427:wimp%!16=height%+286:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 440ONERRORPROCerr(ERR,REPORT$) 450REPEAT 460SYS "Wimp_Poll",,wimp% TO r% 470CASE r% OF 480WHEN 0 : nbtm%=0:IF heaperror%=1 heaperror%=0:PROCcontcontload ELSE IF fonterror%=1 fonterror%=0:PROCcontload ELSE CASE active% OF 490 WHEN -1 : active%=0:PROCcontinueload 500 WHEN -2 : SYS &400DD,apphan% 510 OTHERWISE : IF open%=1 AND swear%<>5 AND TIME-12000>oldtime% oldtime%=TIME:IF nifok%=0 AND renw%=0 PROCwait 520IF TIME-1000>poltime% AND zone%=3 AND nifok%=0 PROCpolicemaze 530IF TIME-1000>poltime% AND zone%=2 AND nifok%=0 PROCpolice 540IF TIME-6000>sleepoldtime% AND sleep%=1 sleep%=0:PROCadd("You wake up...") 550IF TIME-200>firetime% AND fire%=2 PROCfire 560IF TIME-250>trappedtime% AND trapped%=1 trapped%=0:exits(110,4)=0:exits(111,2)=0:wimp%!0=maphan%:PROCredrawmap:PROCadd("You hear a door slam.") 570ENDCASE 580WHEN 1 : IF wimp%!0=adventhan% PROCredraw ELSE IF wimp%!0=picciehan% PROCredrawpics ELSE IF wimp%!0=maphan% PROCredrawmap ELSE SYS "Wimp_RedrawWindow",,wimp% 590WHEN 2 : SYS &400C5,,wimp%:IF wimp%!0=adventhan% PROCattach 600WHEN 3 : SYS &400C6,,wimp%:IF wimp%!0=adventhan% open%=0:wimp%!0=userhan%:SYS"Wimp_CloseWindow",,wimp%:wimp%!0=posihan%:SYS"Wimp_CloseWindow",,wimp% 610WHEN 6 : PROCclick 620WHEN 7 : PROCdrag_complete 630WHEN 8 : IF wimp%!24=13 PROCkey ELSE SYS"Wimp_ProcessKey",wimp%!24 640WHEN 9 : PROCmenuselect 650WHEN 17,18 : CASE wimp%!16 OF 660 WHEN 0 : PROCquityn 670 WHEN 2 : PROCsave 680 WHEN 3,5 : ldfilenm$=FNxtractfln:PROCfileload 690 WHEN &502 : PROCinteractive 700 WHEN &400C1 : IF myfont%<>-1 SYS "Font_FindFont",,"Trinity.Medium",12*16,12*16 TO myfont% 710 SYS retcol%,myfont%,&FFFFFF00,&00000000,14 TO ,back1%,fore1%,offset1% 720 SYS retcol%,myfont%,&FFFFFF00,&0000FF00,0 TO ,back2%,fore2%,offset2% 730 PROCdecideshaded 740 WHEN &400CC : SYS "Wimp_GetPointerInfo",,wimp%:IF wimp%!12=adventhan% wimp%!0=userhan%:SYS"Wimp_CloseWindow",,wimp%:wimp%!0=posihan%:SYS"Wimp_CloseWindow",,wimp% 750ENDCASE 760ENDCASE 770UNTIL FALSE 780 790DEFFNxtractfln 800name$="":n=44:WHILE ((wimp%?n)>=32) AND (n<256):name$+=CHR$(wimp%?n):n+=1:ENDWHILE 810=name$ 820 830DEFPROCquityn 840IF altered%=0 SYS &400DD,apphan% 850IF altered%=1 PROCwarning(1,"","Quitting the program will lose","your current game.","") 860ENDPROC 870 880DEFPROCcontinueaction 890CASE wherefrom% OF 900WHEN 1 : SYS &400DD,apphan% 910WHEN 2 : yesno%=2:PROCloaditup 920WHEN 3 : PROCrestart 930ENDCASE 940ENDPROC 950 960DEFPROCloaditup 970A%=OPENIN(ldfilenm$) 980wasteoftime$=LEFT$(GET$#A%,16) 990IF wasteoftime$<>"!Gorm Saved Game" PROCwarning(4,"","This file is corrupt or is not","a real Gorm saved game.",""):CLOSE#A%:ENDPROC 1000swear%=VAL(GET$#A%) 1010computer%=VAL(GET$#A%) 1020notimes%=VAL(GET$#A%) 1030oldword$=GET$#A% 1040roomno%=VAL(GET$#A%) 1050sleep%=VAL(GET$#A%) 1060written%=VAL(GET$#A%) 1070font%=VAL(GET$#A%) 1080IF font%=1 AND myfont%=-1 font%=0 1090nifok%=VAL(GET$#A%) 1100exits(2,2)=VAL(GET$#A%) 1110exits(72,3)=VAL(GET$#A%) 1120exits(85,2)=VAL(GET$#A%) 1130exits(110,4)=VAL(GET$#A%) 1140exits(111,2)=VAL(GET$#A%) 1150exits(179,1)=VAL(GET$#A%) 1160exits(310,2)=VAL(GET$#A%) 1170ill%=VAL(GET$#A%) 1180medium1%=VAL(GET$#A%) 1190medium2%=VAL(GET$#A%) 1200payed%=VAL(GET$#A%) 1210renw%=VAL(GET$#A%) 1220crier%=VAL(GET$#A%) 1230mould%=VAL(GET$#A%) 1240dug%=VAL(GET$#A%) 1250pamp%=VAL(GET$#A%) 1260whiz%=VAL(GET$#A%) 1270fire%=VAL(GET$#A%) 1280suitcase%=VAL(GET$#A%) 1290injure%=VAL(GET$#A%) 1300zone%=VAL(GET$#A%) 1310dugged%=VAL(GET$#A%) 1320rooms$(78,2)=GET$#A% 1330rooms$(78,3)=GET$#A% 1340rooms$(78,4)=GET$#A% 1350rooms$(85,5)=GET$#A% 1360abbrev$(78,1)=GET$#A% 1370rentry$(78)=GET$#A% 1380FOR a%=1 TO 3 1390police%(a%)=VAL(GET$#A%) 1400poldir%(a%)=VAL(GET$#A%) 1410NEXT a% 1420drugged%=VAL(GET$#A%) 1430FOR a%=1 TO totalrooms% 1440mapyn%(a%)=VAL(GET$#A%) 1450NEXT a% 1460FOR a%=1 TO 10 1470owns$(a%)=GET$#A% 1480NEXT a% 1490FOR a%=1 TO 11 1500quest$(a%)=GET$#A% 1510NEXT a% 1520FOR a%=1 TO totalrooms% 1530FOR b%=1 TO 10 1540objects$(a%,b%)=GET$#A% 1550NEXT b% 1560NEXT a% 1570CLOSE#A% 1580sleepoldtime%=TIME 1590poltime%=TIME 1600altered%=0 1610IF yesno%=2 wimp%!0=adventhan%:PROCredraw 1620PROCdecidepics:PROCdecidetitle:PROCdecidepos 1630wimp%!0=maphan%:PROCredrawmap 1640wimp%!0=adventhan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 1650PROCattach 1660PROCseticon(k%,1,ldfilenm$) 1670ENDPROC 1680 1690DEFPROCcontinueload 1700myfont%=-1 1710fonterror%=1:SYS "Font_FindFont",,"Trinity.Medium",12*16,12*16 TO myfont%:fonterror%=0 1720SYS "XOS_SWINumberFromString",,"Font_SetFont" TO ft% 1730SYS "XOS_SWINumberFromString",,"Font_SetFontColours" TO ftcol% 1740SYS "XOS_SWINumberFromString",,"Font_Paint" TO ftpt% 1750SYS "ColourTrans_ReturnFontColours",myfont%,&FFFFFF00,&00000000,14 TO ,back1%,fore1%,offset1% 1760SYS "ColourTrans_ReturnFontColours",myfont%,&FFFFFF00,&0000FF00,0 TO ,back2%,fore2%,offset2% 1770PROCcontload 1780ENDPROC 1790 1800DEFPROCcontload 1810SYS "XOS_SWINumberFromString",,"ColourTrans_SetGCOL" TO setgcol% 1820SYS "XOS_SWINumberFromString",,"ColourTrans_ReturnFontColours" TO retcol% 1830SYS &400DB,,wimp%,advent%,advent%+15,-1,"adventure",0 1840SYS &400C1,,wimp% TO adventhan% 1850SYS &400DB,,wimp%,info%,info%+200,-1,"info",0 1860SYS &400C1,,wimp% TO inhan% 1870SYS &400DB,,wimp%,saver%,saver%+400,-1,"savebox",0 1880SYS &400C1,,wimp% TO k% 1890SYS &400DB,,wimp%,user%,user%+502,-1,"user",0 1900SYS &400C1,,wimp% TO userhan% 1910SYS &400DB,,wimp%,,,-1,"piccies",0 1920SYS &400C1,,wimp% TO picciehan% 1930SYS &400DB,,wimp%,,,-1,"map",0 1940SYS &400C1,,wimp% TO maphan% 1950SYS &400DB,,wimp%,posi%,posi%+200,-1,"position",0 1960SYS &400C1,,wimp% TO posihan% 1970SYS &400DB,,wimp%,messge%,messge%+250,-1,"warning",0 1980SYS &400C1,,wimp% TO warnhan% 1990SYS &400DA 2000FOR a%=1 TO totalrooms% 2010mapyn%(a%)=0 2020NEXT a% 2030mapyn%(1)=1 2040heaperror%=1 2050SYS "OS_ReadMemMapInfo" TO heapsize% 2060pagesize%=heapsize% 2070SYS "Wimp_SlotSize",-1,-1 TO slotsize% 2080heaploct%=slotsize%+&8000 2090SYS "Wimp_SlotSize",heaploct%+heapsize%-&8000,-1 2100SYS "OS_Heap",0,heaploct%,,heapsize% 2110SYS "XOS_Heap",2,heaploct%,,picsize% TO ,,piccies% 2120 IF ((heapsize%+picsize%) MOD pagesize%) <> 0 v%=heapsize%+picsize%+(pagesize%-((heapsize%+picsize%) MOD pagesize%)) ELSE v%=heapsize%+picsize% 2130 SYS "XWimp_SlotSize",heaploct%+v%-&8000,-1 2140 SYS "OS_Heap",5,heaploct%,,v%-heapsize%:heapsize%=v% 2150 SYS "XOS_Heap",2,heaploct%,,picsize% TO ,,piccies%:picyn%=1:piccies%!0=picsize%:piccies%!8=16:SYS "OS_SpriteOp",&109,piccies%:SYS "OS_SpriteOp",&10A,piccies%,"<Gorm$Dir>.Code" 2160heaperror%=0 2170PROCcontcontload 2180ENDPROC 2190 2200DEFPROCcontcontload 2210mynum%=1.26+0.75+0.99 2220stng$=FNuntangle("lihsuvt",mynum%):strng$=FNuntangle("Dcem""htqo""vjg""fgcf#",mynum%-1) 2230FOR a=1 TO 14 2240READ ec$(a) 2250ec$(a)=FNuntangle(ec$(a),mynum%) 2260NEXT a 2270PROCiconbar 2280PROCloaddata 2290FOR a%=1 TO noz% 2300FOR b%=1 TO mapsize% 2310READ mpdt%(a%,b%) 2320NEXT b% 2330NEXT a% 2340PROCloadoptions 2350PROCdecidetitle:PROCdecidepos 2360PROCdecideshaded 2370PROCadd("Welcome to your quest brave adventurer."):i$="look":PROClook:temp%=0 2380PROCseticon(inhan%,4,Version$) 2390wimp%!0=greethan%:SYS"Wimp_DeleteWindow",,wimp% 2400SYS "OS_GetEnv" TO file$ 2410IF INSTR(file$,"-quit") THEN 2420I%=INSTR(file$,"""") 2430I%=INSTR(file$,"""",I%+1) 2440REPEAT 2450I%+=1 2460UNTIL MID$(file$,I%,1)<>" " 2470file$=MID$(file$,I%) 2480IF file$<>"" PROCloader(file$,1) 2490ENDPROC 2500 2510DEFPROCdecidetitle 2520titler$="Map -" 2530CASE zone% OF 2540WHEN 1,4 : titler$+="Town" 2550WHEN 2 : titler$+="Jail" 2560WHEN 3 : titler$+="Maze" 2570ENDCASE 2580ENDPROC 2590 2600DEFPROCtoggleicon(wimp%!0,wimp%!4) 2610wimp%!8=&200000:wimp%!12=0 2620SYS "Wimp_SetIconState",,wimp% 2630ENDPROC 2640 2650DEFPROCdecideshaded 2660SYS "XOS_ReadModeVariable",MODE,3 TO ,,cols% 2670IF cols%<>15 AND picyn%=1 picyn%=2 2680IF cols%=15 AND picyn%=2 picyn%=1 2690IF shaded%=0 AND picyn%=2 THEN 2700shaded%=1 2710wimp%!0=userhan%:wimp%!4=11:wimp%!12=1<<22:wimp%!8=1<<22 2720SYS"Wimp_SetIconState",,wimp% 2730ENDIF 2740IF shaded%=1 AND picyn%=1 THEN 2750shaded%=0 2760wimp%!0=userhan%:wimp%!4=11:wimp%!12=1<<22:wimp%!8=0 2770SYS"Wimp_SetIconState",,wimp% 2780ENDIF 2790IF shaded%=0 AND picyn%=0 THEN 2800shaded%=1 2810wimp%!0=userhan%:wimp%!4=11:wimp%!12=1<<22:wimp%!8=1<<22 2820SYS"Wimp_SetIconState",,wimp% 2830ENDIF 2840ENDPROC 2850 2860DEFPROCcheckdrag 2870SYS "XOS_SWINumberFromString",,"DragASprite_Start" TO dragyn%;flag 2880IF (flag AND 1) dragyn%=-1 2890IF dragyn%<>-1 THEN 2900SYS "OS_Byte",161,28 TO ,,cmos 2910IF (cmos AND 2)=0 dragyn%=-1 2920ENDIF 2930ENDPROC 2940 2950DEFPROCdecidepos 2960PROCdecidetitle 2970title$=rentry$(roomno%)+" (" 2980year$="1794" 2990CASE zone% OF 3000WHEN 1 : title$+="Town" 3010WHEN 2 : title$+="Jail" 3020WHEN 3 : title$+="Maze" 3030WHEN 4 : title$+="Town":year$="1994" 3040ENDCASE 3050title$+=")." 3060PROCseticon(posihan%,0,title$) 3070PROCseticon(posihan%,1,year$) 3080ENDPROC 3090 3100DEFPROCinteractive 3110t$="" 3120inter%=wimp% 3130inter%!12=wimp%!8 3140inter%!16=&503 3150CASE inter%!32 OF 3160WHEN -2 : t$="This is the Gorm application.|MClick SELECT to display the adventure window.|MClick ADJUST to display the map" 3170 SYS "XOS_ReadModeVariable",MODE,3 TO ,,cols% 3180 IF cols%<>15 AND picyn%=1 picyn%=2 3190 IF cols%=15 AND picyn%=2 picyn%=1 3200 IF picyn%=1 t$+=" and picture windows." ELSE t$+=" window." 3210WHEN greethan% : t$="!Gorm, by Chris Allen, is loading.|MPlease be patient..." 3220WHEN adventhan% : t$="The adventure window.|MThis window shows the text adventure at the moment." 3230WHEN posihan% : t$="The position panel.|MThis panel tells you where you are and what year it is." 3240WHEN picciehan% : t$="The picture window.|MThis shows the picture that is most relevant to your position in the game." 3250WHEN inhan% : t$="All the extremely interesting stuff..." 3260WHEN userhan% : t$="The input panel.|MThis is where you enter the orders.":CASE inter%!36 OF 3270 WHEN 0 : t$+="|MClick SELECT to go north." 3280 WHEN 1 : t$+="|MEnter the orders into this icon, then press RETURN or click on OK.|M(Ctrl+U clears this icon when the caret is in it)." 3290 WHEN 2 : t$+="|MClick SELECT to process the instruction, click ADJUST to process the instruction without clearing the writable icon." 3300 WHEN 3 : t$+="|MClick SELECT to go east." 3310 WHEN 4 : t$+="|MClick SELECT to go south." 3320 WHEN 5 : t$+="|MClick SELECT to go west." 3330 WHEN 6 : t$+="|MClick SELECT to go up." 3340 WHEN 7 : t$+="|MClick SELECT to go down." 3350 WHEN 8 : t$+="|MClick SELECT to look." 3360 WHEN 9 : t$+="|MClick SELECT for an inventory." 3370 WHEN 10 : t$+="|MClick SELECT for the possible exits." 3380 WHEN 11 : t$+="|MClick SELECT to view the pictures." 3390 WHEN 12 : t$+="|MClick SELECT to view the map." 3400 WHEN 13 : t$+="|MClick SELECT to save the game, if the game has not been saved before the save window will appear.|MClick ADJUST to bring up the save window regardless." 3410ENDCASE 3420WHEN k% : t$="The save box.|M":CASE inter%!36 OF 3430WHEN 0 : t$+="Drag this icon to the directory in which you want to save the file." 3440WHEN 1 : t$+="Enter the filename for the file into this icon." 3450WHEN 2 : t$+="Click here to save the file with the current filename. If it is not a full pathname, you must drag the icon to a directory first." 3460WHEN 3 : t$+="Click SELECT to save the Gorm adventure." 3470WHEN 4 : t$+="Click SELECT to save the text inside the adventure window." 3480OTHERWISE : t$+="Save the ":CASE savegt% OF 3490WHEN 1 : t$+="game by dragging the icon to a directory viewer in the usual RISC OS fashion." 3500WHEN 2 : t$+="text by dragging the icon to a directory viewer in the usual RISC OS fashion." 3510ENDCASE 3520ENDCASE 3530WHEN maphan% : t$="The map window.|MThis window maps a plan view of all the places you have visited.|MUp and down arrows mean there are exits up and down and your current position is marked by a red spot." 3540IF zone%=2 OR zone%=3 t$+=" Yellow spots are policemen." 3550WHEN warnhan% : t$="The message window.":CASE inter%!36 OF 3560WHEN 5 : t$+="|MClick SELECT to remove the window." 3570WHEN 6 : t$+="|MClick SELECT to continue." 3580ENDCASE 3590ENDCASE 3600t$+=CHR$(0) 3610$(inter%+20)=t$ 3620inter%!0=(((21+LEN(t$))DIV4)*4)+4 3630SYS "Wimp_SendMessage",17,inter% 3640ENDPROC 3650 3660DEFPROCloaddata 3670SYS "Hourglass_On" 3680A%=OPENIN("<Gorm$Dir>.Data") 3690FOR a=1 TO totalrooms% 3700spno%=SQR(VAL(GET$#A%)-a) 3710FOR b=1 TO 9 3720rooms$(a,b)=FNuntangle(GET$#A%,spno%) 3730NEXT b 3740abbrev$(a,1)=FNuntangle(GET$#A%,spno%) 3750abbrev$(a,2)=FNuntangle(GET$#A%,spno%) 3760rentry$(a)=FNuntangle(GET$#A%,spno%) 3770FOR b=1 TO 10 3780objects$(a,b)=FNuntangle(GET$#A%,spno%) 3790NEXT b 3800FOR b=1 TO 10 3810exits(a,b)=VAL(GET$#A%) 3820NEXT b 3830SYS "Hourglass_Percentage",(a/totalrooms%)*100 3840NEXT a 3850CLOSE#A% 3860SYS "Hourglass_Off" 3870FOR a=1 TO totalrooms% 3880FOR b=1 TO 10 3890default1$(a,b)=objects$(a,b) 3900NEXT b 3910NEXT a 3920default2$(1)=rooms$(78,2):default2$(2)=rooms$(78,3) 3930default2$(3)=rooms$(78,4):default2$(4)=rooms$(85,5) 3940default2$(5)=abbrev$(78,1):default2$(6)=rentry$(78) 3950default3%(1)=exits(2,2):default3%(2)=exits(72,3) 3960default3%(3)=exits(85,2):default3%(4)=exits(110,4) 3970default3%(5)=exits(111,2):default3%(6)=exits(179,1) 3980default3%(7)=exits(310,2) 3990ENDPROC 4000 4010DEFPROCwarning(from%,icon$(1),icon$(2),icon$(3),icon$(4)) 4020wherefrom%=from% 4030FOR a=1 TO 4:PROCseticon(warnhan%,a,icon$(a)):NEXT a 4040SYS "XOS_ReadModeVariable",MODE,11 TO ,,width% 4050SYS "XOS_ReadModeVariable",MODE,12 TO ,,height% 4060SYS "XOS_ReadModeVariable",MODE,4 TO ,,xwidth% 4070SYS "XOS_ReadModeVariable",MODE,5 TO ,,ywidth% 4080width%=width%*xwidth%:height%=height%*ywidth% 4090width%-=347:height%+=138 4100SYS "Wimp_CreateMenu",,warnhan%,width%,height% 4110ENDPROC 4120 4130DEFPROCfileload 4140IF wimp%!40<>&179 THEN 4150IF wimp%!16<>5 PROCwarning(4,"","This file is not a Gorm saved game,","therefore I cannot load it.","") 4160ENDPROC 4170ENDIF 4180wimp%!12=wimp%!8:wimp%!16=4 4190SYS "Wimp_SendMessage",17,wimp%,wimp%!4 4200PROCloader(ldfilenm$+CHR$(0),2) 4210ENDPROC 4220 4230DEFPROCloadoptions 4240A%=OPENIN("<Gorm$Dir>.Options") 4250posiyn%=VAL(GET$#A%) 4260font%=VAL(GET$#A%) 4270CLOSE#A% 4280IF myfont%=-1 font%=0 4290ENDPROC 4300 4310DEFPROCsaveoptions 4320A%=OPENOUT("<Gorm$Dir>.Options") 4330BPUT#A%,STR$(posiyn%) 4340BPUT#A%,STR$(font%) 4350CLOSE#A% 4360ENDPROC 4370 4380DEFPROCloader(ldfilenm$,yesno%) 4390IF altered%=0 PROCloaditup 4400IF yesno%=2 AND altered%=1 PROCwarning(2,"","Loading this saved game will","lose the current one.","") 4410ENDPROC 4420 4430DEFPROCattach 4440SYS"Wimp_GetWindowState",,wimp%:wimp%!0=userhan%:wimp%!16=wimp%!8-4:wimp%!8=wimp%!16-128:wimp%!12=wimp%!4+930:SYS"Wimp_OpenWindow",,wimp% 4450IF posiyn%=1 wimp%!0=adventhan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!0=posihan%:wimp%!8=wimp%!16-44:SYS"Wimp_OpenWindow",,wimp% 4460ENDPROC 4470 4480DEFPROCredraw 4490wimp%!0=adventhan%:SYS "Wimp_RedrawWindow",,wimp% TO redraw% 4500IF font%=1 SYS ft%,myfont% 4510WHILE redraw% 4520drawx=(wimp%!4-wimp%!20)+2 4530drawy=wimp%!16-wimp%!24-17 4540IF font%=1 drawy-=18 4550IF font%=1 THEN 4560FOR f=1 TO 11 4570MOVE drawx+(16*LEN(quest$(f))),drawy 4580IF LEFT$(quest$(f),1)="@" SYS ftcol%,myfont%,back2%,fore2%,offset2%:SYS ftpt%,,MID$(quest$(f),2,76),17,drawx,drawy ELSE SYS ftcol%,myfont%,back1%,fore1%,offset1%:SYS ftpt%,,quest$(f),17,drawx,drawy 4590drawy-=37 4600NEXT f 4610ENDIF 4620IF font%=0 THEN 4630FOR f=1 TO 11 4640MOVE drawx,drawy 4650IF LEFT$(quest$(f),1)="@" SYS setgcol%,&0000FF00,,0:PRINT MID$(quest$(f),2,76) ELSE SYS setgcol%,&00000000,,0:PRINT quest$(f) 4660drawy-=36 4670NEXT f 4680ENDIF 4690SYS "Wimp_GetRectangle",,wimp% TO redraw% 4700ENDWHILE 4710ENDPROC 4720 4730DEFPROCredrawpics 4740SYS "XOS_ReadModeVariable",MODE,3 TO ,,cols% 4750IF cols%<>15 AND picyn%=1 picyn%=2 4760IF picyn%<>1 wimp%!0=picciehan%:SYS "Wimp_CloseWindow",,wimp%:ENDPROC 4770SYS "Wimp_RedrawWindow",,wimp% TO redraw% 4780WHILE redraw% 4790CASE nifok% OF 4800WHEN 1 : SYS setgcol%,&00000000,,0:RECTANGLEFILL wimp%!4-wimp%!20,wimp%!16-wimp%!24-424,1236,424 4810OTHERWISE : MOVE wimp%!4-wimp%!20,wimp%!16-wimp%!24-424:SYS "OS_SpriteOp",&11C,piccies%,currentpic$ 4820ENDCASE 4830SYS "Wimp_GetRectangle",,wimp% TO redraw% 4840ENDWHILE 4850ENDPROC 4860 4870DEFPROCredrawmap 4880SYS "Wimp_RedrawWindow",,wimp% TO redraw% 4890VDU5 4900WHILE redraw% 4910drawx=wimp%!4-wimp%!20+5:origx=drawx 4920drawy=wimp%!16-wimp%!24-5 4930wdth%=0 4940MOVE drawx,drawy:PRINT titler$:drawy-=32 4950SYS setgcol%,&00000000,,0:LINE drawx,drawy,drawx+1600,drawy:drawy-=15 4960FOR f=1 TO mapsize% 4970SYS setgcol%,&00000000,,0 4980md=mpdt%(zone%,f) 4990IF md<>0 AND mapyn%(md)=1 THEN 5000IF exits(md,1)>0 LINE drawx,drawy,drawx+33,drawy:LINE drawx+66,drawy,drawx+100,drawy ELSE LINE drawx,drawy,drawx+100,drawy 5010IF exits(md,2)>0 LINE drawx+100,drawy,drawx+100,drawy-33:LINE drawx+100,drawy-66,drawx+100,drawy-100 ELSE LINE drawx+100,drawy,drawx+100,drawy-100 5020IF exits(md,3)>0 LINE drawx,drawy-100,drawx+33,drawy-100:LINE drawx+66,drawy-100,drawx+100,drawy-100 ELSE LINE drawx,drawy-100,drawx+100,drawy-100 5030IF exits(md,4)>0 LINE drawx,drawy,drawx,drawy-33:LINE drawx,drawy-66,drawx,drawy-100 ELSE LINE drawx,drawy,drawx,drawy-100 5040IF exits(md,9)>0 LINE drawx+80,drawy-50,drawx+80,drawy-85:LINE drawx+80,drawy-50,drawx+74,drawy-60:LINE drawx+80,drawy-50,drawx+86,drawy-60 5050IF exits(md,10)>0 LINE drawx+80,drawy-50,drawx+80,drawy-85:LINE drawx+80,drawy-85,drawx+74,drawy-75:LINE drawx+80,drawy-85,drawx+86,drawy-75 5060MOVE drawx+10,drawy-8:PRINT abbrev$(md,1) 5070MOVE drawx+10,drawy-40:PRINT abbrev$(md,2) 5080IF roomno%=md SYS setgcol%,&0000FF00,,0:CIRCLEFILLdrawx+20,drawy-84,7 5090FOR a%=1 TO 3 5100IF md=police%(a%) SYS setgcol%,&00FFFF00:CIRCLEFILLdrawx+50,drawy-84,7 5110NEXT a% 5120ENDIF 5130wdth%+=1 5140IF wdth%=mapwidth% wdth%=0:drawx=origx-100:drawy-=100 5150drawx+=100 5160NEXT f 5170SYS "Wimp_GetRectangle",,wimp% TO redraw% 5180ENDWHILE 5190ENDPROC 5200 5210DEFPROCdecidepics 5220currentpic$=STR$(zone%) 5230CASE roomno% OF 5240WHEN 71,220,311 : currentpic$="5" 5250WHEN 285,286,287,288,289,290,291,292 : currentpic$="7" 5260WHEN 36,37,38,41,84,279,293,294,295,296 : currentpic$="8" 5270WHEN 72,78,79,80 : currentpic$="14" 5280WHEN 49,50,51,52,63,64 : currentpic$="10" 5290WHEN 262,263,264,265,266 : currentpic$="11" 5300WHEN 310 : currentpic$="12" 5310WHEN 226,227,228 : currentpic$="13" 5320ENDCASE 5330IF roomno%=78 AND fire%>0 currentpic$="9" 5340IF renw%=1 currentpic$="6" 5350wimp%!0=picciehan%:PROCredrawpics 5360ENDPROC 5370 5380DEFFNuntangle(myline$,myrandno) 5390theline$="" 5400IF myline$="" =theline$ 5410FOR lncnt=1 TO LEN(myline$) 5420theline$+=CHR$(ASC(MID$(myline$,lncnt,1))-myrandno) 5430NEXT lncnt 5440=theline$ 5450 5460DEFPROCkey 5470IF wimp%!0=userhan% i$=FNreadinput:PROCadd("@"+i$):PROCrespond:IF i$<>"quit please" PROCseticon(userhan%,1,""):SYS"Wimp_SetCaretPosition",userhan%,1,,,-1 5480IF wimp%!0=k% AND wimp%!4=1 PROCgetfilename ELSE ENDPROC 5490IF INSTR(filena$,".")=0 PROCerr(1,"To save, drag the icon to a directory viewer."):ENDPROC 5500filename$=filena$ 5510PROCdothingy(1) 5520ENDPROC 5530 5540DEFPROCok(button%) 5550IF wimp%!8<>1 AND wimp%!8<>4 ENDPROC 5560PROCgetfilename 5570IF INSTR(filena$,".")=0 PROCerr(1,"To save, drag the icon to a directory viewer."):ENDPROC 5580filename$=filena$ 5590IF button%=1 button%=0 5600IF button%=4 button%=1 5610PROCdothingy(button%) 5620ENDPROC 5630 5640DEFPROCdrag_complete 5650IF dragyn%<>-1 SYS "DragASprite_Stop" 5660SYS "Wimp_GetPointerInfo",,wimp% 5670TheWindow%=wimp%!12:TheIcon%=wimp%!16:x=wimp%!0:y=wimp%!4 5680wimp%!0=64:wimp%!12=0:wimp%!16=1:wimp%!20=TheWindow%:wimp%!24=TheIcon% 5690wimp%!28=x:wimp%!32=y 5700IF savegt%=1 wimp%!36=5500 ELSE wimp%!36=1200 5710IF savegt%=1 wimp%!40=&179 ELSE wimp%!40=&FFF 5720$(wimp%+44)=filena$ 5730SYS "Wimp_SendMessage",17,wimp%,TheWindow%,TheIcon% 5740ENDPROC 5750 5760DEFPROCsave 5770x=wimp%!0:y=wimp%!4:z=wimp%!8 5780filename$=FNconvert(wimp%+44) 5790wimp%!0=x:wimp%!12=z:wimp%!16=3 5800SYS "Wimp_SendMessage",18,wimp%,y 5810filename$=FNfixstring(filename$+CHR$(0)) 5820PROCdothingy(1) 5830ENDPROC 5840 5850DEFFNconvert(no%) 5860doofer$="" 5870WHILE ?no% 5880doofer$+=CHR$?no% 5890no%+=1 5900ENDWHILE 5910=doofer$ 5920 5930DEFPROCdothingy(fg%) 5940IF savegt%=2 PROCsavetext:ENDPROC 5950A%=OPENOUT(filename$) 5960BPUT#A%,"!Gorm Saved Game - saved on "+TIME$ 5970BPUT#A%,STR$(swear%) 5980BPUT#A%,STR$(computer%) 5990BPUT#A%,STR$(notimes%) 6000BPUT#A%,oldword$ 6010BPUT#A%,STR$(roomno%) 6020BPUT#A%,STR$(sleep%) 6030BPUT#A%,STR$(written%) 6040BPUT#A%,STR$(font%) 6050BPUT#A%,STR$(nifok%) 6060BPUT#A%,STR$(exits(2,2)) 6070BPUT#A%,STR$(exits(72,3)) 6080BPUT#A%,STR$(exits(85,2)) 6090BPUT#A%,STR$(exits(110,4)) 6100BPUT#A%,STR$(exits(111,2)) 6110BPUT#A%,STR$(exits(179,1)) 6120BPUT#A%,STR$(exits(310,2)) 6130BPUT#A%,STR$(ill%) 6140BPUT#A%,STR$(medium1%) 6150BPUT#A%,STR$(medium2%) 6160BPUT#A%,STR$(payed%) 6170BPUT#A%,STR$(renw%) 6180BPUT#A%,STR$(crier%) 6190BPUT#A%,STR$(mould%) 6200BPUT#A%,STR$(dug%) 6210BPUT#A%,STR$(pamp%) 6220BPUT#A%,STR$(whiz%) 6230BPUT#A%,STR$(fire%) 6240BPUT#A%,STR$(suitcase%) 6250BPUT#A%,STR$(injure%) 6260BPUT#A%,STR$(zone%) 6270BPUT#A%,STR$(dugged%) 6280BPUT#A%,rooms$(78,2) 6290BPUT#A%,rooms$(78,3) 6300BPUT#A%,rooms$(78,4) 6310BPUT#A%,rooms$(85,5) 6320BPUT#A%,abbrev$(78,1) 6330BPUT#A%,rentry$(78) 6340FOR a%=1 TO 3 6350BPUT#A%,STR$(police%(a%)) 6360BPUT#A%,STR$(poldir%(a%)) 6370NEXT a% 6380BPUT#A%,STR$(drugged%) 6390FOR a%=1 TO totalrooms% 6400BPUT#A%,STR$(mapyn%(a%)) 6410NEXT a% 6420FOR a%=1 TO 10 6430BPUT#A%,owns$(a%) 6440NEXT a% 6450FOR a%=1 TO 11 6460BPUT#A%,quest$(a%) 6470NEXT a% 6480FOR a%=1 TO totalrooms% 6490FOR b%=1 TO 10 6500BPUT#A%,objects$(a%,b%) 6510NEXT b% 6520NEXT a% 6530CLOSE#A% 6540OSCLI"Settype "+filename$+" 179" 6550IF fg%=1 SYS "Wimp_CreateMenu",-1 6560PROCseticon(k%,1,filename$) 6570wimp%!0=k%:SYS"Wimp_CloseWindow",,wimp% 6580altered%=0 6590ENDPROC 6600 6610DEFPROCsavetext 6620A%=OPENOUT(filename$) 6630BPUT#A%,"Text from Gorm adventure:" 6640BPUT#A%,"" 6650FOR a%=1 TO 11 6660line$=quest$(a%) 6670IF LEFT$(line$,1)="@" LEFT$(line$,1)="-" 6680BPUT#A%,line$ 6690NEXT a% 6700CLOSE#A% 6710OSCLI"Settype "+filename$+" FFF" 6720IF fg%=1 SYS "Wimp_CreateMenu",-1 6730PROCseticon(k%,1,filename$) 6740wimp%!0=k%:SYS"Wimp_CloseWindow",,wimp% 6750ENDPROC 6760 6770DEFPROCerr(wimp%!0,$(wimp%+4)) 6780IF fonterror%=1 myfont%=-1:font%=0:ENDPROC 6790IF heaperror%=1 PROCseticon(greethan%,1,"Without pictures"):picyn%=0:ENDPROC 6800CASE wimp%!0 OF 6810WHEN 204 : $(wimp%+4)+=". Change the filename to something possible." 6820WHEN 67785 : $(wimp%+4)+=". Flip the tab on the disc and try again." 6830ENDCASE 6840SYS "Wimp_ReportError",wimp%,1,"Gorm" 6850ENDPROC 6860 6870DEFPROCiconbar 6880wimp%!0=-1:wimp%!4=0:wimp%!8=0 6890wimp%!12=68:wimp%!16=68:wimp%!20=&300A 6900$(wimp%+24)="!Gorm" 6910SYS "Wimp_CreateIcon",,wimp% TO ichan% 6920ENDPROC 6930 6940DEFPROCmenuselect 6950a%=wimp%!0:b%=wimp%!4 6960SYS "Wimp_GetPointerInfo",,wimp% 6970but%=wimp%!8 6980wimp%!0=a%:wimp%!4=b% 6990fntopt%=1:IF m%=0 fntopt%=0 7000extraopt%=2:IF m%=0 extraopt%=1 7010panels%=3:IF m%=0 panels%=2 7020restrtopt%=4:IF m%=0 restrtopt%=3 7030saveopt%=5:IF m%=0 saveopt%=4 7040CASE wimp%!0 OF 7050 WHEN fntopt% : CASE wimp%!4 OF 7060 WHEN 0,1 : font%=wimp%!4:wimp%!0=adventhan%:IF open%=1 PROCredraw 7070 ENDCASE 7080 WHEN extraopt% : CASE wimp%!4 OF 7090 WHEN -1 : wimp%!0=maphan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp%:IF picyn%=1 wimp%!0=picciehan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 7100 WHEN 0 : wimp%!0=maphan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 7110 WHEN 1 : wimp%!0=picciehan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 7120 ENDCASE 7130 WHEN panels% : CASE wimp%!4 OF 7140 WHEN 0 : posiyn%=1-posiyn% 7150 IF posiyn%=0 wimp%!0=posihan%:SYS"Wimp_CloseWindow",,wimp% 7160 IF posiyn%=1 AND open%=1 wimp%!0=adventhan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!0=posihan%:wimp%!8=wimp%!16-44:SYS"Wimp_OpenWindow",,wimp% 7170 ENDCASE 7180 WHEN restrtopt% : IF altered%=1 PROCwarning(3,"","Restarting will lose","the current game.","") ELSE PROCrestart 7190 WHEN saveopt% : CASE wimp%!4 OF 7200 WHEN 0 : PROCgetfilename:IF INSTR(filena$,".")=0 wimp%!0=k%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp%:SYS"Wimp_SetCaretPosition",k%,1,,,-1,LEN(filena$) ELSE filename$=filena$:PROCdothingy(0) 7210 WHEN 1 : PROCsaveoptions 7220 OTHERWISE : PROCgetfilename:IF INSTR(filena$,".")=0 wimp%!0=k%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp%:SYS"Wimp_SetCaretPosition",k%,1,,,-1,LEN(filena$) ELSE filename$=filena$:PROCdothingy(0) 7230 ENDCASE 7240 WHEN 6 : PROCquityn 7250ENDCASE 7260IF but%=1 AND wimp%!0<>6 wimp%!0=mousx%:wimp%!4=mousy%:PROCmakemenu(m%) 7270ENDPROC 7280 7290DEFPROCrestart 7300SYS "Hourglass_On" 7310FOR a=1 TO 11 7320quest$(a)="" 7330NEXT a 7340FOR a%=1 TO 10 7350owns$(a%)="" 7360NEXT a% 7370swear%=0:computer%=0:notimes%=0:roomno%=1:zone%=1:sleep%=0:altered%=0:written%=0:suitcase%=0:nifok%=0:crier%=1:mould%=0:dug%=0:pamp%=0:whiz%=0:dugged%=0:fire%=1:drugged%=0:injure%=0:renw%=0:ill%=0:medium1%=0:medium2%=0:payed%=0 7380police%(1)=107:poldir%(1)=4 7390police%(2)=143:poldir%(2)=4 7400police%(3)=206:poldir%(3)=1 7410FOR a=1 TO totalrooms% 7420FOR b=1 TO 10 7430mapyn%(a)=0 7440objects$(a,b)=default1$(a,b) 7450NEXT b 7460NEXT a 7470rooms$(78,2)=default2$(1):rooms$(78,3)=default2$(2) 7480rooms$(78,4)=default2$(3):rooms$(85,5)=default2$(4) 7490abbrev$(78,1)=default2$(5):rentry$(78)=default2$(6) 7500exits(2,2)=default3%(1):exits(72,3)=default3%(2) 7510exits(85,2)=default3%(3):exits(110,4)=default3%(4) 7520exits(111,2)=default3%(5):exits(179,1)=default3%(6) 7530exits(310,2)=default3%(7) 7540PROCadd("Welcome to your quest brave adventurer.") 7550i$="look":PROClook 7560wimp%!0=adventhan%:PROCredraw 7570PROCdecidetitle 7580mapyn%(1)=1:wimp%!0=maphan%:PROCredrawmap:PROCdecidepos 7590SYS "Hourglass_Off" 7600ENDPROC 7610 7620DEFPROCgetfilename 7630wimp%!0=k%:wimp%!4=1 7640SYS &400CE,,wimp% 7650filena$=$wimp%!28 7660filena$=FNfixstring(filena$+CHR$(0)) 7670ENDPROC 7680 7690DEFPROCchangefilename(opt%) 7700PROCgetfilename 7710IF INSTR(filena$,".")=0 AND opt%=1 PROCseticon(k%,1,"SavedGame"):SYS "Wimp_SetCaretPosition",k%,1,,,-1,9 7720IF INSTR(filena$,".")=0 AND opt%=2 PROCseticon(k%,1,"Text"):SYS "Wimp_SetCaretPosition",k%,1,,,-1,4 7730ENDPROC 7740 7750DEFFNreadinput 7760wimp%!0=userhan%:wimp%!4=1 7770SYS &400CE,,wimp% 7780=$wimp%!28 7790 7800DEFFNfixstring(origname$) 7810p=1:name$="" 7820WHILE MID$(origname$,p,1)<>CHR$(0) 7830name$+=MID$(origname$,p,1):p+=1 7840ENDWHILE 7850=name$ 7860 7870DEFPROCjustfile 7880WHILE INSTR(filena$,".")>0 7890filena$=MID$(filena$,INSTR(filena$,".")+1) 7900ENDWHILE 7910ENDPROC 7920 7930DEFPROCseticon(wimp%!0,wimp%!4,t$) 7940SYS &400CE,,wimp% 7950$wimp%!28=t$ 7960wimp%!8=0:wimp%!12=0 7970SYS &400CD,,wimp% 7980ENDPROC 7990 8000DEFPROCdrag 8010IF wimp%!12<>k% OR wimp%!16<>0 ENDPROC 8020PROCcheckdrag:PROCgetfilename:PROCjustfile 8030wimp%!0=k%:SYS "Wimp_GetWindowState",,wimp% 8040x=wimp%!4:y=wimp%!16:wimp%!4=0 8050SYS "Wimp_GetIconState",,wimp% 8060wimp%!4=5:wimp%!8+=x-4:wimp%!12+=y-4 8070wimp%!16+=x+4:wimp%!20+=y+4 8080wimp%!24=0:wimp%!28=0 8090wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF 8100dragsprite$="file_179":IF savegt%=2 dragsprite$="file_fff" 8110IF dragyn%=-1 SYS "Wimp_DragBox",,wimp% ELSE SYS "DragASprite_Start",%11000101,1,dragsprite$,wimp%+8,wimp%+24 8120ENDPROC 8130 8140DEFPROCshiftup 8150FOR h=1 TO 10 8160quest$(h)=quest$(h+1) 8170NEXT h 8180ENDPROC 8190 8200DEFPROCadd(phrase$) 8210g%=0 8220b%=LEN(phrase$):IF MID$(phrase$,1,1)="@" b%-=1:g%=1 8230IF b%<77 PROCshiftup:quest$(11)=phrase$:flag%=0 ELSE flag%=1:f%=0 8240WHILE flag%=1 8250PROCshiftup 8260temphrase$=MID$(phrase$,(f%*76)+1,76) 8270there=0 8280FOR i=76 TO 1 STEP-1 8290IF MID$(temphrase$,i,1)=" " OR MID$(temphrase$,i,1)="." OR MID$(temphrase$,i,1)="," OR MID$(temphrase$,i,1)="?" OR MID$(temphrase$,i,1)=":" OR MID$(temphrase$,i,1)=";" OR MID$(temphrase$,i,1)="!" OR MID$(temphrase$,i,1)="'" there=i:i=1 8300NEXT i 8310IF LEN(temphrase$)<76 there=0 8320IF there<2 quest$(11)=MID$(phrase$,(f%*76)+1,76) 8330IF there>1 quest$(11)=MID$(phrase$,(f%*76)+1,there):phrase$=MID$(phrase$,1,(f%*76)+there)+STRING$(76-there,"*")+MID$(phrase$,(f%*76)+1+there,LEN(phrase$)) 8340IF g%=1 AND f%<>0 quest$(11)="@"+quest$(11) 8350IF there>1 b%+=76-there 8360f%+=1:IF b%-(f%*76)<1 flag%=0 8370ENDWHILE 8380wimp%!0=adventhan% 8390PROCredraw 8400ENDPROC 8410 8420DEFPROCseticonsprite(wimp%!0,wimp%!4,spritetype$) 8430windie%=wimp%!0 8440SYS "Wimp_GetIconState",,wimp% 8450SYS "Wimp_DeleteIcon",,wimp% 8460wimp%!4=wimp%!8:wimp%!8=wimp%!12:wimp%!12=wimp%!16 8470wimp%!16=wimp%!20:wimp%!20=wimp%!24:$(wimp%+24)=spritetype$ 8480SYS "Wimp_CreateIcon",,wimp% 8490wimp%!0=windie%:SYS "Wimp_ForceRedraw",wimp%!0,-100,-100,200,200 8500ENDPROC 8510 8520DEFPROCclick 8530IF wimp%!8=16 OR wimp%!8=64 PROCdrag 8540IF wimp%!8=4 AND wimp%!12=userhan% CASE wimp%!16 OF 8550 WHEN 0 : i$="@Go north.":PROCadd(i$):PROCrespond 8560 WHEN 2 : i$="@"+FNreadinput:PROCadd(i$):PROCrespond:PROCseticon(userhan%,1,""):SYS"Wimp_SetCaretPosition",userhan%,1,,,-1 8570 WHEN 3 : i$="@Go east.":PROCadd(i$):PROCrespond 8580 WHEN 4 : i$="@Go south.":PROCadd(i$):PROCrespond 8590 WHEN 5 : i$="@Go west.":PROCadd(i$):PROCrespond 8600 WHEN 6 : i$="@Go up.":PROCadd(i$):PROCrespond 8610 WHEN 7 : i$="@Go down.":PROCadd(i$):PROCrespond 8620 WHEN 8 : i$="@Look.":PROCadd(i$):PROCrespond 8630 WHEN 9 : i$="@Inventory.":PROCadd(i$):PROCrespond 8640 WHEN 10 : i$="@Exits.":PROCadd(i$):PROCrespond 8650 WHEN 11 : wimp%!0=picciehan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 8660 WHEN 12 : wimp%!0=maphan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 8670 WHEN 13 : PROCgetfilename:IF INSTR(filena$,".")=0 wimp%!0=k%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp%:SYS"Wimp_SetCaretPosition",k%,1,,,-1,LEN(filena$) ELSE filename$=filena$:PROCdothingy(0) 8680ENDCASE 8690IF wimp%!8=1 AND wimp%!12=userhan% CASE wimp%!16 OF 8700 WHEN 0 : i$="@Go north.":PROCadd(i$):PROCrespond 8710 WHEN 2 : i$="@"+FNreadinput:PROCadd(i$):PROCrespond 8720 WHEN 3 : i$="@Go east.":PROCadd(i$):PROCrespond 8730 WHEN 4 : i$="@Go south.":PROCadd(i$):PROCrespond 8740 WHEN 5 : i$="@Go west.":PROCadd(i$):PROCrespond 8750 WHEN 6 : i$="@Go up.":PROCadd(i$):PROCrespond 8760 WHEN 7 : i$="@Go down.":PROCadd(i$):PROCrespond 8770 WHEN 8 : i$="@Look.":PROCadd(i$):PROCrespond 8780 WHEN 9 : i$="@Inventory.":PROCadd(i$):PROCrespond 8790 WHEN 10 : i$="@Exits.":PROCadd(i$):PROCrespond 8800 WHEN 11 : wimp%!0=picciehan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 8810 WHEN 12 : wimp%!0=maphan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 8820 WHEN 13 : PROCgetfilename:wimp%!0=k%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp%:SYS"Wimp_SetCaretPosition",k%,1,,,-1,LEN(filena$) 8830ENDCASE 8840IF wimp%!12=warnhan% AND wimp%!8<>2 CASE wimp%!16 OF 8850WHEN 5 : wimp%!0=warnhan%:SYS "Wimp_CloseWindow",,wimp% 8860WHEN 6 : nbtm%+=1:wimp%!0=warnhan%:SYS "Wimp_CloseWindow",,wimp%:IF nbtm%=1 PROCcontinueaction 8870ENDCASE 8880IF wimp%!12=k% AND wimp%!8<>2 CASE wimp%!16 OF 8890WHEN 2 : PROCok(wimp%!8) 8900WHEN 3 : savegt%=1:PROCseticonsprite(k%,0,"file_179"):PROCchangefilename(1) 8910WHEN 4 : savegt%=2:PROCseticonsprite(k%,0,"file_fff"):PROCchangefilename(2) 8920ENDCASE 8930IF wimp%!8=2 AND wimp%!12=adventhan% PROCmakemenu(0):m%=0 8940IF wimp%!12=-2 AND wimp%!8=2 PROCmakemenu(1):m%=1 8950IF wimp%!8=1 AND wimp%!12=-2 THEN 8960wimp%!0=maphan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 8970SYS "XOS_ReadModeVariable",MODE,3 TO ,,cols% 8980IF cols%<>15 AND picyn%=1 picyn%=2 8990IF cols%=15 AND picyn%=2 picyn%=1 9000IF picyn%=1 wimp%!0=picciehan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 9010ENDIF 9020IF wimp%!8=4 AND wimp%!12=-2 THEN 9030wimp%!0=adventhan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 9040PROCattach:open%=1:oldtime%=TIME 9050ENDIF 9060ENDPROC 9070 9080DEFPROCmakemenu(m%) 9090SYS "XOS_ReadModeVariable",MODE,3 TO ,,cols% 9100IF cols%<>15 AND picyn%=1 picyn%=2 9110IF cols%=15 AND picyn%=2 picyn%=1 9120$menu%="Gorm" 9130menu%?12=7 9140menu%?13=2 9150menu%?14=7 9160menu%?15=0 9170menu%!16=180 9180menu%!20=44 9190menu%!24=0 9200menu%!28=2:IF m%=0 menu%!28=0 9210menu%!32=inhan%:IF m%=0 menu%!32=menu%+196 9220menu%!36=&7000021 9230$(menu%+40)="Info":IF m%=0 $(menu%+40)="Font" 9240menu%!52=0 9250menu%!56=menu%+196:IF m%=0 menu%!56=menu%+272 9260menu%!60=&7000021 9270$(menu%+64)="Font":IF m%=0 $(menu%+64)="Extras" 9280menu%!76=0 9290menu%!80=menu%+272:IF m%=0 menu%!80=menu%+348 9300menu%!84=&7000021 9310$(menu%+88)="Extras":IF m%=0 $(menu%+88)="Panels" 9320menu%!100=0 9330menu%!104=menu%+348:IF m%=0 menu%!104=-1 9340menu%!108=&7000021 9350$(menu%+112)="Panels":IF m%=0 $(menu%+112)="Restart" 9360menu%!124=0:IF m%=0 menu%!124=&80 9370menu%!128=-1:IF m%=0 menu%!128=menu%+400 9380menu%!132=&7000021 9390$(menu%+136)="Restart":IF m%=0 $(menu%+136)="Save" 9400menu%!148=2 9410menu%!152=menu%+400 9420menu%!156=&7000021 9430$(menu%+160)="Save" 9440menu%!172=&80 9450menu%!176=-1 9460menu%!180=&7000021 9470$(menu%+184)="Quit" 9480$(menu%+196)="Font" 9490menu%?208=7 9500menu%?209=2 9510menu%?210=7 9520menu%?211=0 9530menu%!212=130 9540menu%!216=44 9550menu%!220=0 9560menu%!224=0:IF font%=0 menu%!224=1 9570menu%!228=-1 9580menu%!232=&7000021 9590$(menu%+236)="System" 9600menu%!248=&80:IF font%=1 menu%!248=&81 9610menu%!252=-1 9620menu%!256=&7000021:IF myfont%=-1 menu%!256=&7400021 9630$(menu%+260)="Trinity" 9640$(menu%+272)="Extras" 9650menu%?284=7 9660menu%?285=2 9670menu%?286=7 9680menu%?287=0 9690menu%!288=140 9700menu%!292=44 9710menu%!296=0 9720menu%!300=0 9730menu%!304=-1 9740menu%!308=&7000021 9750$(menu%+312)="Map" 9760menu%!324=&80 9770menu%!328=-1 9780menu%!332=&7000021:IF picyn%<>1 menu%!332=&7400021 9790$(menu%+336)="Pictures" 9800$(menu%+348)="Panels" 9810menu%?360=7 9820menu%?361=2 9830menu%?362=7 9840menu%?363=0 9850menu%!364=160 9860menu%!368=44 9870menu%!372=0 9880menu%!376=&80:IF posiyn%=1 menu%!376=&81 9890menu%!380=-1 9900menu%!384=&7000021 9910$(menu%+388)="Position" 9920$(menu%+400)="Save" 9930menu%?412=7 9940menu%?413=2 9950menu%?414=7 9960menu%?415=0 9970menu%!416=140 9980menu%!420=44 9990menu%!424=0 10000menu%!428=0 10010menu%!432=k% 10020menu%!436=&7000021 10030$(menu%+440)="File" 10040menu%!452=&80 10050menu%!456=-1 10060menu%!460=&7000021 10070$(menu%+464)="Choices" 10080mousx%=wimp%!0:mousy%=wimp%!4 10090IF m%=0 SYS "Wimp_CreateMenu",,menu%,wimp%!0-70,wimp%!4 10100IF m%=1 SYS "Wimp_CreateMenu",,menu%,wimp%!0-68,452 10110ENDPROC 10120 10130DEFFNchangecase(a$) 10140IF a$="" ="" 10150wrd$="" 10160FOR a=1 TO LEN(a$) 10170l=ASC(MID$(a$,a,1)) 10180IF l>64 AND l<90 l+=32 10190IF l>215 AND l<223 l+=32 10200IF l>191 AND l<215 l+=32 10210wrd$+=CHR$(l) 10220NEXT a 10230=wrd$ 10240 10250DEFFNremove(a$) 10260IF a$="" ="" 10270wrd$="" 10280FOR a=1 TO LEN(a$) 10290l=ASC(MID$(a$,a,1)) 10300p%=0 10310IF l<47 p%=1 10320IF l>57 AND l<65 p%=1 10330IF l=32 p%=0 10340IF p%=0 wrd$+=CHR$(l) 10350NEXT a 10360=wrd$ 10370 10380DEFPROCthenorand 10390reali$=i$ 10400REPEAT 10410thenyn%=0:postn%=260 10420then%(1)=INSTR(reali$,",and then") 10430then%(2)=INSTR(reali$,", and then") 10440then%(3)=INSTR(reali$," and then") 10450then%(4)=INSTR(reali$,", then") 10460then%(5)=INSTR(reali$,",then") 10470then%(6)=INSTR(reali$,"then") 10480then%(7)=INSTR(reali$,", and") 10490then%(8)=INSTR(reali$,",and") 10500then%(9)=INSTR(reali$," and") 10510then%(10)=INSTR(reali$,",") 10520FOR a%=1 TO 10 10530IF then%(a%)<postn% AND then%(a%)>0 thenyn%=a%:postn%=then%(a%) 10540NEXT a% 10550CASE thenyn% OF 10560 WHEN 1 : PROCdoit(postn%-1,9) 10570 WHEN 2 : PROCdoit(postn%-1,10) 10580 WHEN 3 : PROCdoit(postn%-1,9) 10590 WHEN 4 : PROCdoit(postn%-1,6) 10600 WHEN 5 : PROCdoit(postn%-1,5) 10610 WHEN 6 : PROCdoit(postn%-1,4) 10620 WHEN 7 : PROCdoit(postn%-1,5) 10630 WHEN 8 : PROCdoit(postn%-1,4) 10640 WHEN 9 : PROCdoit(postn%-1,4) 10650 WHEN 10 : PROCdoit(postn%-1,1) 10660ENDCASE 10670UNTIL thenyn%=0 10680i$=FNremspace(i$) 10690PROCrespond2 10700ENDPROC 10710 10720DEFPROCdoit(pntr%,wrdl%) 10730thenyn%=1 10740i$=MID$(reali$,1,pntr%) 10750reali$=MID$(reali$,pntr%+1+wrdl%,LEN(reali$)-pntr%) 10760i$=FNremspace(i$) 10770PROCrespond2:PROCadd("") 10780i$=reali$ 10790ENDPROC 10800 10810DEFFNremspace(t$) 10820txt$="":textflg%=0 10830FOR a%=1 TO LEN(i$) 10840IF MID$(t$,a%,1)<>" " OR textflg%=1 txt$+=MID$(t$,a%,1):textflg%=1 10850NEXT a% 10860t$=txt$ 10870txt$="":textflg%=0 10880FOR a%=LEN(t$) TO 1 STEP-1 10890IF MID$(t$,a%,1)<>" " OR textflg%=1 txt$=MID$(t$,a%,1)+txt$:textflg%=1 10900NEXT a% 10910=txt$ 10920 10930DEFPROCrespond 10940altered%=1 10950oldtime%=TIME 10960i$=FNfixstring(i$+CHR$(0)) 10970i$=FNchangecase(i$) 10980PROCthenorand 10990ENDPROC 11000 11010DEFPROCrespond2 11020IF i$=stng$ AND nifok%=1 PROCadd(strng$):nifok%=0:PROCdecidepics:ENDPROC 11030IF renw%=1 PROCnoneed:ENDPROC 11040i$=FNremove(i$) 11050IF nifok%=1 PROCgonner:ENDPROC 11060IF sleep%=1 AND TIME-6000<sleepoldtime% PROCadd("Zzzzzzzzzzzzz..."):ENDPROC 11070IF swear%=5 PROCnotspeak:ENDPROC 11080IF i$="" PROCnothing:PROCadd(t$):ENDPROC 11090IF i$=oldword$ AND i$<>"" notimes%+=1 ELSE oldword$=i$:notimes%=0 11100IF i$=oldword$ AND notimes%>4 PROCrepeat:ENDPROC 11110IF INSTR(i$,"sheep")>0 AND INSTR(i$,ec$(1))>0 PROCwelsh:ENDPROC 11120IF INSTR(i$,ec$(2))>0 PROCswear:ENDPROC 11130IF INSTR(i$,ec$(3))>0 PROCswear:ENDPROC 11140IF INSTR(i$,ec$(4))>0 PROCswear:ENDPROC 11150IF INSTR(i$,ec$(5))>0 PROCswear:ENDPROC 11160IF INSTR(i$,ec$(6))>0 PROCadd("Ooh! That's hard language isn't it!"):ENDPROC 11170IF INSTR(i$,ec$(7))>0 PROCswear:ENDPROC 11180IF INSTR(i$,ec$(8))>0 PROCswear:ENDPROC 11190IF INSTR(i$,ec$(9))>0 PROCswear:ENDPROC 11200IF INSTR(i$,ec$(10))>0 PROCswear:ENDPROC 11210IF INSTR(i$,ec$(11))>0 PROCswear:ENDPROC 11220IF INSTR(i$,ec$(12))>0 PROCswear:ENDPROC 11230IF INSTR(i$,ec$(13))>0 PROCswear:ENDPROC 11240IF INSTR(i$,ec$(1))>0 PROCnaughty:ENDPROC 11250IF INSTR(i$,"shut up")>0 PROCtense:ENDPROC 11260IF INSTR(i$,"shutup")>0 PROCtense:ENDPROC 11270IF INSTR(i$,"go away")>0 PROCtense:ENDPROC 11280IF LEFT$(i$,4)="say " PROCsay:ENDPROC 11290IF LEFT$(i$,4)="tell" PROCtell:ENDPROC 11300IF LEFT$(i$,6)="print " PROCprint:ENDPROC 11310IF LEFT$(i$,4)="look" PROClook:ENDPROC 11320IF LEFT$(i$,7)="examine" PROCmuchmorespecific:ENDPROC 11330IF LEFT$(i$,7)="inspect" PROCmuchmorespecific:ENDPROC 11340IF LEFT$(i$,7)="observe" PROCmuchmorespecific:ENDPROC 11350IF LEFT$(i$,5)="exits" PROCexits:ENDPROC 11360IF LEFT$(i$,4)="open" PROCopen:ENDPROC 11370IF LEFT$(i$,4)="shut" PROCclose:ENDPROC 11380IF LEFT$(i$,5)="close" PROCclose:ENDPROC 11390IF LEFT$(i$,3)="inv" PROCinv:ENDPROC 11400IF LEFT$(i$,2)="go" PROCgo:ENDPROC 11410IF LEFT$(i$,3)="run" PROCgo:ENDPROC 11420IF LEFT$(i$,4)="move" PROCgo:ENDPROC 11430IF LEFT$(i$,4)="walk" PROCgo:ENDPROC 11440IF LEFT$(i$,6)="travel" PROCgo:ENDPROC 11450IF LEFT$(i$,4)="read" PROCread:ENDPROC 11460IF LEFT$(i$,5)="write" PROCwrite:ENDPROC 11470IF LEFT$(i$,6)="scrawl" PROCwrite:ENDPROC 11480IF LEFT$(i$,8)="scribble" PROCwrite:ENDPROC 11490IF LEFT$(i$,9)="northeast" PROCnortheast:ENDPROC 11500IF LEFT$(i$,9)="southeast" PROCsoutheast:ENDPROC 11510IF LEFT$(i$,9)="southwest" PROCsouthwest:ENDPROC 11520IF LEFT$(i$,9)="northwest" PROCnorthwest:ENDPROC 11530IF LEFT$(i$,5)="north" PROCnorth:ENDPROC 11540IF LEFT$(i$,4)="east" PROCeast:ENDPROC 11550IF LEFT$(i$,5)="south" PROCsouth:ENDPROC 11560IF LEFT$(i$,4)="west" PROCwest:ENDPROC 11570IF LEFT$(i$,2)="up" PROCup:ENDPROC 11580IF LEFT$(i$,4)="down" PROCdown:ENDPROC 11590IF LEFT$(i$,7)="descend" PROCdown:ENDPROC 11600IF LEFT$(i$,5)="climb" PROCup:ENDPROC 11610IF LEFT$(i$,6)="ascend" PROCup:ENDPROC 11620IF LEFT$(i$,3)="get" PROCget:ENDPROC 11630IF LEFT$(i$,4)="grab" PROCget:ENDPROC 11640IF LEFT$(i$,4)="take" PROCget:ENDPROC 11650IF LEFT$(i$,6)="snatch" PROCget:ENDPROC 11660IF LEFT$(i$,6)="obtain" PROCget:ENDPROC 11670IF LEFT$(i$,7)="pick up" PROCget:ENDPROC 11680IF LEFT$(i$,6)="pickup" PROCget:ENDPROC 11690IF LEFT$(i$,4)="wear" PROCget:ENDPROC 11700IF LEFT$(i$,7)="collect" PROCget:ENDPROC 11710IF LEFT$(i$,4)="give" PROCgive:ENDPROC 11720IF LEFT$(i$,6)="donate" PROCgive:ENDPROC 11730IF LEFT$(i$,4)="drop" PROCdrop:ENDPROC 11740IF LEFT$(i$,6)="unlock" PROCunlock:ENDPROC 11750IF LEFT$(i$,4)="lock" PROClock:ENDPROC 11760IF LEFT$(i$,3)="eat" PROCeat:ENDPROC 11770IF LEFT$(i$,5)="scoff" PROCeat:ENDPROC 11780IF LEFT$(i$,7)="swallow" PROCeat:ENDPROC 11790IF LEFT$(i$,7)="consume" PROCeat:ENDPROC 11800IF LEFT$(i$,4)="bite" PROCeat:ENDPROC 11810IF LEFT$(i$,5)="taste" PROCeat:ENDPROC 11820IF LEFT$(i$,6)="nibble" PROCeat:ENDPROC 11830IF LEFT$(i$,5)="drink" PROCdrink:ENDPROC 11840IF LEFT$(i$,3)="ask" PROCask:ENDPROC 11850IF LEFT$(i$,3)="put" PROCput:ENDPROC 11860IF LEFT$(i$,3)="saw" PROCsaw:ENDPROC 11870IF LEFT$(i$,3)="cut" PROCsaw:ENDPROC 11880IF LEFT$(i$,3)="hit" PROCviolence:ENDPROC 11890IF LEFT$(i$,4)="kill" PROCviolence:ENDPROC 11900IF LEFT$(i$,4)="stab" PROCviolence:ENDPROC 11910IF LEFT$(i$,4)="kick" PROCviolence:ENDPROC 11920IF LEFT$(i$,5)="fight" PROCviolence:ENDPROC 11930IF LEFT$(i$,5)="wound" PROCviolence:ENDPROC 11940IF LEFT$(i$,6)="murder" PROCviolence:ENDPROC 11950IF LEFT$(i$,5)="punch" PROCviolence:ENDPROC 11960IF LEFT$(i$,5)="thump" PROCviolence:ENDPROC 11970IF LEFT$(i$,5)="whack" PROCviolence:ENDPROC 11980IF LEFT$(i$,4)="slap" PROCviolence:ENDPROC 11990IF LEFT$(i$,5)="smash" PROCviolence:ENDPROC 12000IF LEFT$(i$,5)="break" PROCviolence:ENDPROC 12010IF LEFT$(i$,3)="buy" PROCbuy:ENDPROC 12020IF LEFT$(i$,8)="purchase" PROCbuy:ENDPROC 12030IF LEFT$(i$,5)="order" PROCbuy:ENDPROC 12040IF LEFT$(i$,5)="smell" PROCsmell:ENDPROC 12050IF LEFT$(i$,5)="sniff" PROCsmell:ENDPROC 12060IF LEFT$(i$,6)="listen" PROClisten:ENDPROC 12070IF LEFT$(i$,4)="hear" PROClisten:ENDPROC 12080IF LEFT$(i$,4)="kiss" OR LEFT$(i$,4)="snog" PROCkiss:ENDPROC 12090IF LEFT$(i$,5)="mould" PROCmould:ENDPROC 12100IF LEFT$(i$,10)="make mould" PROCmould:ENDPROC 12110IF LEFT$(i$,12)="create mould" PROCmould:ENDPROC 12120IF LEFT$(i$,15)="make impression" PROCmould:ENDPROC 12130IF LEFT$(i$,17)="create impression" PROCmould:ENDPROC 12140IF LEFT$(i$,5)="sleep" PROCadd("You are not tired."):ENDPROC 12150IF LEFT$(i$,5)="score" PROCadd("There is no score, just finish the game!"):ENDPROC 12160IF LEFT$(i$,4)="wait" AND zone%=2 PROCadd("You wait for a few seconds."):PROCpolice:ENDPROC 12170IF LEFT$(i$,4)="wait" AND zone%=3 PROCadd("You wait for a few seconds."):PROCpolicemaze:ENDPROC 12180IF LEFT$(i$,4)="wait" AND zone%=1 PROCadd("You wait for a few seconds."):ENDPROC 12190IF LEFT$(i$,3)="dig" PROCdig:ENDPROC 12200IF LEFT$(i$,6)="search" PROCadd("You find nothing that you have not already seen."):ENDPROC 12210IF INSTR(i$,"no ")>0 PROCno:ENDPROC 12220IF INSTR(i$,"no")>0 AND LEN(i$)=2 PROCno:ENDPROC 12230IF INSTR(i$,"yes ")>0 PROCyes:ENDPROC 12240IF INSTR(i$,"yes")>0 AND LEN(i$)=3 PROCyes:ENDPROC 12250IF INSTR(i$,"ok")>0 PROCyes:ENDPROC 12260IF INSTR(i$,"oui")>0 PROClinguist:ENDPROC 12270IF INSTR(i$,"non")>0 PROClinguist:ENDPROC 12280IF INSTR(i$,"nein")>0 PROClinguist:ENDPROC 12290IF INSTR(i$,"ja")>0 PROClinguist:ENDPROC 12300IF INSTR(i$,"bonjour")>0 PROChling:ENDPROC 12310IF INSTR(i$,"guten tag")>0 PROChling:ENDPROC 12320IF INSTR(i$,"au revoir")>0 PROCgling:ENDPROC 12330IF INSTR(i$,"thankyou")>0 PROCthank:ENDPROC 12340IF INSTR(i$,"thank you")>0 PROCthank:ENDPROC 12350IF INSTR(i$,"bye")>0 PROCbye:ENDPROC 12360IF INSTR(i$,"hello")>0 PROChello:ENDPROC 12370IF INSTR(i$,"good day")>0 PROChello:ENDPROC 12380IF INSTR(i$,"greetings")>0 PROChello:ENDPROC 12390IF INSTR(i$,"gooday")>0 PROChello:ENDPROC 12400IF INSTR(i$,"hi ")>0 PROChello:ENDPROC 12410IF i$="hi" PROChello:ENDPROC 12420IF INSTR(i$,"yo ")>0 PROChello:ENDPROC 12430IF LEFT$(i$,8)="probably" PROCprob:ENDPROC 12440IF LEFT$(i$,5)="maybe" PROCprob:ENDPROC 12450IF INSTR(i$,"archimedes")>0 PROCadd("Archimedes - quality computers."):ENDPROC 12460IF INSTR(i$,"acorn")>0 PROCadd("Acorn - best computer company around."):ENDPROC 12470IF INSTR(i$,"oxford")>0 PROCadd("Oxford - a great city."):ENDPROC 12480IF INSTR(i$,"london")>0 PROCadd("Why do you talk of our great capital?"):ENDPROC 12490IF INSTR(i$,"birmingham")>0 PROCadd("Hmm, Birmingham's a lovely place."):ENDPROC 12500IF INSTR(i$,"amiga")>0 PROCsick:ENDPROC 12510IF INSTR(i$,"sega")>0 PROCsick:ENDPROC 12520IF INSTR(i$,"nintendo")>0 PROCsick:ENDPROC 12530IF INSTR(i$,"atari")>0 PROCsick:ENDPROC 12540IF INSTR(i$,"ibm")>0 PROCsick:ENDPROC 12550IF INSTR(i$,"macintosh")>0 PROCsick:ENDPROC 12560IF INSTR(i$,"chris")>0 AND INSTR(i$,"allen")>0 PROCadd("Greetings, author."):ENDPROC 12570IF INSTR(i$,"claire")>0 AND INSTR(i$,"allen")>0 PROCadd("Hi, it's my sister!"):ENDPROC 12580IF INSTR(i$,"paul")>0 AND INSTR(i$,"allen")>0 PROCadd("So you know my brother do you?"):ENDPROC 12590IF INSTR(i$,"blair")>0 PROCadd("Shut-up and go away, Blair!"):ENDPROC 12600IF INSTR(i$,"i love you")>0 PROCluv:ENDPROC 12610IF INSTR(i$,"i luv you")>0 PROCluv:ENDPROC 12620IF INSTR(i$,"you love")>0 love$="love":PROCIlove:ENDPROC 12630IF INSTR(i$,"you luv")>0 love$="luv":PROCIlove:ENDPROC 12640IF INSTR(i$,"i love")>0 love$="love":PROCYoulove:ENDPROC 12650IF INSTR(i$,"i luv")>0 love$="luv":PROCYoulove:ENDPROC 12660IF INSTR(i$,"luv")>0 PROClove:ENDPROC 12670IF INSTR(i$,"help")>0 PROChelp:ENDPROC 12680IF LEFT$(i$,8)="because ":PROCbecause:ENDPROC 12690IF i$="please":PROCplease:ENDPROC 12700IF i$="pretty please with sugar on top":PROCsucker:ENDPROC 12710IF LEFT$(i$,6)="it is ":PROCitis:ENDPROC 12720IF LEFT$(i$,4)="its ":PROCits:ENDPROC 12730IF LEFT$(i$,7)="it was ":PROCitwas:ENDPROC 12740IF LEFT$(i$,5)="i am ":PROCiam:ENDPROC 12750IF LEFT$(i$,3)="im ":PROCim:ENDPROC 12760IF INSTR(i$,"love")>0 PROClove:ENDPROC 12770IF INSTR(i$,ec$(14))>0 PROCnaughty:ENDPROC 12780IF LEFT$(i$,5)="sorry":PROCsorry:ENDPROC 12790IF LEFT$(i$,4)="beep":PRINT CHR$(7):PROCadd("B E E P."):ENDPROC 12800IF i$="restart" PROCwarning(3,"","Restarting will lose","the current game.",""):ENDPROC 12810IF LEFT$(i$,3)="map" PROCadd("Your position is marked by the red spot."):wimp%!0=maphan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp%:ENDPROC 12820IF LEFT$(i$,7)="picture" THEN 12830SYS "XOS_ReadModeVariable",MODE,3 TO ,,cols% 12840IF cols%<>15 AND picyn%=1 picyn%=2 12850IF cols%=15 AND picyn%=2 picyn%=1 12860IF picyn%=0 PROCadd("The pictures have not been loaded.") ELSE IF picyn%=2 PROCadd("You are not in a 16-colour mode.") ELSE PROCadd("The pictures..."):wimp%!0=picciehan%:SYS"Wimp_GetWindowState",,wimp%:wimp%!28=-1:SYS"Wimp_OpenWindow",,wimp% 12870ENDPROC 12880ENDIF 12890IF LEFT$(i$,4)="info" PROCadd("Gorm v1.40 By Chris Allen."):ENDPROC 12900IF i$="quit" PROCadd("What's the magic word?"):ENDPROC 12910IF i$="quit please" PROCadd("Bye then."):a$=INKEY$(100):SYS &400DD,apphan%:ENDPROC 12920IF i$="time" PROCadd("You glance at your expensive digital watch; "+TIME$):ENDPROC 12930IF i$="basic" PROCadd("Try f12 and then typing in 'Basic'."):ENDPROC 12940IF i$="load" OR i$="save" OR i$="append" OR i$="delete" OR i$="wipe" PROCadd("I'll leave that repetative task to the operating system."):ENDPROC 12950IF i$="why" PROCadd("I'm supposed to be asking the questions."):ENDPROC 12960IF LEFT$(i$,2)="ne" PROCnortheast:ENDPROC 12970IF LEFT$(i$,2)="se" PROCsoutheast:ENDPROC 12980IF LEFT$(i$,2)="sw" PROCsouthwest:ENDPROC 12990IF LEFT$(i$,2)="nw" PROCnorthwest:ENDPROC 13000IF LEFT$(i$,3)="die" PROCadd("You have no desire to kill yourself."):ENDPROC 13010IF LEN(i$)=1 PROCsingle:ENDPROC 13020PROClastresort 13030ENDPROC 13040 13050DEFPROClook 13060IF i$<>"look" AND i$<>"look " PROCmuchmorespecific:ENDPROC 13070FOR e=1 TO 9 13080IF rooms$(roomno%,e)<>"" PROCadd(rooms$(roomno%,e)) 13090NEXT e 13100PROCexits 13110flag%=0 13120FOR e=1 TO 10 13130IF objects$(roomno%,e)<>"" flag%+=1 13140NEXT e 13150IF flag%>0 THEN 13160 flagtwo%=0 13170 t$="You can also see; " 13180 IF flag%=1 THEN 13190 flagtwo%=1 13200 FOR l=1 TO 10 13210 IF objects$(roomno%,l)<>"" t$+=FNfirstl(objects$(roomno%,l))+objects$(roomno%,l)+"." 13220 NEXT l 13230 ENDIF 13240 e=0:l=0 13250 IF flagtwo%=0 THEN 13260 REPEAT 13270 l+=1 13280 IF objects$(roomno%,l)<>"" e+=1:t$+=FNfirstl(objects$(roomno%,l))+objects$(roomno%,l)+", " 13290 UNTIL e>=flag%-1 13300 FOR l=l+1 TO 10 13310 IF objects$(roomno%,l)<>"" t$=MID$(t$,1,LEN(t$)-2)+" and "+FNfirstl(objects$(roomno%,l))+objects$(roomno%,l)+"." 13320 NEXT l 13330 ENDIF 13340 PROCadd(t$) 13350ENDIF 13360PROCdecidepics:PROCdecidepos:IF zone%=2 PROCcheckpolpos 13370IF zone%=3 PROCpolposmaze 13380IF roomno%=46 nifok%=1:PROCdecidepics 13390IF roomno%=40 mapyn%(40)=1:roomno%=39:PROCadd(""):PROChalflook 13400IF roomno%=221 THEN 13410mapyn%(221)=1:roomno%=222:PROCadd("'Oi, you!' a woman cries cries, 'Get outta m'house - NOW!'. You go out onto the street.") 13420IF mapyn%(222)=0 mapyn%(222)=1:PROClook ELSE PROChalflook 13430ENDIF 13440ENDPROC 13450 13460DEFPROChalflook 13470PROCadd(rentry$(roomno%)) 13480flag%=0 13490FOR e=1 TO 10 13500IF objects$(roomno%,e)<>"" flag%+=1 13510NEXT e 13520IF flag%>0 THEN 13530 flagtwo%=0 13540 t$="You can see; " 13550 IF flag%=1 THEN 13560 flagtwo%=1 13570 FOR l=1 TO 10 13580 IF objects$(roomno%,l)<>"" t$+=FNfirstl(objects$(roomno%,l))+objects$(roomno%,l)+"." 13590 NEXT l 13600 ENDIF 13610 e=0:l=0 13620 IF flagtwo%=0 THEN 13630 REPEAT 13640 l+=1 13650 IF objects$(roomno%,l)<>"" e+=1:t$+=FNfirstl(objects$(roomno%,l))+objects$(roomno%,l)+", " 13660 UNTIL e>=flag%-1 13670 FOR l=l+1 TO 10 13680 IF objects$(roomno%,l)<>"" t$=MID$(t$,1,LEN(t$)-2)+" and "+FNfirstl(objects$(roomno%,l))+objects$(roomno%,l)+"." 13690 NEXT l 13700 ENDIF 13710 PROCadd(t$) 13720ENDIF 13730PROCdecidepics:PROCdecidepos:IF zone%=2 PROCcheckpolpos 13740IF zone%=3 PROCpolposmaze 13750IF roomno%=46 nifok%=1:PROCdecidepics 13760IF roomno%=40 roomno%=39:PROCadd("You feel you are intruding, so return to the garden."):PROCadd(""):PROChalflook 13770IF roomno%=221 THEN 13780mapyn%(221)=1:roomno%=222:PROCadd("The woman comes up to you. 'Oi, you!' she cries, 'Get outta me house - NOW!'. You go out onto the street."):PROCadd("") 13790IF mapyn%(222)=0 mapyn%(222)=1:PROClook ELSE PROChalflook 13800ENDIF 13810ENDPROC 13820 13830DEFFNfirstl(myline$) 13840ftl$="a " 13850ml$=MID$(myline$,1,1) 13860CASE ml$ OF 13870WHEN "a","e","i","o","u" : ftl$="an " 13880ENDCASE 13890=ftl$ 13900 13910DEFPROCopen 13920openyn%=0 13930IF INSTR(i$,"door")>0 AND roomno%=2 THEN 13940openyn%=1 13950IF exits(2,2)=0 t$="You try to open the door, but it is locked." ELSE t$="The door is all ready open." 13960ENDIF 13970IF INSTR(i$,"door")>0 AND roomno%=305 THEN 13980openyn%=1:t$="You open the door." 13990ENDIF 14000IF INSTR(i$,"door")>0 AND roomno%=179 THEN 14010openyn%=1 14020IF exits(179,1)=0 t$="You try to open the door, but it is locked." ELSE t$="The door is all ready open." 14030ENDIF 14040IF INSTR(i$,"crate")>0 AND roomno%=27 openyn%=1:t$="The crate won't open up." 14050IF INSTR(i$,"window")>0 AND roomno%=83 openyn%=1:t$="The window is jammed shut." 14060IF INSTR(i$,"bag")>0 AND roomno%=29 openyn%=1:t$="The baker looks too moody for you to go prying in his bag." 14070IF INSTR(i$,"window")>0 AND roomno%=26 openyn%=1:t$="The window is jammed shut." 14080IF INSTR(i$,"gate")>0 AND roomno%=15 openyn%=1:t$="The gates are firmly bolted." 14090IF INSTR(i$,"book")>0 AND FNgotorhere("book")=1 openyn%=1:t$="You open up the book." 14100IF INSTR(i$,"novel")>0 AND FNgotorhere("novel")=1 openyn%=1:t$="You open up the novel." 14110IF INSTR(i$,"bible")>0 AND FNgotorhere("bible")=1 openyn%=1:t$="You open up the bible." 14120IF INSTR(i$,"barrel")>0 AND roomno%=65 openyn%=1:t$="The barrels are firmly closed." 14130IF INSTR(i$,"bottle")>0 AND FNgotorhere("bottle")=1 AND fire%=0 openyn%=1:t$="The bottle has a top which is protected against children - you've never been able to open those things." 14140IF INSTR(i$,"purse")>0 AND FNgotorhere("purse")=1 openyn%=1:t$="The zip to the purse is stuck." 14150IF INSTR(i$,"suitcase")>0 AND roomno%=83 THEN 14160openyn%=1 14170t$="The case is already open." 14180IF suitcase%=0 THEN 14190suitcase%=1:t$="You open the case. A snooker cue falls onto the ground." 14200c%=0 14210FOR a%=1 TO 10 14220IF objects$(83,a%)="" AND c%=0 c%=1:objects$(83,a%)="cue" 14230NEXT 14240IF c%=0 objects$(83,RND(10))="cue" 14250ENDIF 14260ENDIF 14270IF openyn%=0 t$="I do not understand what you want to open." 14280PROCadd(t$) 14290ENDPROC 14300 14310DEFPROCclose 14320closeyn%=0 14330IF INSTR(i$,"door")>0 AND roomno%=2 THEN 14340closeyn%=1 14350IF exits(2,2)=3 t$="You try to close the door, but it is stuck open." ELSE t$="The door is all ready closed." 14360ENDIF 14370IF INSTR(i$,"door")>0 AND roomno%=305 THEN 14380closeyn%=1:t$="You close the door." 14390ENDIF 14400IF INSTR(i$,"door")>0 AND roomno%=179 THEN 14410closeyn%=1 14420IF exits(179,1)=15 t$="You try to close the door, but it is stuck open." ELSE t$="The door is all ready closed." 14430ENDIF 14440IF INSTR(i$,"gate")>0 AND roomno%=15 closeyn%=1:t$="The gates are already shut." 14450IF INSTR(i$,"window")>0 AND roomno%=83 closeyn%=1:t$="The window is already shut." 14460IF INSTR(i$,"window")>0 AND roomno%=26 closeyn%=1:t$="The window is already shut." 14470IF INSTR(i$,"book")>0 AND FNgotorhere("book")=1 closeyn%=1:t$="You close the book." 14480IF INSTR(i$,"novel")>0 AND FNgotorhere("novel")=1 closeyn%=1:t$="You close the novel." 14490IF INSTR(i$,"bible")>0 AND FNgotorhere("bible")=1 closeyn%=1:t$="You close the bible." 14500IF INSTR(i$,"suitcase")>0 AND roomno%=83 closeyn%=1:CASE suitcase% OF 14510WHEN 0 : t$="The suitcase is already shut." 14520WHEN 1 : t$="The suitcase has stuck open." 14530ENDCASE 14540IF closeyn%=0 t$="I do not understand what you want to close." 14550PROCadd(t$) 14560ENDPROC 14570 14580DEFPROCmould 14590t$="You have nothing to mould." 14600IF FNgotorhere("blob")=1 AND INSTR(i$,"blob")>0 t$="You have nothing to mould the blob into.":IF roomno%=2 t$="You press the blob into the keyhole and pull it out. Voila! A perfect impression!":mould%=1 14610PROCadd(t$) 14620ENDPROC 14630 14640DEFPROCfire 14650fire%=0 14660PROCadd("") 14670t$="You hear a woosh as if something has created a fireball." 14680rooms$(78,2)="There are charred remains on the ground here." 14690rooms$(78,3)="":rooms$(78,4)="" 14700abbrev$(78,1)="Chars":rentry$(78)="The charred area." 14710wimp%!0=maphan%:PROCredrawmap 14720IF roomno%=78 t$="There is a loud 'woosh' as the bonfire ignites the meths and shoots out a massive fireball, unfortunately it heads straight at you. There is no way you can survive.":nifok%=1 14730PROCdecidepics 14740PROCadd(t$) 14750ENDPROC 14760 14770DEFPROCsmell 14780t$="You can smell nothing peculiar." 14790CASE roomno% OF 14800 WHEN 76 : t$="You can smell some meths." 14810 WHEN 78 : CASE fire% OF 14820 WHEN 0 : t$="There is a burnt smell in the air." 14830 WHEN 1,2 : t$="You can smell the smoke from the bonfire." 14840 ENDCASE 14850 WHEN 65 : t$="There is a strong smell of alcohol." 14860 WHEN 67,73 : t$="There is a faint smell of chemicals." 14870 WHEN 60,69 : t$="You can smell old metal." 14880 WHEN 51,49 : t$="There is an old musty smell in the air." 14890 WHEN 50,52,64 : t$="There is a sweet smell of alcohol in the air." 14900 WHEN 13,34,35,39 : t$="You can smell the beautiful fragrance of the garden." 14910 WHEN 38,41,285,288,289,290,286,287,291,292 : t$="You can smell nothing but grass." 14920 WHEN 3,4,5,8,9,10 : t$="The air smells artificial and far too clean." 14930 WHEN 22,23,83,25,26,27 : t$="The air smells stale and dusty." 14940 WHEN 37,84 : t$="You can smell the old woodwork of the church." 14950 WHEN 16,17,18,44,46 : t$="There is a 'rotten' smell in the air." 14960 WHEN 45 : t$="You can smell danger." 14970 WHEN 29 : t$="You can smell stale bread." 14980 WHEN 30 : t$="You can smell rotting meat." 14990 WHEN 20 : t$="There is a faint smell of bread." 15000 WHEN 19 : t$="There is a faint smell of meat." 15010 WHEN 250 : t$="There is a strong, sweet smell of flowers." 15020ENDCASE 15030PROCadd(t$) 15040ENDPROC 15050 15060DEFPROClisten 15070t$="You hear nothing peculiar." 15080CASE roomno% OF 15090 WHEN 85 : IF drugged%=1 t$="You can hear the guard snoring." 15100 WHEN 73 : t$="You can hear the fizzing from some bottles." 15110 WHEN 76 : t$="You can hear the flies buzzing around the tramp." 15120 WHEN 78 : IF fire%>0 t$="You can hear the crackling of the flames." 15130 WHEN 81,82 : t$="You can hear the ballet music." 15140 WHEN 66,63,67,33,54,61,68 : t$="You can hear the fountain in the distance." 15150 WHEN 62 : t$="You can hear the fountain splattering the water around." 15160 WHEN 49 : t$="There is some singing going on to the north." 15170 WHEN 50 : t$="You can hear nothing but the bellowing of the drunks who are dancing in front of you." 15180 WHEN 51 : t$="You can hear some faint singing." 15190 WHEN 29 : t$="You can hear the baker mumbling to himself." 15200 WHEN 30 : t$="You can hear the butcher talking to himself." 15210 WHEN 1 : t$="There is the sound of tens of people all trying to do their shopping at once." 15220 WHEN 22,23,83,25,26,27 : t$="It seems extra quiet down here." 15230 WHEN 47 : t$="You can hear some people laughing wildly." 15240 WHEN 45 : t$="There is nothing but deathly silence." 15250 WHEN 37 : IF crier%=1 t$="You can hear the young girl wailing uncontrollably." 15260 WHEN 11,2,6 : t$="You can hear the commotion at the market-place." 15270 WHEN 253 : t$="You can only hear the old woman groaning in pain." 15280 WHEN 310 : t$="You can hear the old woman chanting to herself." 15290 WHEN 268,269,270,271,272,273,274 : t$="You can hear the roaring engines of the cars." 15300ENDCASE 15310IF zone%=2 OR zone%=3 THEN 15320FOR a=1 TO 8 15330IF exits(roomno%,a)=police%(1) OR exits(roomno%,a)=police%(2) OR exits(roomno%,a)=police%(3) t$="You hear some footsteps in the distance." 15340NEXT a 15350IF police%(1)=roomno% OR police%(2)=roomno% t$="You can hear the policeman, mumbling to himself, next to you." 15360ENDIF 15370PROCadd(t$) 15380ENDPROC 15390 15400DEFPROCkiss 15410t$="There is no-one to kiss." 15420CASE roomno% OF 15430 WHEN 78 : IF fire%>0 t$="The young boy doesn't want a kiss." 15440 WHEN 76 : t$="Take it from me, you DON'T want to kiss a tramp." 15450 WHEN 81 : t$="The girls run away from you, until you cool down." 15460 WHEN 82,249,302,310 : t$="The old woman punches you on the nose, then resumes her work." 15470 WHEN 29 : t$="The baker isn't like that." 15480 WHEN 30 : t$="The butcher isn't like that." 15490 WHEN 1,50 : t$="No-one here wants a kiss from you." 15500 WHEN 15,85,305 : t$="You don't go around kissing guards!" 15510 WHEN 37 : IF crier%=1 t$="This is a church - a religious place." 15520 WHEN 52,69,84,73,72,84,248,312,281 : t$="The man would not be happy if you kissed him." 15530 WHEN 64,266 : t$="The bar-maid slaps you round the face and gives you an evil look." 15540 WHEN 226 : t$="The young girl starts screaming." 15550 WHEN 250,301 : t$="The young woman slaps you around the face." 15560 WHEN 253 : t$="The old woman vomits into her sofa." 15570ENDCASE 15580IF police%(1)=roomno% OR police%(2)=roomno% t$="The policeman looks at you strangely." 15590PROCadd(t$) 15600ENDPROC 15610 15620DEFPROCgo 15630IF INSTR(i$,"northeast")>0 PROCnortheast:ENDPROC 15640IF INSTR(i$,"north east")>0 PROCnortheast:ENDPROC 15650IF INSTR(i$,"southeast")>0 PROCsoutheast:ENDPROC 15660IF INSTR(i$,"south east")>0 PROCsoutheast:ENDPROC 15670IF INSTR(i$,"southwest")>0 PROCsouthwest:ENDPROC 15680IF INSTR(i$,"south west")>0 PROCsouthwest:ENDPROC 15690IF INSTR(i$,"northwest")>0 PROCnorthwest:ENDPROC 15700IF INSTR(i$,"north west")>0 PROCnorthwest:ENDPROC 15710IF INSTR(i$,"north")>0 PROCnorth:ENDPROC 15720IF INSTR(i$,"east")>0 PROCeast:ENDPROC 15730IF INSTR(i$,"south")>0 PROCsouth:ENDPROC 15740IF INSTR(i$,"west")>0 PROCwest:ENDPROC 15750IF INSTR(i$,"up")>0 PROCup:ENDPROC 15760IF INSTR(i$,"down")>0 PROCdown:ENDPROC 15770IF INSTR(i$,"ne")>0 PROCnortheast:ENDPROC 15780IF INSTR(i$,"se")>0 PROCsoutheast:ENDPROC 15790IF INSTR(i$,"sw")>0 PROCsouthwest:ENDPROC 15800IF INSTR(i$,"nw")>0 PROCnorthwest:ENDPROC 15810IF INSTR(i$,"n")>0 PROCnorth:ENDPROC 15820IF INSTR(i$,"e")>0 PROCeast:ENDPROC 15830IF INSTR(i$,"s")>0 PROCsouth:ENDPROC 15840IF INSTR(i$,"w")>0 PROCwest:ENDPROC 15850IF INSTR(i$,"u")>0 PROCup:ENDPROC 15860IF INSTR(i$,"d")>0 PROCdown:ENDPROC 15870PROCadd("I do not understand where you want to go.") 15880ENDPROC 15890 15900DEFPROCinv 15910flag%=0 15920FOR e=1 TO 10 15930IF owns$(e)<>"" flag%+=1 15940NEXT e 15950IF flag%=0 THEN 15960CASE RND(5) OF 15970 WHEN 1 : t$="You are carrying nothing." 15980 WHEN 2 : t$="Your hands are empty." 15990 WHEN 3 : t$="You do not have anything." 16000 WHEN 4 : t$="Your pockets are empty." 16010 WHEN 5 : t$="You haven't any possessions." 16020ENDCASE 16030ENDIF 16040IF flag%>0 THEN 16050 flagtwo%=0 16060 t$="You have with you; " 16070 IF flag%=1 THEN 16080 flagtwo%=1 16090 FOR l=1 TO 10 16100 IF owns$(l)<>"" t$+=FNfirstl(owns$(l))+owns$(l)+"." 16110 NEXT l 16120 ENDIF 16130 e=0:l=0 16140 IF flagtwo%=0 THEN 16150 REPEAT 16160 l+=1 16170 IF owns$(l)<>"" e+=1:t$+=FNfirstl(owns$(l))+owns$(l)+", " 16180 UNTIL e>=flag%-1 16190 FOR l=l+1 TO 10 16200 IF owns$(l)<>"" t$=MID$(t$,1,LEN(t$)-2)+" and "+FNfirstl(owns$(l))+owns$(l)+"." 16210 NEXT l 16220 ENDIF 16230ENDIF 16240PROCadd(t$) 16250ENDPROC 16260 16270DEFPROCsaw 16280t$="You cannot cut that." 16290IF FNgotorhere("hacksaw")<>1 PROCadd("You have nothing to cut with."):ENDPROC 16300IF roomno%=85 AND INSTR(i$,"bar")>0 THEN 16310IF exits(85,2)>0 PROCadd("The bars are already cut."):ENDIF:ENDPROC 16320t$="You use the hacksaw to saw the bars to the cell, trying to do it quietly so not to wake the guard. Finally the bars fall out, leaving an exit to the east.":exits(85,2)=97 16330rooms$(85,5)="side of the bars is a sleeping guard. Some bars have been cut, providing an exit." 16340IF drugged%=0 THEN 16350t$="You use the hacksaw to start to saw the bars, however the guard swings round and sees what you are doing. He grabs the hacksaw off you.":exits(85,2)=0 16360rooms$(85,5)="side of the bars is a guard." 16370FOR a=1 TO 10 16380IF owns$(a)="hacksaw" owns$(a)="" 16390IF objects$(roomno%,a)="hacksaw" objects$(roomno%,a)="" 16400NEXT a 16410ENDIF 16420wimp%!0=maphan%:PROCredrawmap 16430ENDIF 16440PROCadd(t$) 16450ENDPROC 16460 16470DEFPROCpolice 16480poltime%=TIME 16490FOR b%=1 TO 2 16500nextplace%=exits(police%(b%),poldir%(b%)) 16510IF nextplace%=0 THEN 16520REPEAT 16530a%=RND(8) 16540nextplace%=exits(police%(b%),a%):poldir%(b%)=a% 16550UNTIL nextplace%<>0 16560ENDIF 16570police%(b%)=nextplace% 16580NEXT b% 16590PROCcheckpolpos 16600wimp%!0=maphan%:PROCredrawmap 16610ENDPROC 16620 16630DEFPROCpolicemaze 16640poltime%=TIME 16650nextplace%=exits(police%(3),poldir%(3)) 16660IF nextplace%=0 THEN 16670REPEAT 16680a%=RND(8) 16690nextplace%=exits(police%(3),a%):poldir%(3)=a% 16700UNTIL nextplace%<>0 16710ENDIF 16720police%(3)=nextplace% 16730IF police%(3)=15 police%(3)=178:poldir%(3)=2 16740PROCpolposmaze 16750wimp%!0=maphan%:PROCredrawmap 16760ENDPROC 16770 16780DEFPROCpolposmaze 16790IF police%(3)=roomno% THEN 16800IF FNgot("badge")>0 AND FNgot("cap")>0 AND FNgot("wig")>0 THEN 16810PROCadd("") 16820PROCadd("A policeman walks up to you, but he is not fooled by your disguise, he whacks you over the head with his truncheon."):nifok%=1:PROCdecidepics 16830ELSE 16840PROCadd("") 16850PROCadd("A policeman comes up to you. 'Oi you!' he cries, 'I heard someone had escaped'. He whacks you over the head with his truncheon.") 16860nifok%=1:PROCdecidepics 16870ENDIF 16880ENDIF 16890FOR a=1 TO 8 16900IF exits(roomno%,a)=police%(3) PROCadd("You hear some footsteps in the distance.") 16910NEXT a 16920ENDPROC 16930 16940DEFPROCcheckpolpos 16950FOR b%=1 TO 2 16960IF nifok%=1 ENDPROC 16970IF police%(b%)=roomno% THEN 16980IF FNgot("badge")>0 AND FNgot("cap")>0 AND FNgot("wig")>0 THEN 16990PROCadd("") 17000PROCadd("A policeman walks up to you, then he sees your badge and cap and dismisses you as another policeman.") 17010ELSE 17020PROCadd("") 17030PROCadd("A policeman comes up to you. 'Oi!' he cries, 'What y'doing outta y'cell!?'. He whacks you over the head with his truncheon - maybe a little too hard. Total Blackness.") 17040nifok%=1:PROCdecidepics 17050ENDIF 17060ENDIF 17070NEXT b% 17080FOR a=1 TO 8 17090IF exits(roomno%,a)=police%(1) OR exits(roomno%,a)=police%(2) PROCadd("You hear some footsteps in the distance.") 17100NEXT a 17110ENDPROC 17120 17130DEFPROCdig 17140t$="You have nothing to dig with." 17150IF FNgotorhere("spade")=1 CASE roomno% OF 17160WHEN 13,34,35,38,41,226,227,279,285,286,287,288,289,290,291,292 : t$="You dig the ground with the spade, but find little of interest." 17170WHEN 39 : IF dug%=1 t$="You dig the garden some more, but find nothing else of interest." 17180IF dug%=0 THEN 17190dug%=1:t$="You start digging the ground with the spade, when all of a sudden you hit something hard. You dust away the soil and see that it is a bone." 17200bn%=0 17210FOR a%=1 TO 10 17220IF objects$(39,a%)="" AND bn%=0 bn%=1:objects$(39,a%)="bone" 17230NEXT 17240IF bn%=0 objects$(39,RND(10))="bone" 17250ENDIF 17260WHEN 228 :IF dugged%=1 t$="You dig the sandpit some more, but find nothing else of interest." 17270IF dugged%=0 THEN 17280dugged%=1:t$="You start digging the soft sand with the spade when you hit something so tiny you almost miss it. It is an aspirin." 17290as%=0 17300FOR a%=1 TO 10 17310IF objects$(228,a%)="" AND as%=0 as%=1:objects$(228,a%)="aspirin" 17320NEXT 17330IF as%=0 objects$(228,RND(10))="aspirin" 17340ENDIF 17350OTHERWISE : t$="The ground is too hard to dig." 17360ENDCASE 17370PROCadd(t$) 17380ENDPROC 17390 17400DEFPROCwrite 17410writeyn%=0 17420IF roomno%=5 AND written%=1 AND LEN(i$)>6 THEN 17430writeyn%=1 17440PROCadd("You scribble over the top of your previous writing. It becomes unreadable.") 17450ENDIF 17460IF roomno%=5 AND written%=0 AND LEN(i$)>6 AND INSTR(i$,"mayor")=0 THEN 17470writeyn%=1 17480written%=1 17490PROCadd("You pick up the pen and write on the form. Nothing happens.") 17500ENDIF 17510IF roomno%=5 AND INSTR(i$,"mayor")>0 AND written%=0 THEN 17520writeyn%=1 17530written%=1 17540PROCadd("You pick up the pen in one hand and scrawl in big capital letters;") 17550PROCadd("THE MAYOR.") 17560PROCadd("You hear a faint fizzle as a large feather magically appears at your feet.") 17570wttn%=0 17580FOR a%=1 TO 10 17590IF objects$(5,a%)="" AND wttn%=0 wttn%=1:objects$(5,a%)="feather" 17600NEXT 17610IF wttn%=0 objects$(5,RND(10))="feather" 17620ENDIF 17630IF writeyn%=0 PROCadd("You cannot write that.") 17640ENDPROC 17650 17660DEFPROCbuy 17670t$="There is nothing to buy." 17680CASE roomno% OF 17690WHEN 1,29,30,52,64,73 : t$="You have no money to buy anything." 17700ENDCASE 17710IF FNgot("coin")>0 OR FNgot("cheque")>0 OR FNgot("purse")>0 THEN 17720CASE roomno% OF 17730WHEN 29,30,73 : t$="'I'm not accepting that!' he says." 17740WHEN 64 : t$="'I'm not accepting that!' she says." 17750WHEN 52 : t$="'Alright, that'll do me. Here, here's a whisky,' he says. He places the whisky in your hand." 17760owns$(FNgot("coin"))="whisky" 17770WHEN 248,266,281,312 : t$="There is nothing here that you really want to buy." 17780ENDCASE 17790ENDIF 17800PROCadd(t$) 17810ENDPROC 17820 17830DEFPROCexits 17840flag%=0 17850FOR e=1 TO 10 17860IF exits(roomno%,e)<>0 flag%+=1 17870NEXT e 17880IF flag%=0 THEN 17890CASE RND(5) OF 17900 WHEN 1 : t$="There are no possible exits." 17910 WHEN 2 : t$="You can see no way out." 17920 WHEN 3 : t$="You can see no direction of escape." 17930 WHEN 4 : t$="All directions are blocked." 17940 WHEN 5 : t$="There is no way of leaving." 17950ENDCASE 17960ENDIF 17970IF flag%>0 THEN 17980 flagtwo%=0 17990 t$="Possible exits; " 18000 IF flag%=1 THEN 18010 flagtwo%=1 18020 FOR l=1 TO 10 18030 IF exits(roomno%,l)<>0 CASE l OF 18040 WHEN 1 : t$+="north." 18050 WHEN 2 : t$+="east." 18060 WHEN 3 : t$+="south." 18070 WHEN 4 : t$+="west." 18080 WHEN 5 : t$+="north-east." 18090 WHEN 6 : t$+="south-east." 18100 WHEN 7 : t$+="south-west." 18110 WHEN 8 : t$+="north-west." 18120 WHEN 9 : t$+="up." 18130 WHEN 10 : t$+="down." 18140 ENDCASE 18150 NEXT l 18160 ENDIF 18170 e=0:l=0 18180 IF flagtwo%=0 THEN 18190 REPEAT 18200 l+=1 18210 IF exits(roomno%,l)<>0 e+=1:CASE l OF 18220 WHEN 1 : t$+="north, " 18230 WHEN 2 : t$+="east, " 18240 WHEN 3 : t$+="south, " 18250 WHEN 4 : t$+="west, " 18260 WHEN 5 : t$+="north-east, " 18270 WHEN 6 : t$+="south-east, " 18280 WHEN 7 : t$+="south-west, " 18290 WHEN 8 : t$+="north-west, " 18300 WHEN 9 : t$+="up, " 18310 WHEN 10 : t$+="down, " 18320 ENDCASE 18330 UNTIL e>=flag%-1 18340 FOR l=l+1 TO 10 18350 IF exits(roomno%,l)<>0 t$=MID$(t$,1,LEN(t$)-2)+" and ":CASE l OF 18360 WHEN 1 : t$+="north." 18370 WHEN 2 : t$+="east." 18380 WHEN 3 : t$+="south." 18390 WHEN 4 : t$+="west." 18400 WHEN 5 : t$+="north-east." 18410 WHEN 6 : t$+="south-east." 18420 WHEN 7 : t$+="south-west." 18430 WHEN 8 : t$+="north-west." 18440 WHEN 9 : t$+="up." 18450 WHEN 10 : t$+="down." 18460 ENDCASE 18470 NEXT l 18480 ENDIF 18490ENDIF 18500PROCadd(t$) 18510ENDPROC 18520 18530DEFFNgotorhere(obj$) 18540got%=0 18550FOR g=1 TO 10 18560IF objects$(roomno%,g)=obj$ OR owns$(g)=obj$ got%=1 18570NEXT g 18580=got% 18590 18600DEFFNgot(obj$) 18610got%=0 18620FOR g=1 TO 10 18630IF owns$(g)=obj$ got%=g 18640NEXT g 18650=got% 18660 18670DEFPROCread 18680readyn%=0 18690IF INSTR(i$,"plaque")>0 AND roomno%=11 THEN 18700readyn%=1 18710PROCadd("It reads..") 18720PROCadd(" This Monnument was erekted for all those who dyed in the War agaynst the Norwegians.") 18730ENDIF 18740IF INSTR(i$,"plaque")>0 AND roomno%=303 THEN 18750readyn%=1 18760PROCadd("It reads..") 18770PROCadd(" This oil painting, of Lady Hardling, had to been carefully cleaned because of some ancient graffiti, there had been a moustache drawn on it!") 18780ENDIF 18790IF INSTR(i$,"door")>0 AND roomno%=305 THEN 18800readyn%=1 18810PROCadd("It reads..") 18820PROCadd(" NO ENTRY FOR THE PUBLIC.") 18830ENDIF 18840IF INSTR(i$,"plaque")>0 AND roomno%=252 THEN 18850readyn%=1 18860PROCadd("As far as you can tell it reads..") 18870PROCadd(" Th.s Momume.t ..s er..te. for all th.se who dye. m the war ayagn.t th Norw.g..ns.") 18880ENDIF 18890IF roomno%=284 OR roomno%=297 THEN 18900IF INSTR(i$,"sign")>0 THEN 18910readyn%=1 18920PROCadd("The sign reads...") 18930PROCadd(" You are about to enter an area of preserved countryside. Please show respect for the wildlife.") 18940ENDIF 18950ENDIF 18960IF INSTR(i$,"newspaper")>0 OR INSTR(i$,"magazine")>0 AND roomno%=248 THEN 18970readyn%=1 18980PROCadd("You feel that you should buy a newspaper or magazine before you read it.") 18990ENDIF 19000IF INSTR(i$,"leaflet")>0 AND roomno%=281 THEN 19010readyn%=1 19020PROCadd("The leaflets contain only useless facts about the town.") 19030ENDIF 19040IF INSTR(i$,"sign")>0 AND roomno%=29 THEN 19050readyn%=1 19060PROCadd("The sign reads in big, bold lettering;") 19070PROCadd(" SHOPPELIFTERS WILL BE PROSSECUTED") 19080ENDIF 19090IF INSTR(i$,"sign")>0 AND roomno%=224 THEN 19100readyn%=1 19110PROCadd("The sign says; 'PHOENIX STREET'.") 19120ENDIF 19130IF INSTR(i$,"sign")>0 AND roomno%=19 THEN 19140readyn%=1 19150PROCadd("It says, 'Better bye from Benjamin the butcher, the Best Beef t'be bort'.") 19160ENDIF 19170IF INSTR(i$,"sign")>0 AND roomno%=70 THEN 19180readyn%=1 19190PROCadd("It says, 'BALLET SCHOOLE'.") 19200ENDIF 19210IF INSTR(i$,"spell")>0 AND FNgotorhere("spell")>0 THEN 19220readyn%=1 19230PROCadd("The spell is just squiggles and symbols to you.") 19240ENDIF 19250IF INSTR(i$,"note")>0 AND FNgotorhere("note")>0 THEN 19260readyn%=1 19270PROCadd("The note reads:") 19280PROCadd(" For my Collectione I desperately neede a Bone, for without it I am stucke. If you do come acrosse one please do leeve it hear for me. My gracious thanks, Wilfred.") 19290ENDIF 19300IF INSTR(i$,"pamphlet")>0 AND FNgotorhere("pamphlet")>0 THEN 19310readyn%=1 19320PROCadd("You skim through the pamphlet, which is all about snooker. You now know the basic skills."):pamp%=1 19330ENDIF 19340IF INSTR(i$,"plan")>0 AND FNgotorhere("plan")>0 THEN 19350readyn%=1 19360PROCadd("There are a few symbols and sketches, but underneath it says:") 19370PROCadd(" Although bones maye be where dead men laye,") 19380PROCadd(" A religious Jardin will lead Not Dismay.") 19390ENDIF 19400IF INSTR(i$,"headstone")>0 AND roomno%=38 THEN 19410readyn%=1 19420PROCadd("The headstones are unreadable because of the overgrown grass.") 19430ENDIF 19440IF INSTR(i$,"headstone")>0 AND roomno%=41 THEN 19450readyn%=1 19460PROCadd("The headstone is only just readable:") 19470PROCadd(" Hear lyes Th' Mayor") 19480PROCadd(" Borne: 21.4.1744") 19490PROCadd(" Dyed: 16.9.1793") 19500PROCadd(" Suferred sifear Stumack Paynes") 19510PROCadd(" May his Sole reste in Peace.") 19520ENDIF 19530IF roomno%=295 OR roomno%=294 THEN 19540IF INSTR(i$,"headstone")>0 THEN 19550readyn%=1 19560PROCadd("The headstones are unreadable because of the age of them.") 19570ENDIF 19580ENDIF 19590IF INSTR(i$,"sign")>0 AND roomno%=69 THEN 19600readyn%=1 19610PROCadd("It says:") 19620PROCadd(" Any Equipemente in this Room maye be used bye thee Genneral Public to produce Worke for me - I am desperat for something to Do!") 19630ENDIF 19640IF INSTR(i$,"note")>0 AND roomno%=113 THEN 19650readyn%=1 19660PROCadd("Most of the notes are totally illegible, yet one catches your eye;") 19670PROCadd(" Thee county jale is Pleesed to announce an Additione to Our maze - it now is Even more Confusing to Prisoneres - it Feetures magicale Walles.") 19680ENDIF 19690IF INSTR(i$,"notice")>0 AND roomno%=110 THEN 19700readyn%=1 19710PROCadd("The notice reads;") 19720PROCadd(" Bye the tyme you have finnished Reading this, you'll be Trapped. GOT 'YA!") 19730trapped%=1:trappedtime%=TIME 19740ENDIF 19750IF INSTR(i$,"sign")>0 AND roomno%=127 THEN 19760readyn%=1 19770PROCadd("The sign says;") 19780PROCadd(" This is a Cortion too any prisoneres. This Maze is neare Impossibel to leave, you wood Be addvized to give Yourselfe inn.") 19790ENDIF 19800IF INSTR(i$,"form")>0 AND roomno%=5 THEN 19810readyn%=1 19820PROCadd("You scan down the page. The only interesting thing is;") 19830PROCadd(" Once thee Arnser is knowne,") 19840PROCadd(" There is something I shalt loane.") 19850PROCadd(" So'n the dashed lyne,") 19860PROCadd(" Arnser thee rydel of myne.") 19870PROCadd(" ................................") 19880IF written%=1 PROCadd("There is also some of your unreadable scribble.") 19890ENDIF 19900IF INSTR(i$,"novel")>0 AND FNgotorhere("novel")=1 THEN 19910readyn%=1 19920PROCadd("You turn over the first page and start reading...") 19930PROCadd(" 'He caressed her jently, tuching Her in orl the ryht plaices...'") 19940PROCadd("Nah, not your sort of book.") 19950ENDIF 19960IF INSTR(i$,"bible")>0 AND FNgotorhere("bible")=1 THEN 19970readyn%=1 19980PROCadd("You turn over the delicate first page...") 19990PROCadd(" 'In the Beginning there was..'") 20000PROCadd("You start yawning and stop reading it.") 20010ENDIF 20020IF INSTR(i$,"book")>0 AND FNgotorhere("book")=1 THEN 20030readyn%=1 20040PROCadd("Scrawled in spidery handwriting is;") 20050PROCadd("") 20060PROCadd("Great Gran Fanny-Ann, In the room where you dorm,") 20070PROCadd("Bayked a big Flan, You'll fynd a nyce forme,") 20080PROCadd("Wytha brown and grene squishy midel. With a space just right for an Arnser.") 20090PROCadd("Who scoffed this Great Flan, Be shure that it's right,") 20100PROCadd("And becaym a dead man, Or you'll never get Flight,") 20110PROCadd("You need t'know to arnser this Rydel. Isenchul t'become a Good Dancer.") 20120ENDIF 20130IF readyn%=0 PROCadd("You cannot read that.") 20140ENDPROC 20150 20160DEFPROCdrink 20170t$="You are not thirsty." 20180IF INSTR(i$,"whisky")>0 AND FNgotorhere("whisky")=1 THEN 20190t$="You gulp down the whisky and your throat becomes a mass of flames." 20200FOR p=1 TO 10 20210IF owns$(p)="whisky" owns$(p)="" 20220IF objects$(roomno%,p)="whisky" objects$(roomno%,p)="" 20230NEXT p 20240ENDIF 20250IF INSTR(i$,"potion")>0 AND FNgotorhere("potion")=1 THEN 20260t$="You gulp down the potion. A few seconds go by then your head starts shaking. You put up your hands to steady it, but then it EXPLODES!":nifok%=1:PROCdecidepics 20270FOR p=1 TO 10 20280IF owns$(p)="potion" owns$(p)="" 20290IF objects$(roomno%,p)="potion" objects$(roomno%,p)="" 20300NEXT p 20310ENDIF 20320PROCadd(t$) 20330ENDPROC 20340 20350DEFPROCeat 20360eatyn%=0 20370IF INSTR(i$,"pill")>0 AND FNgotorhere("pill")=1 THEN 20380eatyn%=1 20390PROCadd("You eat the pill, feel drowsy and fall asleep for a while...") 20400FOR p=1 TO 10 20410IF owns$(p)="pill" owns$(p)="" 20420IF objects$(roomno%,p)="pill" objects$(roomno%,p)="" 20430NEXT p 20440sleep%=1:sleepoldtime%=TIME 20450ENDIF 20460IF INSTR(i$,"sweet")>0 AND roomno%=248 THEN 20470eatyn%=1 20480PROCadd("You'll have to buy the sweets first.") 20490ENDIF 20500IF INSTR(i$,"apple")>0 AND FNgotorhere("apple")=1 THEN 20510eatyn%=1 20520PROCadd("You eat the apple, it tastes gorgeous and you feel much better.") 20530FOR p=1 TO 10 20540IF owns$(p)="apple" owns$(p)="" 20550IF objects$(roomno%,p)="apple" objects$(roomno%,p)="" 20560NEXT p 20570ENDIF 20580IF INSTR(i$,"newt")>0 AND FNgotorhere("newt")=1 THEN 20590eatyn%=1 20600PROCadd("You let the newt slide down your throat. Yuck.") 20610FOR p=1 TO 10 20620IF owns$(p)="newt" owns$(p)="" 20630IF objects$(roomno%,p)="newt" objects$(roomno%,p)="" 20640NEXT p 20650ENDIF 20660IF INSTR(i$,"sweet")>0 AND FNgotorhere("sweet")=1 THEN 20670eatyn%=1 20680PROCadd("You brush off the layers of fluff and pop it into your mouth. It tastes quite nice.") 20690FOR p=1 TO 10 20700IF owns$(p)="sweet" owns$(p)="" 20710IF objects$(roomno%,p)="sweet" objects$(roomno%,p)="" 20720NEXT p 20730ENDIF 20740IF INSTR(i$,"mouse")>0 AND FNgotorhere("mouse")=1 THEN 20750eatyn%=1 20760PROCadd("You must be mad, but you close your eyes and take a bite, a few seconds later you feel queezy and collapse onto the ground in agony. Blackness.") 20770nifok%=1:PROCdecidepics 20780FOR p=1 TO 10 20790IF owns$(p)="mouse" owns$(p)="" 20800IF objects$(roomno%,p)="mouse" objects$(roomno%,p)="" 20810NEXT p 20820ENDIF 20830IF INSTR(i$,"breadcrumb")>0 AND FNgotorhere("breadcrumb")=1 THEN 20840eatyn%=1 20850PROCadd("You eat the breadcrumb, gosh that was filling.") 20860FOR p=1 TO 10 20870IF owns$(p)="breadcrumb" owns$(p)="" 20880IF objects$(roomno%,p)="breadcrumb" objects$(roomno%,p)="" 20890NEXT p 20900ENDIF 20910IF INSTR(i$,"loaf")>0 AND roomno%=29 THEN 20920eatyn%=1 20930PROCadd("The baker hits you over the head and shouts 'THIEF!!' several times. A policeman runs in, grabs your arm and before you can do anything about it you are knocked out. Several hours later you wake up in a strange room...") 20940poltime%=TIME:zone%=2:roomno%=85:PROCremkey:mapyn%(roomno%)=1:i$="look":PROClook:wimp%!0=maphan%:PROCredrawmap 20950ENDIF 20960IF INSTR(i$,"meat")>0 AND roomno%=30 THEN 20970eatyn%=1 20980PROCadd("You carefully pick up a steak, dripping with blood, and take a bite, but the butcher, who hates thieves, has been carefully watching you. He reveals a large kitchen knife and aims between your eyes. Sccchmmaackk. Blackness.") 20990nifok%=1:PROCdecidepics 21000ENDIF 21010IF INSTR(i$,"aspirin")>0 AND FNgotorhere("aspirin")=1 THEN 21020eatyn%=1 21030PROCadd("You swallow the aspirin.") 21040FOR p=1 TO 10 21050IF owns$(p)="aspirin" owns$(p)="" 21060IF objects$(roomno%,p)="aspirin" objects$(roomno%,p)="" 21070NEXT p 21080ENDIF 21090IF INSTR(i$,"lolly")>0 AND FNgotorhere("lolly")=1 THEN 21100eatyn%=1 21110PROCadd("You suck the lolly until it has all gone. Lovely.") 21120FOR p=1 TO 10 21130IF owns$(p)="lolly" owns$(p)="" 21140IF objects$(roomno%,p)="lolly" objects$(roomno%,p)="" 21150NEXT p 21160ENDIF 21170IF eatyn%=0 PROCadd("You cannot eat that.") 21180ENDPROC 21190 21200DEFPROCget 21210gotta%=0 21220IF INSTR(i$,"all")>0 OR INSTR(i$,"everything")>0 THEN 21230 counter%=0 21240 FOR a%=1 TO 10 21250 IF objects$(roomno%,a%)<>"" i$=objects$(roomno%,a%):counter%+=1:PROCget 21260 NEXT a% 21270 IF counter%=0 PROCadd("There is nothing to get.") 21280 i$="get all" 21290 gotta%=-1 21300ENDIF 21310IF gotta%=0 THEN 21320FOR g=1 TO 10 21330IF owns$(g)<>"" AND INSTR(i$,owns$(g))>0 PROCadd("You already have this item."):gotta%=1 21340NEXT g 21350ENDIF 21360IF gotta%=0 THEN 21370FOR g=1 TO 10 21380IF objects$(roomno%,g)<>"" AND INSTR(i$,objects$(roomno%,g))>0 gotta%=-1:ojt%=g 21390NEXT g 21400IF gotta%=0 THEN 21410 gotta%=1:CASE RND(4) OF 21420 WHEN 1 : t$="That object is no-where to be seen." 21430 WHEN 2 : t$="You search and search, but that item cannot be found." 21440 WHEN 3 : t$="I think you're hallucinating... it's no-where to be seen." 21450 WHEN 4 : t$="You can't get something that isn't here." 21460 ENDCASE 21470PROCmorespecific 21480PROCadd(t$) 21490ENDIF 21500IF gotta%=-1 gotta%=0 21510ENDIF 21520IF gotta%=0 THEN 21530gottaflag%=0 21540FOR g=1 TO 10 21550IF owns$(g)="" gottaflag%=g 21560NEXT g 21570IF gottaflag%>0 owns$(gottaflag%)=objects$(roomno%,ojt%):objects$(roomno%,ojt%)="":PROCwhatgot(owns$(gottaflag%)) 21580IF gottaflag%=0 CASE RND(4) OF 21590 WHEN 1 : PROCadd("You are carrying far too much all ready.") 21600 WHEN 2 : PROCadd("You can't carry any more.") 21610 WHEN 3 : PROCadd("Your arms ache too much for another item.") 21620 WHEN 4 : PROCadd("What are you trying to do? Break your back?") 21630ENDCASE 21640ENDIF 21650ENDPROC 21660 21670DEFPROCmorespecific 21680FOR a%=1 TO 2 21690IF police%(a%)=roomno% AND zone%=2 AND INSTR(i$,"man")>0 t$="The policeman may get suspicious if you grab him." 21700NEXT a% 21710IF INSTR(i$,"cobbles")>0 CASE roomno% OF 21720 WHEN 2,7,15,12,28,42,43 : t$="The cobblestones seem to be fixed to the road quite well." 21730ENDCASE 21740IF INSTR(i$,"fence")>0 CASE roomno% OF 21750 WHEN 53,55,56,57,24,14,15,16,17,18,46,45,44,43,47,65,76,77,78,79,80 : t$="The fence won't budge from the ground." 21760ENDCASE 21770IF INSTR(i$,"car")>0 CASE roomno% OF 21780 WHEN 268,269,270,271,272,273,274 : t$="The cars are too large and fast to grab." 21790ENDCASE 21800IF INSTR(i$,"tree")>0 CASE roomno% OF 21810 WHEN 279,286,288,289,290,292 : t$="The trees have roots which are far too strong." 21820ENDCASE 21830IF roomno%=1 THEN 21840IF INSTR(i$,"amiga")>0 t$="As if you wanted one!" 21850IF INSTR(i$,"underwear")>0 t$="You're quite warm enough in your own at the moment." 21860IF INSTR(i$,"people")>0 t$="Someone might object!" 21870ENDIF 21880IF roomno%=2 AND INSTR(i$,"door")>0 t$="You pull the door, but it does not come off its hinges." 21890IF roomno%=3 THEN 21900IF INSTR(i$,"hat stand")>0 t$="Do you really think a hat-stand would help you in your quest?" 21910IF INSTR(i$,"hatstand")>0 t$="Do you really think a hat-stand would help you in your quest?" 21920IF INSTR(i$,"chandelier")>0 t$="You aren't quite high enough to reach it." 21930IF INSTR(i$,"wallpaper")>0 t$="It would ruin the room if you were to strip the wall-paper off the walls." 21940IF INSTR(i$,"stair")>0 t$="You can't uproot a part of the house." 21950ENDIF 21960IF roomno%=4 AND INSTR(i$,"toy")>0 t$="Collecting children's toys won't help you in your quest." 21970IF roomno%=5 THEN 21980IF INSTR(i$,"pen")>0 t$="The pen is chained to the table." 21990IF INSTR(i$,"form")>0 t$="The form is chained to the table." 22000IF INSTR(i$,"bed")>0 t$="Nice though the bed may be, it's just a little to heavy to carry." 22010IF INSTR(i$,"table")>0 t$="The table is stuck to the carpeted floor." 22020ENDIF 22030IF roomno%=8 THEN 22040IF INSTR(i$,"ceiling")>0 t$="Your arms aren't quite long enough I'm afraid." 22050IF INSTR(i$,"furniture")>0 t$="The furniture is too heavy for your weedy arms." 22060IF INSTR(i$,"carpet")>0 t$="You decide against it, someone might notice if the carpet went missing." 22070ENDIF 22080IF roomno%=9 THEN 22090IF INSTR(i$,"sofa")>0 t$="The sofa is in such a bad condition that you don't really want it anyway." 22100IF INSTR(i$,"painting")>0 t$="What would you want with a defaced painting? Not much." 22110IF INSTR(i$,"picture")>0 t$="What would you want with a defaced painting? Not much." 22120IF INSTR(i$,"portrait")>0 t$="What would you want with a defaced painting? Not much." 22130ENDIF 22140IF roomno%=10 THEN 22150IF INSTR(i$,"table")>0 t$="The table is stuck to the carpeted floor." 22160IF INSTR(i$,"chair")>0 t$="You can't just put a chair under your jumper." 22170ENDIF 22180IF roomno%=11 THEN 22190IF INSTR(i$,"plaque")>0 t$="The plaque has been carefully screwed to the monument." 22200IF INSTR(i$,"pot")>0 t$="The pots are extremely large and too heavy to lift." 22210IF INSTR(i$,"plant")>0 t$="The soil might stain your clothes." 22220IF INSTR(i$,"monument")>0 t$="Be serious." 22230ENDIF 22240IF roomno%=13 THEN 22250IF INSTR(i$,"path")>0 t$="Surprise, surprise, the path seems to be stuck down some how." 22260IF INSTR(i$,"paving")>0 t$="The crazy-paving seems to be well cemented." 22270IF INSTR(i$,"tree")>0 t$="The trees have rather large roots which, unfortunately, prevents idiots from trying to pull them up." 22280IF INSTR(i$,"blossom")>0 t$="The blossom is rather pretty and you decide not to destroy the scene of beauty by tearing it off the tree." 22290ENDIF 22300IF roomno%=15 THEN 22310IF INSTR(i$,"guard")>0 t$="The guard looks at you strangely as you put your arms around him... ...you change your mind." 22320IF INSTR(i$,"gate")>0 t$="The gates seem to be fixed quite sturdily to the fence, which itself is fixed to the ground." 22330ENDIF 22340IF roomno%=18 AND INSTR(i$,"sludge")>0 t$="You scoop up some sludge with your hands, but it slips right out again." 22350IF roomno%=19 AND INSTR(i$,"sign")>0 t$="The sign is large and would be too heavy to carry." 22360IF roomno%=22 AND INSTR(i$,"stair")>0 t$="You can't uproot a part of the house." 22370IF roomno%=26 AND INSTR(i$,"window")>0 t$="You aren't high enough to even touch the window." 22380IF roomno%=27 THEN 22390IF INSTR(i$,"dust")>0 t$="You take a handful of the dust, but it flows right through your fingers." 22400IF INSTR(i$,"crate")>0 t$="The crate is too heavy to budge." 22410ENDIF 22420IF roomno%=29 THEN 22430IF INSTR(i$,"sign")>0 t$="The sign is screwed to the wall." 22440IF INSTR(i$,"baker")>0 t$="The baker wouldn't be too happy if you started lifting him around." 22450IF INSTR(i$,"counter")>0 t$="The counter would be too heavy." 22460IF INSTR(i$,"bag")>0 t$="You edge nearer the bag, but the baker scares you off." 22470IF INSTR(i$,"till")>0 t$="You might look a tad suspicious with a till under your jumper." 22480IF INSTR(i$,"loaf")>0 THEN 22490PROCadd("The baker springs up and shouts 'THIEF!!'. A policeman runs in, grabs your arm and you are knocked out. Hours later you wake up in a strange room...") 22500poltime%=TIME:zone%=2:roomno%=85:PROCremkey:mapyn%(roomno%)=1:i$="look":PROClook:wimp%!0=maphan%:PROCredrawmap 22510IF drugged%=0 t$="The guard looks around and sees that you have woken up." ELSE t$="The guard is slumped." 22520ENDIF 22530ENDIF 22540IF roomno%=30 THEN 22550IF INSTR(i$,"counter")>0 t$="The counter would be too heavy." 22560IF INSTR(i$,"butcher")>0 t$="The butcher isn't the sort of person you want to start pushing around." 22570IF INSTR(i$,"clothes")>0 t$="The butcher wouldn't be happy if you ripped the clothes off him." 22580IF INSTR(i$,"blood")>0 t$="Only vampires have the desire to grab any globule of blood they see." 22590IF INSTR(i$,"meat")>0 THEN 22600t$="You carefully pick up a steak, dripping with blood, but the butcher, who hates thieves, has been carefully watching you. He reveals a large kitchen knife and aims between your eyes. Sccchmmaackk. Blackness." 22610nifok%=1:PROCdecidepics 22620ENDIF 22630ENDIF 22640IF roomno%=34 AND INSTR(i$,"pond")>0 t$="You cannot get a pond!" 22650IF roomno%=35 THEN 22660IF INSTR(i$,"flower")>0 t$="The flowers look far too pretty where they are to uproot them." 22670IF INSTR(i$,"bed")>0 t$="It would help if you found a bulldozer first - not easy in this century." 22680ENDIF 22690IF roomno%=36 THEN 22700IF INSTR(i$,"path")>0 t$="The path is firmly fixed to the ground." 22710IF INSTR(i$,"slab")>0 t$="The slabs are firmly fixed to the ground." 22720ENDIF 22730IF roomno%=37 THEN 22740IF INSTR(i$,"vicar")>0 t$="No, you'd better not." 22750IF INSTR(i$,"altar")>0 t$="The altar is too sacred to touch." 22760IF INSTR(i$,"step")>0 t$="If you removed the steps there would be no way to get upstairs." 22770IF INSTR(i$,"girl")>0 AND crier%=1 t$="The girl promptly slaps you round the face." 22780IF INSTR(i$,"girl")>0 AND crier%=0 t$="The girl is no longer here." 22790ENDIF 22800IF roomno%=38 THEN 22810IF INSTR(i$,"grass")>0 t$="The grass is not worth pulling up." 22820IF INSTR(i$,"headstone")>0 t$="The headstones are firmly fixed into the ground." 22830ENDIF 22840IF roomno%=39 THEN 22850IF INSTR(i$,"grass")>0 t$="The grass is too short to get a grip on." 22860IF INSTR(i$,"flower")>0 t$="The flowers are so well looked after, the owner may be a little angry." 22870IF INSTR(i$,"willow")>0 OR INSTR(i$,"tree")>0 t$="The willow tree has far too many roots." 22880IF INSTR(i$,"path")>0 t$="The path it fixed." 22890ENDIF 22900IF roomno%=41 THEN 22910IF INSTR(i$,"headstone")>0 t$="The headstone is fixed in the ground." 22920IF INSTR(i$,"grass")>0 t$="The grass is not worth pulling up." 22930ENDIF 22940IF roomno%=49 THEN 22950IF INSTR(i$,"table")>0 t$="The tables are too heavy to lift." 22960IF INSTR(i$,"chair")>0 t$="There are too many chairs to carry." 22970IF INSTR(i$,"glass")>0 t$="Empty wine glasses are not very helpful to you." 22980ENDIF 22990IF roomno%=50 THEN 23000IF INSTR(i$,"people")>0 t$="You can't pick up a crowd of people!" 23010IF INSTR(i$,"table")>0 t$="The snooker table is far too heavy to lift." 23020IF INSTR(i$,"felt")>0 t$="The felt is glued to the table." 23030ENDIF 23040IF roomno%=52 THEN 23050IF INSTR(i$,"bar")>0 t$="The bar is impossible to lift." 23060IF INSTR(i$,"man")>0 t$="The man would not appreciate being lifted around." 23070IF INSTR(i$,"uniform")>0 t$="You cannot rip the man's clothes off!" 23080IF INSTR(i$,"bottle")>0 t$="The bottles are too far away to reach." 23090IF INSTR(i$,"glass")>0 t$="The glasses are just too far away to reach." 23100ENDIF 23110IF roomno%=60 THEN 23120IF INSTR(i$,"display")>0 t$="The display is too heavy to lift." 23130IF INSTR(i$,"key")>0 t$="The keys are all safe behind in the glass display." 23140IF INSTR(i$,"jewel")>0 t$="The jewels are stuck firmly to the keys." 23150ENDIF 23160IF roomno%=62 THEN 23170IF INSTR(i$,"fountain")>0 t$="Wouldn't the fountain be a tad too heavy?" 23180IF INSTR(i$,"water")>0 t$="The water is travelling to fast to catch." 23190ENDIF 23200IF roomno%=64 THEN 23210IF INSTR(i$,"bar")>0 t$="The bar is impossible to lift." 23220IF INSTR(i$,"woman")>0 OR INSTR(i$,"barmaid")>0 t$="As much as you would like it, the bar-maid wouldn't like to be lifted around." 23230IF INSTR(i$,"bottle")>0 t$="The bottles are too far away to reach." 23240IF INSTR(i$,"glass")>0 t$="The glasses are just out of reach." 23250ENDIF 23260IF roomno%=65 THEN 23270IF INSTR(i$,"barrel")>0 t$="The barrels are too heavy to lift." 23280ENDIF 23290IF roomno%=69 THEN 23300IF INSTR(i$,"counter")>0 t$="The counter is too large to lift." 23310IF INSTR(i$,"man")>0 OR INSTR(i$,"keymaker")>0 t$="The keymaker is too far away." 23320IF INSTR(i$,"spectacle")>0 t$="The spectacles are on the face of the keymaker." 23330IF INSTR(i$,"sign")>0 t$="The sign is fixed to the wall." 23340ENDIF 23350IF roomno%=70 THEN 23360IF INSTR(i$,"sign")>0 t$="The sign is too far up to reach." 23370ENDIF 23380IF roomno%=220 THEN 23390IF INSTR(i$,"cloud")>0 t$="The clouds are impossible to reach." 23400IF INSTR(i$,"smoke")>0 t$="It is impossible to get smoke." 23410ENDIF 23420IF roomno%=72 THEN 23430IF INSTR(i$,"man")>0 OR INSTR(i$,"wizard")>0 t$="The wizard is too frail to lift around." 23440IF INSTR(i$,"beard")>0 t$="The beard is firmly fixed to the wizard." 23450IF INSTR(i$,"cape")>0 t$="The cape is tied around the neck of the wizard." 23460ENDIF 23470IF roomno%=73 THEN 23480IF INSTR(i$,"bottle")>0 t$="The bottles are not worth investigating." 23490IF INSTR(i$,"powder")>0 t$="The powders are not worth investigating." 23500IF INSTR(i$,"alchemist")>0 OR INSTR(i$,"man")>0 t$="The alchemist is too heavy to lift." 23510ENDIF 23520IF roomno%=75 THEN 23530IF INSTR(i$,"junk")>0 t$="There is too much junk to pick up." 23540ENDIF 23550IF roomno%=76 THEN 23560IF INSTR(i$,"tramp")>0 OR INSTR(i$,"man")>0 t$="The tramp looks too comfortable where he is." 23570IF INSTR(i$,"box")>0 t$="The cardboard box is trapped under the tramp." 23580ENDIF 23590IF roomno%=78 THEN 23600IF fire%=0 THEN 23610IF INSTR(i$,"char")>0 OR INSTR(i$,"remain")>0 t$="The charred remains are spread too widely." 23620ENDIF 23630IF fire%>0 THEN 23640IF INSTR(i$,"boy")>0 t$="The boy is too far away." 23650IF INSTR(i$,"fire")>0 t$="The bonfire is too hot to pick up." 23660IF INSTR(i$,"flame")>0 t$="The flames are impossible to get." 23670ENDIF 23680ENDIF 23690IF roomno%=81 THEN 23700IF INSTR(i$,"girl")>0 t$="There are too many girls to grab hold of." 23710IF INSTR(i$,"bar")>0 t$="The bars are fixed to the walls." 23720ENDIF 23730IF roomno%=82 THEN 23740IF INSTR(i$,"desk")>0 t$="The desk is fixed to the floor." 23750IF INSTR(i$,"woman")>0 t$="The woman is very heavy." 23760ENDIF 23770IF roomno%=83 THEN 23780IF INSTR(i$,"suitcase")>0 t$="The suitcase is too bulky to lift." 23790IF INSTR(i$,"window")>0 t$="You aren't high enough to even touch the window." 23800ENDIF 23810IF roomno%=84 THEN 23820IF INSTR(i$,"timber")>0 t$="There is too much timber to get." 23830IF INSTR(i$,"coffin")>0 t$="The coffin is too large and bulky." 23840IF INSTR(i$,"boy")>0 t$="The boy is too heavy." 23850IF INSTR(i$,"man")>0 t$="The man is too heavy." 23860ENDIF 23870IF roomno%=85 THEN 23880IF INSTR(i$,"bar")>0 t$="The bars are firmly fixed - to stop you from escaping.":IF exits(85,2)>0 t$="The bars that are left are firmly fixed." 23890IF INSTR(i$,"guard")>0 t$="The guard is too far behind the bars to grab." 23900IF INSTR(i$,"cup")>0 OR INSTR(i$,"drink")>0 t$="The cup is too hot to get hold of." 23910ENDIF 23920IF roomno%=110 THEN 23930IF INSTR(i$,"notice")>0 t$="The notice is screwed to the white-washed wall." 23940ENDIF 23950IF roomno%=113 THEN 23960IF INSTR(i$,"pinboard")>0 t$="The pinboard is screwed tightly to the office wall." 23970IF INSTR(i$,"note")>0 t$="The notes have been stuck to the pinboard." 23980ENDIF 23990IF roomno%=116 THEN 24000IF INSTR(i$,"table")>0 t$="The table is too heavy to lift." 24010ENDIF 24020IF roomno%=122 THEN 24030IF INSTR(i$,"desk")>0 t$="The desk is extremely heavy." 24040IF INSTR(i$,"chair")>0 t$="The chair is an old wooden one, it is quite heavy." 24050ENDIF 24060IF roomno%=127 THEN 24070IF INSTR(i$,"sign")>0 t$="The sign is screwed to the wall." 24080ENDIF 24090IF roomno%=133 OR roomno%=135 THEN 24100IF INSTR(i$,"table")>0 t$="The table is a heavy, wooden one - too bulky to lift." 24110IF INSTR(i$,"chair")>0 t$="The chair is wooden and bulky - awkward to carry." 24120ENDIF 24130IF roomno%=179 THEN 24140IF INSTR(i$,"door")>0 t$="The door is fixed by hinges." 24150ENDIF 24160IF roomno%=224 THEN 24170IF INSTR(i$,"sign")>0 t$="The sign is fixed to the ground." 24180ENDIF 24190IF roomno%=226 THEN 24200IF INSTR(i$,"swing")>0 t$="The swings are fixed into the ground." 24210IF INSTR(i$,"child")>0 t$="The little girl is very heavy." 24220IF INSTR(i$,"girl")>0 t$="The little girl is very heavy." 24230ENDIF 24240IF roomno%=227 THEN 24250IF INSTR(i$,"slide")>0 t$="The slide is fixed into the ground." 24260ENDIF 24270IF roomno%=228 THEN 24280IF INSTR(i$,"sand")>0 t$="There is too much sand to get hold of." 24290IF INSTR(i$,"pit")>0 t$="The sandpit is too large." 24300ENDIF 24310IF roomno%=235 THEN 24320IF INSTR(i$,"car")>0 t$="The cars are too heavy." 24330ENDIF 24340IF roomno%=236 OR roomno%=238 THEN 24350IF INSTR(i$,"car")>0 t$="The car is too heavy." 24360ENDIF 24370IF roomno%=248 THEN 24380IF INSTR(i$,"man")>0 t$="The man is too heavy." 24390IF INSTR(i$,"newspaper")>0 OR INSTR(i$,"magazine")>0 t$="The magazines and newspapers should really be bought before you take them." 24400IF INSTR(i$,"counter")>0 t$="The counter is too heavy." 24410IF INSTR(i$,"sweet")>0 t$="That would be theft." 24420ENDIF 24430IF roomno%=249 THEN 24440IF INSTR(i$,"woman")>0 t$="The woman is too heavy." 24450IF INSTR(i$,"ornament")>0 OR INSTR(i$,"trophy")>0 OR INSTR(i$,"trophie")>0 OR INSTR(i$,"souvenir")>0 t$="The souvenirs are too numerous to grab hold of." 24460ENDIF 24470IF roomno%=250 THEN 24480IF INSTR(i$,"woman")>0 t$="The woman is too heavy." 24490IF INSTR(i$,"flower")>0 t$="The flowers are too numerous to grab hold of." 24500ENDIF 24510IF roomno%=252 THEN 24520IF INSTR(i$,"monument")>0 t$="The monument is too heavy." 24530IF INSTR(i$,"plaque")>0 t$="The plaque is fixed to the monument." 24540ENDIF 24550IF roomno%=253 THEN 24560IF INSTR(i$,"woman")>0 t$="The woman is too heavy." 24570IF INSTR(i$,"sofa")>0 t$="The sofa is too bulky." 24580IF INSTR(i$,"antique")>0 t$="The antiques are too numerous to grab hold of." 24590ENDIF 24600IF roomno%=256 THEN 24610IF INSTR(i$,"fountain")>0 t$="The fountain is too heavy." 24620ENDIF 24630IF roomno%=264 THEN 24640IF INSTR(i$,"table")>0 t$="The tables are too bulky to lift." 24650IF INSTR(i$,"chair")>0 t$="The chairs too bulky to lift." 24660IF INSTR(i$,"dartboard")>0 t$="The dartboard is screwed to the wall." 24670ENDIF 24680IF roomno%=265 THEN 24690IF INSTR(i$,"table")>0 t$="The tables are too bulky to lift." 24700IF INSTR(i$,"chair")>0 t$="The chairs too bulky to lift." 24710ENDIF 24720IF roomno%=266 THEN 24730IF INSTR(i$,"bar")>0 t$="The bar is far too large." 24740IF INSTR(i$,"barmaid")>0 OR INSTR(i$,"woman")>0 t$="The barmaid is over the other side of the bar." 24750IF INSTR(i$,"skirt")>0 t$="The barmaid's skirt is being worn by the barmaid." 24760IF INSTR(i$,"blouse")>0 t$="The barmaid's blouse is being worn by the barmaid." 24770IF INSTR(i$,"hair")>0 t$="The barmaid's hair is attached to the barmaid." 24780ENDIF 24790IF roomno%=279 THEN 24800IF INSTR(i$,"path")>0 t$="The path is stuck to the ground." 24810ENDIF 24820IF roomno%=281 THEN 24830IF INSTR(i$,"man")>0 t$="The man is the other side of the counter." 24840IF INSTR(i$,"counter")>0 t$="The counter is too large and bulky." 24850IF INSTR(i$,"leaflet")>0 t$="The leaflets are too numerous to get hold of." 24860ENDIF 24870IF roomno%=284 OR roomno%=297 THEN 24880IF INSTR(i$,"sign")>0 t$="The sign is screwed to the wall." 24890ENDIF 24900IF roomno%=293 THEN 24910IF INSTR(i$,"bell")>0 t$="The bells too high up to reach." 24920IF INSTR(i$,"rope")>0 t$="You pull on one of the thick ropes - DDDONGGGG!!!" 24930ENDIF 24940IF roomno%=294 OR roomno%=295 THEN 24950IF INSTR(i$,"grass")>0 t$="The grass is too tough to get." 24960IF INSTR(i$,"headstone")>0 t$="The headstone is stuck into the turf." 24970ENDIF 24980IF roomno%=296 THEN 24990IF INSTR(i$,"altar")>0 t$="The altar far too heavy to lift." 25000IF INSTR(i$,"aisle")>0 t$="The aisle is not something you can get hold of." 25010IF INSTR(i$,"pew")>0 t$="Try to be pratical about this." 25020ENDIF 25030IF roomno%=301 THEN 25040IF INSTR(i$,"woman")>0 t$="The woman is the other side of the counter." 25050IF INSTR(i$,"counter")>0 t$="The counter is too heavy." 25060ENDIF 25070IF roomno%=302 THEN 25080IF INSTR(i$,"ceiling")>0 t$="The ceiling is too high up." 25090IF INSTR(i$,"woman")>0 OR INSTR(i$,"expert")>0 t$="The old woman is too heavy." 25100ENDIF 25110IF roomno%=303 THEN 25120IF INSTR(i$,"feather")>0 t$="The feather is fixed to the wall." 25130IF INSTR(i$,"picture")>0 OR INSTR(i$,"painting")>0 t$="The painting is fixed to the wall." 25140IF INSTR(i$,"plaque")>0 t$="The plaque is fixed to the frame of the painting." 25150ENDIF 25160IF roomno%=304 THEN 25170IF INSTR(i$,"bed")>0 t$="The bed is too heavy." 25180IF INSTR(i$,"table")>0 t$="The table is too bulky." 25190IF INSTR(i$,"chair")>0 t$="The chairs are too bulky." 25200ENDIF 25210IF roomno%=305 THEN 25220IF INSTR(i$,"door")>0 t$="The door is fixed by hinges." 25230IF INSTR(i$,"guard")>0 t$="The guard is too heavy." 25240ENDIF 25250IF roomno%=306 THEN 25260IF INSTR(i$,"stairs")>0 t$="The stairs cannot be removed." 25270ENDIF 25280IF roomno%=307 THEN 25290IF INSTR(i$,"stairs")>0 t$="The stairs cannot be removed." 25300IF INSTR(i$,"junk")>0 t$="There is too much pointless junk to collect." 25310ENDIF 25320IF roomno%=308 THEN 25330IF INSTR(i$,"junk")>0 t$="There is too much pointless junk to collect." 25340ENDIF 25350IF roomno%=310 THEN 25360IF INSTR(i$,"table")>0 t$="The table is too heavy." 25370IF INSTR(i$,"woman")>0 OR INSTR(i$,"medium")>0 t$="The old woman is too heavy and weird to start grabbing." 25380ENDIF 25390IF roomno%=311 THEN 25400IF INSTR(i$,"cloud")>0 t$="The clouds fizzle away when you reach for them." 25410IF INSTR(i$,"mist")>0 t$="The mist glides through your fingers." 25420ENDIF 25430IF roomno%=312 THEN 25440IF INSTR(i$,"counter")>0 t$="The counter is too heavy." 25450IF INSTR(i$,"man")>0 t$="The man is the other side of the counter." 25460IF INSTR(i$,"liquid")>0 t$="The liquids are too high up on the wall to reach." 25470ENDIF 25480ENDPROC 25490 25500DEFPROCmuchmorespecific 25510t$="I do not know what you want me to examine." 25520FOR a%=1 TO 2 25530IF police%(a%)=roomno% AND zone%=2 AND INSTR(i$,"man")>0 t$="The policeman is tall and looks at you cauciously." 25540NEXT a% 25550IF INSTR(i$,"cobbles")>0 CASE roomno% OF 25560 WHEN 2,7,15,12,28,42,43 : t$="The cobblestones are cobblestones, rectangular, stoney thingies in the road." 25570ENDCASE 25580IF INSTR(i$,"road")>0 CASE roomno% OF 25590 WHEN 2,7,15,12,28,42,43 : t$="It's a stoney thing that runs from the north of the town to the south." 25600ENDCASE 25610IF INSTR(i$,"fence")>0 CASE roomno% OF 25620 WHEN 57,56,55,53,24,14,15,16,17,18,46,45,44,43,47,65,76,77,78,79,80 : t$="The fence is wooden and runs from the west of the town to the east. It looks untreated and has almost rotted away." 25630ENDCASE 25640IF INSTR(i$,"car")>0 CASE roomno% OF 25650 WHEN 268,269,270,271,272,273,274 : t$="The cars are large, various colours, and are very fast." 25660ENDCASE 25670IF INSTR(i$,"tree")>0 CASE roomno% OF 25680 WHEN 279,286,288,289,290,292 : t$="The trees are tall and healthy. They are covered with foliage." 25690ENDCASE 25700IF roomno%=1 THEN 25710IF INSTR(i$,"amiga")>0 t$="Don't say you've never seen an Amiga! Lucky you!" 25720IF INSTR(i$,"stall")>0 t$="Just the usual market-place stalls, selling all sorts of useless knick-knacks." 25730IF INSTR(i$,"underwear")>0 t$="The underwear is woollen and could be quite itchy." 25740IF INSTR(i$,"people")>0 t$="You can't see a happy soul among them, but you wouldn't be happy if you'd lived in Greater Rollthright all your life." 25750ENDIF 25760IF roomno%=2 AND INSTR(i$,"door")>0 t$="The door is quite large and is the main entrance to the posh house." 25770IF roomno%=3 THEN 25780IF INSTR(i$,"hat stand")>0 t$="What do you want me to say? It's a stand for hats." 25790IF INSTR(i$,"hatstand")>0 t$="What do you want me to say? It's a stand for hats." 25800IF INSTR(i$,"stair")>0 t$="The stairs look quite solid and they lead down to the dark basement." 25810IF INSTR(i$,"wallpaper")>0 t$="The wall-paper is made so that it should look quite convincing, but unfortunately you can tell it was cheap from Texas Homecare." 25820IF INSTR(i$,"chandelier")>0 t$="The chandelier is on the tacky side, but creates a surprising amount of light." 25830ENDIF 25840IF roomno%=4 AND INSTR(i$,"toy")>0 t$="The toys are nothing out of the ordinary and are quite useless to you." 25850IF roomno%=5 THEN 25860IF INSTR(i$,"pen")>0 t$="The pen is just like any other pen. It is used to write things. It is chained to the table." 25870IF INSTR(i$,"form")>0 t$="The form is quite large and has some typed writing on it, it is chained to the table.":IF written%=1 t$+=" It also has some of your unreadable scrawl on it." 25880IF INSTR(i$,"bed")>0 t$="The bed is of the 4-poster variety and its cover is quite breathtaking, it must have taken many long years to get the embroidery on it to such a high quality." 25890IF INSTR(i$,"table")>0 t$="The table is wooden and doesn't look out of the ordinary. On the top of it is chained a form and a pen." 25900ENDIF 25910IF roomno%=8 THEN 25920IF INSTR(i$,"ceiling")>0 t$="The ceiling looks as if it should be in some sort of palace and you could stand for hours gaping at it." 25930IF INSTR(i$,"furniture")>0 t$="The furniture is bulky and nothing terribly wow." 25940IF INSTR(i$,"carpet")>0 t$="The carpet feels more like a layer of rocks, but it does look quite harmless at first sight." 25950ENDIF 25960IF roomno%=9 THEN 25970IF INSTR(i$,"sofa")>0 t$="The sofa is in such a bad condition that you wonder why anyone would want it." 25980IF INSTR(i$,"painting")>0 t$="The painting obviously used to be quite a work of art, but now it is ruined, beyond repair." 25990IF INSTR(i$,"picture")>0 t$="The painting obviously used to be quite a work of art, but now it is ruined, beyond repair." 26000IF INSTR(i$,"portrait")>0 t$="The painting obviously used to be quite a work of art, but now it is ruined, beyond repair." 26010ENDIF 26020IF roomno%=10 THEN 26030IF INSTR(i$,"table")>0 t$="The table is ornately carved out of top-quality wood and looks perfect in this aristocratic room." 26040IF INSTR(i$,"chair")>0 t$="The chairs are almost as beautiful as the table and are neatly sat around it." 26050ENDIF 26060IF roomno%=11 THEN 26070IF INSTR(i$,"plaque")>0 t$="The plaque is golden and has some carefully etched words on it." 26080IF INSTR(i$,"pot")>0 t$="The pots are round and made of dried mud. They contain some plants." 26090IF INSTR(i$,"plant")>0 t$="The plants look dead, probably due to the exciting atmosphere of Greater Rollthright." 26100IF INSTR(i$,"monument")>0 t$="The elaborate stone monument looms over you." 26110ENDIF 26120IF roomno%=13 THEN 26130IF INSTR(i$,"path")>0 t$="The path winds along rather wildly. It is made of crazy-paving." 26140IF INSTR(i$,"paving")>0 t$="The paving is probably done by professionals as you can't fault it." 26150IF INSTR(i$,"tree")>0 t$="The trees are large, but you are unsure of the type. They look especially beautiful with all the blossom on it." 26160IF INSTR(i$,"blossom")>0 t$="The blossom is probably the thing that gives the garden most atmosphere. It lays on the trees, gently swaying in the light breeze." 26170IF INSTR(i$,"garden")>0 t$="The garden is a feast for the eyes and obviously very well looked after." 26180ENDIF 26190IF roomno%=15 THEN 26200IF INSTR(i$,"guard")>0 t$="The guard looks very solemn as he watches your movements carefully." 26210IF INSTR(i$,"gate")>0 t$="The gates are large and are fixed to the fence which runs from the west to the east. The gates are firmly bolted and have a guard watching over them." 26220ENDIF 26230IF roomno%=18 AND INSTR(i$,"sludge")>0 t$="It's hard to see in the poor light conditions, but as far as you can make out the sludge is brown and gooey." 26240IF roomno%=19 AND INSTR(i$,"sign")>0 t$="The sign is painted, but the paint is starting to peel off. It says, 'Better bye from Benjamin the butcher, the Best Beef t'be bort'. Quite a nice tongue twister." 26250IF roomno%=22 AND INSTR(i$,"stair")>0 t$="The stairs look quite solid and they lead up the ground floor." 26260IF roomno%=26 AND INSTR(i$,"window")>0 t$="The window is small and old, but gives enough light for you to see properly." 26270IF roomno%=27 THEN 26280IF INSTR(i$,"crate")>0 t$="It is hard to see the crate in the poor light conditions, but you can make out the fact that it is wooden and quite old, dusty, and maybe mouldy." 26290IF INSTR(i$,"dust")>0 t$="The dust is quite thick and covers not only the crate, but some of the floor as well." 26300ENDIF 26310IF roomno%=29 THEN 26320IF INSTR(i$,"sign")>0 t$="The sign is screwed expertly to the wall. On it is some big, bold lettering." 26330IF INSTR(i$,"baker")>0 t$="The baker is grimey and has a serious weight problem. He doesn't look very happy." 26340IF INSTR(i$,"counter")>0 t$="The counter is quite low and is made out of wood. Behind it stands the baker and on it is a till and a bag." 26350IF INSTR(i$,"loaf")>0 t$="The loaf is the only one left in the shop and although it looks a little dirty and stale it still makes your mouth water." 26360IF INSTR(i$,"bag")>0 t$="The bag is made out of a brown material and looks quite full of something, probably coins. It is on the till." 26370IF INSTR(i$,"till")>0 t$="The till is old and rusty, it probably isn't used by the baker any more. It is on the counter." 26380ENDIF 26390IF roomno%=30 THEN 26400IF INSTR(i$,"butcher")>0 t$="The butcher is tall and looks angry. He is wearing some blood-splattered clothes." 26410IF INSTR(i$,"counter")>0 t$="The counter is to your left and behind it is the butcher." 26420IF INSTR(i$,"meat")>0 t$="The meat looks rather dirty, smells terrible and is dripping with blood." 26430IF INSTR(i$,"blood")>0 t$="It's red, liquidy stuff." 26440IF INSTR(i$,"clothes")>0 t$="The butcher's clothes are grimy and have globules of blood running down them." 26450ENDIF 26460IF roomno%=32 AND INSTR(i$,"wall")>0 t$="The wall is quite large and is sort of... bricky." 26470IF roomno%=33 AND INSTR(i$,"wall")>0 t$="The wall is quite large and is sort of... bricky." 26480IF roomno%=34 THEN 26490IF INSTR(i$,"garden")>0 t$="The garden is a feast for the eyes and obviously very well looked after." 26500IF INSTR(i$,"pond")>0 t$="The pond shimmers gently as it reflects the tired Sun's rays. It makes you feel relaxed." 26510ENDIF 26520IF roomno%=35 THEN 26530IF INSTR(i$,"garden")>0 t$="The garden is a feast for the eyes and obviously very well looked after." 26540IF INSTR(i$,"flower")>0 t$="You have never been good at gardening and have no idea what type of flowers these are, yet they are very pretty and are planted in neat rows." 26550IF INSTR(i$,"bed")>0 t$="The flowerbed is simply gorgeous to look at. The flowers radiate beauty and are obviously well cared for." 26560ENDIF 26570IF roomno%=36 THEN 26580IF INSTR(i$,"path")>0 t$="The path is uneven and made of slabs. It runs from west to east." 26590IF INSTR(i$,"slab")>0 t$="The slabs are grey and uninteresting. They make up the path." 26600ENDIF 26610IF roomno%=37 THEN 26620IF INSTR(i$,"vicar")>0 t$="The vicar is old and frail and sits by the altar, contemplating life." 26630IF INSTR(i$,"altar")>0 t$="The altar is large yet ugly. It is made out of cold stone." 26640IF INSTR(i$,"aisle")>0 t$="The aisle runs from south to north, finishing at the foot of the altar." 26650IF INSTR(i$,"step")>0 t$="The steps are wooden and lead up to the bell room." 26660IF INSTR(i$,"girl")>0 AND crier%=1 t$="The girl blocks your way to the east and she looks quite distressed." 26670IF INSTR(i$,"girl")>0 AND crier%=0 t$="The girl is no longer here." 26680ENDIF 26690IF roomno%=38 THEN 26700IF INSTR(i$,"grass")>0 t$="The grass is long and overgrown." 26710IF INSTR(i$,"headstone")>0 t$="The headstones are well camouflaged by the grass." 26720IF INSTR(i$,"graveyard")>0 t$="The graveyard is long and overgrown." 26730ENDIF 26740IF roomno%=39 THEN 26750IF INSTR(i$,"grass")>0 t$="The grass is short and well watered." 26760IF INSTR(i$,"garden")>0 t$="The garden is well looked after, but in some ways looks synthetic." 26770IF INSTR(i$,"flower")>0 t$="The flowers are also well looked after, but look false in the neat patterns that they are in." 26780IF INSTR(i$,"willow")>0 OR INSTR(i$,"tree")>0 t$="The willow tree is the nicest part of the garden. It blows gently in the breeze." 26790IF INSTR(i$,"path")>0 t$="The path leads eastwards." 26800ENDIF 26810IF roomno%=41 THEN 26820IF INSTR(i$,"headstone")>0 t$="The headstone is covered by grass, but could be readable." 26830IF INSTR(i$,"grass")>0 t$="The grass is long and overgrown." 26840IF INSTR(i$,"graveyard")>0 t$="The graveyard is long and overgrown." 26850ENDIF 26860IF roomno%=49 THEN 26870IF INSTR(i$,"table")>0 t$="The tables are wooden and bulky." 26880IF INSTR(i$,"chair")>0 t$="The chairs are lying all over the place. They are wooden." 26890IF INSTR(i$,"glass")>0 t$="The wine glasses are laid carelessly all over the place." 26900ENDIF 26910IF roomno%=50 THEN 26920IF INSTR(i$,"people")>0 t$="The people are totally drunk and are dancing about trying to sing." 26930IF INSTR(i$,"table")>0 t$="The snooker table is large and has green felt on it. It has no balls or cues." 26940IF INSTR(i$,"felt")>0 t$="The felt is green and is stuck to the snooker table." 26950ENDIF 26960IF roomno%=52 THEN 26970IF INSTR(i$,"bar")>0 t$="The bar is long and continues to the west." 26980IF INSTR(i$,"man")>0 t$="The man is tall and wears a uniform." 26990IF INSTR(i$,"uniform")>0 t$="The uniform is a bow-tie and white shirt." 27000IF INSTR(i$,"bottle")>0 t$="The bottles line the north wall." 27010IF INSTR(i$,"glass")>0 t$="The glasses are just below the bottles and shimmer in the light." 27020ENDIF 27030IF roomno%=60 THEN 27040IF INSTR(i$,"display")>0 t$="The display is large and made of glass. It is displaying some keys." 27050IF INSTR(i$,"key")>0 t$="The keys range from the boring to the elaborate." 27060IF INSTR(i$,"jewel")>0 t$="The jewels glisten beautifully on the keys." 27070ENDIF 27080IF roomno%=62 THEN 27090IF INSTR(i$,"fountain")>0 t$="The fountain is small, yet pretty in appearance." 27100IF INSTR(i$,"water")>0 t$="The water is wet and liquidy." 27110ENDIF 27120IF roomno%=64 THEN 27130IF INSTR(i$,"bar")>0 t$="The bar is long and continues to the east." 27140IF INSTR(i$,"woman")>0 OR INSTR(i$,"barmaid")>0 t$="The bar-maid is standing behind the bar. She is very pretty." 27150IF INSTR(i$,"bottle")>0 t$="The bottles line the north wall." 27160IF INSTR(i$,"glass")>0 t$="The glasses are just below the bottles and shimmer in the light." 27170ENDIF 27180IF roomno%=65 THEN 27190IF INSTR(i$,"barrel")>0 t$="The barrels are large and obtrusive." 27200ENDIF 27210IF roomno%=69 THEN 27220IF INSTR(i$,"counter")>0 t$="The counter is long and is in front of you." 27230IF INSTR(i$,"man")>0 OR INSTR(i$,"keymaker")>0 t$="The keymaker is old and frail." 27240IF INSTR(i$,"spectacle")>0 t$="The spectacles are gold-rimmed. They are on the face of the keymaker" 27250IF INSTR(i$,"sign")>0 t$="The sign has some curly writing on it." 27260ENDIF 27270IF roomno%=70 THEN 27280IF INSTR(i$,"sign")>0 t$="The sign is high up and has some writing on it." 27290ENDIF 27300IF roomno%=220 THEN 27310IF INSTR(i$,"cloud")>0 t$="The clouds are whirling around you. They are multi-coloured." 27320IF INSTR(i$,"smoke")>0 t$="The smoke whirls around you." 27330ENDIF 27340IF roomno%=72 THEN 27350IF INSTR(i$,"man")>0 OR INSTR(i$,"wizard")>0 t$="The wizard is old and frail." 27360IF INSTR(i$,"beard")>0 t$="The beard is white and tatty, it is on the wizard's face." 27370IF INSTR(i$,"cape")>0 t$="The cape has some moons and stars on it." 27380ENDIF 27390IF roomno%=73 THEN 27400IF INSTR(i$,"bottle")>0 t$="The bottles are just bottles." 27410IF INSTR(i$,"powder")>0 t$="The powders are different colours." 27420IF INSTR(i$,"alchemist")>0 OR INSTR(i$,"man")>0 t$="The alchemist is young. He is shaking a bottle at the moment." 27430ENDIF 27440IF roomno%=75 THEN 27450IF INSTR(i$,"junk")>0 t$="The junk is just junk - nothing important." 27460ENDIF 27470IF roomno%=76 THEN 27480IF INSTR(i$,"tramp")>0 OR INSTR(i$,"man")>0 t$="The tramp is old and thin, he looks hungry." 27490IF INSTR(i$,"box")>0 t$="The cardboard box has many rips and it is home for the tramp." 27500ENDIF 27510IF roomno%=78 THEN 27520IF fire%=0 THEN 27530IF INSTR(i$,"char")>0 OR INSTR(i$,"remain")>0 t$="The charred remains are black ashes." 27540ENDIF 27550IF fire%>0 THEN 27560IF INSTR(i$,"boy")>0 t$="The young boy is concentrating on building up his bonfire." 27570IF INSTR(i$,"fire")>0 t$="The bonfire is quite large and is burning well." 27580IF INSTR(i$,"flame")>0 t$="The flames are impressively high." 27590ENDIF 27600ENDIF 27610IF roomno%=81 THEN 27620IF INSTR(i$,"girl")>0 t$="The girls are all dancing at the moment." 27630IF INSTR(i$,"bar")>0 t$="The wooden bars line the wall." 27640ENDIF 27650IF roomno%=82 THEN 27660IF INSTR(i$,"desk")>0 t$="The wooden desk is very bulky." 27670IF INSTR(i$,"woman")>0 t$="The woman is quite old and looks very bitchy." 27680ENDIF 27690IF roomno%=83 THEN 27700IF INSTR(i$,"suitcase")>0 t$="The suitcase is long and thin. It is ":CASE suitcase% OF 27710 WHEN 0 : t$+="closed." 27720 WHEN 1 : t$+="open." 27730ENDCASE 27740IF INSTR(i$,"window")>0 t$="The window is small and old, but gives enough light for you to see properly." 27750ENDIF 27760IF roomno%=84 THEN 27770IF INSTR(i$,"timber")>0 t$="The timber lays all over the floor." 27780IF INSTR(i$,"coffin")>0 t$="The coffin is large and bulky. In it is a boy." 27790IF INSTR(i$,"boy")>0 t$="The boy is young, but looks nearly dead." 27800IF INSTR(i$,"man")>0 t$="The old man is crouching by the coffin. He looks upset." 27810ENDIF 27820IF roomno%=85 THEN 27830IF INSTR(i$,"bar")>0 t$="The bars are to the east, they are thick and painted white.":IF exits(85,2)>0 t$+=" There are a few bars missing, where you have cut some out." 27840IF INSTR(i$,"guard")>0 THEN 27850t$="The guard is surprisingly small and feeble for a guard, he looks quite gullible. By his side is a cup, with some sort of drink in it. " 27860IF drugged%=1 t$+="The guard is asleep at the moment." ELSE t$+="He takes a sip every now and again." 27870ENDIF 27880IF INSTR(i$,"cup")>0 OR INSTR(i$,"drink")>0 t$="The cup is by the guard's side. There is steam gently wavering out from the drink." 27890ENDIF 27900IF roomno%=110 THEN 27910IF INSTR(i$,"notice")>0 t$="The notice is in a corner of the room. It has some writing on it." 27920ENDIF 27930IF roomno%=113 THEN 27940IF INSTR(i$,"pinboard")>0 t$="The pinboard is screwed to the office wall. On it are various notes." 27950IF INSTR(i$,"note")>0 t$="The notes are stuck to the pinboard. Some have writing on them." 27960ENDIF 27970IF roomno%=116 THEN 27980IF INSTR(i$,"table")>0 t$="The table is a regular wooden and sturdy table." 27990ENDIF 28000IF roomno%=122 THEN 28010IF INSTR(i$,"desk")>0 t$="The wooden desk is old and archaic. On it are the usual office nick-nacks, which do not look helpful to your quest." 28020IF INSTR(i$,"chair")>0 t$="The chair is old and wooden, it matches the desk." 28030ENDIF 28040IF roomno%=127 THEN 28050IF INSTR(i$,"sign")>0 t$="The sign is shiney. It has some writing on it." 28060ENDIF 28070IF roomno%=133 OR roomno%=135 THEN 28080IF INSTR(i$,"table")>0 t$="The table is rectangular and wooden, it has nothing of interest on it." 28090IF INSTR(i$,"chair")>0 t$="The chair is wooden and bulky. It sits under the table." 28100ENDIF 28110IF roomno%=179 THEN 28120IF INSTR(i$,"door")>0 THEN 28130t$="The door is large and wooden. " 28140IF exits(179,1)=15 t$+="It is wide open." ELSE t$+="It is locked." 28150ENDIF 28160ENDIF 28170IF roomno%=224 THEN 28180IF INSTR(i$,"sign")>0 t$="The street sign has the words 'PHEONIX STREET' on it." 28190ENDIF 28200IF roomno%=226 THEN 28210IF INSTR(i$,"swing")>0 t$="The swings are very rusty. They are painted red." 28220IF INSTR(i$,"child")>0 t$="The little girl is quite plump. She looks at you inquisitively." 28230IF INSTR(i$,"girl")>0 t$="The little girl is quite plump. She looks at you inquisitively." 28240ENDIF 28250IF roomno%=227 THEN 28260IF INSTR(i$,"slide")>0 t$="The slide is very rusty. It has been painted over with dark blue paint." 28270ENDIF 28280IF roomno%=228 THEN 28290IF INSTR(i$,"sand")>0 t$="The sand is wet, so has joined together in big lumps." 28300IF INSTR(i$,"pit")>0 t$="The sandpit is large and full of wet sand." 28310ENDIF 28320IF roomno%=235 THEN 28330IF INSTR(i$,"car")>0 t$="The cars are reasonably large. One is red and the other is metallic blue." 28340ENDIF 28350IF roomno%=236 THEN 28360IF INSTR(i$,"car")>0 t$="The car is quite small and painted a dull yellow." 28370ENDIF 28380IF roomno%=238 THEN 28390IF INSTR(i$,"car")>0 t$="The car is very clean. It is pure white." 28400ENDIF 28410IF roomno%=248 THEN 28420IF INSTR(i$,"man")>0 t$="The man is quite fat and is Asian. He is standing behind the counter." 28430IF INSTR(i$,"newspaper")>0 OR INSTR(i$,"magazine")>0 t$="The magazines and newspapers line the newsagents." 28440IF INSTR(i$,"counter")>0 t$="The counter is large and has lots of sweets on top." 28450IF INSTR(i$,"sweet")>0 t$="The sweets are various kinds of chocolates, covered with shiny rose-coloured wrapping." 28460ENDIF 28470IF roomno%=249 THEN 28480IF INSTR(i$,"woman")>0 t$="The woman ." 28490IF INSTR(i$,"ornament")>0 OR INSTR(i$,"trophy")>0 OR INSTR(i$,"trophie")>0 OR INSTR(i$,"souvenir")>0 t$="The souvenirs ." 28500ENDIF 28510IF roomno%=250 THEN 28520IF INSTR(i$,"woman")>0 t$="The young woman is almost hidden among her bunches of flowers. She is busy at work arranging some sort of presentation." 28530IF INSTR(i$,"flower")>0 t$="The bunches of flowers are beautiful and very colourful." 28540ENDIF 28550IF roomno%=252 THEN 28560IF INSTR(i$,"monument")>0 t$="The monument is tall and looms over you. It is made of stone, but seems to have eroded a little over the years. On it is a plaque." 28570IF INSTR(i$,"plaque")>0 t$="The plaque, which is screwed to the monument, has some writing on it." 28580ENDIF 28590IF roomno%=253 THEN 28600IF INSTR(i$,"woman")>0 t$="The woman is old and wrinkly. She is very pale and looks seriously ill." 28610IF INSTR(i$,"sofa")>0 t$="The rose-coloured sofa is large and on it lays the groaning old woman." 28620IF INSTR(i$,"antique")>0 t$="The antiques are numerous in this room, they cover almost everything." 28630ENDIF 28640IF roomno%=256 THEN 28650IF INSTR(i$,"fountain")>0 t$="The fountain is old and doesn't even work nowadays." 28660ENDIF 28670IF roomno%=264 THEN 28680IF INSTR(i$,"table")>0 t$="The tables are wooden, with an 'Olde English' style to them." 28690IF INSTR(i$,"chair")>0 t$="The chairs are wooden, with an 'Olde English' style to them." 28700IF INSTR(i$,"dartboard")>0 t$="The dartboard is round and circular. It also has a distinct 2D spherical look to it while at the same time seeming rotund." 28710ENDIF 28720IF roomno%=265 THEN 28730IF INSTR(i$,"table")>0 t$="The tables are wooden, with an 'Olde English' style to them." 28740IF INSTR(i$,"chair")>0 t$="The chairs are wooden, with an 'Olde English' style to them." 28750ENDIF 28760IF roomno%=266 THEN 28770IF INSTR(i$,"bar")>0 t$="The bar is long and wooden. Behind it is the barmaid." 28780IF INSTR(i$,"barmaid")>0 OR INSTR(i$,"woman")>0 t$="The barmaid is young and very pretty. She wears a short black skirt, a white silky blouse and has long blonde hair." 28790IF INSTR(i$,"skirt")>0 t$="The barmaid's black skirt is very short." 28800IF INSTR(i$,"blouse")>0 t$="The barmaid's white blouse is silky and looks delicate." 28810IF INSTR(i$,"hair")>0 t$="The barmaid's long blonde hair cascades over her shoulders." 28820ENDIF 28830IF roomno%=279 THEN 28840IF INSTR(i$,"path")>0 t$="The crazy-paved path leads eastwards, into the church." 28850ENDIF 28860IF roomno%=281 THEN 28870IF INSTR(i$,"man")>0 t$="The man is tall and extremely lanky." 28880IF INSTR(i$,"counter")>0 t$="The counter is large and behind it stands the man." 28890IF INSTR(i$,"leaflet")>0 t$="The leaflets are all over the centre, but look extremely tacky and boring anyhow." 28900ENDIF 28910IF roomno%=284 OR roomno%=297 THEN 28920IF INSTR(i$,"sign")>0 t$="The sign has some writing on it." 28930ENDIF 28940IF roomno%=293 THEN 28950IF INSTR(i$,"bell")>0 t$="The bells are large and would probably make a huge noise." 28960IF INSTR(i$,"rope")>0 t$="The ropes are joined to the bells." 28970ENDIF 28980IF roomno%=294 OR roomno%=295 THEN 28990IF INSTR(i$,"grass")>0 t$="The grass is long and tangled." 29000IF INSTR(i$,"headstone")>0 t$="The headstone is small and eroded away - almost." 29010ENDIF 29020IF roomno%=296 THEN 29030IF INSTR(i$,"altar")>0 t$="The altar is simple and undecorated." 29040IF INSTR(i$,"aisle")>0 t$="The aisle runs from the north of the church to the south. Either side of the aisle are the pews." 29050IF INSTR(i$,"pew")>0 t$="The pews are the seats in the church. They are wooden and well polished." 29060ENDIF 29070IF roomno%=301 THEN 29080IF INSTR(i$,"woman")>0 t$="The woman young and very short. She waits behind the counter." 29090IF INSTR(i$,"counter")>0 t$="The counter is long and bulky. Behind it is the young woman." 29100ENDIF 29110IF roomno%=302 THEN 29120IF INSTR(i$,"ceiling")>0 t$="The ceiling is elaborately decorated and is beautiful to gaze apon." 29130IF INSTR(i$,"woman")>0 OR INSTR(i$,"expert")>0 t$="The old woman is very wrinkled. She looks like an antiques expert." 29140ENDIF 29150IF roomno%=303 THEN 29160IF INSTR(i$,"feather")>0 t$="The feather is large, but you cannot tell what bird it is from." 29170IF INSTR(i$,"picture")>0 OR INSTR(i$,"painting")>0 t$="The painting is a skilled piece of artistic expression. It shows a woman in eighteenth century dress. Under the painting is a plaque." 29180IF INSTR(i$,"plaque")>0 t$="The plaque is gold-plated and has some writing on it." 29190ENDIF 29200IF roomno%=304 THEN 29210IF INSTR(i$,"bed")>0 t$="The bed is of the 4-poster variety and has some impressive embroidery on the fabric." 29220IF INSTR(i$,"table")>0 t$="The table is elaborately carved out of sturdy wood." 29230IF INSTR(i$,"chair")>0 t$="The chairs are elaborately carved out of sturdy wood." 29240ENDIF 29250IF roomno%=305 THEN 29260IF INSTR(i$,"door")>0 t$="The door is to the south. It has some large red writing on it." 29270IF INSTR(i$,"guard")>0 t$="The tired-looking guard is short, but stocky." 29280ENDIF 29290IF roomno%=306 THEN 29300IF INSTR(i$,"stairs")>0 t$="The stairs lead downwards." 29310ENDIF 29320IF roomno%=307 THEN 29330IF INSTR(i$,"stairs")>0 t$="The stairs lead upwards." 29340IF INSTR(i$,"junk")>0 t$="The junk lays across the floor, getting in your way." 29350ENDIF 29360IF roomno%=308 THEN 29370IF INSTR(i$,"junk")>0 t$="The junk lays across the floor, getting in your way." 29380ENDIF 29390IF roomno%=310 THEN 29400IF INSTR(i$,"table")>0 t$="The table is wooden and looks sturdy." 29410IF INSTR(i$,"woman")>0 OR INSTR(i$,"medium")>0 t$="The old woman looks like a medium. She is sitting at her table chanting." 29420ENDIF 29430IF roomno%=311 THEN 29440IF INSTR(i$,"cloud")>0 t$="The clouds swirl about in internal chaos." 29450IF INSTR(i$,"mist")>0 t$="The mist fades in and out of view, mesmerising you." 29460ENDIF 29470IF roomno%=312 THEN 29480IF INSTR(i$,"counter")>0 t$="The counter is long and wooden. Behind it is a young man." 29490IF INSTR(i$,"man")>0 t$="The man looks lively and eager to serve you." 29500IF INSTR(i$,"liquid")>0 t$="The liquids line the room. They are all various colours." 29510ENDIF 29520IF INSTR(i$,"handkerchief")>0 AND FNgotorhere("handkerchief")=1 t$="It's a delicate silk handkerchief, carefully made for only the richest of customers." 29530IF INSTR(i$,"key")>0 AND FNgotorhere("key")=1 t$="It's a silver key and is surprisingly heavy." 29540IF INSTR(i$,"book")>0 AND FNgotorhere("book")=1 t$="It is an expertly bound book with a tanned leather cover. It has yellowing pages inside." 29550IF INSTR(i$,"pill")>0 AND FNgotorhere("pill")=1 t$="It is small, dusty and round. You presume it must be a sleeping tablet." 29560IF INSTR(i$,"novel")>0 AND FNgotorhere("novel")=1 t$="The novel is a cheap, second-hand book that looks as if it has been very well read." 29570IF INSTR(i$,"truck")>0 AND FNgotorhere("truck")=1 t$="This toy is a plastic dumper-truck and looks as if it has hardly been touched." 29580IF INSTR(i$,"doll")>0 AND FNgotorhere("doll")=1 t$="This toy used to be an extremely elegant girl's toy, but now it looks slightly battered with a massive indent on its head." 29590IF INSTR(i$,"sweet")>0 AND FNgotorhere("sweet")=1 t$="The sweet looks edible if you ignore the layers of fluff." 29600IF INSTR(i$,"bear")>0 AND FNgotorhere("bear")=1 t$="This toy is just so cute that you want to pick it up and cuddle it forever." 29610IF INSTR(i$,"cushion")>0 AND FNgotorhere("cushion")=1 t$="The cushion is horribly pink and over-decorated compared to the piece of furniture it used to be on." 29620IF INSTR(i$,"apple")>0 AND FNgotorhere("apple")=1 t$="The apple is large and looks very appealing." 29630IF INSTR(i$,"feather")>0 AND FNgotorhere("feather")=1 t$="The feather is quite long and very soft to touch. You cannot tell what bird it is from." 29640IF INSTR(i$,"can")>0 AND FNgotorhere("can")=1 t$="The can is made of metal and is totally empty." 29650IF INSTR(i$,"wheel")>0 AND FNgotorhere("wheel")=1 t$="The wheel is wooden and is sort of roundish." 29660IF INSTR(i$,"breadcrumb")>0 AND FNgotorhere("breadcrumb")=1 t$="The breadcrumb is made out of wholemeal bread and looks quite clean." 29670IF INSTR(i$,"mouse")>0 AND FNgotorhere("mouse")=1 t$="The mouse doesn't look damaged in any way, it must have just died of a heart attack or something similar." 29680IF INSTR(i$,"bottle")>0 AND FNgotorhere("bottle")=1 AND fire%=1 t$="The bottle is made out of green glass and reeks of meths. It feels about half-full." 29690IF INSTR(i$,"bible")>0 AND FNgotorhere("bible")=1 t$="The bible is small, dusty and smells as old bibles do." 29700IF INSTR(i$,"blob")>0 AND FNgotorhere("blob")=1 t$="The blob is fairly firm, but very mouldable, ideal to make impressions with." 29710IF INSTR(i$,"newt")>0 AND FNgotorhere("newt")=1 t$="The newt is green and slimy. It is undoubtably dead." 29720IF INSTR(i$,"wand")>0 AND FNgotorhere("wand")=1 t$="The wand is made of some sort of unrecognisable wood. It is painted black, with white ends on - just like Sooty's." 29730IF INSTR(i$,"spade")>0 AND FNgotorhere("spade")=1 t$="The spade is spade-like, surprisingly." 29740IF INSTR(i$,"note")>0 AND FNgotorhere("note")=1 t$="The note is just a few lines of scribble on a piece of white paper." 29750IF INSTR(i$,"pamphlet")>0 AND FNgotorhere("pamphlet")=1 t$="The pamphlet is a professional guide to playing snooker. It is quite thin, and looks interesting." 29760IF INSTR(i$,"plan")>0 AND FNgotorhere("plan")=1 t$="The plan is a piece of paper with a few sketches and a few lines of writing." 29770IF INSTR(i$,"medal")>0 AND FNgotorhere("medal")=1 t$="The medal is small but heavy. On it is enscribed: Carol-Ann Smithe, beauty award winner." 29780IF INSTR(i$,"coin")>0 AND FNgotorhere("coin")=1 t$="The coin is circular and made of a silver-coloured metal." 29790IF INSTR(i$,"whisky")>0 AND FNgotorhere("whisky")=1 t$="The whisky is brown and liquidy." 29800IF INSTR(i$,"spell")>0 AND FNgotorhere("spell")=1 t$="The spell is just a piece of yellowing paper with a few complicated symbols on." 29810IF INSTR(i$,"potion")>0 AND FNgotorhere("potion")=1 t$="The potion is a glass bottle with a green viscous liquid inside." 29820IF INSTR(i$,"bone")>0 AND FNgotorhere("bone")=1 t$="The bone is from a human, it is probably a leg bone." 29830IF INSTR(i$,"hacksaw")>0 AND FNgotorhere("hacksaw")=1 t$="The hacksaw is a small serrated blade with a large handle." 29840IF INSTR(i$,"cup")>0 AND FNgotorhere("cup")=1 t$="The cup is made of china and is white." 29850IF INSTR(i$,"cue")>0 AND FNgotorhere("cue")=1 t$="The cue is a long piece of crafted wood, with a little chalked end on it. It is used for playing snooker." 29860IF INSTR(i$,"wig")>0 AND FNgotorhere("wig")=1 t$="The wig is a realistic aid to covering up baldness." 29870IF INSTR(i$,"badge")>0 AND FNgotorhere("badge")=1 t$="The badge is a piece of metal with a pin in the back. On it is enscribed, 'POLICE FORCE'." 29880IF INSTR(i$,"cap")>0 AND FNgotorhere("cap")=1 t$="The cap is a smart, blue coloured police cap." 29890IF INSTR(i$,"poster")>0 AND FNgotorhere("poster")=1 t$="The poster has a few illustrations, symbolising great power, and the words 'BORIS IS BEST' are written at the bottom." 29900IF INSTR(i$,"lolly")>0 AND FNgotorhere("lolly")=1 t$="The lolly is orange and sticky." 29910IF INSTR(i$,"aspirin")>0 AND FNgotorhere("aspirin")=1 t$="The aspirin is circular and white." 29920IF INSTR(i$,"bottle")>0 AND FNgotorhere("bottle")=1 AND fire%=0 t$="The bottle is brown, and on it is a label which reads; 'PENICILLIN'." 29930IF INSTR(i$,"gravestone")>0 AND FNgotorhere("gravestone")=1 t$="The gravestone, or the chunk of it, is very old and the writing on it is no longer readable." 29940IF INSTR(i$,"flannel")>0 AND FNgotorhere("flannel")=1 t$="The dripping flannel is dark blue and very damp." 29950IF INSTR(i$,"flower")>0 AND FNgotorhere("flower")=1 t$="The flower is blue and small. It smells rather sweet." 29960IF INSTR(i$,"bouquet")>0 AND FNgotorhere("bouquet")=1 t$="The bouquet is large and flamboyant. The vast range of flowers in it make it look rather spectacular." 29970IF INSTR(i$,"ornament")>0 AND FNgotorhere("ornament")=1 t$="The ornament is old and delicate. It is in the shape of some Greek Goddess." 29980IF INSTR(i$,"penknife")>0 AND FNgotorhere("penknife")=1 t$="The vibrant, red, Swiss Army penknife has open blade already. It could cut you easily if you were not careful." 29990IF INSTR(i$,"purse")>0 AND FNgotorhere("purse")=1 t$="The purse is black and small. The zip on it is stuck, and seems impossible to open, yet you can hear some money jingle about in it whne you shake it." 30000IF INSTR(i$,"prescription")>0 AND FNgotorhere("prescription")=1 t$="The prescription is a sheet of paper which has some writing on it. It seems unreadable, but then most prescriptions do." 30010IF INSTR(i$,"cheque")>0 AND FNgotorhere("cheque")=1 t$="The cheque is blank except for the signiture. Someone has been very foolish in losing that!" 30020PROCadd(t$) 30030ENDPROC 30040 30050DEFPROCwhatgot(objt$) 30060t$="You now have the "+objt$+"." 30070CASE objt$ OF 30080 WHEN "handkerchief" : IF roomno%=1 t$="You pick up the delicate silk handkerchief from the pavement, wipe it clean with your sleeve, and place it carefully in your pocket." 30090 WHEN "apple" : t$="You pick up the apple, shine it a little with your sleeve, then place it in your pocket." 30100 WHEN "mouse" : t$="You carefully pick up the mouse, you relax as soon as you see that it is dead." 30110 WHEN "cap" : t$="You pick up the cap and place it on your head." 30120 WHEN "badge" : t$="You pin the badge onto your clothes." 30130 WHEN "wig" : t$="You place the wig over your normal hair." 30140 WHEN "flannel" : t$="You pick up the wet flannel, some of the water runs down your arm." 30150 WHEN "penknife" : t$="You grab the penknife, but too quickly. You cut your hand on the open blade.":injure%=1 30160ENDCASE 30170PROCadd(t$) 30180ENDPROC 30190 30200DEFPROCunlock 30210IF INSTR(i$,"gate")>0 PROCadd("The gates are firmly bolted."):ENDPROC 30220IF INSTR(i$,"door")=0 PROCadd("You cannot unlock that!"):ENDPROC 30230IF roomno%=305 PROCadd("The door is already unlocked."):ENDPROC 30240IF roomno%<>2 AND roomno%<>179 PROCadd("There is nothing to unlock."):ENDPROC 30250IF FNgotorhere("key")=0 PROCadd("You have nothing to unlock the door with."):ENDPROC 30260IF roomno%=2 AND exits(2,2)=3 PROCadd("The door is all ready unlocked."):ENDPROC 30270IF roomno%=2 PROCadd("You put the key into the lock and turn carefully. The door swings open."):exits(2,2)=3:wimp%!0=maphan%:PROCredrawmap 30280IF roomno%=179 AND exits(179,1)=15 PROCadd("The door is all ready unlocked."):ENDPROC 30290IF roomno%=179 PROCadd("You put the key into the lock and turn carefully. The door swings open."):exits(179,1)=15:PROCremkey:wimp%!0=maphan%:PROCredrawmap 30300ENDPROC 30310 30320DEFPROClock 30330IF INSTR(i$,"gate")>0 PROCadd("The gates are already bolted."):ENDPROC 30340IF INSTR(i$,"door")=0 PROCadd("You cannot lock that!"):ENDPROC 30350IF roomno%=305 PROCadd("You have nothing to lock the door with."):ENDPROC 30360IF roomno%<>2 AND roomno%<>179 PROCadd("There is nothing to lock."):ENDPROC 30370IF FNgotorhere("key")=0 PROCadd("You have nothing to lock the door with."):ENDPROC 30380IF roomno%=2 AND exits(2,2)=0 PROCadd("The door is all ready locked."):ENDPROC 30390IF roomno%=2 PROCadd("You close the door, put the key into the lock and turn carefully. It clicks into place."):exits(2,2)=0:wimp%!0=maphan%:PROCredrawmap 30400IF roomno%=179 AND exits(179,1)=0 PROCadd("The door is all ready locked."):ENDPROC 30410IF roomno%=179 PROCadd("You no longer have the key to do that.") 30420ENDPROC 30430 30440DEFPROCask 30450t$="There is no response." 30460person$=MID$(i$,5,INSTR(i$,"about")-6) 30470subject$=MID$(i$,INSTR(i$,"about")+6,200) 30480IF LEFT$(subject$,4)="the " subject$=MID$(subject$,5,200) 30490IF subject$="" OR person$="" OR subject$=" " OR person$=" " PROCadd("Please use 'ask <someone> about <something>.'"):ENDPROC 30500IF roomno%=1 THEN 30510IF INSTR(person$,"person")>0 OR INSTR(person$,"man")>0 OR INSTR(person$,"stallholder")>0 OR INSTR(person$,"people")>0 OR INSTR(person$,"someone")>0 OR INSTR(person$,"anyone")>0 CASE subject$ OF 30520WHEN "gorm" : t$="'Isn't that a type of cheese?' someone shouts out." 30530WHEN "amiga","amigas" : t$="'Great computers, mate, they really are,' says the stallholder." 30540WHEN "stall","stalls" : t$="'Well, they're here aren't they?' someone says." 30550WHEN "market" : t$="'The market's here every Wednesday,' someone says." 30560WHEN "butcher","butchers" : t$="'The butcher's just sort of south-westish from here,' says someone." 30570WHEN "baker","bakers" : t$="'The baker's sort of westish from here,' says someone." 30580WHEN "fence" : t$="'That large fence has been there ever since I can remember,' says someone." 30590WHEN "guard" : t$="'You'll never b'able t'get past that guard,' someone says." 30600WHEN "quest","adventure" : t$="'Tis probably t'shut-up and leave us in peace,' someone says." 30610WHEN "vicar" : t$="'Lovely old vicar, he is, but ever so quiet,' someone whispers." 30620WHEN "church" : t$="'That church is the prettiest thing I've ever seen,' says someone proudly." 30630WHEN "house" : t$="'Y'mean that quaint little house over there, don't you? Dead posh it is,' someone says." 30640OTHERWISE : t$="'Don't know what you're on about, mate,' someone shouts." 30650ENDCASE 30660ENDIF 30670IF roomno%=15 THEN 30680IF INSTR(person$,"guard")>0 CASE subject$ OF 30690WHEN "gorm" : t$="'Well, it stands for 'Golfing Or Rounders Maniacs, doesn't it,' he replies." 30700WHEN "quest","adventure" : t$="'Haven't got a clue about that,' he says." 30710WHEN "gate" : t$="'I'm not letting you through,' he says." 30720WHEN "fence" : t$="'Tis there to stop idiots like you from getting out,' he replies." 30730OTHERWISE : t$="'I'm on duty s'go away,' he says moodily." 30740ENDCASE 30750ENDIF 30760IF roomno%=29 THEN 30770IF INSTR(person$,"baker")>0 CASE subject$ OF 30780WHEN "gorm" : t$="'Well, tis 'morg' spelt backwards, isn't it,' he replies." 30790WHEN "quest","adventure" : t$="'Well how should I know?' he says." 30800WHEN "butcher","butchers" : t$="'He's next door,' he says." 30810WHEN "loaf" : t$="'That loaf is perfectly edible,' he replies." 30820WHEN "bread" : t$="'There's nothing wrong with my bread s'don't start complainin',' he replies." 30830OTHERWISE : t$="'Just buy something or leave,' he says grumpily." 30840ENDCASE 30850ENDIF 30860IF roomno%=30 THEN 30870IF INSTR(person$,"butcher")>0 CASE subject$ OF 30880WHEN "gorm" : t$="'Well, tis an anagram of 'orgm', isn't it,' he replies." 30890WHEN "quest","adventure" : t$="'Well how should I know?' he says." 30900WHEN "baker","bakers" : t$="'He's next door,' he says." 30910WHEN "meat" : t$="'That meat is perfectly edible, it tastes lovely,' he replies." 30920WHEN "blood" : t$="'Lovely, red an' juicy and it tastes gorgeous,' he replies." 30930OTHERWISE : t$="'Just buy some meat or leave,' he says grumpily." 30940ENDCASE 30950ENDIF 30960IF roomno%=37 THEN 30970IF INSTR(person$,"vicar")>0 CASE subject$ OF 30980WHEN "gorm" : t$="'It's one of God's wonderous creatures,' he replies." 30990WHEN "quest","adventure" : t$="'Ask God, he will know,' he says." 31000WHEN "god" : t$="'He's the supreme being,' he says." 31010WHEN "church" : t$="'The church is God's house,' he replies." 31020WHEN "girl" : t$="'The girl is upset because I buried her father earlier,' he replies." 31030WHEN "father" : t$="'The girl's father was a scoundrel anyway, no great loss,' he replies." 31040OTHERWISE : t$="'I must continue with my praying,' he says calmly." 31050ENDCASE 31060IF INSTR(person$,"girl")>0 AND crier%=1 CASE subject$ OF 31070WHEN "father","death","dad","daddy" : t$="'He was th'best Daddy anyone could 'ave,' she sobs." 31080OTHERWISE : t$="'Just leave m'alone,' she wails." 31090ENDCASE 31100ENDIF 31110IF roomno%=50 THEN 31120IF INSTR(person$,"people")>0 OR INSTR(person$,"someone")>0 OR INSTR(person$,"somebody")>0 CASE RND(4) OF 31130WHEN 1 : t$="'La la laa la la,' they wail." 31140WHEN 2 : t$="'Dah dee dum dum daa,' they sing." 31150WHEN 3 : t$="'Bbbuuuuurrrrrppppp,' someone belches." 31160WHEN 4 : t$="'Huh?' someone says." 31170ENDCASE 31180ENDIF 31190IF roomno%=52 THEN 31200IF INSTR(person$,"man")>0 CASE subject$ OF 31210WHEN "gorm" : t$="'They're Gorgeous Outings for Repairers of Machines,' he replies." 31220WHEN "quest","adventure" : t$="'Could b'anything,' he says." 31230WHEN "beer","alcohol","drink" : t$="'Y'can order some alc'ol if y'want to,' he says." 31240WHEN "pub" : t$="'Been here for ages it has,' he replies." 31250WHEN "barmaid","woman","carol","carolann","carolann smithe" : t$="'She's just over there,' he says pointing west, 'fancy her do you?'" 31260OTHERWISE : t$="'Would y'like to order?' he says." 31270ENDCASE 31280ENDIF 31290IF roomno%=64 THEN 31300IF INSTR(person$,"woman")>0 OR INSTR(person$,"barmaid")>0 CASE subject$ OF 31310WHEN "gorm" : t$="'Could stand for 'Goluptious Obmutescence of Ramified Moschatels', couldn't it?' she asks innocently." 31320WHEN "quest","adventure" : t$="'I don't know luv,' she says." 31330WHEN "beer","alcohol","drink" : t$="'Y'can order some alc'ol if y'want to,' she says." 31340WHEN "pub" : t$="'Right ancient this building is,' she replies." 31350WHEN "man" : t$="'He's just over there,' she says pointing east." 31360WHEN "carol","carolann","carolann smithe" : t$="'That's me!' she exclaims." 31370WHEN "medal" : t$="'You mean my beauty award, so proud of that, I am,' she says." 31380OTHERWISE : t$="'Would y'like to order?' she says." 31390ENDCASE 31400ENDIF 31410IF roomno%=69 THEN 31420IF INSTR(person$,"man")>0 OR INSTR(person$,"keymaker")>0 CASE subject$ OF 31430WHEN "blob" : t$="'That blob's for moulding for keys y'know,' he says." 31440WHEN "gorm" : t$="'Gruesome Organising of Rhubarb Mating, that is,' he says." 31450WHEN "quest","adventure" : t$="'Probably t'get me some work to do,' he says." 31460WHEN "key" : t$="'Keys are for opening doors y'know,' he says helpfully." 31470WHEN "display" : t$="'That's my pride and joy,' he says proudly." 31480OTHERWISE : t$="'I'd luv to 'ave some work t'do. I'd do it for free y'know, I need the practice,' the old man says hopefully." 31490ENDCASE 31500ENDIF 31510IF roomno%=72 THEN 31520IF INSTR(person$,"wizard")>0 OR INSTR(person$,"man")>0 CASE subject$ OF 31530WHEN "spell","potion","wand" : t$="'The "+subject$+" would help me to make a timewarp,' he says." 31540WHEN "gorm","quest","adventure" : t$="'My goodness, I don't know!' he says." 31550WHEN "timewarp","time travel","timetravel" : t$="'I'd love to discover time travel,' he says longingly." 31560OTHERWISE : t$="'I'm on the verge of discovering time travel, y'know, if only I had the right resources,' he says." 31570ENDCASE 31580ENDIF 31590IF roomno%=73 THEN 31600IF INSTR(person$,"man")>0 OR INSTR(person$,"alchemist")>0 CASE subject$ OF 31610WHEN "gorm" : t$="'Gordon's Organic and Rural Muck-spreader, that is,' he says." 31620WHEN "quest","adventure" : t$="'Probably t'get me a newt for my potion,' he says." 31630WHEN "potion" : t$="'I don't know what they do, but they're pretty colours,' he says helpfully." 31640WHEN "newt" : t$="'That's what I need for my potions,' he says." 31650OTHERWISE : t$="'I'd luv to 'ave a newt for my new potion,' the alchemist says." 31660ENDCASE 31670ENDIF 31680IF roomno%=76 THEN 31690IF INSTR(person$,"man")>0 OR INSTR(person$,"tramp")>0 t$="'My God, I'm 'ungry,' the tramp mumbles." 31700ENDIF 31710IF roomno%=78 AND fire%>0 THEN 31720IF INSTR(person$,"boy")>0 CASE subject$ OF 31730WHEN "fire","bonfire" : t$="'I built and lit it myself, y'know,' he says." 31740WHEN "gorm" : t$="'Ganging against Obscene and Repulsive Maniacs, that is,' he says." 31750WHEN "quest","adventure" : t$="'Make m'fire burn better,' he says." 31760OTHERWISE : t$="'Do y'ave anything for m'fire?' the boy asks." 31770ENDCASE 31780ENDIF 31790IF roomno%=82 THEN 31800IF INSTR(person$,"woman")>0 CASE subject$ OF 31810WHEN "medal" : t$="'I found it on the road once,' she says." 31820WHEN "gorm" : t$="'Sounds like an abbreviation to me,' she says." 31830WHEN "quest","adventure" : t$="'It's to stop wasting my time,' she says." 31840WHEN "ballet","ballet school","school" : t$="'Well I'm trying to run the ballet school now,' she says." 31850WHEN "feather","performance","swan lake" : t$="'The performance had better go well now,' she says." 31860OTHERWISE : t$="'I suggest that you don't waste my time,' she says." 31870ENDCASE 31880ENDIF 31890IF roomno%=84 THEN 31900IF INSTR(person$,"man")>0 CASE subject$ OF 31910WHEN "boy","coffin" : t$="'The boy's not actually dead, but he nearly is,' he says." 31920WHEN "gorm","quest","adventure":PROCadd("'They said you would come!' he exclaims. You stay there as the man raves on.") 31930PROCadd("'The kingdom is in danger, the land will soon be ruled by an evil and cruel prince named Boris,' he says. 'He's going to create turmoil. We call it project GORM - Genocidal Organisation of the Release of the Maelstrom'.") 31940PROCadd("'My powerful, but now poisoned son could stop project GORM if he could be made better. The prophets told of an adventurer who would come t'save us and release the land of evil, that adventurer must be you'.") 31950t$="'I know that someone in the village is near to perfecting the art of time travel, something which you must use to voyage into the future and bring back a medecine for my son. You must hurry'." 31960OTHERWISE : t$="'Oh if only someone would help me!' the old man wails." 31970ENDCASE 31980ENDIF 31990IF roomno%=85 THEN 32000IF INSTR(person$,"guard")>0 CASE subject$ OF 32010WHEN "gorm" : t$="'Well, tis a shortened spelling of the great book, Gormengast,' he replies." 32020WHEN "drink","cup" : t$="'Lovely, my drink is,' he says." 32030WHEN "jail" : t$="'I love working here, it's so homely and warm,' he says." 32040OTHERWISE : t$="'I shouldn't really talk to you,' he says dutifully." 32050ENDCASE 32060IF INSTR(person$,"guard")>0 AND drugged%=1 t$="The guard snores a little." 32070ENDIF 32080IF zone%=2 THEN 32090z%=0:IF police%(1)=roomno% z%=1 32100IF police%(2)=roomno% z%=1 32110IF z%=1 AND INSTR(person$,"man")>0 CASE subject$ OF 32120WHEN "gorm" : t$="'Gormandizers are gluttons, if that helps,' he replies." 32130WHEN "jail" : t$="'I hate this place - it's so cold and unwelcoming,' he says." 32140WHEN "maze" : t$="'That's there to prevent prisoners from escaping,' he replies." 32150OTHERWISE : t$="'I must get going,' he says." 32160ENDCASE 32170ENDIF 32180IF roomno%=226 THEN 32190IF INSTR(person$,"child")>0 OR INSTR(person$,"girl")>0 t$="The little girls tells you that she shouldn't talk to strangers." 32200ENDIF 32210IF roomno%=248 THEN 32220IF INSTR(person$,"man")>0 CASE subject$ OF 32230WHEN "gorm","quest": t$="'I'm afraid I only know about magazines or newspapers,' he replies." 32240WHEN "magazine","newspaper" : t$="'They're things you read,' he says." 32250OTHERWISE : t$="'Are you going to buy a newspaper or what?' he says agressively." 32260ENDCASE 32270ENDIF 32280IF roomno%=249 THEN 32290IF INSTR(person$,"woman")>0 CASE subject$ OF 32300WHEN "gorm","quest": t$="'Find me some more ornaments, probably,' she replies." 32310WHEN "ornaments","souvenirs","trophies" : t$="'They're my pride and joy,' she says proudly." 32320OTHERWISE : t$="'Do you like my collection of ornaments?' she asks you." 32330ENDCASE 32340ENDIF 32350IF roomno%=250 THEN 32360IF INSTR(person$,"woman")>0 CASE subject$ OF 32370WHEN "gorm","quest": t$="'Help me with my arranging, probably,' she replies." 32380WHEN "bouquet","flower","flowers" : t$="'I do love flower arranging,' she says proudly." 32390WHEN "arranging": t$="'I've been flower arranging since I was five,' she replies." 32400OTHERWISE:t$="'I don't suppose you could help me find some more flowers could you?' she asks." 32410ENDCASE 32420ENDIF 32430IF roomno%=253 THEN 32440IF INSTR(person$,"woman")>0 CASE subject$ OF 32450WHEN "gorm","quest": t$="'Help me get better, probably,' she replies." 32460WHEN "prescription": t$="'Can you take it to the Chemists?, I need my medication,' she replies." 32470OTHERWISE:t$="'Oooooh, I feel ill', she grumbles." 32480ENDCASE 32490ENDIF 32500IF roomno%=266 THEN 32510IF INSTR(person$,"woman")>0 OR INSTR(person$,"barmaid")>0 t$="'Would you like to order a drink, sir?', she asks." 32520ENDIF 32530IF roomno%=281 THEN 32540IF INSTR(person$,"man")>0 CASE subject$ OF 32550WHEN "gorm","quest": t$="'Dunno, sorry,' he replies." 32560WHEN "leaflets","town":t$="'The leaflets will tell yuh about the town,' he replies." 32570OTHERWISE:t$="'Can I 'elp yuh?', he inquires." 32580ENDCASE 32590ENDIF 32600IF roomno%=301 THEN 32610IF INSTR(person$,"woman")>0 CASE subject$ OF 32620WHEN "gorm","quest": t$="'Dunno, sorry,' she replies." 32630WHEN "museum","payment","entry","paying":t$="'You need to pay me with something if you are to look around the museum,' she replies." 32640OTHERWISE:t$="'Can I 'elp yuh?', she inquires." 32650ENDCASE 32660ENDIF 32670IF roomno%=302 THEN 32680IF INSTR(person$,"woman")>0 CASE subject$ OF 32690WHEN "gorm","quest": t$="'I do not know, I am dreadfully sorry,' she replies." 32700WHEN "museum" : t$="'It really is the most truly wonderful museum,' she replies." 32710WHEN "doll" : t$="'Dolls are my favourite examples of ancient toys,' she replies." 32720WHEN "ornament" : t$="'The ornament has great value,' she replies." 32730OTHERWISE:t$="'How may I be of assistance to you, sir?', she inquires." 32740ENDCASE 32750ENDIF 32760IF roomno%=305 THEN 32770IF INSTR(person$,"guard")>0 OR INSTR(person$,"man")>0 t$="'I am not allowed to talk on my job, sir', he says formally." 32780ENDIF 32790IF roomno%=310 THEN 32800IF INSTR(person$,"woman")>0 OR INSTR(person$,"medium")>0 CASE subject$ OF 32810WHEN "gorm","quest": t$="'I do not know, I'm terribly sorry,' she replies." 32820WHEN "payment","paying" : t$="'I need some payment for any services,' she replies." 32830WHEN "gravestone","doll" : t$="'Well, "+subject$+"s are good examples of links with the past,' she replies." 32840WHEN "timetravel","magic" : t$="'What are you on about?' she asks." 32850OTHERWISE:t$="'If you need any of my services', the medium says, 'I will need payment and some sort of link with the past'." 32860ENDCASE 32870ENDIF 32880IF roomno%=312 THEN 32890IF INSTR(person$,"man")>0 OR INSTR(person$,"chemist")>0 CASE subject$ OF 32900WHEN "prescription","bottle" : t$="'Penicillin, that is,' he replies." 32910WHEN "penicillin" : t$="'Useful medicine, Penicillin is, very powerful indeed', he says." 32920OTHERWISE:t$="'Do you have any sort of prescription for me?' he says." 32930ENDCASE 32940ENDIF 32950PROCadd(t$) 32960ENDPROC 32970 32980DEFPROCremkey 32990FOR z%=1 TO 10 33000IF owns$(z%)="key" owns$(z%)="" 33010IF objects$(roomno%,z%)="key" objects$(roomno%,z%)="" 33020NEXT z% 33030ENDPROC 33040 33050DEFPROCgive 33060gotta%=0 33070FOR g=1 TO 10 33080IF owns$(g)<>"" AND INSTR(i$,owns$(g))>0 gotta%=1:ojt%=g 33090NEXT g 33100IF gotta%=0 CASE RND(3) OF 33110 WHEN 1 : PROCadd("You do not have such an object.") 33120 WHEN 2 : PROCadd("You cannot find that object to give.") 33130 WHEN 3 : PROCadd("You can't give something that you haven't got.") 33140 ENDCASE 33150IF gotta%=1 THEN 33160CASE roomno% OF 33170WHEN 1 : t$="The stallholder accepts the "+owns$(ojt%)+" and says 'thank you'.":owns$(ojt%)="" 33180WHEN 15 : t$="The guard takes the "+owns$(ojt%)+", looks at it then throws it away.":owns$(ojt%)="" 33190WHEN 29 : t$="The baker takes the "+owns$(ojt%)+" and says nothing.":owns$(ojt%)="" 33200WHEN 30 : t$="The butcher takes the "+owns$(ojt%)+" and says nothing.":owns$(ojt%)="" 33210WHEN 37 : IF crier%=1 AND INSTR(i$,"vicar")=0 AND owns$(ojt%)="handkerchief" t$="The girl takes the handkerchief, wipes away her tears, murmurs a 'thanks' and runs off.":owns$(ojt%)="":crier%=0 ELSE t$="Your gift is rejected." 33220WHEN 50 : IF owns$(ojt%)="cue" THEN 33230owns$(ojt%)="" 33240PROCadd("The people take the cue from you. Let's have a game, they say as one person takes some balls out of their jacket. You have no choice but to agree.") 33250IF pamp%=1 t$="You beat them easily with your newly-found snooker knowledge and they give you a coin as a prize.":owns$(ojt%)="coin" 33260IF pamp%=0 t$="You soon realise that you are totally rubbish at playing snooker, and the humiliation when you lose is too much to bare, you have to get out of here." 33270ELSE t$="The people take the "+owns$(ojt%)+", burp, then throw it away.":owns$(ojt%)="" 33280ENDIF 33290WHEN 52 : IF owns$(ojt%)="coin" THEN 33300t$="'Alright, that'll do me. Here, here's a whisky,' he says. He places the whisky in your hand." 33310owns$(ojt%)="whisky" 33320ELSE t$="The man takes the "+owns$(ojt%)+" and says, 'well, y'won't get a drink for that!'.":owns$(ojt%)="" 33330ENDIF 33340WHEN 64 : IF owns$(ojt%)="medal" THEN 33350t$="'My medal!' she shouts, 'where d'you find that? I've been looking for't for ages, look, here's something t'say thanks.' She places a wand in your hand." 33360owns$(ojt%)="wand" 33370ELSE t$="The bar-maid takes the "+owns$(ojt%)+", looks at it then throws it in a bin.":owns$(ojt%)="" 33380ENDIF 33390WHEN 69 : IF owns$(ojt%)="blob" AND mould%=1 THEN 33400t$="The old man looks delighted at some work to do - he grabs the blob, and in ten minutes he returns with a brand new key. He places it in your hand.":owns$(ojt%)="key" 33410ELSE t$="The old man takes the "+owns$(ojt%)+" and throws it behind him.":owns$(ojt%)="" 33420ENDIF 33430WHEN 72 : IF owns$(ojt%)="spell" OR owns$(ojt%)="wand" OR owns$(ojt%)="potion" THEN 33440t$="The wizard throws up his arms, 'Horrah!' he cries, just what I need - a "+owns$(ojt%)+".":owns$(ojt%)="" 33450whiz%+=1 33460IF whiz%=3 t$+=" He levitates the spell, potion and wand and casts some mystical words. A large whirling door appears in the south wall.":exits(72,3)=71:wimp%!0=maphan%:PROCredrawmap 33470ELSE t$="He takes the "+owns$(ojt%)+" and throws it behind him.":owns$(ojt%)="" 33480ENDIF 33490WHEN 73 : IF owns$(ojt%)="newt" THEN 33500t$="He takes the newt from you, 'just what I need,' he exclaims. He places a potion in your hand for thanks. 'I'm not sure what it does,' he says, 'but it should be interesting!'" 33510owns$(ojt%)="potion" 33520ELSE t$="He takes the "+owns$(ojt%)+", throws it behind him and concentrates on shaking his bottle.":owns$(ojt%)="" 33530ENDIF 33540WHEN 76 : CASE owns$(ojt%) OF 33550WHEN "apple" : t$="The old tramp looks delighted at the apple, he takes it and passes you his only meths bottle in return. It feels about half-full.":owns$(ojt%)="bottle" 33560WHEN "whisky" : t$="The old tramp pulls a big grin when you give him the whisky, he rumages in his jumper and shoves a spell into your hand.":owns$(ojt%)="spell" 33570WHEN "breadcrumb" : t$="He puts the breadcrumb into his mouth, then looks up to you for more.":owns$(ojt%)="" 33580OTHERWISE : t$="The old tramp takes the "+owns$(ojt%)+" and tucks it into his jumper.":owns$(ojt%)="" 33590ENDCASE 33600WHEN 78 : IF fire%=1 AND owns$(ojt%)="bottle" THEN 33610t$="The young boy takes the bottle of meths and throws it carelessly into the bonfire.":owns$(ojt%)="":fire%=2:firetime%=TIME 33620ELSE IF fire%=1 t$="The young boy takes the "+owns$(ojt%)+" and throws it into the fire, thinking it will make it burn better.":owns$(ojt%)="" 33630ENDIF 33640WHEN 81 : t$="Your gift is rejected by the girls." 33650WHEN 82 : IF owns$(ojt%)="feather" THEN 33660t$="She takes the feather from you and exclaims, 'this is just the thing we need f'our production of Swan Lake. How can I ever repay you?'. She pulls out a large medal, 'I found this recently' - she shoves it into your hand." 33670owns$(ojt%)="medal" 33680ELSE t$="The old woman takes the "+owns$(ojt%)+" and tucks it away under her desk.":owns$(ojt%)="" 33690ENDIF 33700WHEN 84 : CASE owns$(ojt%) OF 33710WHEN "aspirin" : t$="The old man takes the aspirin hopefully and makes the boy swallow it. You wait for a few hours, but there is no improvement in the boy.":owns$(ojt%)="" 33720WHEN "bottle" :IF fire%=0 PROCexcite:t$="Congratulations, you have completed GORM!" ELSE t$="The old man takes a swig from the bottle, 'thanks', he says, 'I needed that'.":owns$(ojt%)="" 33730OTHERWISE : t$="The old man takes the "+owns$(ojt%)+" and throws it behind him.":owns$(ojt%)="" 33740ENDCASE 33750WHEN 85 : t$="The guard refuses your gift." 33760WHEN 226 : IF owns$(ojt%)="lolly" THEN 33770t$="The little girl takes the lolly and puts it in her mouth, 'fanks', she mutters.":owns$(ojt%)="" 33780ELSE t$="The little girl takes the "+owns$(ojt%)+" and puts it in her pocket.":owns$(ojt%)="" 33790ENDIF 33800WHEN 248:t$="The man takes the "+owns$(ojt%)+" and puts it under the counter.":owns$(ojt%)="" 33810WHEN 249 : IF owns$(ojt%)="ornament" THEN 33820t$="The old woman takes the ornament and puts it among her others, 'thank you', she says." 33830owns$(ojt%)="" 33840IF injure%=1 t$+=" She notices your cut, 'My goodness, you have been in the wars!' she exclaims and passes you a wet flannel to put over your injury.":owns$(ojt%)="flannel" 33850ELSE t$="The old woman takes the "+owns$(ojt%)+" and tries to look grateful.":owns$(ojt%)="" 33860ENDIF 33870WHEN 250 : IF owns$(ojt%)="flower" THEN 33880t$="The young woman takes the flower and puts it among her other bunches of them, 'thank you', she says cheerfully, 'you have done me a huge favour!'. She gives you a huge bouquet in return." 33890owns$(ojt%)="bouquet" 33900ELSE t$="The young woman takes the "+owns$(ojt%)+" and throws it amongst her flowers.":owns$(ojt%)="" 33910ENDIF 33920WHEN 253:fg%=0:IF owns$(ojt%)="aspirin" OR owns$(ojt%)="flannel" OR owns$(ojt%)="bouquet" THEN 33930t$="The old woman smiles, 'thank you', she says gently.":owns$(ojt%)="" 33940ill%+=1:fg%=1 33950IF ill%=3 AND fg%=1 t$+=" She looks up at you and says, 'I feel I can trust you with this now, I need some medication', she passes you her prescription.":owns$(ojt%)="prescription" 33960ELSE t$="She takes the "+owns$(ojt%)+", smiles gratefully, and places it beside her.":owns$(ojt%)="" 33970ENDIF 33980WHEN 266:t$="The bar-maid takes the "+owns$(ojt%)+" and places it under the counter.":owns$(ojt%)="" 33990WHEN 281:t$="The man takes the "+owns$(ojt%)+" and places it under the counter.":owns$(ojt%)="" 34000WHEN 301 : IF owns$(ojt%)="purse" OR owns$(ojt%)="cheque" THEN 34010t$="The woman takes the payment and tells you that you can enter the museum by going east.":payed%=1:owns$(ojt%)="" 34020ELSE t$="The woman takes the "+owns$(ojt%)+" and places it under the counter. 'That is not good enough for payment', she says.":owns$(ojt%)="" 34030ENDIF 34040WHEN 302 : IF owns$(ojt%)="doll" THEN 34050t$="The woman takes the doll and excitably tells you that it is a wonderful example of 18th Century doll-making. She hurridly pays you with a small ornament, apparently also of some value." 34060owns$(ojt%)="ornament" 34070ELSE t$="The old woman takes the "+owns$(ojt%)+" and exclaims that it is junk. She throws it away.":owns$(ojt%)="" 34080ENDIF 34090WHEN 305:t$="The guard takes the "+owns$(ojt%)+", looks at it thoughtfully, then throws it away.":owns$(ojt%)="" 34100WHEN 310 : fg%=0 34110IF owns$(ojt%)="gravestone" OR owns$(ojt%)="doll" fg%=1:owns$(ojt%)="":medium1%=1:t$="'Thank you', she says":IF medium2%=0:t$+=", 'now all I need is some payment'." ELSE t$+="." 34120IF owns$(ojt%)="purse" OR owns$(ojt%)="cheque" fg%=1:owns$(ojt%)="":medium2%=1:t$="'Thank you', she says":IF medium1%=0:t$+=", 'now all I need is something to link with the past'." ELSE t$+="." 34130IF fg%=1 AND medium1%=1 AND medium2%=1 THEN 34140PROCadd(t$) 34150t$=" She takes your gifts and places them on the table. She goes into a trance and mutters a few words. Suddenly there is a huge flash of lightening and what you recognise as a timewarp appears to the east." 34160exits(310,2)=311:wimp%!0=maphan%:PROCredrawmap 34170ENDIF 34180WHEN 312 : IF owns$(ojt%)="prescription" THEN 34190t$="The young man takes the prescription, disappears behind the counter and comes back with a bottle. He shoves it into your hand.":owns$(ojt%)="bottle" 34200ELSE t$="The young man takes the "+owns$(ojt%)+" and throws it under the counter.":owns$(ojt%)="" 34210ENDIF 34220OTHERWISE : t$="I do not understand who you want to give the "+owns$(ojt%)+" to." 34230ENDCASE 34240IF police%(1)=roomno% OR police%(2)=roomno% t$="The policeman refuses your gift." 34250PROCadd(t$) 34260ENDIF 34270ENDPROC 34280 34290DEFPROCput 34300blb%=0 34310IF FNgotorhere("blob")=1 AND INSTR(i$,"blob")>0 AND INSTR(i$,"keyhole")>0 AND roomno%=2 blb%=1 34320IF FNgotorhere("blob")=1 AND INSTR(i$,"blob")>0 AND INSTR(i$,"door")>0 AND roomno%=2 blb%=1 34330IF blb%=1 PROCadd("You press the blob into the keyhole and pull it out. Voila! A perfect impression!"):mould%=1 34340put%=0 34350IF INSTR(i$,"pill")>0 AND INSTR(i$,"cup")>0 AND FNgotorhere("pill")=1 put%=1 34360IF INSTR(i$,"pill")>0 AND INSTR(i$,"drink")>0 AND FNgotorhere("pill")=1 put%=1 34370IF put%=1 THEN 34380PROCadd("You drop the pill into the guard's drink. A few minutes later he picks it up and takes a sip. Within a quarter of an hour he falls soundly asleep.") 34390rooms$(85,5)="side of the bars is a sleeping guard." 34400FOR a=1 TO 10 34410IF owns$(a)="pill" owns$(a)="" 34420IF objects$(roomno%,a)="pill" objects$(roomno%,a)="" 34430NEXT a 34440drugged%=1 34450ENDIF 34460IF put%=0 AND blb%=0 PROCadd("I don't feel like it.") 34470ENDPROC 34480 34490DEFPROCdrop 34500gotta%=0 34510IF INSTR(i$,"pill")>0 AND INSTR(i$,"cup")>0 AND FNgotorhere("pill")=1 PROCput:ENDPROC 34520IF INSTR(i$,"pill")>0 AND INSTR(i$,"drink")>0 AND FNgotorhere("pill")=1 PROCput:ENDPROC 34530IF INSTR(i$,"all")>0 OR INSTR(i$,"everything")>0 THEN 34540 counter%=0 34550 FOR a%=1 TO 10 34560 IF owns$(a%)<>"" i$=owns$(a%):counter%+=1:PROCdrop 34570 NEXT a% 34580 IF counter%=0 PROCadd("You have nothing to drop.") 34590 i$="drop all" 34600 gotta%=-1 34610ENDIF 34620IF gotta%=0 THEN 34630FOR g=1 TO 10 34640IF owns$(g)<>"" AND INSTR(i$,owns$(g))>0 gotta%=-1:ojt%=g 34650NEXT g 34660IF gotta%=0 THEN 34670 gotta%=1:CASE RND(4) OF 34680 WHEN 1 : PROCadd("You do not have such an object.") 34690 WHEN 2 : PROCadd("You cannot find that object to drop.") 34700 WHEN 3 : PROCadd("I think you're hallucinating... you haven't got that item.") 34710 WHEN 4 : PROCadd("You can't drop something that you haven't got.") 34720 ENDCASE 34730ENDIF 34740IF gotta%=-1 gotta%=0 34750IF gotta%=0 THEN 34760gottaflag%=0 34770FOR g=1 TO 10 34780IF objects$(roomno%,g)="" gottaflag%=g 34790NEXT g 34800IF gottaflag%>0 objects$(roomno%,gottaflag%)=owns$(ojt%):owns$(ojt%)="":PROCadd("You have dropped the "+objects$(roomno%,gottaflag%)+" on to the ground."):IF roomno%=75 AND objects$(roomno%,gottaflag%)="bone" THEN 34810PROCadd("A young boy enters the room, he sees the bone and picks it up. He sees you murmurs a 'thanks' then drops a pamphlet onto the ground and leaves in the same casual manner.") 34820objects$(roomno%,gottaflag%)="pamphlet" 34830ENDIF 34840IF gottaflag%=0 CASE RND(3) OF 34850 WHEN 1 : PROCadd("There are too many things on the ground already.") 34860 WHEN 2 : PROCadd("The pile on the floor is too large.") 34870 WHEN 3 : PROCadd("It's too risky, there's so much stuff on the ground you would never find it again.") 34880ENDCASE 34890ENDIF 34900ENDIF 34910ENDPROC 34920 34930DEFPROCnorth 34940mv%=0 34950IF exits(roomno%,1)=0 THEN 34960CASE RND(7) OF 34970 WHEN 1 : t$="There is no possible exit to the north." 34980 WHEN 2 : t$="You can see no way out to the north." 34990 WHEN 3 : t$="You can see no escape route to the north." 35000 WHEN 4 : t$="The direction to the north is blocked." 35010 WHEN 5 : t$="There is no way of leaving to the north." 35020 WHEN 6 : t$="You can't walk through solid objects." 35030 WHEN 7 : t$="You're solid, the wall's solid, I don't think it will work." 35040ENDCASE 35050CASE roomno% OF 35060 WHEN 46,45,44,43,47,65,76 : t$="The large fence provides a slight problem." 35070 WHEN 226,227,228,262,267,283,284,285,288 : t$="The large brick wall provides a problem." 35080 WHEN 179 : t$="The door is locked." 35090 WHEN 183 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=151:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35100wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 35110 WHEN 195 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=148:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35120wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 35130ENDCASE 35140PROCadd(t$) 35150ENDIF 35160IF roomno%=268 PROCadd("You wander down the road, but there are cars zooming past you all the time. You decide it will be safer if you stay in the town."):ENDPROC 35170IF exits(roomno%,1)<>0 AND mv%=0 THEN 35180IF roomno%=179 THEN 35190PROCadd("You step out of the maze and see a cart, you hide in it. It starts moving.") 35200PROCadd("Hours later you see some gates open and the cart trundles into the town which you know so well. The gates close and you sneak out of the cart.") 35210zone%=1 35220ENDIF 35230roomno%=exits(roomno%,1) 35240IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35250wimp%!0=maphan%:PROCredrawmap 35260ENDIF 35270ENDPROC 35280 35290DEFPROCeast 35300mv%=0 35310IF exits(roomno%,2)=0 THEN 35320CASE RND(7) OF 35330 WHEN 1 : t$="There is no possible exit to the east." 35340 WHEN 2 : t$="You can see no way out to the east." 35350 WHEN 3 : t$="You can see no escape route to the east." 35360 WHEN 4 : t$="The direction to the east is blocked." 35370 WHEN 5 : t$="There is no way of leaving to the east." 35380 WHEN 6 : t$="You can't walk through solid objects." 35390 WHEN 7 : t$="You're solid, the wall's solid, I don't think it will work." 35400ENDCASE 35410CASE roomno% OF 35420 WHEN 298,297 : t$="The large brick wall provides a problem." 35430 WHEN 2 : t$="The door to the posh house is locked at the moment." 35440 WHEN 46 : t$="The large fence provides a slight problem." 35450 WHEN 194 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=195:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35460wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 35470 WHEN 198 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=208:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35480wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 35490 WHEN 208 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=198:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35500wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 35510 WHEN 191 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=206:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35520wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 35530 WHEN 170 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=202:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35540wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 35550ENDCASE 35560PROCadd(t$) 35570ENDIF 35580IF roomno%=37 AND crier%=1 PROCadd("A girl blocks your way. She is sobbing her heart out and screaming that her father has died."):ENDPROC 35590IF roomno%=301 AND payed%=0 PROCadd("You cannot enter the museum unless you have paid."):ENDPROC 35600IF exits(roomno%,2)<>0 AND mv%=0 THEN 35610roomno%=exits(roomno%,2) 35620IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35630wimp%!0=maphan%:PROCredrawmap 35640IF roomno%=311 THEN 35650PROCadd("A floor materialises by your feet and you soon recognise your surroundings."):roomno%=18:zone%=1 35660IF mapyn%(18)=0 mapyn%(18)=1:PROClook ELSE PROChalflook 35670wimp%!0=maphan%:PROCredrawmap 35680ENDIF 35690ENDIF 35700ENDPROC 35710 35720DEFPROCsouth 35730mv%=0 35740IF exits(roomno%,3)=0 THEN 35750CASE RND(7) OF 35760 WHEN 1 : t$="There is no possible exit to the south." 35770 WHEN 2 : t$="You can see no way out to the south." 35780 WHEN 3 : t$="You can see no escape route to the south." 35790 WHEN 4 : t$="The direction to the south is blocked." 35800 WHEN 5 : t$="There is no way of leaving to the south." 35810 WHEN 6 : t$="You can't walk through solid objects." 35820 WHEN 7 : t$="You're solid, the wall's solid, I don't think it will work." 35830ENDCASE 35840CASE roomno% OF 35850 WHEN 15 : t$="You edge towards to gates, but the guard gives you an evil look so you back away." 35860 WHEN 287,275,243,242,241,240,239,238,237,223: t$="The large brick wall provides a problem." 35870 WHEN 57,56,55,53,24,14,16,17,18 : t$="The large fence provides a slight problem." 35880 WHEN 147 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=194:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35890wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 35900 WHEN 210 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=191:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 35910wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 35920ENDCASE 35930PROCadd(t$) 35940ENDIF 35950IF roomno%=78 AND fire%<>0 PROCadd("The young boy, standing by his huge bonfire, annoyingly prevents you from going south."):ENDPROC 35960IF roomno%=274 PROCadd("You wander down the road, but there are cars zooming past you all the time. You decide it will be safer if you stay in the town."):ENDPROC 35970entry%=0:IF FNgot("cap")>0 AND FNgot("badge")>0 entry%=1 35980IF roomno%=305 AND entry%=0 PROCadd("The guard stops you. 'Only people of authority can go down there, son', he says."):ENDPROC 35990IF exits(roomno%,3)<>0 AND mv%=0 THEN 36000roomno%=exits(roomno%,3) 36010IF roomno%=71 mapyn%(71)=1:wimp%!0=maphan%:PROCredrawmap:roomno%=220:zone%=4 36020IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 36030wimp%!0=maphan%:PROCredrawmap 36040ENDIF 36050ENDPROC 36060 36070DEFPROCwest 36080mv%=0 36090IF exits(roomno%,4)=0 THEN 36100CASE RND(7) OF 36110 WHEN 1 : t$="There is no possible exit to the west." 36120 WHEN 2 : t$="You can see no way out to the west." 36130 WHEN 3 : t$="You can see no escape route to the west." 36140 WHEN 4 : t$="The direction to the west is blocked." 36150 WHEN 5 : t$="There is no way of leaving to the west." 36160 WHEN 6 : t$="You can't walk through solid objects." 36170 WHEN 7 : t$="You're solid, the wall's solid, I don't think it will work." 36180ENDCASE 36190CASE roomno% OF 36200 WHEN 76,77,78,79,80 : t$="The large fence provides a slight problem." 36210 WHEN 237,236,223,222,224,225,226,286,297 : t$="The large brick wall provides a problem." 36220 WHEN 148 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=147:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 36230wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 36240 WHEN 210,168,197 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=191:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 36250wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 36260 WHEN 211,164,185 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=155:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 36270wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 36280 WHEN 151 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=187:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 36290wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 36300ENDCASE 36310PROCadd(t$) 36320ENDIF 36330IF exits(roomno%,4)<>0 AND mv%=0 THEN 36340IF roomno%=302 payed%=0 36350roomno%=exits(roomno%,4) 36360IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 36370wimp%!0=maphan%:PROCredrawmap 36380ENDIF 36390ENDPROC 36400 36410DEFPROCnortheast 36420mv%=0 36430IF exits(roomno%,5)=0 THEN 36440CASE RND(7) OF 36450 WHEN 1 : t$="There is no possible exit to the north-east." 36460 WHEN 2 : t$="You can see no way out to the north-east." 36470 WHEN 3 : t$="You can see no escape route to the north-east." 36480 WHEN 4 : t$="The direction to the north-east is blocked." 36490 WHEN 5 : t$="There is no way of leaving to the north-east." 36500 WHEN 6 : t$="You can't walk through solid objects." 36510 WHEN 7 : t$="You're solid, the wall's solid, I don't think it will work." 36520ENDCASE 36530CASE roomno% OF 36540 WHEN 160 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=176:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 36550wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 36560ENDCASE 36570PROCadd(t$) 36580ENDIF 36590IF exits(roomno%,5)<>0 AND mv%=0 THEN 36600roomno%=exits(roomno%,5) 36610IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 36620wimp%!0=maphan%:PROCredrawmap 36630ENDIF 36640ENDPROC 36650 36660DEFPROCsoutheast 36670IF exits(roomno%,6)=0 THEN 36680CASE RND(7) OF 36690 WHEN 1 : t$="There is no possible exit to the south-east." 36700 WHEN 2 : t$="You can see no way out to the south-east." 36710 WHEN 3 : t$="You can see no escape route to the south-east." 36720 WHEN 4 : t$="The direction to the south-east is blocked." 36730 WHEN 5 : t$="There is no way of leaving to the south-east." 36740 WHEN 6 : t$="You can't walk through solid objects." 36750 WHEN 7 : t$="You're solid, the wall's solid, I don't think it will work." 36760ENDCASE 36770PROCadd(t$) 36780ENDIF 36790IF exits(roomno%,6)<>0 THEN 36800roomno%=exits(roomno%,6) 36810IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 36820wimp%!0=maphan%:PROCredrawmap 36830ENDIF 36840ENDPROC 36850 36860DEFPROCsouthwest 36870mv%=0 36880IF exits(roomno%,7)=0 THEN 36890CASE RND(7) OF 36900 WHEN 1 : t$="There is no possible exit to the south-west." 36910 WHEN 2 : t$="You can see no way out to the south-west." 36920 WHEN 3 : t$="You can see no escape route to the south-west." 36930 WHEN 4 : t$="The direction to the south-west is blocked." 36940 WHEN 5 : t$="There is no way of leaving to the south-west." 36950 WHEN 6 : t$="You can't walk through solid objects." 36960 WHEN 7 : t$="You're solid, the wall's solid, I don't think it will work." 36970ENDCASE 36980CASE roomno% OF 36990 WHEN 176 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=160:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 37000wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 37010 WHEN 210 : PROCadd("The wall fizzles and quivers as you step through it."):roomno%=191:IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 37020wimp%!0=maphan%:PROCredrawmap:t$="You shake off the mortar from your shoulders.":mv%=1 37030ENDCASE 37040PROCadd(t$) 37050ENDIF 37060IF exits(roomno%,7)<>0 AND mv%=0 THEN 37070roomno%=exits(roomno%,7) 37080IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 37090wimp%!0=maphan%:PROCredrawmap 37100ENDIF 37110ENDPROC 37120 37130DEFPROCnorthwest 37140IF exits(roomno%,8)=0 THEN 37150CASE RND(7) OF 37160 WHEN 1 : t$="There is no possible exit to the north-west." 37170 WHEN 2 : t$="You can see no way out to the north-west." 37180 WHEN 3 : t$="You can see no escape route to the north-west." 37190 WHEN 4 : t$="The direction to the north-west is blocked." 37200 WHEN 5 : t$="There is no way of leaving to the north-west." 37210 WHEN 6 : t$="You can't walk through solid objects." 37220 WHEN 7 : t$="You're solid, the wall's solid, I don't think it will work." 37230ENDCASE 37240PROCadd(t$) 37250ENDIF 37260IF exits(roomno%,8)<>0 THEN 37270roomno%=exits(roomno%,8) 37280IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 37290wimp%!0=maphan%:PROCredrawmap 37300ENDIF 37310ENDPROC 37320 37330DEFPROCup 37340IF exits(roomno%,9)=0 THEN 37350CASE RND(8) OF 37360 WHEN 1 : t$="There is no possible exit upwards." 37370 WHEN 2 : t$="You can see no way out upwards." 37380 WHEN 3 : t$="You can see no escape route above you." 37390 WHEN 4 : t$="The direction upwards is blocked." 37400 WHEN 5 : t$="There is no way of leaving by going up." 37410 WHEN 6 : t$="I hardly think you can fly!" 37420 WHEN 7 : t$="You flap your arms frantically but no progress is made." 37430 WHEN 8 : t$="You haven't quite mastered flight yet." 37440ENDCASE 37450CASE roomno% OF 37460 WHEN 11 : t$="You try and scramble up the monument, but just slide back down again." 37470 WHEN 13,279,286,288,289,290,292 : t$="You try to pull yourself up one of the trees, but unfortunately the few branches are high up, so you give up and come back down." 37480 WHEN 15 : t$="You edge nearer the gates so you can climb up them, but the guard looks menacing so you back away." 37490 WHEN 39 : t$="You try to pull yourself up the willow tree, but unfortunately you keep on slipping back down." 37500 WHEN 57,56,55,53,24,14,16,17,18,46,45,44,43,47,65,76,77,78,79,80 : t$="You try scrambling up the fence, but it is just too high to manage." 37510ENDCASE 37520PROCadd(t$) 37530ENDIF 37540IF exits(roomno%,9)<>0 THEN 37550IF roomno%=147 PROCadd("You leave the maze."):zone%=2:poltime%=TIME 37560roomno%=exits(roomno%,9) 37570IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 37580wimp%!0=maphan%:PROCredrawmap 37590ENDIF 37600ENDPROC 37610 37620DEFPROCdown 37630IF exits(roomno%,10)=0 THEN 37640CASE RND(8) OF 37650 WHEN 1 : t$="There is no possible exit downwards." 37660 WHEN 2 : t$="You can see no way out by going down." 37670 WHEN 3 : t$="You can see no escape route downwards." 37680 WHEN 4 : t$="The direction down is blocked." 37690 WHEN 5 : t$="There is no way of leaving by going down." 37700 WHEN 6 : t$="You scrape at the floor with your fingers, but you decide against it, it will ruin your nails." 37710 WHEN 7 : t$="Last time I checked, the ground was solid and I think it still is." 37720 WHEN 8 : t$="No matter how hard you wish, the ground won't open up and swallow you." 37730ENDCASE 37740IF roomno%=34 t$="You patiently sit at the bottom of the pond for a couple of minutes, but, being the bright lad that you are, realise that there is a lack of oxygen. You return to the surface a little wet." 37750PROCadd(t$) 37760ENDIF 37770IF exits(roomno%,10)<>0 THEN 37780IF roomno%=126 PROCadd("You enter the maze..."):zone%=3:poltime%=TIME 37790roomno%=exits(roomno%,10) 37800IF mapyn%(roomno%)=0 i$="look":PROClook:mapyn%(roomno%)=1 ELSE PROChalflook 37810wimp%!0=maphan%:PROCredrawmap 37820ENDIF 37830ENDPROC 37840 37850DEFPROCim 37860what$=MID$(i$,4,LEN(i$)-3) 37870PROCspecific1 37880PROCadd(t$) 37890ENDPROC 37900 37910DEFPROCspecific1 37920CASE RND(5) OF 37930 WHEN 1 : t$="And why do you think that you are "+what$+"?" 37940 WHEN 2 : t$="That's really interesting, are you really "+what$+"?" 37950 WHEN 3 : t$="And how long have you been "+what$+"?" 37960 WHEN 4 : t$="And do you like being "+what$+"?" 37970 WHEN 5 : t$="I'm so glad that you're "+what$+". Tell me more." 37980ENDCASE 37990IF what$="gay" OR what$="queer" OR what$="homosexual" CASE RND(3) OF 38000 WHEN 1 : t$="Well don't look at me, I'm not." 38010 WHEN 2 : t$="It's not the time nor the place to discuss those things." 38020 WHEN 3 : t$="Ooh, hush your mouth." 38030ENDCASE 38040IF what$="happy" OR what$="glad" OR what$="cheerful" OR what$="over the moon" OR what$="thrilled" CASE RND(3) OF 38050 WHEN 1 : t$="It's nice to know that someone's happy." 38060 WHEN 2 : t$="It cheers me up knowing that you are "+what$+" too." 38070 WHEN 3 : t$="And what has made you so cheerful?" 38080ENDCASE 38090IF what$="sad" OR what$="upset" OR what$="tearful" OR what$="crying" OR what$="depressed" OR what$="fed up" CASE RND(4) OF 38100 WHEN 1 : t$="Don't be so sad, cheer up!" 38110 WHEN 2 : t$="Life's not that bad really." 38120 WHEN 3 : t$="There's nothing to be upset about." 38130 WHEN 4 : t$="Try smiling and everything will be all right." 38140ENDCASE 38150IF what$="angry" OR what$="annoyed" OR what$="stroppy" OR what$="bad tempered" OR what$="badtempered" OR what$="moody" CASE RND(3) OF 38160 WHEN 1 : t$="What's put you in a mood?" 38170 WHEN 2 : t$="Why are you so bad-tempered?" 38180 WHEN 3 : t$="I suggest that you get into a better mood then." 38190ENDCASE 38200IF what$="sexy" OR what$="gorgeous" OR what$="lovely" OR what$="handsome" OR what$="pretty" OR what$="beautiful" OR what$="clever" OR what$="wonderful" OR what$="intelligent" OR what$="brilliant" OR what$="a genius" CASE RND(4) OF 38210 WHEN 1 : t$="You're "+what$+"? You should see me!" 38220 WHEN 2 : t$="My goodness, what a boaster." 38230 WHEN 3 : t$="Stop flattering yourself for one moment." 38240 WHEN 4 : t$="Sorry to damage your ego, but you are wrong." 38250ENDCASE 38260IF what$="stupid" OR what$="thick" OR what$="fat" OR what$="an idiot" OR what$="idiotic" OR what$="senile" OR what$="crazy" OR what$="mad" OR what$="strange" OR what$="weird" CASE RND(5) OF 38270 WHEN 1 : t$="Don't put yourself down." 38280 WHEN 2 : t$="Too right you are." 38290 WHEN 3 : t$="Don't be so hard on yourself." 38300 WHEN 4 : t$="Take a positive look at yourself." 38310 WHEN 5 : t$="I'm sorry, I refuse to believe that you are "+what$+"." 38320ENDCASE 38330ENDPROC 38340 38350DEFPROCiam 38360what$=MID$(i$,6,LEN(i$)-5) 38370PROCspecific1 38380PROCadd(t$) 38390ENDPROC 38400 38410DEFPROCitis 38420what$=MID$(i$,7,LEN(i$)-6) 38430CASE RND(3) OF 38440 WHEN 1 : t$="And why do you think that it is "+what$+"?" 38450 WHEN 2 : t$="That's really interesting, is it really "+what$+"?" 38460 WHEN 3 : t$="And how long has it been "+what$+"?" 38470ENDCASE 38480PROCadd(t$) 38490ENDPROC 38500 38510DEFPROCits 38520what$=MID$(i$,5,LEN(i$)-4) 38530CASE RND(3) OF 38540 WHEN 1 : t$="And why do you think that it's "+what$+"?" 38550 WHEN 2 : t$="That's really interesting, is it really "+what$+"?" 38560 WHEN 3 : t$="And how long has it been "+what$+"?" 38570ENDCASE 38580PROCadd(t$) 38590ENDPROC 38600 38610DEFPROCitwas 38620what$=MID$(i$,8,LEN(i$)-7) 38630CASE RND(4) OF 38640 WHEN 1 : t$="And why do you think that it was "+what$+"?" 38650 WHEN 2 : t$="Is it true that it was "+what$+"?" 38660 WHEN 3 : t$="When exactly was it "+what$+"?" 38670 WHEN 4 : t$="Are you happy that it was "+what$+"?" 38680ENDCASE 38690PROCadd(t$) 38700ENDPROC 38710 38720DEFPROClinguist 38730CASE RND(6) OF 38740 WHEN 1 : t$="Ooh, are you a foreigner?" 38750 WHEN 2 : t$="Great, you're a linguist." 38760 WHEN 3 : t$="My goodness, you're fluent in many languages." 38770 WHEN 4 : t$="And what is your native language?" 38780 WHEN 5 : t$="Stop trying to show off your language skills." 38790 WHEN 6 : t$="Stop it, I hate foreigners." 38800ENDCASE 38810PROCadd(t$) 38820ENDPROC 38830 38840DEFPROCsingle 38850IF i$="n" PROCnorth:ENDPROC 38860IF i$="e" PROCeast:ENDPROC 38870IF i$="s" PROCsouth:ENDPROC 38880IF i$="w" PROCwest:ENDPROC 38890IF i$="u" PROCup:ENDPROC 38900IF i$="d" PROCdown:ENDPROC 38910IF i$="i" PROCinv:ENDPROC 38920IF i$="l" i$="look":PROClook:ENDPROC 38930IF i$="x" PROCexits:ENDPROC 38940CASE RND(10) OF 38950 WHEN 1 : t$="Type in something longer." 38960 WHEN 2 : t$="Don't talk in single characters." 38970 WHEN 3 : t$="Ooh! You use big words don't you?" 38980 WHEN 4 : t$="It would help if you actually formed words." 38990 WHEN 5 : t$="Have you just left playschool?" 39000 WHEN 6 : t$="I'm afraid Sesame Street has just finished." 39010 WHEN 7 : t$="Is one character supposed to mean something?" 39020 WHEN 8 : t$="Is this some sort of code?" 39030 WHEN 9 : t$="That doesn't look like a sentence to me!" 39040 WHEN 10 : t$="Bit of a short sentence isn't it?" 39050ENDCASE 39060PROCadd(t$) 39070ENDPROC 39080 39090DEFPROCprob 39100CASE RND(4) OF 39110 WHEN 1 : t$="Nice of you to be so certain." 39120 WHEN 2 : t$="A bit indecisive aren't we?" 39130 WHEN 3 : t$="Can't you make up your mind?" 39140 WHEN 4 : t$="Be sure of yourself!" 39150ENDCASE 39160PROCadd(t$) 39170ENDPROC 39180 39190DEFPROChelp 39200CASE RND(17) OF 39210 WHEN 1 : t$="What on Earth do you need help for?" 39220 WHEN 2 : t$="You don't really need help." 39230 WHEN 3 : t$="Do it yourself." 39240 WHEN 4 : t$="It isn't that hard." 39250 WHEN 5 : t$="Just persevere." 39260 WHEN 6 : t$="You're hopeless." 39270 WHEN 7 : t$="It's not that tricky." 39280 WHEN 8 : t$="Try running up and down your road while eating live frogs and going ""Squawk""." 39290 WHEN 9 : t$="Inspiration hits you when you least expect it." 39300 WHEN 10 : t$="The Bible offers advice on everything - or so most Christians say." 39310 WHEN 11 : t$="Cheat!" 39320 WHEN 12 : t$="Wisdom cannot be given, it has to be earnt." 39330 WHEN 13 : t$="Whack your head against the table edge and you will see the light." 39340 WHEN 14 : t$="Try punching the nearest person to you." 39350 WHEN 15 : t$="Just ask someone else." 39360 WHEN 16 : t$="Don't ask me!" 39370 WHEN 17 : t$="How should I know the answers to your problems?" 39380ENDCASE 39390PROCadd(t$) 39400ENDPROC 39410 39420DEFPROCsorry 39430CASE RND(7) OF 39440 WHEN 1 : t$="Don't apologise." 39450 WHEN 2 : t$="Apology accepted." 39460 WHEN 3 : t$="I forgive you." 39470 WHEN 4 : t$="Sorry? What for?" 39480 WHEN 5 : t$="It's all right. I won't hold it against you." 39490 WHEN 6 : t$="Well don't do it again." 39500 WHEN 7 : t$="No problem, don't worry about it." 39510ENDCASE 39520PROCadd(t$) 39530ENDPROC 39540 39550DEFPROCrepeat 39560CASE RND(40) OF 39570 WHEN 1 : t$="Stop repeating yourself." 39580 WHEN 2 : t$="Say something different." 39590 WHEN 3 : t$="Change what you say." 39600 WHEN 4 : t$="You're sounding like a parrot." 39610 WHEN 5 : t$="You're boring me." 39620 WHEN 6 : t$="Try and be original." 39630 WHEN 7 : t$="Bit of a limited vocabulary..." 39640 WHEN 8 : t$="You must be mindless..." 39650 WHEN 9 : t$="S H U T U P ! ! !" 39660 WHEN 10 : t$="Please say something different." 39670 WHEN 11 : t$="You'll give me a headache." 39680 WHEN 13 : t$="How repetative." 39690 WHEN 14 : t$="Time you visited a mental asylum." 39700 WHEN 15 : t$="...Nut case." 39710 WHEN 16 : t$="Who's got a strait-jacket?" 39720 WHEN 17 : t$="Time to go to the knacker's yard." 39730 WHEN 18 : t$="Goo goo gaa gaa?" 39740 WHEN 19 : t$="B E Q U I E T ! ! !" 39750 WHEN 20 : t$="Weirdo alert." 39760 WHEN 21 : t$="Are you feeling all right?" 39770 WHEN 22 : t$="Stop saying that." 39780 WHEN 23 : t$="Is it fun saying that?" 39790 WHEN 24 : t$="Over and over again... tedious." 39800 WHEN 25 : t$="Someone, shut him up." 39810 WHEN 26 : t$="Vary what you say." 39820 WHEN 27 : t$="Variety is the spice of life." 39830 WHEN 28 : t$="Tell me something different." 39840 WHEN 29 : t$="No-one cares about that, change the subject." 39850 WHEN 30 : t$="Can someone gag this bloke?" 39860 WHEN 31 : t$="I might commit suicide." 39870 WHEN 32 : t$="You're winding me up..." 39880 WHEN 33 : t$="Lord, help me." 39890 WHEN 34 : t$="My Lord, bring sanity upon this world." 39900 WHEN 35 : t$="Are you always so monotonous?" 39910 WHEN 36 : t$="Wibble-wobble flobble." 39920 WHEN 37 : t$="Go back to where you came from." 39930 WHEN 38 : t$="I don't have to listen to this bull." 39940 WHEN 39 : t$="You're sounding like an Amiga." 39950 WHEN 40 : t$="You're making me angry..." 39960ENDCASE 39970PROCadd(t$) 39980ENDPROC 39990 40000DEFPROCbecause 40010CASE RND(6) OF 40020 WHEN 1 : t$="I'm afraid I have to disagree with you there." 40030 WHEN 2 : t$="That's a good reason." 40040 WHEN 3 : t$="I thoroughly agree with you." 40050 WHEN 4 : t$="I agree that "+MID$(i$,9,LEN(i$)-8)+"." 40060 WHEN 5 : t$="Well, we'll have to agree to disagree." 40070 WHEN 6 : t$="That's not the reason I heard." 40080ENDCASE 40090PROCadd(t$) 40100ENDPROC 40110 40120DEFPROCexcite 40130PROCadd("The man opens the bottle of Penicillin and drops the tablets into the boy's mouth. Within two short hours the boy opens his eyes and looks up. The man screams with elation and turns round to hug you with gratitude.") 40140PROCadd("'Now the land will no longer be in peril. I, and so many others, owe you everything, including our lives. Thank you doesn't seem enough,' he says.") 40150PROCadd("You leave the room, going back to wherever you came from, satisfied that you've saved the lives not of one boy, but of millions of people.") 40160PROCadd("At least until there is a flash of blinding light and you find yourself sucked into the year 2194, but that's a different adventure...") 40170renw%=1:PROCdecidepics 40180ENDPROC 40190 40200DEFPROCwelsh 40210CASE RND(3) OF 40220 WHEN 1 : t$="I'd prefer it if you didn't mention the Welsh." 40230 WHEN 2 : t$="Yes, we all know what the Welsh do." 40240 WHEN 3 : t$="Don't talk about the Welsh while I'm around." 40250ENDCASE 40260PROCadd(t$) 40270ENDPROC 40280 40290DEFPROCgonner 40300CASE RND(3) OF 40310 WHEN 1 : t$="Dead people can't do that." 40320 WHEN 2 : t$="You see, feel, hear, smell and taste nothingness." 40330 WHEN 3 : t$="Don't be stupid, you're dead." 40340ENDCASE 40350PROCadd(t$) 40360ENDPROC 40370 40380DEFPROCplease 40390CASE RND(9) OF 40400 WHEN 1 : t$="At least you know the magic word." 40410 WHEN 2 : t$="Please what?" 40420 WHEN 3 : t$="Stop pleading." 40430 WHEN 4 : t$="And beg!" 40440 WHEN 5 : t$="You sound pathetic." 40450 WHEN 6 : t$="Kiss my feet." 40460 WHEN 7,8,9 : t$="Say 'Pretty please with sugar on top'." 40470ENDCASE 40480PROCadd(t$) 40490ENDPROC 40500 40510DEFPROCsucker 40520CASE RND(5) OF 40530 WHEN 1 : t$="Will you do whatever I say?" 40540 WHEN 2 : t$="Can't you think for yourself?" 40550 WHEN 3,4,5 : t$="You've the decisiveness of a sheep." 40560ENDCASE 40570PROCadd(t$) 40580ENDPROC 40590 40600DEFPROCsick 40610IF computer%<5 computer%+=1 40620IF computer%=5 CASE RND(5) OF 40630 WHEN 1 : t$="Bluuuugghhh. Told you so." 40640 WHEN 2 : t$="Sppllaaattt. I warned you." 40650 WHEN 3 : t$="Shlluuugghh. I'm in a big mess thanks to you." 40660 WHEN 4 : t$="Glerrrgghhh. I hope you're ashamed of yourself." 40670 WHEN 5 : t$="Huurrrgghhh. This is your fault." 40680ENDCASE 40690IF computer%<5 CASE RND(5) OF 40700 WHEN 1 : t$="Don't talk about other computers, or I'll puke." 40710 WHEN 2 : t$="I don't want to hear about rubbish computers, or I might be sick." 40720 WHEN 3 : t$="Don't talk about those.. things, or I might make a mess." 40730 WHEN 4 : t$="Eerrrr, other computers, I feel my lunch coming up..." 40740 WHEN 5 : t$="Don't talk about those things, have you no respect? I feel a little queezy..." 40750ENDCASE 40760PROCadd(t$) 40770ENDPROC 40780 40790DEFPROCviolence 40800CASE RND(4) OF 40810 WHEN 1 : t$="Don't be violent, you may get hurt." 40820 WHEN 2 : t$="Violence doesn't pay, well not always." 40830 WHEN 3 : t$="I blame it on your upbringing..." 40840 WHEN 4 : t$="Control your anger." 40850ENDCASE 40860CASE roomno% OF 40870WHEN 1 : t$="'You asking for a fight?, eh?' shouts the man behind the Amiga stall. I think that was a mistake, Amigas are even worse down your throat...":nifok%=1:PROCdecidepics 40880WHEN 15,305 : t$="Woops. The guard frowns, pulls out a two metre long machine gun and promptly blows your head off.":nifok%=1:PROCdecidepics 40890WHEN 29 : t$="The baker looks extremely angry, he suddenly brings out his rolling pin and whacks your head until it's the thickness of a pancake.":nifok%=1:PROCdecidepics 40900WHEN 37 : t$="The vicar looks at you calmly and tells you that violence is not allowed in God's house." 40910WHEN 50 : t$="The people turn around to you and their mood changes instantly. Your head ends up in 20 separate pieces.":nifok%=1:PROCdecidepics 40920WHEN 52 : PROCadd("The man rolls up his sleeves, grabs you and throws you out into the street."):PROCadd(""):roomno%=63:PROChalflook:wimp%!0=maphan%:PROCredrawmap:t$="You land on your bum - ouch!" 40930WHEN 64 : PROCadd("The bar-maid rolls up her sleeves, showing her enormous biceps, picks you up and throws you out into the street."):PROCadd(""):roomno%=63:PROChalflook:wimp%!0=maphan%:PROCredrawmap:t$="You land on your bum - ouch!" 40940WHEN 69 : t$="The old man puts his hand under the counter, pulls out a machine gun and pumps you full of lead.":nifok%=1:PROCdecidepics 40950WHEN 72 : t$="The wizard whispers a few magical words and you feel relaxed within yourself." 40960WHEN 73 : t$="The alchemist asks you to calm down and you do so." 40970WHEN 76 : t$="The tramp pulls out a knife from his jumper and flicks it into your chest.":nifok%=1:PROCdecidepics 40980WHEN 78 : IF fire%>0 t$="You should know by now that little kids are dangerous. He pulls out an automatic rifle and fills you with bullets.":nifok%=1:PROCdecidepics 40990WHEN 82,310,250,301,302,249,266 : t$="The woman gives you a stern look and you stop being so violent." 41000WHEN 84 : t$="The old man turns round to you and asks you not to be so destructive." 41010WHEN 85 : t$="You are too far away from the guard." 41020WHEN 312,248,281 : t$="The man looks at you calmly, pulls out a machine gun and turns you into swiss cheese.":nifok%=1:PROCdecidepics 41030WHEN 226 : t$="The little girl starts screaming uncontrollably." 41040WHEN 253 : t$="As you are about to hit her, the old woman vomits into the sofa." 41050ENDCASE 41060IF police%(1)=roomno% OR police%(2)=roomno% THEN 41070t$="'Oh!, you're not a new recruit after all! You're that prisoner!' the policeman cries. He whacks you over the head with his truncheon, maybe a little too hard. Blackness." 41080nifok%=1:PROCdecidepics 41090ENDIF 41100PROCadd(t$) 41110ENDPROC 41120 41130DEFPROCluv 41140CASE RND(4) OF 41150 WHEN 1 : t$="The feeling's mutual." 41160 WHEN 2 : t$="I love you too." 41170 WHEN 3 : t$="We'd make a lovely couple." 41180 WHEN 4 : t$="Have I ever told you how pretty you look?" 41190ENDCASE 41200PROCadd(t$) 41210ENDPROC 41220 41230DEFPROCsay 41240t$="'"+MID$(i$,5,LEN(i$)-4)+"'. " 41250CASE roomno% OF 41260WHEN 1 : t$+="The people ignore you." 41270WHEN 15,305 : t$+="The guard ignores you." 41280WHEN 29 : t$+="The baker looks at you blankly." 41290WHEN 30 : t$+="The butcher looks at you blankly." 41300WHEN 37,50,52,64,72,73,76,81,82,84,310,312,266,248,249,250,253,301,302,281,226:t$+="You are ignored." 41310WHEN 78 : IF fire%>0 t$+="The kid ignores you." 41320WHEN 85 : IF drugged%=0 t$+="The guard ignores you." ELSE t$+="The guard stirs in his sleep." 41330OTHERWISE : t$+="No-one hears you." 41340ENDCASE 41350IF roomno%=police%(1) OR roomno%=police%(2) t$+="The policeman looks at you blankly." 41360PROCadd(t$) 41370ENDPROC 41380 41390DEFPROCprint 41400PROCadd(""+MID$(i$,7,LEN(i$)-6)+".") 41410ENDPROC 41420 41430DEFPROCtell 41440t$="There is no-one to tell anything to." 41450CASE roomno% OF 41460WHEN 1 : t$="The people ignore you." 41470WHEN 15,305 : t$="The guard ignores you." 41480WHEN 29 : t$="The baker looks at you blankly." 41490WHEN 30 : t$="The butcher looks at you blankly." 41500WHEN 37,50,52,64,72,73,76,81,82,84,310,312,266,248,249,250,253,301,302,281,266:t$="You are ignored." 41510WHEN 78 : IF fire%>0 t$="The kid ignores you." 41520WHEN 85 : CASE drugged% OF 41530WHEN 0 : t$="The guard looks at you blankly." 41540WHEN 1 : t$="The guard stirs in his sleep." 41550ENDCASE 41560ENDCASE 41570IF police%(1)=roomno% OR police%(2)=roomno% t$="The policeman looks at you blankly." 41580PROCadd(t$) 41590ENDPROC 41600 41610DEFPROChello 41620CASE RND(7) OF 41630 WHEN 1 : t$="Gooday, my friend" 41640 WHEN 2 : t$="Bonjour, mon ami" 41650 WHEN 3 : t$="Yo, my main man" 41660 WHEN 4 : t$="Greetings" 41670 WHEN 5 : t$="That's the greetings over with" 41680 WHEN 6 : t$="Hello, nice to meet you" 41690 WHEN 7 : t$="Hi, great to see you" 41700ENDCASE 41710CASE RND(6) OF 41720 WHEN 1 : t$+=", your quest awaits." 41730 WHEN 2 : t$+="." 41740 WHEN 3 : t$+=", tell me everything." 41750 WHEN 4 : t$+=", talk to me." 41760 WHEN 5 : t$+=", hope you enjoy the adventure." 41770 WHEN 6 : t$+=", how are you feeling today?" 41780ENDCASE 41790PROCadd(t$) 41800ENDPROC 41810 41820DEFPROCtense 41830CASE RND(6) OF 41840 WHEN 1 : t$="Feeling a little tense are we?" 41850 WHEN 2 : t$="What's upsetting you?" 41860 WHEN 3 : t$="I notice that you're a little upset. Why?" 41870 WHEN 4 : t$="Don't be annoyed." 41880 WHEN 5 : t$="What's put you in this mood?" 41890 WHEN 6 : t$="No need to get stroppy." 41900ENDCASE 41910PROCadd(t$) 41920ENDPROC 41930 41940DEFPROCbye 41950CASE RND(6) OF 41960 WHEN 1 : t$="Going so soon?" 41970 WHEN 2 : t$="Don't leave me." 41980 WHEN 3 : t$="Missing you already." 41990 WHEN 4 : t$="Have a nice day." 42000 WHEN 5 : t$="Au revoir." 42010 WHEN 6 : t$="I hope you enjoyed yourself." 42020ENDCASE 42030PROCadd(t$) 42040ENDPROC 42050 42060DEFPROCthank 42070CASE RND(5) OF 42080 WHEN 1 : t$="It's good to hear that you're grateful." 42090 WHEN 2 : t$="No problem." 42100 WHEN 3 : t$="That's ok." 42110 WHEN 4 : t$="Any time." 42120 WHEN 5 : t$="My goodness, you're polite." 42130ENDCASE 42140PROCadd(t$) 42150ENDPROC 42160 42170DEFPROChling 42180CASE RND(4) OF 42190 WHEN 1 : t$="What a lovely foreign welcome!" 42200 WHEN 2 : t$="Yes, and hello to you too, my foreign friend." 42210 WHEN 3 : t$="Welcome to Britain." 42220 WHEN 4 : t$="I hope you enjoy your visit here." 42230ENDCASE 42240PROCadd(t$) 42250ENDPROC 42260 42270DEFPROCgling 42280CASE RND(5) OF 42290 WHEN 1 : t$="Oh, my foreign friend, don't leave." 42300 WHEN 2 : t$="I'm sure you don't really want to go so soon." 42310 WHEN 3 : t$="Do you really have to go?" 42320 WHEN 4 : t$="Missing you already!" 42330 WHEN 5 : t$="Au revoir, mon ami." 42340ENDCASE 42350PROCadd(t$) 42360ENDPROC 42370 42380DEFPROCno 42390CASE RND(5) OF 42400 WHEN 1 : t$="Don't be so negative." 42410 WHEN 2 : t$="Why don't you say yes for a change?" 42420 WHEN 3 : t$="I can say 'no' in French too - 'Non' (I'm so clever)." 42430 WHEN 4 : t$="Can you say 'no' in German? (Try nein if you're too thick)." 42440 WHEN 5 : t$="Is 'no' your favourite word or something?" 42450ENDCASE 42460PROCadd(t$) 42470ENDPROC 42480 42490DEFPROCyes 42500CASE RND(5) OF 42510 WHEN 1 : t$="Jolly good." 42520 WHEN 2 : t$="I'm glad you agree." 42530 WHEN 3 : t$="Oui, oui, oui." 42540 WHEN 4 : t$="Perfick." 42550 WHEN 5 : t$="I'm so happy that you just said yes." 42560ENDCASE 42570PROCadd(t$) 42580ENDPROC 42590 42600DEFPROClastresort 42610CASE RND(25) OF 42620 WHEN 1 : t$="Try to talk sense if you can." 42630 WHEN 2 : t$="Sorry, I don't understand." 42640 WHEN 3 : t$="Pardon?" 42650 WHEN 4 : t$="Are you talking english?" 42660 WHEN 5 : t$="Just repeat that one more time." 42670 WHEN 6 : t$="I do not comprehend." 42680 WHEN 7 : t$="Hmm, same to you." 42690 WHEN 8 : t$="Talk sense will you?" 42700 WHEN 9 : t$="Try and say something sensible." 42710 WHEN 10 : t$="Eh?" 42720 WHEN 11 : t$="What?" 42730 WHEN 12 : t$="Try me again." 42740 WHEN 13 : t$="Yes, quite." 42750 WHEN 14 : t$="Whatever you say." 42760 WHEN 15 : t$="I'm sorry, are we speaking the same language?" 42770 WHEN 16 : t$="You've seemed to have lost me." 42780 WHEN 17 : t$="Fascinating." 42790 WHEN 18 : t$="Hey?" 42800 WHEN 19 : t$="And again?" 42810 WHEN 20 : t$="Try and translate that for me first." 42820 WHEN 21 : t$="Huh?" 42830 WHEN 22 : t$="Did you ever get an education?" 42840 WHEN 23 : t$="We don't seem to be communicating too well." 42850 WHEN 24 : t$="Je ne comprends pas." 42860 WHEN 25 : t$="Sorry, I'm too simple to understand." 42870ENDCASE 42880PROCadd(t$) 42890ENDPROC 42900 42910DEFPROCIlove 42920CASE RND(4) OF 42930 WHEN 1 : t$="And why do you think I have fallen in love?" 42940 WHEN 2 : person$=MID$(i$,INSTR(i$,"you "+love$)+LEN(love$)+5,LEN(i$)-(LEN(love$)+5)):t$="Who is "+person$+" anyway?" 42950 WHEN 3 : t$="I know I'm in luv..." 42960 WHEN 4 : t$="It's lovely being in love." 42970ENDCASE 42980PROCadd(t$) 42990ENDPROC 43000 43010DEFPROCYoulove 43020CASE RND(4) OF 43030 WHEN 1 : t$="And why do you think you have fallen in love?" 43040 WHEN 2 : t$="Is this pure, romantic love?" 43050 WHEN 3 : person$=MID$(i$,INSTR(i$,"i "+love$)+LEN(love$)+3,LEN(i$)-(LEN(love$)+3)):t$="Who is "+person$+" anyway?" 43060 WHEN 4 : t$="It's lovely being in love isn't it?" 43070ENDCASE 43080PROCadd(t$) 43090ENDPROC 43100 43110DEFPROClove 43120CASE RND(4) OF 43130 WHEN 1 : t$="Who loves who?" 43140 WHEN 2 : t$="What about love?" 43150 WHEN 3 : t$="Isn't love just woooooonderful!" 43160 WHEN 4 : t$="I love romance." 43170ENDCASE 43180PROCadd(t$) 43190ENDPROC 43200 43210DEFPROCnaughty 43220CASE RND(5) OF 43230 WHEN 1 : t$="Oooh, my favourite subject." 43240 WHEN 2 : t$="Oooh, raunchy." 43250 WHEN 3 : t$="Give me all the juicy details." 43260 WHEN 4 : t$="What's the bet you're under-aged?" 43270 WHEN 5 : t$="Tell me more!" 43280ENDCASE 43290PROCadd(t$) 43300ENDPROC 43310 43320DEFPROCnotspeak 43330CASE RND(10) OF 43340 WHEN 1 : t$="La la la la laa la. I can't hear you." 43350 WHEN 2 : t$="..." 43360 WHEN 3 : t$="Hmm." 43370 WHEN 4 : t$="You're wasting your time, I can't hear you." 43380 WHEN 5 : t$="Did someone speak?" 43390 WHEN 6 : t$="Did you say something?" 43400 WHEN 7 : t$="Have you not gone yet?" 43410 WHEN 8 : t$="Tiresome..." 43420 WHEN 9 : t$="I'm bored." 43430 WHEN 10 : t$="Isn't there someone else who wants a go?" 43440ENDCASE 43450PROCadd(t$) 43460ENDPROC 43470 43480DEFPROCswear 43490swear%+=1 43500IF swear%=5 PROCadd("I warned you, I'm not speaking to any foul-mouthed hooligan, so there."):ENDPROC 43510CASE RND(12) OF 43520 WHEN 1 : t$="Don't talk to me like that!" 43530 WHEN 2 : t$="Water down your language a bit, or I'll go away." 43540 WHEN 3 : t$="I'm warning you, don't speak so crudely." 43550 WHEN 4 : t$="So you want to talk dirty do you? Well I'm not going to listen." 43560 WHEN 5 : t$="How infantile..." 43570 WHEN 6 : t$="My goodness, you're so childish." 43580 WHEN 7 : t$="It isn't big and it isn't clever." 43590 WHEN 8 : t$="What would your parents do if they found you talking like this?" 43600 WHEN 9 : t$="Does speaking like this make you feel big?" 43610 WHEN 10 : t$="I won't listen to you if you carry on like this." 43620 WHEN 11 : t$="So juvenile.." 43630 WHEN 12 : t$="Is swearing the limit of your vocabulary?" 43640ENDCASE 43650PROCadd(t$) 43660ENDPROC 43670 43680DEFPROCnothing 43690CASE RND(15) OF 43700 WHEN 1 : t$="Why aren't you talking to me?" 43710 WHEN 2 : t$="Cat got your tongue?" 43720 WHEN 3 : t$="All right, don't talk to me then." 43730 WHEN 4 : t$="Please, don't be afraid." 43740 WHEN 5 : t$="Just speak up a little will you?" 43750 WHEN 6 : t$="Talk to me." 43760 WHEN 7 : t$="Are you a shy type then?" 43770 WHEN 8 : t$="Go on, you can trust me." 43780 WHEN 9 : t$="Speak up, boy." 43790 WHEN 10 : t$="Turning into a vegetable are you?" 43800 WHEN 11 : t$="You-hoo, anyone out there?" 43810 WHEN 12 : t$="No need to sulk, tell me everything." 43820 WHEN 13 : t$="Boy, you're interesting." 43830 WHEN 14 : t$="You've got a lot to say today." 43840 WHEN 15 : t$="You're a might quiet, are you ok?" 43850ENDCASE 43860ENDPROC 43870 43880DEFPROCnoneed 43890CASE RND(5) OF 43900 WHEN 1 : t$="There's no need - you've won!" 43910 WHEN 2 : t$="Don't bother doing extra work when you've completed your quest." 43920 WHEN 3 : t$="You have finished the game already." 43930 WHEN 4 : t$="Nothing more has to be done." 43940 WHEN 5 : t$="Don't be such a workaholic!" 43950ENDCASE 43960PROCadd(t$) 43970ENDPROC 43980 43990DEFPROCwait 44000CASE RND(17) OF 44010 WHEN 1 : t$="Calling..." 44020 WHEN 2 : t$="Anybody out there?" 44030 WHEN 3 : t$="How long do I have to talk to myself for?" 44040 WHEN 4 : t$="I'm getting bored." 44050 WHEN 5 : t$="I need some company." 44060 WHEN 6 : t$="Don't ignore me." 44070 WHEN 7 : t$="Hey, talk to me." 44080 WHEN 8 : t$="You haven't fallen asleep have you?" 44090 WHEN 9 : t$="Type something in." 44100 WHEN 10 : t$="Stuck for something to say are you?" 44110 WHEN 11 : t$="Wakey wakey rise and shine." 44120 WHEN 12 : t$="Oi, I'm over here." 44130 WHEN 13 : t$="You can see me can't you?" 44140 WHEN 14 : t$="Are we in a library? It's awfully quiet." 44150 WHEN 15 : t$="Don't send me to coventry." 44160 WHEN 16 : t$="I need some attention." 44170 WHEN 17 : PRINT CHR$(7):t$="BEEP, BEEP, Wake up!":PRINT CHR$(7) 44180ENDCASE 44190PROCadd(t$) 44200ENDPROC 44210 44220DATA vkdj,fuds,vklw,ixfn,eroorfn,gdpq,zdqnhu,glfnkhdg,edvwdug,wzdw,fxqw,slvv,exjjhu,vh{ 44230DATA 76,75,65,64,52,50,47,43,44,45,46,0,0,0,0 44240DATA 77,74,66,63,51,49,48,42,39,40,41,0,0,0,0 44250DATA 78,73,67,62,33,32,31,28,36,37,38,0,84,0,0 44260DATA 79,72,68,61,54,21,11,12,13,34,35,0,0,0,0 44270DATA 80,71,69,60,29,20,1,2,3,4,5,0,22,23,83 44280DATA 81,70,58,59,30,19,6,7,8,9,10,0,25,26,27 44290DATA 82,57,56,55,53,24,14,15,16,17,18,0,0,0,0 44300DATA 138,139,140,141,142,143,144,0,0,145,146,0,0,0,0 44310DATA 137,136,135,134,133,132,131,130,129,128,127,0,0,0,0 44320DATA 118,119,120,121,122,123,124,0,0,125,126,0,0,0,0 44330DATA 0,117,116,115,114,113,112,111,110,109,108,0,0,0,0 44340DATA 0,98,99,100,101,102,103,104,105,106,107,0,0,0,0 44350DATA 85,97,0,0,0,0,0,0,0,96,0,0,0,0,0 44360DATA 0,86,87,88,89,90,91,92,93,94,95,0,0,0,0 44370DATA 0,183,182,181,180,179,178,177,176,175,0,0,0,0,0 44380DATA 164,165,166,167,168,169,170,171,172,173,174,0,0,0,0 44390DATA 163,162,161,160,159,158,157,156,155,154,153,0,0,0,0 44400DATA 188,187,186,185,184,147,148,149,150,151,152,0,0,0,0 44410DATA 189,190,191,192,193,194,195,196,197,198,199,0,0,0,0 44420DATA 210,209,208,207,206,205,204,203,202,201,200,0,0,0,0 44430DATA 0,211,212,213,214,215,216,217,218,219,0,0,0,0,0 44440DATA 226,227,228,262,263,266,267,268,281,283,284,285,288,289,290 44450DATA 225,229,230,261,264,265,260,269,280,282,294,286,287,291,292 44460DATA 224,312,231,256,257,258,259,270,279,296,295,297,0,293,0 44470DATA 222,221,232,255,254,253,252,271,278,300,299,298,0,0,0 44480DATA 223,220,233,248,249,250,251,272,277,301,302,303,0,0,0 44490DATA 236,235,234,247,246,245,244,273,276,309,304,305,0,308,0 44500DATA 237,238,239,240,241,242,243,274,275,310,311,306,0,307,0
� >!RunImage � for !Gorm "Version$="1.40 (24th June 94)" (� Chris Allen 2� � Archimedes World < F.� "Thou nosey users with peering eyes, P+� Readers of this file, I despise, Z1� I'll create a curse of fear and dread, d/� Hackers, I do not like," Chris said. n$� "Let chaos free in the OS, x(� I shall form a fearsome mess, �&� From variables to CMOS RAM, �#� It shall affect any man, �+� Who dares to read my Gorm files, �)� Be warned, foolish juveniles." � ��open%=0:oldtime%=�:active%=-1:swear%=0:computer%=0:notimes%=0:oldword$="":roomno%=1:sleep%=0:sleepoldtime%=�:currentpic$="1":totalrooms%=312:altered%=0:written%=0:picsize%=464000:heaperror%=0:fonterror%=0:crier%=1 ��noz%=4:zone%=1:nifok%=0:savegt%=1:whiz%=0:pamp%=0:dug%=0:mould%=0:fire%=1:firetime%=�:suitcase%=0:mapsize%=105:mapwidth%=15:shaded%=0:drugged%=0:poltime%=�:trapped%=0:trappedtime%=�:injure%=0:nbtm%=0 �;renw%=0:dugged%=0:ill%=0:medium1%=0:medium2%=0:payed%=0 �2� police%(3), poldir%(3), buffer% 64, icon$(4) �Wpolice%(1)=107:poldir%(1)=4:police%(2)=143:poldir%(2)=4:police%(3)=206:poldir%(3)=1 �� wimp% 5000, advent% 15, sprite% 42000, menu% 500, info% 200, greet% 60, saver% 400, user% 502, quest$(11), inter% 600, posi% 200, messge% 250 �;� default1$(totalrooms%,10), default2$(6), default3%(7) ��� rooms$(totalrooms%,9), exits(totalrooms%,10), objects$(totalrooms%,10), owns$(10), abbrev$(totalrooms%,2), mpdt%(noz%,mapsize%), mapyn%(totalrooms%), rentry$(totalrooms%), then%(10), ec$(14) sprite%!0=42000:sprite%!8=16 !ș "OS_SpriteOp",&109,sprite% 7ș "OS_SpriteOp",&10A,sprite%,"<Gorm$Dir>.!Sprites" "-ș &400C0,200,&4B534154,"Gorm" � ,apphan% ,%templates$="<Gorm$Dir>.Templates" 6Jș "OS_ReadVarVal","Gorm$3D",buffer%,256 �,,length%:buffer%?length%=13 @7� $buffer%="Yes" templates$="<Gorm$Dir>.Template3D" J�"Unset Gorm$3D" Tș &400D9,,templates$ ^wimp%!64=sprite% h5ș &400DB,,wimp%,greet%,greet%+60,-1,"greeting",0 r ș &400C1,,wimp% � greethan% |-ș "XOS_ReadModeVariable",�,11 � ,,width% �.ș "XOS_ReadModeVariable",�,12 � ,,height% �-ș "XOS_ReadModeVariable",�,4 � ,,xwidth% �-ș "XOS_ReadModeVariable",�,5 � ,,ywidth% �1width%=width%*xwidth%:height%=height%*ywidth% ��wimp%!0=greethan%:ș"Wimp_GetWindowState",,wimp%:wimp%!4=width%-427:wimp%!8=height%-286:wimp%!12=width%+427:wimp%!16=height%+286:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% ���err(�,�$) �� �ș "Wimp_Poll",,wimp% � r% �Ȏ r% � �r� 0 : nbtm%=0:� heaperror%=1 heaperror%=0:�contcontload � � fonterror%=1 fonterror%=0:�contload � Ȏ active% � �$ � -1 : active%=0:�continueload � � -2 : ș &400DD,apphan% �X : � open%=1 � swear%<>5 � �-12000>oldtime% oldtime%=�:� nifok%=0 � renw%=0 �wait 6� �-1000>poltime% � zone%=3 � nifok%=0 �policemaze 2� �-1000>poltime% � zone%=2 � nifok%=0 �police E� �-6000>sleepoldtime% � sleep%=1 sleep%=0:�add("You wake up...") &%� �-200>firetime% � fire%=2 �fire 0�� �-250>trappedtime% � trapped%=1 trapped%=0:exits(110,4)=0:exits(111,2)=0:wimp%!0=maphan%:�redrawmap:�add("You hear a door slam.") :� D�� 1 : � wimp%!0=adventhan% �redraw � � wimp%!0=picciehan% �redrawpics � � wimp%!0=maphan% �redrawmap � ș "Wimp_RedrawWindow",,wimp% N7� 2 : ș &400C5,,wimp%:� wimp%!0=adventhan% �attach X�� 3 : ș &400C6,,wimp%:� wimp%!0=adventhan% open%=0:wimp%!0=userhan%:ș"Wimp_CloseWindow",,wimp%:wimp%!0=posihan%:ș"Wimp_CloseWindow",,wimp% b� 6 : �click l� 7 : �drag_complete v;� 8 : � wimp%!24=13 �key � ș"Wimp_ProcessKey",wimp%!24 �� 9 : �menuselect �� 17,18 : Ȏ wimp%!16 � � � 0 : �quityn � � 2 : �save �, � 3,5 : ldfilenm$=�xtractfln:�fileload � � &502 : �interactive �Y � &400C1 : � myfont%<>-1 ș "Font_FindFont",,"Trinity.Medium",12*16,12*16 � myfont% �W ș retcol%,myfont%,&FFFFFF00,&00000000,14 � ,back1%,fore1%,offset1% �V ș retcol%,myfont%,&FFFFFF00,&0000FF00,0 � ,back2%,fore2%,offset2% �! �decideshaded � � &400CC : ș "Wimp_GetPointerInfo",,wimp%:� wimp%!12=adventhan% wimp%!0=userhan%:ș"Wimp_CloseWindow",,wimp%:wimp%!0=posihan%:ș"Wimp_CloseWindow",,wimp% �� �� � � ݤxtractfln Gname$="":n=44:ȕ ((wimp%?n)>=32) � (n<256):name$+=�(wimp%?n):n+=1:� * =name$ 4 >��quityn H"� altered%=0 ș &400DD,apphan% RX� altered%=1 �warning(1,"","Quitting the program will lose","your current game.","") \� f p��continueaction zȎ wherefrom% � �� 1 : ș &400DD,apphan% �� 2 : yesno%=2:�loaditup �� 3 : �restart �� �� � ���loaditup �A%=�(ldfilenm$) �wasteoftime$=��#A%,16) �z� wasteoftime$<>"!Gorm Saved Game" �warning(4,"","This file is corrupt or is not","a real Gorm saved game.",""):�#A%:� �swear%=�(�#A%) �computer%=�(�#A%) �notimes%=�(�#A%) oldword$=�#A% roomno%=�(�#A%) sleep%=�(�#A%) $written%=�(�#A%) .font%=�(�#A%) 8"� font%=1 � myfont%=-1 font%=0 Bnifok%=�(�#A%) Lexits(2,2)=�(�#A%) Vexits(72,3)=�(�#A%) `exits(85,2)=�(�#A%) jexits(110,4)=�(�#A%) texits(111,2)=�(�#A%) ~exits(179,1)=�(�#A%) �exits(310,2)=�(�#A%) �ill%=�(�#A%) �medium1%=�(�#A%) �medium2%=�(�#A%) �payed%=�(�#A%) �renw%=�(�#A%) �crier%=�(�#A%) �mould%=�(�#A%) �dug%=�(�#A%) �pamp%=�(�#A%) �whiz%=�(�#A%) �fire%=�(�#A%) suitcase%=�(�#A%) injure%=�(�#A%) zone%=�(�#A%) dugged%=�(�#A%) (rooms$(78,2)=�#A% 2rooms$(78,3)=�#A% <rooms$(78,4)=�#A% Frooms$(85,5)=�#A% Pabbrev$(78,1)=�#A% Zrentry$(78)=�#A% d� a%=1 � 3 npolice%(a%)=�(�#A%) xpoldir%(a%)=�(�#A%) �� a% �drugged%=�(�#A%) �� a%=1 � totalrooms% �mapyn%(a%)=�(�#A%) �� a% �� a%=1 � 10 �owns$(a%)=�#A% �� a% �� a%=1 � 11 �quest$(a%)=�#A% �� a% �� a%=1 � totalrooms% �� b%=1 � 10 objects$(a%,b%)=�#A% � b% � a% "�#A% ,sleepoldtime%=� 6poltime%=� @altered%=0 J)� yesno%=2 wimp%!0=adventhan%:�redraw T'�decidepics:�decidetitle:�decidepos ^wimp%!0=maphan%:�redrawmap h\wimp%!0=adventhan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% r�attach |�seticon(k%,1,ldfilenm$) �� � ���continueload �myfont%=-1 �Xfonterror%=1:ș "Font_FindFont",,"Trinity.Medium",12*16,12*16 � myfont%:fonterror%=0 �6ș "XOS_SWINumberFromString",,"Font_SetFont" � ft% �@ș "XOS_SWINumberFromString",,"Font_SetFontColours" � ftcol% �6ș "XOS_SWINumberFromString",,"Font_Paint" � ftpt% �_ș "ColourTrans_ReturnFontColours",myfont%,&FFFFFF00,&00000000,14 � ,back1%,fore1%,offset1% �^ș "ColourTrans_ReturnFontColours",myfont%,&FFFFFF00,&0000FF00,0 � ,back2%,fore2%,offset2% � �contload �� � ��contload Bș "XOS_SWINumberFromString",,"ColourTrans_SetGCOL" � setgcol% Kș "XOS_SWINumberFromString",,"ColourTrans_ReturnFontColours" � retcol% &8ș &400DB,,wimp%,advent%,advent%+15,-1,"adventure",0 0!ș &400C1,,wimp% � adventhan% :0ș &400DB,,wimp%,info%,info%+200,-1,"info",0 Dș &400C1,,wimp% � inhan% N5ș &400DB,,wimp%,saver%,saver%+400,-1,"savebox",0 Xș &400C1,,wimp% � k% b0ș &400DB,,wimp%,user%,user%+502,-1,"user",0 lș &400C1,,wimp% � userhan% v%ș &400DB,,wimp%,,,-1,"piccies",0 �!ș &400C1,,wimp% � picciehan% �!ș &400DB,,wimp%,,,-1,"map",0 �ș &400C1,,wimp% � maphan% �4ș &400DB,,wimp%,posi%,posi%+200,-1,"position",0 �ș &400C1,,wimp% � posihan% �7ș &400DB,,wimp%,messge%,messge%+250,-1,"warning",0 �ș &400C1,,wimp% � warnhan% � ș &400DA �� a%=1 � totalrooms% �mapyn%(a%)=0 �� a% �mapyn%(1)=1 �heaperror%=1 &ș "OS_ReadMemMapInfo" � heapsize% pagesize%=heapsize% (ș "Wimp_SlotSize",-1,-1 � slotsize% heaploct%=slotsize%+&8000 *3ș "Wimp_SlotSize",heaploct%+heapsize%-&8000,-1 4'ș "OS_Heap",0,heaploct%,,heapsize% >4ș "XOS_Heap",2,heaploct%,,picsize% � ,,piccies% H� � ((heapsize%+picsize%) � pagesize%) <> 0 v%=heapsize%+picsize%+(pagesize%-((heapsize%+picsize%) � pagesize%)) � v%=heapsize%+picsize% R/ ș "XWimp_SlotSize",heaploct%+v%-&8000,-1 \9 ș "OS_Heap",5,heaploct%,,v%-heapsize%:heapsize%=v% f� ș "XOS_Heap",2,heaploct%,,picsize% � ,,piccies%:picyn%=1:piccies%!0=picsize%:piccies%!8=16:ș "OS_SpriteOp",&109,piccies%:ș "OS_SpriteOp",&10A,piccies%,"<Gorm$Dir>.Code" pheaperror%=0 z�contcontload �� � ���contcontload �mynum%=1.26+0.75+0.99 �Ystng$=�untangle("lihsuvt",mynum%):strng$=�untangle("Dcem""htqo""vjg""fgcf#",mynum%-1) �� a=1 � 14 �� ec$(a) �#ec$(a)=�untangle(ec$(a),mynum%) �� a ��iconbar � �loaddata �� a%=1 � noz% �� b%=1 � mapsize% � mpdt%(a%,b%) � b% � a% $�loadoptions .�decidetitle:�decidepos 8�decideshaded BK�add("Welcome to your quest brave adventurer."):i$="look":�look:temp%=0 L�seticon(inhan%,4,Version$) V2wimp%!0=greethan%:ș"Wimp_DeleteWindow",,wimp% `ș "OS_GetEnv" � file$ j� �file$,"-quit") � tI%=�file$,"""") ~I%=�file$,"""",I%+1) �� � I%+=1 �� �file$,I%,1)<>" " �file$=�file$,I%) � � file$<>"" �loader(file$,1) �� � ���decidetitle �titler$="Map -" �Ȏ zone% � �� 1,4 : titler$+="Town" �� 2 : titler$+="Jail" � 3 : titler$+="Maze" � � (!��toggleicon(wimp%!0,wimp%!4) 2wimp%!8=&200000:wimp%!12=0 <!ș "Wimp_SetIconState",,wimp% F� P Z��decideshaded d+ș "XOS_ReadModeVariable",�,3 � ,,cols% n#� cols%<>15 � picyn%=1 picyn%=2 x"� cols%=15 � picyn%=2 picyn%=1 �� shaded%=0 � picyn%=2 � � shaded%=1 �<wimp%!0=userhan%:wimp%!4=11:wimp%!12=1<<22:wimp%!8=1<<22 � ș"Wimp_SetIconState",,wimp% �� �� shaded%=1 � picyn%=1 � � shaded%=0 �8wimp%!0=userhan%:wimp%!4=11:wimp%!12=1<<22:wimp%!8=0 � ș"Wimp_SetIconState",,wimp% �� �� shaded%=0 � picyn%=0 � � shaded%=1 �<wimp%!0=userhan%:wimp%!4=11:wimp%!12=1<<22:wimp%!8=1<<22 ș"Wimp_SetIconState",,wimp% � � " ,��checkdrag 6Dș "XOS_SWINumberFromString",,"DragASprite_Start" � dragyn%;flag @� (flag � 1) dragyn%=-1 J� dragyn%<>-1 � T ș "OS_Byte",161,28 � ,,cmos ^� (cmos � 2)=0 dragyn%=-1 h� r� | ���decidepos ��decidetitle � title$=rentry$(roomno%)+" (" �year$="1794" �Ȏ zone% � �� 1 : title$+="Town" �� 2 : title$+="Jail" �� 3 : title$+="Maze" �%� 4 : title$+="Town":year$="1994" �� �title$+=")." ��seticon(posihan%,0,title$) ��seticon(posihan%,1,year$) � ��interactive & t$="" 0inter%=wimp% :inter%!12=wimp%!8 Dinter%!16=&503 NȎ inter%!32 � X}� -2 : t$="This is the Gorm application.|MClick SELECT to display the adventure window.|MClick ADJUST to display the map" b- ș "XOS_ReadModeVariable",�,3 � ,,cols% l% � cols%<>15 � picyn%=1 picyn%=2 v$ � cols%=15 � picyn%=2 picyn%=1 �= � picyn%=1 t$+=" and picture windows." � t$+=" window." �O� greethan% : t$="!Gorm, by Chris Allen, is loading.|MPlease be patient..." �b� adventhan% : t$="The adventure window.|MThis window shows the text adventure at the moment." �b� posihan% : t$="The position panel.|MThis panel tells you where you are and what year it is." �w� picciehan% : t$="The picture window.|MThis shows the picture that is most relevant to your position in the game." �:� inhan% : t$="All the extremely interesting stuff..." �Z� userhan% : t$="The input panel.|MThis is where you enter the orders.":Ȏ inter%!36 � �- � 0 : t$+="|MClick SELECT to go north." Њ � 1 : t$+="|MEnter the orders into this icon, then press RETURN or click on OK.|M(Ctrl+U clears this icon when the caret is in it)." ڈ � 2 : t$+="|MClick SELECT to process the instruction, click ADJUST to process the instruction without clearing the writable icon." �, � 3 : t$+="|MClick SELECT to go east." �- � 4 : t$+="|MClick SELECT to go south." �, � 5 : t$+="|MClick SELECT to go west." * � 6 : t$+="|MClick SELECT to go up." , � 7 : t$+="|MClick SELECT to go down." ) � 8 : t$+="|MClick SELECT to look." 2 � 9 : t$+="|MClick SELECT for an inventory." *9 � 10 : t$+="|MClick SELECT for the possible exits." 47 � 11 : t$+="|MClick SELECT to view the pictures." >2 � 12 : t$+="|MClick SELECT to view the map." H� � 13 : t$+="|MClick SELECT to save the game, if the game has not been saved before the save window will appear.|MClick ADJUST to bring up the save window regardless." R� \.� k% : t$="The save box.|M":Ȏ inter%!36 � fS� 0 : t$+="Drag this icon to the directory in which you want to save the file." p?� 1 : t$+="Enter the filename for the file into this icon." z�� 2 : t$+="Click here to save the file with the current filename. If it is not a full pathname, you must drag the icon to a directory first." �8� 3 : t$+="Click SELECT to save the Gorm adventure." �J� 4 : t$+="Click SELECT to save the text inside the adventure window." �$ : t$+="Save the ":Ȏ savegt% � �]� 1 : t$+="game by dragging the icon to a directory viewer in the usual RISC OS fashion." �]� 2 : t$+="text by dragging the icon to a directory viewer in the usual RISC OS fashion." �� �� ��� maphan% : t$="The map window.|MThis window maps a plan view of all the places you have visited.|MUp and down arrows mean there are exits up and down and your current position is marked by a red spot." �:� zone%=2 � zone%=3 t$+=" Yellow spots are policemen." �8� warnhan% : t$="The message window.":Ȏ inter%!36 � �4� 5 : t$+="|MClick SELECT to remove the window." �+� 6 : t$+="|MClick SELECT to continue." �� � t$+=�(0) $(inter%+20)=t$ $!inter%!0=(((21+�(t$))�4)*4)+4 .#ș "Wimp_SendMessage",17,inter% 8� B L��loaddata Vș "Hourglass_On" `A%=�("<Gorm$Dir>.Data") j� a=1 � totalrooms% tspno%=�(�(�#A%)-a) ~ � b=1 � 9 �%rooms$(a,b)=�untangle(�#A%,spno%) �� b �&abbrev$(a,1)=�untangle(�#A%,spno%) �&abbrev$(a,2)=�untangle(�#A%,spno%) �$rentry$(a)=�untangle(�#A%,spno%) �� b=1 � 10 �'objects$(a,b)=�untangle(�#A%,spno%) �� b �� b=1 � 10 �exits(a,b)=�(�#A%) �� b �1ș "Hourglass_Percentage",(a/totalrooms%)*100 � a �#A% ș "Hourglass_Off" � a=1 � totalrooms% (� b=1 � 10 2 default1$(a,b)=objects$(a,b) <� b F� a P7default2$(1)=rooms$(78,2):default2$(2)=rooms$(78,3) Z7default2$(3)=rooms$(78,4):default2$(4)=rooms$(85,5) d7default2$(5)=abbrev$(78,1):default2$(6)=rentry$(78) n4default3%(1)=exits(2,2):default3%(2)=exits(72,3) x6default3%(3)=exits(85,2):default3%(4)=exits(110,4) �7default3%(5)=exits(111,2):default3%(6)=exits(179,1) �default3%(7)=exits(310,2) �� � �8��warning(from%,icon$(1),icon$(2),icon$(3),icon$(4)) �wherefrom%=from% �/� a=1 � 4:�seticon(warnhan%,a,icon$(a)):� a �-ș "XOS_ReadModeVariable",�,11 � ,,width% �.ș "XOS_ReadModeVariable",�,12 � ,,height% �-ș "XOS_ReadModeVariable",�,4 � ,,xwidth% �-ș "XOS_ReadModeVariable",�,5 � ,,ywidth% �1width%=width%*xwidth%:height%=height%*ywidth% �width%-=347:height%+=138 1ș "Wimp_CreateMenu",,warnhan%,width%,height% � "��fileload ,� wimp%!40<>&179 � 6g� wimp%!16<>5 �warning(4,"","This file is not a Gorm saved game,","therefore I cannot load it.","") @� J� Twimp%!12=wimp%!8:wimp%!16=4 ^*ș "Wimp_SendMessage",17,wimp%,wimp%!4 h�loader(ldfilenm$+�(0),2) r� | ���loadoptions �A%=�("<Gorm$Dir>.Options") �posiyn%=�(�#A%) �font%=�(�#A%) ��#A% �� myfont%=-1 font%=0 �� � ���saveoptions �A%=�("<Gorm$Dir>.Options") ��#A%,�(posiyn%) ��#A%,�(font%) ��#A% � ��loader(ldfilenm$,yesno%) &� altered%=0 �loaditup 0d� yesno%=2 � altered%=1 �warning(2,"","Loading this saved game will","lose the current one.","") :� D N��attach X�ș"Wimp_GetWindowState",,wimp%:wimp%!0=userhan%:wimp%!16=wimp%!8-4:wimp%!8=wimp%!16-128:wimp%!12=wimp%!4+930:ș"Wimp_OpenWindow",,wimp% b�� posiyn%=1 wimp%!0=adventhan%:ș"Wimp_GetWindowState",,wimp%:wimp%!0=posihan%:wimp%!8=wimp%!16-44:ș"Wimp_OpenWindow",,wimp% l� v ���redraw �>wimp%!0=adventhan%:ș "Wimp_RedrawWindow",,wimp% � redraw% �� font%=1 ș ft%,myfont% �ȕ redraw% �drawx=(wimp%!4-wimp%!20)+2 �drawy=wimp%!16-wimp%!24-17 �� font%=1 drawy-=18 �� font%=1 � �� f=1 � 11 �#� drawx+(16*�(quest$(f))),drawy �� �quest$(f),1)="@" ș ftcol%,myfont%,back2%,fore2%,offset2%:ș ftpt%,,�quest$(f),2,76),17,drawx,drawy � ș ftcol%,myfont%,back1%,fore1%,offset1%:ș ftpt%,,quest$(f),17,drawx,drawy � drawy-=37 �� f � � font%=0 � � f=1 � 11 � drawx,drawy *j� �quest$(f),1)="@" ș setgcol%,&0000FF00,,0:� �quest$(f),2,76) � ș setgcol%,&00000000,,0:� quest$(f) 4 drawy-=36 >� f H� R+ș "Wimp_GetRectangle",,wimp% � redraw% \� f� p z��redrawpics �+ș "XOS_ReadModeVariable",�,3 � ,,cols% �#� cols%<>15 � picyn%=1 picyn%=2 �A� picyn%<>1 wimp%!0=picciehan%:ș "Wimp_CloseWindow",,wimp%:� �+ș "Wimp_RedrawWindow",,wimp% � redraw% �ȕ redraw% �Ȏ nifok% � �W� 1 : ș setgcol%,&00000000,,0:ȓȐ wimp%!4-wimp%!20,wimp%!16-wimp%!24-424,1236,424 �[ : � wimp%!4-wimp%!20,wimp%!16-wimp%!24-424:ș "OS_SpriteOp",&11C,piccies%,currentpic$ �� �+ș "Wimp_GetRectangle",,wimp% � redraw% �� �� � ��redrawmap +ș "Wimp_RedrawWindow",,wimp% � redraw% �5 $ȕ redraw% .(drawx=wimp%!4-wimp%!20+5:origx=drawx 8drawy=wimp%!16-wimp%!24-5 Bwdth%=0 L%� drawx,drawy:� titler$:drawy-=32 VEș setgcol%,&00000000,,0:� drawx,drawy,drawx+1600,drawy:drawy-=15 `� f=1 � mapsize% jș setgcol%,&00000000,,0 tmd=mpdt%(zone%,f) ~� md<>0 � mapyn%(md)=1 � �q� exits(md,1)>0 � drawx,drawy,drawx+33,drawy:� drawx+66,drawy,drawx+100,drawy � � drawx,drawy,drawx+100,drawy ��� exits(md,2)>0 � drawx+100,drawy,drawx+100,drawy-33:� drawx+100,drawy-66,drawx+100,drawy-100 � � drawx+100,drawy,drawx+100,drawy-100 ��� exits(md,3)>0 � drawx,drawy-100,drawx+33,drawy-100:� drawx+66,drawy-100,drawx+100,drawy-100 � � drawx,drawy-100,drawx+100,drawy-100 �q� exits(md,4)>0 � drawx,drawy,drawx,drawy-33:� drawx,drawy-66,drawx,drawy-100 � � drawx,drawy,drawx,drawy-100 ��� exits(md,9)>0 � drawx+80,drawy-50,drawx+80,drawy-85:� drawx+80,drawy-50,drawx+74,drawy-60:� drawx+80,drawy-50,drawx+86,drawy-60 ��� exits(md,10)>0 � drawx+80,drawy-50,drawx+80,drawy-85:� drawx+80,drawy-85,drawx+74,drawy-75:� drawx+80,drawy-85,drawx+86,drawy-75 �&� drawx+10,drawy-8:� abbrev$(md,1) �'� drawx+10,drawy-40:� abbrev$(md,2) �A� roomno%=md ș setgcol%,&0000FF00,,0:ȏȐdrawx+20,drawy-84,7 �� a%=1 � 3 �B� md=police%(a%) ș setgcol%,&00FFFF00:ȏȐdrawx+50,drawy-84,7 �� a% � wdth%+=1 8� wdth%=mapwidth% wdth%=0:drawx=origx-100:drawy-=100 drawx+=100 (� f 2+ș "Wimp_GetRectangle",,wimp% � redraw% <� F� P Z��decidepics dcurrentpic$=�(zone%) nȎ roomno% � x"� 71,220,311 : currentpic$="5" �7� 285,286,287,288,289,290,291,292 : currentpic$="7" �:� 36,37,38,41,84,279,293,294,295,296 : currentpic$="8" �$� 72,78,79,80 : currentpic$="14" �*� 49,50,51,52,63,64 : currentpic$="10" �,� 262,263,264,265,266 : currentpic$="11" �� 310 : currentpic$="12" �$� 226,227,228 : currentpic$="13" �� �*� roomno%=78 � fire%>0 currentpic$="9" �� renw%=1 currentpic$="6" �"wimp%!0=picciehan%:�redrawpics �� � ݤuntangle(myline$,myrandno) theline$="" � myline$="" =theline$ "� lncnt=1 � �(myline$) ,.theline$+=�(�(�myline$,lncnt,1))-myrandno) 6� lncnt @ =theline$ J T ��key ^�� wimp%!0=userhan% i$=�readinput:�add("@"+i$):�respond:� i$<>"quit please" �seticon(userhan%,1,""):ș"Wimp_SetCaretPosition",userhan%,1,,,-1 h-� wimp%!0=k% � wimp%!4=1 �getfilename � � rO� �filena$,".")=0 �err(1,"To save, drag the icon to a directory viewer."):� |filename$=filena$ ��dothingy(1) �� � ���ok(button%) �� wimp%!8<>1 � wimp%!8<>4 � ��getfilename �O� �filena$,".")=0 �err(1,"To save, drag the icon to a directory viewer."):� �filename$=filena$ �� button%=1 button%=0 �� button%=4 button%=1 ��dothingy(button%) �� � ��drag_complete '� dragyn%<>-1 ș "DragASprite_Stop" #ș "Wimp_GetPointerInfo",,wimp% &=TheWindow%=wimp%!12:TheIcon%=wimp%!16:x=wimp%!0:y=wimp%!4 0Jwimp%!0=64:wimp%!12=0:wimp%!16=1:wimp%!20=TheWindow%:wimp%!24=TheIcon% :wimp%!28=x:wimp%!32=y D-� savegt%=1 wimp%!36=5500 � wimp%!36=1200 N-� savegt%=1 wimp%!40=&179 � wimp%!40=&FFF X$(wimp%+44)=filena$ b6ș "Wimp_SendMessage",17,wimp%,TheWindow%,TheIcon% l� v � ��save �!x=wimp%!0:y=wimp%!4:z=wimp%!8 � filename$=�convert(wimp%+44) �#wimp%!0=x:wimp%!12=z:wimp%!16=3 �$ș "Wimp_SendMessage",18,wimp%,y �(filename$=�fixstring(filename$+�(0)) ��dothingy(1) �� � �ݤconvert(no%) �doofer$="" �ȕ ?no% �doofer$+=�?no% no%+=1 � =doofer$ *��dothingy(fg%) 4� savegt%=2 �savetext:� >A%=�(filename$) H*�#A%,"!Gorm Saved Game - saved on "+�$ R�#A%,�(swear%) \�#A%,�(computer%) f�#A%,�(notimes%) p�#A%,oldword$ z�#A%,�(roomno%) ��#A%,�(sleep%) ��#A%,�(written%) ��#A%,�(font%) ��#A%,�(nifok%) ��#A%,�(exits(2,2)) ��#A%,�(exits(72,3)) ��#A%,�(exits(85,2)) ��#A%,�(exits(110,4)) ��#A%,�(exits(111,2)) ��#A%,�(exits(179,1)) ��#A%,�(exits(310,2)) ��#A%,�(ill%) ��#A%,�(medium1%) �#A%,�(medium2%) �#A%,�(payed%) �#A%,�(renw%) $�#A%,�(crier%) .�#A%,�(mould%) 8�#A%,�(dug%) B�#A%,�(pamp%) L�#A%,�(whiz%) V�#A%,�(fire%) `�#A%,�(suitcase%) j�#A%,�(injure%) t�#A%,�(zone%) ~�#A%,�(dugged%) ��#A%,rooms$(78,2) ��#A%,rooms$(78,3) ��#A%,rooms$(78,4) ��#A%,rooms$(85,5) ��#A%,abbrev$(78,1) ��#A%,rentry$(78) �� a%=1 � 3 ��#A%,�(police%(a%)) ��#A%,�(poldir%(a%)) �� a% ��#A%,�(drugged%) �� a%=1 � totalrooms% �#A%,�(mapyn%(a%)) � a% � a%=1 � 10 �#A%,owns$(a%) (� a% 2� a%=1 � 11 <�#A%,quest$(a%) F� a% P� a%=1 � totalrooms% Z� b%=1 � 10 d�#A%,objects$(a%,b%) n� b% x� a% ��#A% � �"Settype "+filename$+" 179" �#� fg%=1 ș "Wimp_CreateMenu",-1 ��seticon(k%,1,filename$) �*wimp%!0=k%:ș"Wimp_CloseWindow",,wimp% �altered%=0 �� � ���savetext �A%=�(filename$) �$�#A%,"Text from Gorm adventure:" ��#A%,"" �� a%=1 � 11 line$=quest$(a%) !� �line$,1)="@" �line$,1)="-" �#A%,line$ "� a% ,�#A% 6 �"Settype "+filename$+" FFF" @#� fg%=1 ș "Wimp_CreateMenu",-1 J�seticon(k%,1,filename$) T*wimp%!0=k%:ș"Wimp_CloseWindow",,wimp% ^� h r��err(wimp%!0,$(wimp%+4)) |'� fonterror%=1 myfont%=-1:font%=0:� �F� heaperror%=1 �seticon(greethan%,1,"Without pictures"):picyn%=0:� �Ȏ wimp%!0 � �F� 204 : $(wimp%+4)+=". Change the filename to something possible." �E� 67785 : $(wimp%+4)+=". Flip the tab on the disc and try again." �� �(ș "Wimp_ReportError",wimp%,1,"Gorm" �� � � ��iconbar �"wimp%!0=-1:wimp%!4=0:wimp%!8=0 �*wimp%!12=68:wimp%!16=68:wimp%!20=&300A �$(wimp%+24)="!Gorm" �(ș "Wimp_CreateIcon",,wimp% � ichan% � ��menuselect &a%=wimp%!0:b%=wimp%!4 0#ș "Wimp_GetPointerInfo",,wimp% :but%=wimp%!8 Dwimp%!0=a%:wimp%!4=b% Nfntopt%=1:� m%=0 fntopt%=0 X"extraopt%=2:� m%=0 extraopt%=1 bpanels%=3:� m%=0 panels%=2 l$restrtopt%=4:� m%=0 restrtopt%=3 v saveopt%=5:� m%=0 saveopt%=4 �Ȏ wimp%!0 � � � fntopt% : Ȏ wimp%!4 � �B � 0,1 : font%=wimp%!4:wimp%!0=adventhan%:� open%=1 �redraw � � � � extraopt% : Ȏ wimp%!4 � �� � -1 : wimp%!0=maphan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp%:� picyn%=1 wimp%!0=picciehan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% �c � 0 : wimp%!0=maphan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% �f � 1 : wimp%!0=picciehan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% � � � � panels% : Ȏ wimp%!4 � � � 0 : posiyn%=1-posiyn% �I � posiyn%=0 wimp%!0=posihan%:ș"Wimp_CloseWindow",,wimp% �� � posiyn%=1 � open%=1 wimp%!0=adventhan%:ș"Wimp_GetWindowState",,wimp%:wimp%!0=posihan%:wimp%!8=wimp%!16-44:ș"Wimp_OpenWindow",,wimp% � i � restrtopt% : � altered%=1 �warning(3,"","Restarting will lose","the current game.","") � �restart # � saveopt% : Ȏ wimp%!4 � � � 0 : �getfilename:� �filena$,".")=0 wimp%!0=k%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp%:ș"Wimp_SetCaretPosition",k%,1,,,-1,�(filena$) � filename$=filena$:�dothingy(0) * � 1 : �saveoptions 4� : �getfilename:� �filena$,".")=0 wimp%!0=k%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp%:ș"Wimp_SetCaretPosition",k%,1,,,-1,�(filena$) � filename$=filena$:�dothingy(0) > � H � 6 : �quityn R� \E� but%=1 � wimp%!0<>6 wimp%!0=mousx%:wimp%!4=mousy%:�makemenu(m%) f� p z ��restart �ș "Hourglass_On" �� a=1 � 11 �quest$(a)="" �� a �� a%=1 � 10 �owns$(a%)="" �� a% ��swear%=0:computer%=0:notimes%=0:roomno%=1:zone%=1:sleep%=0:altered%=0:written%=0:suitcase%=0:nifok%=0:crier%=1:mould%=0:dug%=0:pamp%=0:whiz%=0:dugged%=0:fire%=1:drugged%=0:injure%=0:renw%=0:ill%=0:medium1%=0:medium2%=0:payed%=0 �police%(1)=107:poldir%(1)=4 �police%(2)=143:poldir%(2)=4 �police%(3)=206:poldir%(3)=1 �� a=1 � totalrooms% �� b=1 � 10 mapyn%(a)=0 objects$(a,b)=default1$(a,b) � b $� a .7rooms$(78,2)=default2$(1):rooms$(78,3)=default2$(2) 87rooms$(78,4)=default2$(3):rooms$(85,5)=default2$(4) B7abbrev$(78,1)=default2$(5):rentry$(78)=default2$(6) L4exits(2,2)=default3%(1):exits(72,3)=default3%(2) V6exits(85,2)=default3%(3):exits(110,4)=default3%(4) `7exits(111,2)=default3%(5):exits(179,1)=default3%(6) jexits(310,2)=default3%(7) t3�add("Welcome to your quest brave adventurer.") ~i$="look":�look �wimp%!0=adventhan%:�redraw ��decidetitle �5mapyn%(1)=1:wimp%!0=maphan%:�redrawmap:�decidepos �ș "Hourglass_Off" �� � ���getfilename �wimp%!0=k%:wimp%!4=1 �ș &400CE,,wimp% �filena$=$wimp%!28 �$filena$=�fixstring(filena$+�(0)) �� ��changefilename(opt%) �getfilename `� �filena$,".")=0 � opt%=1 �seticon(k%,1,"SavedGame"):ș "Wimp_SetCaretPosition",k%,1,,,-1,9 ([� �filena$,".")=0 � opt%=2 �seticon(k%,1,"Text"):ș "Wimp_SetCaretPosition",k%,1,,,-1,4 2� < Fݤreadinput Pwimp%!0=userhan%:wimp%!4=1 Zș &400CE,,wimp% d=$wimp%!28 n xݤfixstring(origname$) �p=1:name$="" �ȕ �origname$,p,1)<>�(0) �name$+=�origname$,p,1):p+=1 �� � =name$ � ���justfile �ȕ �filena$,".")>0 �%filena$=�filena$,�filena$,".")+1) �� �� � �!��seticon(wimp%!0,wimp%!4,t$) ș &400CE,,wimp% $wimp%!28=t$ wimp%!8=0:wimp%!12=0 "ș &400CD,,wimp% ,� 6 @ ��drag J"� wimp%!12<>k% � wimp%!16<>0 � T%�checkdrag:�getfilename:�justfile ^.wimp%!0=k%:ș "Wimp_GetWindowState",,wimp% h"x=wimp%!4:y=wimp%!16:wimp%!4=0 r!ș "Wimp_GetIconState",,wimp% |(wimp%!4=5:wimp%!8+=x-4:wimp%!12+=y-4 �wimp%!16+=x+4:wimp%!20+=y+4 �wimp%!24=0:wimp%!28=0 �)wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF �=dragsprite$="file_179":� savegt%=2 dragsprite$="file_fff" �k� dragyn%=-1 ș "Wimp_DragBox",,wimp% � ș "DragASprite_Start",%11000101,1,dragsprite$,wimp%+8,wimp%+24 �� � � ��shiftup �� h=1 � 10 �quest$(h)=quest$(h+1) �� h �� � ��add(phrase$) g%=0 0b%=�(phrase$):� �phrase$,1,1)="@" b%-=1:g%=1 &>� b%<77 �shiftup:quest$(11)=phrase$:flag%=0 � flag%=1:f%=0 0ȕ flag%=1 :�shiftup D%temphrase$=�phrase$,(f%*76)+1,76) Nthere=0 X� i=76 � 1 �-1 b�� �temphrase$,i,1)=" " � �temphrase$,i,1)="." � �temphrase$,i,1)="," � �temphrase$,i,1)="?" � �temphrase$,i,1)=":" � �temphrase$,i,1)=";" � �temphrase$,i,1)="!" � �temphrase$,i,1)="'" there=i:i=1 l� i v� �(temphrase$)<76 there=0 �/� there<2 quest$(11)=�phrase$,(f%*76)+1,76) ��� there>1 quest$(11)=�phrase$,(f%*76)+1,there):phrase$=�phrase$,1,(f%*76)+there)+�76-there,"*")+�phrase$,(f%*76)+1+there,�(phrase$)) �,� g%=1 � f%<>0 quest$(11)="@"+quest$(11) �� there>1 b%+=76-there � f%+=1:� b%-(f%*76)<1 flag%=0 �� �wimp%!0=adventhan% ��redraw �� � �0��seticonsprite(wimp%!0,wimp%!4,spritetype$) �windie%=wimp%!0 �!ș "Wimp_GetIconState",,wimp% !ș "Wimp_DeleteIcon",,wimp% !6wimp%!4=wimp%!8:wimp%!8=wimp%!12:wimp%!12=wimp%!16 !?wimp%!16=wimp%!20:wimp%!20=wimp%!24:$(wimp%+24)=spritetype$ ! ș "Wimp_CreateIcon",,wimp% !*Cwimp%!0=windie%:ș "Wimp_ForceRedraw",wimp%!0,-100,-100,200,200 !4� !> !H��click !R#� wimp%!8=16 � wimp%!8=64 �drag !\1� wimp%!8=4 � wimp%!12=userhan% Ȏ wimp%!16 � !f- � 0 : i$="@Go north.":�add(i$):�respond !pq � 2 : i$="@"+�readinput:�add(i$):�respond:�seticon(userhan%,1,""):ș"Wimp_SetCaretPosition",userhan%,1,,,-1 !z, � 3 : i$="@Go east.":�add(i$):�respond !�- � 4 : i$="@Go south.":�add(i$):�respond !�, � 5 : i$="@Go west.":�add(i$):�respond !�* � 6 : i$="@Go up.":�add(i$):�respond !�, � 7 : i$="@Go down.":�add(i$):�respond !�) � 8 : i$="@Look.":�add(i$):�respond !�. � 9 : i$="@Inventory.":�add(i$):�respond !�+ � 10 : i$="@Exits.":�add(i$):�respond !�e � 11 : wimp%!0=picciehan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% !�b � 12 : wimp%!0=maphan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% !�� � 13 : �getfilename:� �filena$,".")=0 wimp%!0=k%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp%:ș"Wimp_SetCaretPosition",k%,1,,,-1,�(filena$) � filename$=filena$:�dothingy(0) !�� !�1� wimp%!8=1 � wimp%!12=userhan% Ȏ wimp%!16 � !�- � 0 : i$="@Go north.":�add(i$):�respond "/ � 2 : i$="@"+�readinput:�add(i$):�respond ", � 3 : i$="@Go east.":�add(i$):�respond "- � 4 : i$="@Go south.":�add(i$):�respond "$, � 5 : i$="@Go west.":�add(i$):�respond ".* � 6 : i$="@Go up.":�add(i$):�respond "8, � 7 : i$="@Go down.":�add(i$):�respond "B) � 8 : i$="@Look.":�add(i$):�respond "L. � 9 : i$="@Inventory.":�add(i$):�respond "V+ � 10 : i$="@Exits.":�add(i$):�respond "`e � 11 : wimp%!0=picciehan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% "jb � 12 : wimp%!0=maphan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% "t� � 13 : �getfilename:wimp%!0=k%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp%:ș"Wimp_SetCaretPosition",k%,1,,,-1,�(filena$) "~� "�2� wimp%!12=warnhan% � wimp%!8<>2 Ȏ wimp%!16 � "�7� 5 : wimp%!0=warnhan%:ș "Wimp_CloseWindow",,wimp% "�Z� 6 : nbtm%+=1:wimp%!0=warnhan%:ș "Wimp_CloseWindow",,wimp%:� nbtm%=1 �continueaction "�� "�,� wimp%!12=k% � wimp%!8<>2 Ȏ wimp%!16 � "�� 2 : �ok(wimp%!8) "�F� 3 : savegt%=1:�seticonsprite(k%,0,"file_179"):�changefilename(1) "�F� 4 : savegt%=2:�seticonsprite(k%,0,"file_fff"):�changefilename(2) "�� "�7� wimp%!8=2 � wimp%!12=adventhan% �makemenu(0):m%=0 "�/� wimp%!12=-2 � wimp%!8=2 �makemenu(1):m%=1 "�� wimp%!8=1 � wimp%!12=-2 � # Ywimp%!0=maphan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% # +ș "XOS_ReadModeVariable",�,3 � ,,cols% ##� cols%<>15 � picyn%=1 picyn%=2 #"� cols%=15 � picyn%=2 picyn%=1 #(g� picyn%=1 wimp%!0=picciehan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% #2� #<� wimp%!8=4 � wimp%!12=-2 � #F\wimp%!0=adventhan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% #P�attach:open%=1:oldtime%=� #Z� #d� #n #x��makemenu(m%) #�+ș "XOS_ReadModeVariable",�,3 � ,,cols% #�#� cols%<>15 � picyn%=1 picyn%=2 #�"� cols%=15 � picyn%=2 picyn%=1 #�$menu%="Gorm" #�menu%?12=7 #�menu%?13=2 #�menu%?14=7 #�menu%?15=0 #�menu%!16=180 #�menu%!20=44 #�menu%!24=0 #� menu%!28=2:� m%=0 menu%!28=0 #�-menu%!32=inhan%:� m%=0 menu%!32=menu%+196 $menu%!36=&7000021 $0$(menu%+40)="Info":� m%=0 $(menu%+40)="Font" $menu%!52=0 $"0menu%!56=menu%+196:� m%=0 menu%!56=menu%+272 $,menu%!60=&7000021 $62$(menu%+64)="Font":� m%=0 $(menu%+64)="Extras" $@menu%!76=0 $J0menu%!80=menu%+272:� m%=0 menu%!80=menu%+348 $Tmenu%!84=&7000021 $^4$(menu%+88)="Extras":� m%=0 $(menu%+88)="Panels" $hmenu%!100=0 $r+menu%!104=menu%+348:� m%=0 menu%!104=-1 $|menu%!108=&7000021 $�7$(menu%+112)="Panels":� m%=0 $(menu%+112)="Restart" $�$menu%!124=0:� m%=0 menu%!124=&80 $�+menu%!128=-1:� m%=0 menu%!128=menu%+400 $�menu%!132=&7000021 $�5$(menu%+136)="Restart":� m%=0 $(menu%+136)="Save" $�menu%!148=2 $�menu%!152=menu%+400 $�menu%!156=&7000021 $�$(menu%+160)="Save" $�menu%!172=&80 $�menu%!176=-1 $�menu%!180=&7000021 $�$(menu%+184)="Quit" %$(menu%+196)="Font" %menu%?208=7 %menu%?209=2 %&menu%?210=7 %0menu%?211=0 %:menu%!212=130 %Dmenu%!216=44 %Nmenu%!220=0 %X%menu%!224=0:� font%=0 menu%!224=1 %bmenu%!228=-1 %lmenu%!232=&7000021 %v$(menu%+236)="System" %�)menu%!248=&80:� font%=1 menu%!248=&81 %�menu%!252=-1 %�6menu%!256=&7000021:� myfont%=-1 menu%!256=&7400021 %�$(menu%+260)="Trinity" %�$(menu%+272)="Extras" %�menu%?284=7 %�menu%?285=2 %�menu%?286=7 %�menu%?287=0 %�menu%!288=140 %�menu%!292=44 %�menu%!296=0 %�menu%!300=0 &menu%!304=-1 &menu%!308=&7000021 &$(menu%+312)="Map" & menu%!324=&80 &*menu%!328=-1 &45menu%!332=&7000021:� picyn%<>1 menu%!332=&7400021 &>$(menu%+336)="Pictures" &H$(menu%+348)="Panels" &Rmenu%?360=7 &\menu%?361=2 &fmenu%?362=7 &pmenu%?363=0 &zmenu%!364=160 &�menu%!368=44 &�menu%!372=0 &�+menu%!376=&80:� posiyn%=1 menu%!376=&81 &�menu%!380=-1 &�menu%!384=&7000021 &�$(menu%+388)="Position" &�$(menu%+400)="Save" &�menu%?412=7 &�menu%?413=2 &�menu%?414=7 &�menu%?415=0 &�menu%!416=140 &�menu%!420=44 'menu%!424=0 'menu%!428=0 'menu%!432=k% '$menu%!436=&7000021 '.$(menu%+440)="File" '8menu%!452=&80 'Bmenu%!456=-1 'Lmenu%!460=&7000021 'V$(menu%+464)="Choices" '`!mousx%=wimp%!0:mousy%=wimp%!4 'j9� m%=0 ș "Wimp_CreateMenu",,menu%,wimp%!0-70,wimp%!4 't5� m%=1 ș "Wimp_CreateMenu",,menu%,wimp%!0-68,452 '~� '� '�ݤchangecase(a$) '�� a$="" ="" '�wrd$="" '�� a=1 � �(a$) '�l=�(�a$,a,1)) '�� l>64 � l<90 l+=32 '�� l>215 � l<223 l+=32 '�� l>191 � l<215 l+=32 '�wrd$+=�(l) '�� a '� =wrd$ ( ( ݤremove(a$) (� a$="" ="" (wrd$="" ((� a=1 � �(a$) (2l=�(�a$,a,1)) (<p%=0 (F� l<47 p%=1 (P� l>57 � l<65 p%=1 (Z� l=32 p%=0 (d� p%=0 wrd$+=�(l) (n� a (x =wrd$ (� (���thenorand (� reali$=i$ (�� (�thenyn%=0:postn%=260 (�!then%(1)=�reali$,",and then") (�"then%(2)=�reali$,", and then") (�!then%(3)=�reali$," and then") (�then%(4)=�reali$,", then") (�then%(5)=�reali$,",then") (�then%(6)=�reali$,"then") (�then%(7)=�reali$,", and") (�then%(8)=�reali$,",and") )then%(9)=�reali$," and") )then%(10)=�reali$,",") )� a%=1 � 10 )"@� then%(a%)<postn% � then%(a%)>0 thenyn%=a%:postn%=then%(a%) ),� a% )6Ȏ thenyn% � )@ � 1 : �doit(postn%-1,9) )J � 2 : �doit(postn%-1,10) )T � 3 : �doit(postn%-1,9) )^ � 4 : �doit(postn%-1,6) )h � 5 : �doit(postn%-1,5) )r � 6 : �doit(postn%-1,4) )| � 7 : �doit(postn%-1,5) )� � 8 : �doit(postn%-1,4) )� � 9 : �doit(postn%-1,4) )� � 10 : �doit(postn%-1,1) )�� )�� thenyn%=0 )�i$=�remspace(i$) )� �respond2 )�� )� )���doit(pntr%,wrdl%) )� thenyn%=1 )�i$=�reali$,1,pntr%) )�1reali$=�reali$,pntr%+1+wrdl%,�(reali$)-pntr%) *i$=�remspace(i$) *�respond2:�add("") * i$=reali$ *&� *0 *:ݤremspace(t$) *Dtxt$="":textflg%=0 *N� a%=1 � �(i$) *X<� �t$,a%,1)<>" " � textflg%=1 txt$+=�t$,a%,1):textflg%=1 *b� a% *lt$=txt$ *vtxt$="":textflg%=0 *�� a%=�(t$) � 1 �-1 *�@� �t$,a%,1)<>" " � textflg%=1 txt$=�t$,a%,1)+txt$:textflg%=1 *�� a% *� =txt$ *� *� ��respond *�altered%=1 *�oldtime%=� *�i$=�fixstring(i$+�(0)) *�i$=�changecase(i$) *��thenorand *�� *� +��respond2 +=� i$=stng$ � nifok%=1 �add(strng$):nifok%=0:�decidepics:� +� renw%=1 �noneed:� + i$=�remove(i$) +*� nifok%=1 �gonner:� +4@� sleep%=1 � �-6000<sleepoldtime% �add("Zzzzzzzzzzzzz..."):� +>� swear%=5 �notspeak:� +H� i$="" �nothing:�add(t$):� +R?� i$=oldword$ � i$<>"" notimes%+=1 � oldword$=i$:notimes%=0 +\(� i$=oldword$ � notimes%>4 �repeat:� +f-� �i$,"sheep")>0 � �i$,ec$(1))>0 �welsh:� +p� �i$,ec$(2))>0 �swear:� +z� �i$,ec$(3))>0 �swear:� +�� �i$,ec$(4))>0 �swear:� +�� �i$,ec$(5))>0 �swear:� +�A� �i$,ec$(6))>0 �add("Ooh! That's hard language isn't it!"):� +�� �i$,ec$(7))>0 �swear:� +�� �i$,ec$(8))>0 �swear:� +�� �i$,ec$(9))>0 �swear:� +�� �i$,ec$(10))>0 �swear:� +�� �i$,ec$(11))>0 �swear:� +�� �i$,ec$(12))>0 �swear:� +�� �i$,ec$(13))>0 �swear:� +�� �i$,ec$(1))>0 �naughty:� +�� �i$,"shut up")>0 �tense:� +�� �i$,"shutup")>0 �tense:� ,� �i$,"go away")>0 �tense:� ,� �i$,4)="say " �say:� ,� �i$,4)="tell" �tell:� ,$� �i$,6)="print " �print:� ,.� �i$,4)="look" �look:� ,8*� �i$,7)="examine" �muchmorespecific:� ,B*� �i$,7)="inspect" �muchmorespecific:� ,L*� �i$,7)="observe" �muchmorespecific:� ,V� �i$,5)="exits" �exits:� ,`� �i$,4)="open" �open:� ,j� �i$,4)="shut" �close:� ,t� �i$,5)="close" �close:� ,~� �i$,3)="inv" �inv:� ,�� �i$,2)="go" �go:� ,�� �i$,3)="run" �go:� ,�� �i$,4)="move" �go:� ,�� �i$,4)="walk" �go:� ,�� �i$,6)="travel" �go:� ,�� �i$,4)="read" �read:� ,�� �i$,5)="write" �write:� ,�� �i$,6)="scrawl" �write:� ,� � �i$,8)="scribble" �write:� ,�%� �i$,9)="northeast" �northeast:� ,�%� �i$,9)="southeast" �southeast:� ,�%� �i$,9)="southwest" �southwest:� - %� �i$,9)="northwest" �northwest:� - � �i$,5)="north" �north:� -� �i$,4)="east" �east:� -� �i$,5)="south" �south:� -(� �i$,4)="west" �west:� -2� �i$,2)="up" �up:� -<� �i$,4)="down" �down:� -F� �i$,7)="descend" �down:� -P� �i$,5)="climb" �up:� -Z� �i$,6)="ascend" �up:� -d� �i$,3)="get" �get:� -n� �i$,4)="grab" �get:� -x� �i$,4)="take" �get:� -�� �i$,6)="snatch" �get:� -�� �i$,6)="obtain" �get:� -�� �i$,7)="pick up" �get:� -�� �i$,6)="pickup" �get:� -�� �i$,4)="wear" �get:� -�� �i$,7)="collect" �get:� -�� �i$,4)="give" �give:� -�� �i$,6)="donate" �give:� -�� �i$,4)="drop" �drop:� -�� �i$,6)="unlock" �unlock:� -�� �i$,4)="lock" �lock:� -�� �i$,3)="eat" �eat:� -�� �i$,5)="scoff" �eat:� .� �i$,7)="swallow" �eat:� .� �i$,7)="consume" �eat:� .� �i$,4)="bite" �eat:� ."� �i$,5)="taste" �eat:� .,� �i$,6)="nibble" �eat:� .6� �i$,5)="drink" �drink:� .@� �i$,3)="ask" �ask:� .J� �i$,3)="put" �put:� .T� �i$,3)="saw" �saw:� .^� �i$,3)="cut" �saw:� .h� �i$,3)="hit" �violence:� .r� �i$,4)="kill" �violence:� .|� �i$,4)="stab" �violence:� .�� �i$,4)="kick" �violence:� .� � �i$,5)="fight" �violence:� .� � �i$,5)="wound" �violence:� .�!� �i$,6)="murder" �violence:� .� � �i$,5)="punch" �violence:� .� � �i$,5)="thump" �violence:� .� � �i$,5)="whack" �violence:� .�� �i$,4)="slap" �violence:� .� � �i$,5)="smash" �violence:� .� � �i$,5)="break" �violence:� .�� �i$,3)="buy" �buy:� .�� �i$,8)="purchase" �buy:� .�� �i$,5)="order" �buy:� /� �i$,5)="smell" �smell:� /� �i$,5)="sniff" �smell:� /� �i$,6)="listen" �listen:� /&� �i$,4)="hear" �listen:� /0+� �i$,4)="kiss" � �i$,4)="snog" �kiss:� /:� �i$,5)="mould" �mould:� /D#� �i$,10)="make mould" �mould:� /N%� �i$,12)="create mould" �mould:� /X(� �i$,15)="make impression" �mould:� /b*� �i$,17)="create impression" �mould:� /l1� �i$,5)="sleep" �add("You are not tired."):� /vG� �i$,5)="score" �add("There is no score, just finish the game!"):� /�K� �i$,4)="wait" � zone%=2 �add("You wait for a few seconds."):�police:� /�O� �i$,4)="wait" � zone%=3 �add("You wait for a few seconds."):�policemaze:� /�C� �i$,4)="wait" � zone%=1 �add("You wait for a few seconds."):� /�� �i$,3)="dig" �dig:� /�P� �i$,6)="search" �add("You find nothing that you have not already seen."):� /�� �i$,"no ")>0 �no:� /�!� �i$,"no")>0 � �(i$)=2 �no:� /�� �i$,"yes ")>0 �yes:� /�#� �i$,"yes")>0 � �(i$)=3 �yes:� /�� �i$,"ok")>0 �yes:� /�� �i$,"oui")>0 �linguist:� /�� �i$,"non")>0 �linguist:� /�� �i$,"nein")>0 �linguist:� 0� �i$,"ja")>0 �linguist:� 0� �i$,"bonjour")>0 �hling:� 0!� �i$,"guten tag")>0 �hling:� 0 !� �i$,"au revoir")>0 �gling:� 0* � �i$,"thankyou")>0 �thank:� 04!� �i$,"thank you")>0 �thank:� 0>� �i$,"bye")>0 �bye:� 0H� �i$,"hello")>0 �hello:� 0R � �i$,"good day")>0 �hello:� 0\!� �i$,"greetings")>0 �hello:� 0f� �i$,"gooday")>0 �hello:� 0p� �i$,"hi ")>0 �hello:� 0z� i$="hi" �hello:� 0�� �i$,"yo ")>0 �hello:� 0�� �i$,8)="probably" �prob:� 0�� �i$,5)="maybe" �prob:� 0�C� �i$,"archimedes")>0 �add("Archimedes - quality computers."):� 0�D� �i$,"acorn")>0 �add("Acorn - best computer company around."):� 0�6� �i$,"oxford")>0 �add("Oxford - a great city."):� 0�E� �i$,"london")>0 �add("Why do you talk of our great capital?"):� 0�E� �i$,"birmingham")>0 �add("Hmm, Birmingham's a lovely place."):� 0�� �i$,"amiga")>0 �sick:� 0�� �i$,"sega")>0 �sick:� 0�� �i$,"nintendo")>0 �sick:� 0�� �i$,"atari")>0 �sick:� 0�� �i$,"ibm")>0 �sick:� 1 � �i$,"macintosh")>0 �sick:� 1B� �i$,"chris")>0 � �i$,"allen")>0 �add("Greetings, author."):� 1D� �i$,"claire")>0 � �i$,"allen")>0 �add("Hi, it's my sister!"):� 1$M� �i$,"paul")>0 � �i$,"allen")>0 �add("So you know my brother do you?"):� 1.:� �i$,"blair")>0 �add("Shut-up and go away, Blair!"):� 18 � �i$,"i love you")>0 �luv:� 1B� �i$,"i luv you")>0 �luv:� 1L-� �i$,"you love")>0 love$="love":�Ilove:� 1V+� �i$,"you luv")>0 love$="luv":�Ilove:� 1`-� �i$,"i love")>0 love$="love":�Youlove:� 1j+� �i$,"i luv")>0 love$="luv":�Youlove:� 1t� �i$,"luv")>0 �love:� 1~� �i$,"help")>0 �help:� 1�"� �i$,8)="because ":�because:� 1�� i$="please":�please:� 1�4� i$="pretty please with sugar on top":�sucker:� 1�� �i$,6)="it is ":�itis:� 1�� �i$,4)="its ":�its:� 1�� �i$,7)="it was ":�itwas:� 1�� �i$,5)="i am ":�iam:� 1�� �i$,3)="im ":�im:� 1�� �i$,"love")>0 �love:� 1�� �i$,ec$(14))>0 �naughty:� 1�� �i$,5)="sorry":�sorry:� 1�-� �i$,4)="beep":� �(7):�add("B E E P."):� 2 Q� i$="restart" �warning(3,"","Restarting will lose","the current game.",""):� 2 �� �i$,3)="map" �add("Your position is marked by the red spot."):wimp%!0=maphan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp%:� 2� �i$,7)="picture" � 2+ș "XOS_ReadModeVariable",�,3 � ,,cols% 2(#� cols%<>15 � picyn%=1 picyn%=2 22"� cols%=15 � picyn%=2 picyn%=1 2<�� picyn%=0 �add("The pictures have not been loaded.") � � picyn%=2 �add("You are not in a 16-colour mode.") � �add("The pictures..."):wimp%!0=picciehan%:ș"Wimp_GetWindowState",,wimp%:wimp%!28=-1:ș"Wimp_OpenWindow",,wimp% 2F� 2P� 2Z:� �i$,4)="info" �add("Gorm v1.40 By Chris Allen."):� 2d0� i$="quit" �add("What's the magic word?"):� 2nF� i$="quit please" �add("Bye then."):a$=�(100):ș &400DD,apphan%:� 2xI� i$="time" �add("You glance at your expensive digital watch; "+�$):� 2�>� i$="basic" �add("Try f12 and then typing in 'Basic'."):� 2��� i$="load" � i$="save" � i$="append" � i$="delete" � i$="wipe" �add("I'll leave that repetative task to the operating system."):� 2�A� i$="why" �add("I'm supposed to be asking the questions."):� 2�� �i$,2)="ne" �northeast:� 2�� �i$,2)="se" �southeast:� 2�� �i$,2)="sw" �southwest:� 2�� �i$,2)="nw" �northwest:� 2�A� �i$,3)="die" �add("You have no desire to kill yourself."):� 2�� �(i$)=1 �single:� 2��lastresort 2�� 2� 2� ��look 32� i$<>"look" � i$<>"look " �muchmorespecific:� 3 � e=1 � 9 33� rooms$(roomno%,e)<>"" �add(rooms$(roomno%,e)) 3"� e 3, �exits 36flag%=0 3@� e=1 � 10 3J&� objects$(roomno%,e)<>"" flag%+=1 3T� e 3^� flag%>0 � 3h flagtwo%=0 3r t$="You can also see; " 3| � flag%=1 � 3� flagtwo%=1 3� � l=1 � 10 3�Z � objects$(roomno%,l)<>"" t$+=�firstl(objects$(roomno%,l))+objects$(roomno%,l)+"." 3� � l 3� � 3� e=0:l=0 3� � flagtwo%=0 � 3� � 3� l+=1 3�_ � objects$(roomno%,l)<>"" e+=1:t$+=�firstl(objects$(roomno%,l))+objects$(roomno%,l)+", " 3� � e>=flag%-1 3� � l=l+1 � 10 3�p � objects$(roomno%,l)<>"" t$=�t$,1,�(t$)-2)+" and "+�firstl(objects$(roomno%,l))+objects$(roomno%,l)+"." 4 � l 4 � 4 �add(t$) 4&� 401�decidepics:�decidepos:� zone%=2 �checkpolpos 4:� zone%=3 �polposmaze 4D%� roomno%=46 nifok%=1:�decidepics 4N;� roomno%=40 mapyn%(40)=1:roomno%=39:�add(""):�halflook 4X� roomno%=221 � 4b}mapyn%(221)=1:roomno%=222:�add("'Oi, you!' a woman cries cries, 'Get outta m'house - NOW!'. You go out onto the street.") 4l3� mapyn%(222)=0 mapyn%(222)=1:�look � �halflook 4v� 4�� 4� 4���halflook 4��add(rentry$(roomno%)) 4�flag%=0 4�� e=1 � 10 4�&� objects$(roomno%,e)<>"" flag%+=1 4�� e 4�� flag%>0 � 4� flagtwo%=0 4� t$="You can see; " 4� � flag%=1 � 4� flagtwo%=1 5 � l=1 � 10 5Z � objects$(roomno%,l)<>"" t$+=�firstl(objects$(roomno%,l))+objects$(roomno%,l)+"." 5 � l 5 � 5* e=0:l=0 54 � flagtwo%=0 � 5> � 5H l+=1 5R_ � objects$(roomno%,l)<>"" e+=1:t$+=�firstl(objects$(roomno%,l))+objects$(roomno%,l)+", " 5\ � e>=flag%-1 5f � l=l+1 � 10 5pp � objects$(roomno%,l)<>"" t$=�t$,1,�(t$)-2)+" and "+�firstl(objects$(roomno%,l))+objects$(roomno%,l)+"." 5z � l 5� � 5� �add(t$) 5�� 5�1�decidepics:�decidepos:� zone%=2 �checkpolpos 5�� zone%=3 �polposmaze 5�%� roomno%=46 nifok%=1:�decidepics 5�k� roomno%=40 roomno%=39:�add("You feel you are intruding, so return to the garden."):�add(""):�halflook 5�� roomno%=221 � 5Ԙmapyn%(221)=1:roomno%=222:�add("The woman comes up to you. 'Oi, you!' she cries, 'Get outta me house - NOW!'. You go out onto the street."):�add("") 5�3� mapyn%(222)=0 mapyn%(222)=1:�look � �halflook 5�� 5�� 5� 6ݤfirstl(myline$) 6 ftl$="a " 6ml$=�myline$,1,1) 6$Ȏ ml$ � 6.&� "a","e","i","o","u" : ftl$="an " 68� 6B =ftl$ 6L 6V ��open 6` openyn%=0 6j!� �i$,"door")>0 � roomno%=2 � 6t openyn%=1 6~f� exits(2,2)=0 t$="You try to open the door, but it is locked." � t$="The door is all ready open." 6�� 6�#� �i$,"door")>0 � roomno%=305 � 6�%openyn%=1:t$="You open the door." 6�� 6�#� �i$,"door")>0 � roomno%=179 � 6� openyn%=1 6�h� exits(179,1)=0 t$="You try to open the door, but it is locked." � t$="The door is all ready open." 6�� 6�I� �i$,"crate")>0 � roomno%=27 openyn%=1:t$="The crate won't open up." 6�L� �i$,"window")>0 � roomno%=83 openyn%=1:t$="The window is jammed shut." 6�i� �i$,"bag")>0 � roomno%=29 openyn%=1:t$="The baker looks too moody for you to go prying in his bag." 6�L� �i$,"window")>0 � roomno%=26 openyn%=1:t$="The window is jammed shut." 7 L� �i$,"gate")>0 � roomno%=15 openyn%=1:t$="The gates are firmly bolted." 7 O� �i$,"book")>0 � �gotorhere("book")=1 openyn%=1:t$="You open up the book." 7R� �i$,"novel")>0 � �gotorhere("novel")=1 openyn%=1:t$="You open up the novel." 7R� �i$,"bible")>0 � �gotorhere("bible")=1 openyn%=1:t$="You open up the bible." 7(P� �i$,"barrel")>0 � roomno%=65 openyn%=1:t$="The barrels are firmly closed." 72�� �i$,"bottle")>0 � �gotorhere("bottle")=1 � fire%=0 openyn%=1:t$="The bottle has a top which is protected against children - you've never been able to open those things." 7<Z� �i$,"purse")>0 � �gotorhere("purse")=1 openyn%=1:t$="The zip to the purse is stuck." 7F&� �i$,"suitcase")>0 � roomno%=83 � 7P openyn%=1 7Z"t$="The case is already open." 7d� suitcase%=0 � 7nLsuitcase%=1:t$="You open the case. A snooker cue falls onto the ground." 7xc%=0 7�� a%=1 � 10 7�:� objects$(83,a%)="" � c%=0 c%=1:objects$(83,a%)="cue" 7�� 7�#� c%=0 objects$(83,�(10))="cue" 7�� 7�� 7�?� openyn%=0 t$="I do not understand what you want to open." 7��add(t$) 7�� 7� 7���close 7�closeyn%=0 7�!� �i$,"door")>0 � roomno%=2 � 8closeyn%=1 8m� exits(2,2)=3 t$="You try to close the door, but it is stuck open." � t$="The door is all ready closed." 8� 8"#� �i$,"door")>0 � roomno%=305 � 8,'closeyn%=1:t$="You close the door." 86� 8@#� �i$,"door")>0 � roomno%=179 � 8Jcloseyn%=1 8Tp� exits(179,1)=15 t$="You try to close the door, but it is stuck open." � t$="The door is all ready closed." 8^� 8hL� �i$,"gate")>0 � roomno%=15 closeyn%=1:t$="The gates are already shut." 8rN� �i$,"window")>0 � roomno%=83 closeyn%=1:t$="The window is already shut." 8|N� �i$,"window")>0 � roomno%=26 closeyn%=1:t$="The window is already shut." 8�N� �i$,"book")>0 � �gotorhere("book")=1 closeyn%=1:t$="You close the book." 8�Q� �i$,"novel")>0 � �gotorhere("novel")=1 closeyn%=1:t$="You close the novel." 8�Q� �i$,"bible")>0 � �gotorhere("bible")=1 closeyn%=1:t$="You close the bible." 8�>� �i$,"suitcase")>0 � roomno%=83 closeyn%=1:Ȏ suitcase% � 8�,� 0 : t$="The suitcase is already shut." 8�+� 1 : t$="The suitcase has stuck open." 8�� 8�A� closeyn%=0 t$="I do not understand what you want to close." 8��add(t$) 8�� 8� 8���mould 8�#t$="You have nothing to mould." 9�� �gotorhere("blob")=1 � �i$,"blob")>0 t$="You have nothing to mould the blob into.":� roomno%=2 t$="You press the blob into the keyhole and pull it out. Voila! A perfect impression!":mould%=1 9�add(t$) 9� 9& 90 ��fire 9:fire%=0 9D�add("") 9NAt$="You hear a woosh as if something has created a fireball." 9X@rooms$(78,2)="There are charred remains on the ground here." 9b#rooms$(78,3)="":rooms$(78,4)="" 9l9abbrev$(78,1)="Chars":rentry$(78)="The charred area." 9vwimp%!0=maphan%:�redrawmap 9��� roomno%=78 t$="There is a loud 'woosh' as the bonfire ignites the meths and shoots out a massive fireball, unfortunately it heads straight at you. There is no way you can survive.":nifok%=1 9��decidepics 9��add(t$) 9�� 9� 9���smell 9�(t$="You can smell nothing peculiar." 9�Ȏ roomno% � 9�* � 76 : t$="You can smell some meths." 9� � 78 : Ȏ fire% � 9�4 � 0 : t$="There is a burnt smell in the air." 9�= � 1,2 : t$="You can smell the smoke from the bonfire." 9� � :4 � 65 : t$="There is a strong smell of alcohol." :8 � 67,73 : t$="There is a faint smell of chemicals." :, � 60,69 : t$="You can smell old metal." : ; � 51,49 : t$="There is an old musty smell in the air." :*D � 50,52,64 : t$="There is a sweet smell of alcohol in the air." :4N � 13,34,35,39 : t$="You can smell the beautiful fragrance of the garden." :>T � 38,41,285,288,289,290,286,287,291,292 : t$="You can smell nothing but grass." :HG � 3,4,5,8,9,10 : t$="The air smells artificial and far too clean." :R? � 22,23,83,25,26,27 : t$="The air smells stale and dusty." :\A � 37,84 : t$="You can smell the old woodwork of the church." :fB � 16,17,18,44,46 : t$="There is a 'rotten' smell in the air." :p& � 45 : t$="You can smell danger." :z+ � 29 : t$="You can smell stale bread." :�, � 30 : t$="You can smell rotting meat." :�1 � 20 : t$="There is a faint smell of bread." :�0 � 19 : t$="There is a faint smell of meat." :�< � 250 : t$="There is a strong, sweet smell of flowers." :�� :��add(t$) :�� :� :���listen :�#t$="You hear nothing peculiar." :�Ȏ roomno% � :�= � 85 : � drugged%=1 t$="You can hear the guard snoring." :�< � 73 : t$="You can hear the fizzing from some bottles." ;A � 76 : t$="You can hear the flies buzzing around the tramp." ;D � 78 : � fire%>0 t$="You can hear the crackling of the flames." ;2 � 81,82 : t$="You can hear the ballet music." ;$M � 66,63,67,33,54,61,68 : t$="You can hear the fountain in the distance." ;.H � 62 : t$="You can hear the fountain splattering the water around." ;8= � 49 : t$="There is some singing going on to the north." ;Bf � 50 : t$="You can hear nothing but the bellowing of the drunks who are dancing in front of you." ;L1 � 51 : t$="You can hear some faint singing." ;V< � 29 : t$="You can hear the baker mumbling to himself." ;`= � 30 : t$="You can hear the butcher talking to himself." ;j] � 1 : t$="There is the sound of tens of people all trying to do their shopping at once." ;t? � 22,23,83,25,26,27 : t$="It seems extra quiet down here." ;~: � 47 : t$="You can hear some people laughing wildly." ;�6 � 45 : t$="There is nothing but deathly silence." ;�O � 37 : � crier%=1 t$="You can hear the young girl wailing uncontrollably." ;�D � 11,2,6 : t$="You can hear the commotion at the market-place." ;�C � 253 : t$="You can only hear the old woman groaning in pain." ;�A � 310 : t$="You can hear the old woman chanting to herself." ;�W � 268,269,270,271,272,273,274 : t$="You can hear the roaring engines of the cars." ;�� ;�� zone%=2 � zone%=3 � ;� � a=1 � 8 ;�� exits(roomno%,a)=police%(1) � exits(roomno%,a)=police%(2) � exits(roomno%,a)=police%(3) t$="You hear some footsteps in the distance." ;�� a ;�p� police%(1)=roomno% � police%(2)=roomno% t$="You can hear the policeman, mumbling to himself, next to you." <