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."
<