1610996bc8a4ad22f55b0b7e662fc7e738695cd6
[beyond-the-titanic.git] / src / BEYOND.PAS
1 {//-------------------------------------------------------------------------}\r
2 {/*                                                                         }\r
3 {Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }\r
4 {                                                                           }\r
5 {This file is part of Supernova.  Supernova is free software; you can       }\r
6 {redistribute it and/or modify it under the terms of the GNU General Public }\r
7 {License as published by the Free Software Foundation; either version 2     }\r
8 {of the License, or (at your option) any later version.                     }\r
9 {                                                                           }\r
10 {This program is distributed in the hope that it will be useful,            }\r
11 {but WITHOUT ANY WARRANTY; without even the implied warranty of             }\r
12 {MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                       }\r
13 {                                                                           }\r
14 {See the GNU General Public License for more details.                       }\r
15 {                                                                           }\r
16 {You should have received a copy of the GNU General Public License          }\r
17 {along with this program; if not, write to the Free Software                }\r
18 {Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.}\r
19 {                                                                           }\r
20 {Original Source: 1990 Scott Miller                                         }\r
21 {Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }\r
22 {*/                                                                         }\r
23 {//-------------------------------------------------------------------------}\r
24 {****************************************************************************}\r
25 {*                          BEYOND THE TITANIC                              *}\r
26 {*    Written by Scott Miller with Turbo Pascal V.2.  Began May 12, '84.    *}\r
27 {*                           Shareware Version                              *}\r
28 {*                             Copyright 1987                               *}\r
29 {$C-,K-,V-,R-****************************************************************}\r
30 \r
31 { Last modified: July 23, 1987 }\r
32 \r
33 const\r
34      Q        = '#';\r
35      VMax     = 65;\r
36      NMax     = 89;\r
37      RMax     = 76;\r
38      Null     = -1;\r
39 \r
40 type\r
41      ComSet         = set of 0..VMax;\r
42      CharSet        = set of Char;\r
43      PlayersObjects = set of 0..NMax;\r
44      Str14          = string[14];\r
45      Str80          = string[80];\r
46      Str240         = string[240];\r
47      SaveGame       = record\r
48        aInven,\r
49        aKitSet,\r
50        aCabiSet  :PlayersObjects;\r
51        aPanelCon,\r
52        aSlotCon,\r
53        aCompCon,\r
54        aRopeCon,\r
55        aTic,\r
56        aYearDial,\r
57        aPrm,\r
58        aMnRm,\r
59        aSc,\r
60        aShots,\r
61        aShRm,\r
62        aRx       :integer;\r
63        aEv       :CharSet;\r
64        aCode,\r
65        aLoc      :Str14;\r
66        aKeyHole  :boolean;\r
67       end;\r
68 \r
69 var\r
70      WordList       : file of Str14;\r
71      Things         : file of integer;\r
72      Objects        : file of PlayersObjects;\r
73      GameSave       : file of SaveGame;\r
74      DiskSave       : SaveGame;\r
75      Input,\r
76      Again,\r
77      Line           : Str80;\r
78      V{erb}         : array [0..VMax,1..5] of Str14;\r
79      N{oun}         : array [0..NMax,1..5] of Str14;\r
80      R{oom}         : array [0..NMax] of integer;\r
81      P{lace}        : array [0..RMax] of PlayersObjects;\r
82      RmSh           : set of 0..14;\r
83      OneWordCommands: Comset;\r
84      Mov{able},\r
85      Inven{tory},\r
86      KitSet,\r
87      CabiSet        : PlayersObjects;\r
88      Word,\r
89      LastNoun,\r
90      Drive,\r
91      Code,\r
92      Loc{ation},\r
93      SepWord        : Str14;\r
94      Rooms1, Rooms2,\r
95      Special1, Special2 : file of Str240;\r
96      Text1, Text2   : Str240;\r
97      Line1          : file of Str80;\r
98      Verb,\r
99      Noun, Noun2,\r
100      PanelCon,\r
101      RopeCon,\r
102      CompCon,\r
103      SlotCon,\r
104      RopeOld,\r
105      Tic,\r
106      YearDial,\r
107      DayDial,\r
108      Prm,  {Player Room}\r
109      MnRm, {Monster Room}\r
110      Sc{ore},\r
111      Shots,\r
112      DialNum,\r
113      Stuff,\r
114      ShRm, {Shuttle Room}\r
115      m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,\r
116      Rx, {deserted road}\r
117      Ox, {ocean bottom}\r
118      x, y, o        : integer;\r
119      Flag,\r
120      FlagSA         : char;\r
121      Ev{ent}        : CharSet;\r
122      Attack,\r
123      Skip,\r
124      Back,\r
125      KeyHole,\r
126      Verbose        : boolean;\r
127 \r
128 \r
129 \r
130 {$Ia:AdParser.PAS}{  <--- Loads in sentence logic.    <*********************}\r
131 \r
132 \r
133 {$Ia:Commands.PAS}{  <--- Loads in misc. procedures.  <*********************}\r
134 \r
135 \r
136 {$Ia:WordList.PAS }{  <----- CALLS UP THE VERBS & NOUNS <*******************}\r
137 \r
138 \r
139 {$Ia:Objects.PAS }{   <----- CALLS UP THE VERBS & NOUNS <*******************}\r
140 \r
141 \r
142 {===================}\r
143 overlay procedure DefaultAnswers1;\r
144 var o : integer;\r
145 begin\r
146 \r
147 CASE VERB OF\r
148 \r
149 22        :begin if(Prm in[59..68])then\r
150                   begin RmSh:=RmSh-[ShRm];RS(84)end;\r
151             if flasoff and (Prm in [6..24])then RL(54) else\r
152              if Verbose then DescribeRm\r
153               else begin Verbose:=true;DescribeRm;Verbose:=false;end;\r
154             if(23 in p[Prm])and(MnRm=Prm)then RL(357);\r
155             if Back then begin Attack:=False; Back:=False;end\r
156            end;\r
157 \r
158 18        :if inven=[] then RL(116)\r
159              else\r
160                begin\r
161                  writeln('You have in your possession...');\r
162                    for o:= 0 to NMax do\r
163                     begin\r
164                      if(o in inven)then\r
165                       if(o=74)then\r
166                        writeln('an ',n[o,1])else writeln('a ',n[o,1]);\r
167                      if(ropecon in inven)and(o=ropecon)then\r
168                       writeln('  The rope is tied to the ',n[o,1],'.');\r
169                      if(o=74)and(en('p'))then RL(174);\r
170                      if(o=89)and(en('i'))then RL(321);\r
171                     end;\r
172                end;\r
173 \r
174 11     :case noun of\r
175        60:Diagnose;\r
176        2:if(en('b'))then RL(198) else RL(199);\r
177        29:begin RL(89);if(en('a'))then RL(200) else RL(201);end;\r
178        57:if(ropecon<>Null)then\r
179             writeln('The rope is tied to the ',n[ropecon,1],'.')\r
180           else RL(133);\r
181        65:if(Prm in[59..68])then RS(84)else Line:='l';\r
182        8:RL(202);\r
183        7:RL(163);\r
184        70:RL(164);\r
185        52:RL(165);\r
186        74:RL(166);\r
187        23:RS(70);\r
188        32:RL(253);\r
189        13:RL(167);\r
190        22:RL(226);\r
191        1:if(Prm=42)and(13 in p[42])then RL(167);\r
192        21:RL(227);\r
193        9:if(Prm=49)then RL(228)else if(Prm>62)then RS(68)else RL(229);\r
194        69:RL(355);\r
195        77:RL(403);\r
196        37:RL(295);\r
197        27:RL(394);\r
198        89:RL(338);\r
199        18:if(Prm in[63..70])then RS(68)else RL(348);\r
200        46,66:If(Prm in[58,59,63,69])then begin\r
201        TextColor(12);RS(83);TextColor(m2)end;\r
202        87:RL(230);\r
203        84:RL(231);\r
204        34:begin RL(189);\r
205            if(Shots>0)then writeln('is about ',Shots*10,' percent full.')\r
206            else Writeln('is empty.')end;\r
207        15:if(84 in p[Prm])then RL(180)else If(71 in p[Prm])then RL(182)\r
208           else RL(181);\r
209     56,44:if(en('r'))then RL(51) else RL(52)\r
210        else if not(noun in[1,12,14,15,17,18,19,22,31,36,50,\r
211              54,67,69,73,79,80,84,87,88])and(random(3)=1)then\r
212             case random(3) of\r
213              0  :RL(407);\r
214              1  :writeln('Yea, it''s definitely a ',n[noun,1],'!');\r
215              2  :writeln('It looks like any other ',n[noun,1],'.');\r
216             end\r
217             else writeln('You see nothing special about the ',n[noun,1],'.')\r
218        end;\r
219 \r
220 41         :begin writeln('Time passes');y:=wherey;for o:=1 to 6 do\r
221               begin gotoxy(11+o,y-1);writeln('.');sound(o*99);delay(30)end;\r
222               if(Prm in[59..68])then sound(20)else nosound end;\r
223 \r
224 43..52     :if(Prm in[6..24])and(FlasOff)then RL(14)else\r
225              if(Prm=69)then RL(358)else RL(144);\r
226 \r
227 57,58      :begin Attack:=False;\r
228              if(Prm in[6..24])and(FlasOff)then RL(14)else RL(190);end;\r
229 \r
230   end {of case}\r
231 end;  {of DefaultAnswers1}\r
232 {-------------------}\r
233 overlay procedure DefaultAnswers2;\r
234 var o : integer;\r
235 begin\r
236 \r
237 CASE VERB OF\r
238 \r
239 29    :if(noun in Mov)then\r
240         if(noun in inven)then\r
241          begin FlagSA:='r';\r
242           case Noun2 of\r
243         39:if(en('o'))then begin RL(186);Vanish(noun);\r
244             kitset:=kitset+[noun];r[noun]:=Prm;end\r
245            else RL(185);\r
246         68:if(Prm=34)then\r
247             if(SlotCon=Null)then begin RL(186);Vanish(noun);\r
248              SlotCon:=Noun;r[noun]:=Prm;end\r
249             else Say(68,'being used')\r
250            else\r
251             if(noun=63)and(Prm=58)then\r
252              begin RL(337);KeyHole:=True;r[63]:=Prm;inven:=inven-[63];end\r
253             else RL(327);\r
254         88:begin RL(293);vanish(noun);r[noun]:=random(4)+51;end;\r
255         47,53,73:if(Prm in[0..6,9,10,13,41..43])then\r
256            begin RL(307);vanish(noun);end;\r
257         11:if(en('k'))then begin RL(186);Vanish(noun);\r
258             CabiSet:=CabiSet+[noun];r[noun]:=Prm;end\r
259            else RL(187);\r
260         26:if(Prm=76)and(noun=57)then begin RL(409);Vanish(57)end;\r
261         49:if(PanelCon=Null)and(noun in[2,7,8,13,27,32,51,52,63,77])then\r
262             begin RL(186);Vanish(noun);PanelCon:=Noun;r[noun]:=Prm;end\r
263            else RL(188);\r
264         30:if(noun=70)then\r
265             if not(en('d'))then\r
266              begin Ev:=Ev+['d'];RL(69);Vanish(70);r[70]:=Prm;end\r
267             else Say(70,'in the dirt')\r
268            else Crazy\r
269           end;{of case}\r
270 \r
271           if(FlagSA<>'s')then\r
272            begin\r
273             if(SepWord='to')then\r
274              if(noun2 in[4,6,9,11,14,16,22,30,50,59,61,64,65,69,75])then\r
275               begin RL(186);Vanish(noun);r[noun]:=Prm;end\r
276              else RL(197);\r
277             if(SepWord='at')or(SepWord='near')or(SepWord='behind')then\r
278              if(noun2 in[0,4,6,9,11,12,14,16,17,20..23,26,28,30,35,39,43,\r
279                          50,53,54,59,61,62,64..69,72,73,75,78..80])then\r
280               begin RL(186);Vanish(noun);r[noun]:=Prm;end\r
281              else RL(197);\r
282             if(SepWord='under')then\r
283              if(noun2 in[4,15,16,20,23,59,60,61,75])then\r
284               begin RL(186);Vanish(noun);r[noun]:=Prm;end\r
285              else RL(197);\r
286             if(SepWord='in')then\r
287              if(noun2 in[6,16,43,47,30,50,59,64,65,72,78,80,84])then\r
288               begin RL(186);Vanish(noun);r[noun]:=Prm;end\r
289              else RL(197);\r
290             if(FlagSA<>'s')then Crazy;\r
291            end\r
292           end\r
293          else writeln('First you must have the ',n[noun,1],'.')\r
294         else Crazy;\r
295 \r
296   end {of case}\r
297 end;  {of DefaultAnswers2}\r
298 {-------------------}\r
299 overlay procedure DefaultAnswers3;\r
300 var o : integer;\r
301 begin\r
302 \r
303 CASE VERB OF\r
304 \r
305 31,63      :if(Verb=63)and(Prm<>MnRm)then RL(395)\r
306             else\r
307              if(Prm=MnRm)then\r
308               begin Attack:=False;\r
309                if(input='hi')or(input='hello')or(input='bye')then RL(396)else\r
310                if(copy(input,1,6)='follow')then RL(397)else\r
311                 case random(5) of\r
312                  0:RL(365);1:RL(398);2:RL(399);3:RL(400);4:RL(401)\r
313                 end\r
314               end\r
315              else RL(123);\r
316 \r
317 33         :RL(124);\r
318 \r
319 38         :case noun of\r
320              83:RL(262);\r
321              23:begin RL(366);DropAll;Ev:=Ev+['r'];Attack:=False end\r
322              else RL(125);\r
323             end;\r
324 \r
325 16         :if(MnRm=Prm)then begin Attack:=False;RL(372)end else\r
326             if(en('r'))then RL(373)else\r
327             if(Prm<15)and(70 in p[12])then RL(374)else  RL(371);\r
328 \r
329 19         :if(noun=Null)then RL(136)else Crazy;\r
330 24         :if(noun=7)then RL(422)else\r
331             if(noun in[26,6,7,22,36,17,50,65,73,74,80,79,30,84])then RL(126)\r
332             else Crazy;\r
333 21         :RL(127);\r
334 40         :Crazy;\r
335 \r
336 8          :if(noun in[73,80])or(noun=Null)then\r
337              if(noun<>Null)then RL(36)\r
338              else if(here(73))or(here(80))then RL(36)else RL(37)\r
339             else RL(53);\r
340 \r
341 12         :RL(38);\r
342 2          :if(noun in[4,35,39,8,11,12,14,20,21,30,57,43,59,67,70,75])then\r
343               RL(43)else RL(44);\r
344 \r
345 15         :if(noun in mov)then\r
346              if(sepword='to')then\r
347               if(noun2=23)then\r
348                begin RL(62);Vanish(noun);Attack:=False end\r
349               else Crazy\r
350              else RL(60)\r
351             else RL(61);\r
352 \r
353 1          :if(verbose)then\r
354               begin verbose:=false;RL(134);end\r
355              else begin verbose:=true;RL(135);end;\r
356 \r
357 13         :RL(77);\r
358 23         :RL(78);\r
359 \r
360 60         :case noun of\r
361             43,12:RL(252);\r
362             35:RL(288)\r
363             else RL(78);\r
364             end;\r
365 \r
366 25         :if(Prm>62)and(Noun in[9,18,19,41])then RL(350)else RL(78);\r
367 34         :RL(79);\r
368 \r
369   end {of case}\r
370 end;  {of DefaultAnswers3}\r
371 {-------------------}\r
372 overlay procedure DefaultAnswers4;\r
373 var o : integer;\r
374 begin\r
375 \r
376 CASE VERB OF\r
377 \r
378 20         :RL(81);\r
379 35         :RL(82);\r
380 \r
381 6          :if(noun=23)and(here(40))then begin vanish(40);RL(84);end\r
382              else\r
383               if here(40)then\r
384                if(noun2=Null)or(noun2=40)then\r
385                 case noun of\r
386                  57:RL(259);\r
387                  60:RL(260)\r
388                  else writeln('At the last moment you decide to spare',\r
389                        ' the ',n[noun,1],'''s life!')\r
390                 end\r
391                else Crazy\r
392               else RL(83);\r
393 \r
394 30         :if(noun in [39,43,12,26,6,22,47,49,68,78,17,11,\r
395                50,65,73,74,80,79,30])then RL(93) else RL(94);\r
396 \r
397 54         :begin write('Would you like to SAVE your game first (Y or N)?  ');\r
398              read(kbd,flag);if(upcase(flag)<>'N')then SAVE else writeln('No.');\r
399              write('Are you still sure you want to quit? ');\r
400              read(kbd,flag);if(upcase(flag)='Y')then\r
401               begin RL(367);delay(999);window(1,1,80,25);clrscr;close(rooms1);\r
402                close(rooms2);close(special1);close(special2);close(line1);\r
403               HALT end else RL(264)end;\r
404 53         :if(Prm in[27,30])then RL(123) else RL(145);\r
405 59         :If(noun=23)then RL(368)else Diagnose;\r
406 \r
407 55         :if(noun=74)then\r
408               if(en('p'))then\r
409                 begin Ev:=Ev-['p'];RL(169);end\r
410               else RL(168)\r
411             else\r
412             if(noun=89)then\r
413               if(en('i'))then\r
414                 begin\r
415                  Ev:=Ev-['i'];RL(322);\r
416                  if(Prm in[59,63..68])then begin RS(66);DEAD;end;\r
417                 end\r
418               else RL(323)\r
419             else Crazy;\r
420 \r
421 56     :if(noun=Null)or(noun in[60,23])or(noun in Mov)then\r
422          case noun of\r
423           23:RL(369);\r
424           60,Null:RL(193);\r
425           7:RL(194)\r
426           else RL(195);\r
427          end\r
428         else RL(196);\r
429 \r
430 3       :case noun of\r
431          7:RL(235);\r
432          2:if(en('b'))then RL(236)else RL(237);\r
433          62:RL(238);\r
434          65:RL(239);\r
435          74:RL(240);\r
436          78:RL(241);\r
437          84,40,50,68,85:RL(242)\r
438          else Crazy;\r
439         end;\r
440 \r
441 7      :begin if(noun=Null)then noun:=30;\r
442          if(noun in[30,36,47,50,71,72,79])then\r
443           case noun of\r
444            30,47,50,71:if(Prm in[5..22,44..49])then RL(247) else RL(248);\r
445            36:RL(249);\r
446            72:RL(250);\r
447            79:RL(251);\r
448           end\r
449          else Crazy;\r
450         end;\r
451 \r
452 \r
453   end   {of CASE.}\r
454 end;    {of DefaultAnswers4}\r
455 {-------------------}\r
456 overlay procedure DefaultAnswers5;\r
457 var o: integer;\r
458 begin\r
459 \r
460 CASE VERB OF\r
461 \r
462 9         :if noun<>1 then\r
463              if(noun in Inven)then\r
464                if(noun=74)and(en('p'))then RL(170)\r
465           else if(noun=89)and(en('i'))then RL(335)\r
466           else begin\r
467                  inven:=inven-[noun];writeln(n[noun,1],': Dropped.');\r
468                  R[noun]:=Prm;\r
469                end\r
470              else\r
471                writeln('You don''t have the ',n[noun,1],'.')\r
472            else\r
473              begin\r
474               if(74 in inven)and(en('p'))then RL(170)else\r
475               if(89 in inven)and(en('i'))then RL(335)else\r
476               DropAll;\r
477             end;\r
478 \r
479 26        :case noun of\r
480          2:if not(en('b'))then\r
481               begin\r
482                 Ev:=Ev+['b'];\r
483                 RL(3);end\r
484             else Say(noun,'peeled');\r
485          7:RL(162);\r
486         57:if(ropecon<>Null)then\r
487               begin\r
488                 ropecon:=Null;\r
489                 RL(117);end\r
490             else Say(noun,'untied');\r
491         62:RL(238)\r
492          else Crazy;\r
493          end; {end of OPEN }\r
494 \r
495   end {of case}\r
496 end;  {of DefaultAnswers5}\r
497 {-------------------}\r
498 overlay procedure DefaultAnswers6;\r
499 var o : integer;\r
500 begin\r
501 \r
502 CASE VERB OF\r
503 \r
504 28,27     :case noun of\r
505            23:RL(369);\r
506            29:if not(en('a'))then\r
507                 begin Ev:=Ev+['a'];\r
508                 RL(120);end\r
509               else begin Ev:=Ev-['a'];\r
510                 RL(121);end;\r
511            57:if(ropecon<>Null)and not(ropecon in inven)\r
512                     and(r[ropecon]<>Prm)then\r
513                   if(ropecon in mov)then begin\r
514                     RL(57);writeln('...it''s a ',n[ropecon,1],'!');\r
515                     r[ropecon]:=Prm;Ev:=Ev-['u'];\r
516                     if(ropecon=29)and not(flasoff)then DescribeRm;end\r
517                   else RL(56)\r
518                else RL(122);\r
519            8:begin RL(243);RL(244);play(9999,3500,0);play(3499,2000,1);\r
520               play(1999,1000,2);play(999,200,5);play(199,8,16);Ev:=Ev+['e'];\r
521               n[36,5]:=Q;n[78,5]:='glass';n[68,1]:='slot';n[66,4]:=Q;\r
522               Ev:=Ev-['j'];\r
523               moveto(30);\r
524               if(MnRm=Prm)then RS(73);\r
525              end;\r
526            81:if not(en('j'))then\r
527                if KeyHole then\r
528                 begin Ev:=Ev+['j'];RL(326);play(2000,2001,200);end\r
529                else RL(123)\r
530               else\r
531                begin Ev:=Ev-['j'];\r
532                 if Keyhole then begin RL(326);play(2001,2000,200)end\r
533                 else RL(123);\r
534                 if(Prm in[59..68])then begin nosound;RS(62);DEAD;end;\r
535                end;\r
536            36:begin\r
537                if(Prm > 57)then if(Prm = 58)then RL(123)else\r
538                 begin RS(63);DEAD;end;\r
539               end\r
540              else RL(122);\r
541            end; {of case}\r
542 \r
543 62         :begin write('You have ',Sc,' of 1000 points',\r
544                         ', giving you the rank of ');Tic:=Tic-1;\r
545               case Sc of\r
546               0..99:writeln('beginner.');\r
547               100..249:writeln('novice adventurer.');\r
548               250..399:writeln('adventurer third class.');\r
549               400..549:writeln('adventurer second class.');\r
550               550..699:writeln('adventurer first class.');\r
551               700..849:writeln('expert adventurer.');\r
552               850..999:writeln('master adventurer.')\r
553               else writeln('dead adventurer!')\r
554               end;\r
555             Attack:=False;\r
556             if(MnRm=Prm)then RL(370)\r
557             end;\r
558 \r
559   end {of case}\r
560 end;  {of DefaultAnswers6}\r
561 {-------------------}\r
562 overlay procedure DefaultAnswers7;\r
563 var o : integer;\r
564 begin\r
565 \r
566 CASE VERB OF\r
567 \r
568 14      :if(noun<>1)then\r
569           if(noun in Mov)then\r
570            if not(noun in inven)then\r
571             begin\r
572             Stuff:=0;\r
573             for o:=0 to NMax do if(o in inven)then Stuff:=Stuff+1;\r
574             if(Stuff < 6)then\r
575              if(en('r'))and(inven<>[])then RL(87)\r
576              else begin\r
577                    Vanish(Noun);inven:=inven+[noun];\r
578                    writeln(n[noun,1],': Taken.');\r
579                    if(noun=70)then Ev:=Ev-['d'];\r
580                   end\r
581             else RL(234)\r
582             end\r
583            else writeln('You already have the ',n[noun,1],'.')\r
584           else Crazy\r
585          else if(en('r'))then RL(88) else\r
586             begin flag:='0';Stuff:=0;\r
587              for o:=0 to NMax do if(o in inven)then Stuff:=Stuff+1;\r
588              if(Stuff < 7)then\r
589               for o:=0 to NMax do\r
590                begin\r
591                 if r[o]=Prm then\r
592                  if(Stuff+1 < 7)then\r
593                   begin\r
594                    vanish(o);inven:=inven+[o];Stuff:=Stuff+1;\r
595                    writeln(n[o,1],':  Taken.');flag:='1';\r
596                    if(o=70)then Ev:=Ev-['d'];\r
597                   end\r
598                  else\r
599                   begin flag:='1';\r
600                   writeln(n[o,1],': You have too many objects already!');end\r
601                end\r
602              else RL(234);\r
603              if(flag='0')then RL(49)\r
604             end; {of 14}\r
605 \r
606 4,5       :RL(420);\r
607 \r
608 64        :SAVE;\r
609 \r
610   end {of case}\r
611 end;  {of DefaultAnswers7}\r
612 {-------------------}\r
613 overlay procedure DefaultAnswers8;\r
614 var o : integer;\r
615 begin\r
616 \r
617 CASE VERB OF\r
618 \r
619 10         :if(noun in [2,52])then\r
620               if(noun=2)then\r
621                 if(en('b'))then begin\r
622                   RL(45); Ev:=Ev+['c'];inven:=inven+[51];\r
623                   Vanish(2);Sc:=Sc+10;end\r
624                 else RL(46)\r
625               else begin RL(47);Ev:=Ev+['n'];Sc:=Sc+15;Vanish(52);end\r
626             else writeln('I don''t think the ',n[noun,1],\r
627                          ' would do much for your digestive system!');\r
628 \r
629 42         :case noun of\r
630             74:if not(en('p'))then\r
631                 if not(en('i'))then\r
632                  begin RL(20);inven:=inven+[74];r[74]:=Null;Ev:=Ev+['p'];end\r
633                 else RL(320)\r
634                else Say(74,'on');\r
635             89:if not(en('i'))then\r
636                 if not(en('p'))then\r
637                  begin RL(319);vanish(89);inven:=inven+[89];Ev:=Ev+['i'];end\r
638                 else RL(318)\r
639                else Say(89,'on your head')\r
640             else RL(128);\r
641             end;\r
642 \r
643 17,0       :if(noun2=Noun)then Crazy else\r
644             if(noun2 in Mov)or(Noun2=Null)then\r
645             case Noun of\r
646              2:begin RL(21);Vanish(2);Sc:=Sc+25;r[51]:=Prm;end;\r
647              60:begin RL(22);DEAD;end;\r
648              52:begin RL(34);Vanish(52);end;\r
649              23:if(noun2=null)then RL(369)\r
650                 else begin Vanish(noun2);Attack:=False;\r
651                  writeln('The monster grabs the ',n[noun2,1],' and eats it!');\r
652                      end;\r
653              7:begin RL(35);Vanish(7);r[52]:=Prm;Ev:=Ev+['I'];end\r
654              else if(verb=0)then writeln('At the last moment you decide to',\r
655                  ' spare the ',n[noun,1],'''s life!')\r
656                   else RL(216);\r
657              end{of case}\r
658              else Crazy;\r
659 \r
660 39         :if((SepWord='to')or(SepWord='off'))and(Noun2=Null)then\r
661              case Noun of\r
662               29:if(SepWord='to')then begin Ev:=Ev+['a'];RL(120);end\r
663                  else begin Ev:=Ev-['a'];RL(121);end;\r
664               13:RL(148);\r
665               20:RL(149);\r
666               65:RL(150)\r
667              else Crazy end\r
668             else RL(80);\r
669 \r
670   end {of case}\r
671 end;  {of DefaultAnswers8}\r
672 {-------------------}\r
673 overlay procedure DefaultAnswers9;\r
674 var o : integer;\r
675 begin\r
676 \r
677 CASE VERB OF\r
678 \r
679 32    :if(34 in inven)then\r
680         if(shots>0)then\r
681          begin\r
682          Shots:=Shots-1;\r
683          for x:=1 to (26-(4*(6-Shots))) do\r
684             begin play(300,350,11-Shots*2);play(320,370,11-Shots*2);end;\r
685           if(noun=34)and(noun2<>34)and(noun2<>Null)and(SepWord='at')then\r
686              begin noun:=noun2; noun2:=34; SepWord:='with';end;\r
687           if((noun2=34)and(noun<>34)and(SepWord='with'))or\r
688             ((noun<>34)and(SepWord='s'))then\r
689       case noun of\r
690        1:begin;Crazy;Shots:=Shots+1;end;\r
691        2,7,8,13,27,29,32,40,51,52,63,74,77,89:begin vanish(noun);\r
692           writeln('The ',n[noun,1],' vanishes in an explosion of light!');\r
693             if(noun=74)and(en('p'))then begin RL(232);DEAD;end;\r
694          end;\r
695        48:begin RL(222);RL(223);Ev:=Ev+['g'];p[40]:=p[40]-[48];\r
696            if not(en('P'))then begin Ev:=Ev+['P'];Sc:=Sc+25;end;end;\r
697        12,26:RL(224);\r
698        23:begin case random(4)of 0:RL(375);1:RL(376);2:RL(377);3:RL(378)end;\r
699            Attack:=False;\r
700           end;\r
701        45:RL(315);\r
702        60,56,44:begin RL(233);DEAD;end\r
703        else writeln('A blinding ray strikes the ',n[noun,1],', but it is',\r
704                       ' only slightly blackened.');\r
705       end {of shoot case}\r
706           else if(noun=34)and(noun2=Null)then RL(213)\r
707           else begin;Crazy;Shots:=Shots+1;end;\r
708          end\r
709         else begin writeln('...click!');play(25,32,9);end\r
710        else RL(208);\r
711 \r
712   end {of case}\r
713 end;  {of DefaultAnswers9}\r
714 {-------------------}\r
715 overlay procedure DefaultAnswers10;\r
716 var o : integer;\r
717 begin\r
718 \r
719 CASE VERB OF\r
720 \r
721 36         :if(noun in mov)then\r
722              if(noun in inven)then\r
723               if((noun in[2,7,52,29])or\r
724                  (noun2 in[2,7,23,29,47,52,53,73,88]))and(noun<>noun2)then\r
725                begin\r
726                 if(noun=2)or(noun2=2)then begin RL(95);vanish(2);\r
727                   r[51]:=Prm;end;\r
728                 if(noun=7)or(noun2=7)then begin RL(35);vanish(7);\r
729                   Ev:=Ev+['I'];r[52]:=Prm;end;\r
730                 if(noun=29)or(noun2=29)then begin RL(96);vanish(29);end;\r
731                 if(noun=52)or(noun2=52)then begin RL(34);vanish(52);end;\r
732                 if(noun2=88)then begin RL(293);vanish(noun);\r
733                   if(noun=2)then noun:=51;if(noun=7)then noun:=52;\r
734                   r[noun]:=random(4)+51;end;\r
735                 if(Prm in[0..6,9,10,13,41..43])and(noun2 in[73,53,47])then\r
736                   begin RL(306);vanish(noun);end;\r
737                 if(noun2=23)then begin Attack:=False;Vanish(noun);RL(379);\r
738                   writeln(n[noun,1],' out of mid-flight and eats it',\r
739                         ' in one giant gulp!')end;\r
740                end\r
741               else begin writeln('The ',n[noun,1],' collides with the ',\r
742                 n[noun2,1],' but nothing interesting happens.');\r
743                 Vanish(noun);r[noun]:=Prm;end\r
744              else writeln('First you must have the ',n[noun,1],'.')\r
745             else Crazy;\r
746 \r
747 37         :if(noun=57)then\r
748              if(sepword='to')then\r
749               if not(noun2 in[1,15,17,22,30,46,47,50,52,72,73,79,80,83])then\r
750                if(ropecon=Null)then begin\r
751                 ropecon:=noun2;\r
752                 writeln('The rope is firmly tied to the ',n[noun2,1],'.');\r
753                 if(noun2=57)then RL(48);end\r
754                else writeln('It is already tied to the ',n[ropecon,1],'.')\r
755               else RL(50)\r
756              else Crazy\r
757             else Crazy;\r
758 \r
759 61         :begin RL(245);read(kbd,flag);\r
760              if(upcase(flag)<>'N')then\r
761               begin RL(380);delay(999);window(1,1,80,25);clrscr;close(rooms1);\r
762                close(rooms2);close(special1);close(special2);close(line1);\r
763                assign(rooms1,'BEYOND.com');execute(rooms1)end\r
764              else RL(264)\r
765             end;\r
766 \r
767 65        :RESTORE;\r
768 \r
769   end {of case}\r
770 end;  {of DefaultAnswers10}\r
771 {===================}\r
772 overlay procedure SpecialAnswers1;\r
773 \r
774 begin\r
775 FlagSA:='r';\r
776 if Present then\r
777 CASE Prm OF\r
778 \r
779 3       :case verb of\r
780   44,58 :moveto(1);\r
781   20,52 :if(noun=6)then RL(40);\r
782     14  :if(noun=57)and not(en('o'))then RL(419);\r
783    6    :if(noun=57)and(here(40))and((noun2=Null)or(noun2=40))then\r
784              begin\r
785                RS(4); tic:=15; moveto(4); Ev:=Ev+['A']; Sc:=Sc+25;\r
786                if(en('o'))then\r
787                  for o:= 0 to 57 do begin\r
788                    if(o in kitset)then r[o]:=Prm;\r
789                    if(r[o]=3)then r[o]:=Prm;end\r
790              end;\r
791    26   :if(noun=39)then\r
792              if not(en('o'))then\r
793                begin Ev:=Ev+['o'];RL(328); for o:=2 to 57 do\r
794                  if(o in kitset)then r[o]:=Prm;end\r
795              else Say(noun,'opened');\r
796    3  :if(noun=39)then\r
797              if(en('o'))then\r
798                begin Ev:=Ev-['o'];RL(186); for o:=2 to 57 do\r
799                  if(o in kitset)then r[o]:=Null;end\r
800              else Say(noun,'shut');\r
801   17,28,27 :if(noun in [6,57,39,59])then RL(29);\r
802   24,11   :case noun of\r
803        39  :if(en('o'))then\r
804                if kitset=[] then begin RL(329);end\r
805                else begin RL(330);for o:= 0 to 57 do\r
806                    if(o in kitset)then writeln(' a ',n[o,1]);end\r
807              else RL(331);\r
808        57 :RL(10);\r
809        73 :RL(19);\r
810        6 :DescribeRm;\r
811            end;\r
812          end; {of 3}\r
813 \r
814 4      :case verb of\r
815    43..52,20:RL(7);\r
816     55  :if(noun=35)then begin RL(332);Ev:=Ev-['B'];end;\r
817   42,3:if noun=35 then begin RL(8); Ev:=Ev+['B'];end\r
818            else if(noun=39)then\r
819              if(en('o'))then\r
820                begin Ev:=Ev-['o'];RL(186); for o:=0 to 57 do\r
821                  if(o in kitset)then r[o]:=Null;end\r
822              else Say(noun,'shut');\r
823   29,37 :if(noun=35)and(noun2=60)then begin\r
824              RL(8);Ev:=Ev+['B'];end;\r
825    26   :if(noun=35)and(en('B'))then begin RL(332);Ev:=Ev-['B'];end\r
826            else if(noun=39)then\r
827              if not(en('o'))then\r
828                begin Ev:=Ev+['o'];RL(328); for o:=0 to 57 do\r
829                  if(o in kitset)then r[o]:=Prm;end\r
830              else Say(noun,'opened');\r
831    19,2:if(noun in[6,64])or(noun=Null)then\r
832              if(en('B'))then RL(9)\r
833              else begin RL(0);DEAD;end;\r
834     24,11:case noun of\r
835        39  :if(en('o'))then\r
836                if kitset=[] then begin RL(329);end\r
837                else begin RL(330);for o:= 0 to 57 do\r
838                    if(o in kitset)then writeln(' a ',n[o,1]);end\r
839              else RL(331);\r
840        35 :RL(12);\r
841        73 :RL(19);\r
842        6 :DescribeRm;\r
843            end;  {of case}\r
844          end; {of 4}\r
845 \r
846 end {of case}\r
847 else SA\r
848 end; {of SP1}\r
849 {-------------------}\r
850 overlay procedure SpecialAnswers2;\r
851 \r
852 begin\r
853 FlagSA:='r';\r
854 if Present then\r
855 Case Prm of\r
856 \r
857 5       :case verb of\r
858    45   :moveto(6);\r
859    2    :if(noun=79)then RL(263);\r
860            end;\r
861 \r
862 6       :case verb of\r
863    46   :moveto(5);\r
864   43..52:if FlasOff then RL(14)\r
865          else case verb of\r
866            43:begin Ox:=0;RL(286);moveto(7);end;\r
867            45:moveto(9); 49:moveto(8);\r
868               end;\r
869              end; {of 6}\r
870 \r
871 7       :case verb of\r
872   23..25,11:if(noun in[6,36,73,0,15,64,67])then RS(9);\r
873   43..50 :if FlasOff then RL(14)\r
874           else\r
875            begin\r
876             If(Verb in[43,47,48])then Ox:=Ox+1;\r
877             If(Verb in[44,49,50])then Ox:=Ox-1;\r
878             if(Ox<1)then begin RL(286);moveto(6)end\r
879             else\r
880              begin\r
881               RL(333);\r
882               if(random(20)=2)then begin writeln;RS(9);\r
883                if not(en('K'))then begin Ev:=Ev+['K'];Sc:=Sc+15;end;end;\r
884              end;\r
885            end;\r
886   28,17,6:if(noun=36)or(noun=15)then begin RS(10);DEAD;end;\r
887   31   :if(input='help')then begin RL(334);moveto(6)end;\r
888          end;  {of 7}\r
889 \r
890 8       :case verb of\r
891    48,58:if FlasOff then RL(14) else moveto(6);\r
892   43..52:if FlasOff then RL(14);\r
893   11:if(noun in [46,79])then RS(12)\r
894          else if(noun in [15,30])then RL(28);\r
895    38 :if(noun=46)then begin SA;writeln('It feels jagged.');end;\r
896          end; {of 8}\r
897 \r
898 9         :case verb of\r
899    43..52 :if FlasOff then RL(14)\r
900          else case verb of\r
901            46:moveto(6);47:moveto(10);49:moveto(11);\r
902               end;\r
903            end; {of 9}\r
904 \r
905 10        :case verb of\r
906    50,58 :if FlasOff then RL(14)\r
907          else moveto(9);\r
908    43..52:if FlasOff then RL(14);\r
909   19,2:if(noun in[17,80])then begin RL(0);DEAD;end;\r
910            end; {of 10}\r
911 \r
912 end {of case}\r
913 else SA\r
914 end; {of SP2}\r
915 {-------------------}\r
916 overlay procedure SpecialAnswers3;\r
917 \r
918 begin\r
919 FlagSA:='r';\r
920 if Present then\r
921 Case Prm of\r
922 \r
923 14       :case verb of\r
924    46,48 :if FlasOff then RL(14)\r
925           else if(verb=46)then moveto(11) else moveto(15);\r
926   43..52 :if FlasOff then RL(14);\r
927           end; {of 14}\r
928 \r
929 15     :case Verb of\r
930    52,2 :if(en('d'))and(en('t'))then\r
931            begin RL(63);moveto(16);end else RL(64);\r
932   19   :RL(64);\r
933   7    :RL(65);\r
934   14    :if(noun in[57,70])then begin inven:=inven+[noun];r[noun]:=Null;\r
935            if(noun=70)then Ev:=Ev-['d']\r
936            else Ev:=Ev-['t'];SA;writeln(n[noun,1],':  Taken.');end;\r
937   45,49  :if(flasoff)then RL(14) else moveto(14);\r
938    44    :RL(73);\r
939   24,11:if(noun=17)and not(en('u'))then RL(74)\r
940            else if(noun=17)and(en('a'))then RL(75);\r
941   17,36,29,9:case noun of\r
942    70:if((noun2 in[30,42])or(noun2=Null))and(verb<>9)then\r
943          if not(en('d'))then\r
944           begin RL(69);Ev:=Ev+['d'];r[70]:=Prm;inven:=inven-[70];end\r
945          else RL(67)\r
946         else if(verb=9)then begin end else RL(66);\r
947    57:if(noun2=17)and(verb<>17)then begin\r
948           if(here(ropecon))and(ropecon<>57)then begin\r
949             RL(71);inven:=inven-[57];r[57]:=Prm;\r
950             if(ropecon=70)then Ev:=Ev+['t'];end\r
951           else begin RL(70);vanish(57); end;\r
952          end else begin end\r
953    else if(verb in[9,29,36])and(noun2=17)and(noun in mov)then\r
954          if(here(ropecon))and(noun=ropecon)then begin RL(76);\r
955           inven:=inven-[noun];r[noun]:=Null;\r
956           if(ropecon=29)then Ev:=Ev+['u'];end\r
957          else begin RL(72);inven:=inven-[noun];r[noun]:=17;end\r
958       end;{of noun case}\r
959          end;{of 15}\r
960 \r
961 16       :case verb of\r
962    51,2   :moveto(15);\r
963    52    :RL(85);\r
964   0,3..18,20..21,26..40,42,53,55,56,60:RL(86);\r
965    19,61:begin RS(18);Ev:=Ev-['a'];Ev:=Ev+['r'];Sc:=Sc+60;\r
966           moveto(17);dropall;if(here(2))then begin r[2]:=Null;\r
967           r[51]:=Prm;end;r[57]:=Null;end;\r
968          end;{of 57}\r
969 \r
970 end  {of Case}\r
971 else SA\r
972 end; {of SP3}\r
973 {-------------------}\r
974 overlay procedure SpecialAnswers4;\r
975 \r
976 begin\r
977 FlagSA:='r';\r
978 if Present then\r
979 Case Prm of\r
980 \r
981 19      :case verb of\r
982    48,51,58:if(flasoff)then RL(14)else begin RL(311);moveto(18);end;\r
983    47,52,57:if(flasoff)then RL(14)else begin RL(309);moveto(20);end;\r
984          end;{of stairs}\r
985 \r
986 20      :case verb of\r
987    50,51,58:if(flasoff)then RL(14)else begin RL(310);moveto(19);end;\r
988    11,24,25,23:if(noun=67)then RL(90)\r
989      else if(noun in[12,43])and not(en('E'))then begin RL(92);\r
990             r[32]:=20;Sc:=Sc+15;Ev:=Ev+['E'];end;\r
991   14,38:if(noun in[67,12])then RL(91);\r
992   43..49,57:if(noun=Null)or(noun in[12,43])then RL(215);\r
993         end;{of 20}\r
994 \r
995 21       :case verb of\r
996     50   :if(flasoff)then RL(14)else moveto(18);\r
997     47   :if(flasoff)then RL(14)else moveto(22);\r
998    2,51:if(flasoff)then RL(14)else\r
999             if(noun=64)or(noun=Null)then moveto(23);\r
1000     45   :RL(97);\r
1001     49,44,43:RL(258);\r
1002   11     :if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;\r
1003         end;\r
1004 \r
1005 22       :case verb of\r
1006     50   :if(flasoff)then RL(14)else moveto(21);\r
1007     2,51 :if(flasoff)then RL(14)else\r
1008             if(noun=64)or(noun=Null)then moveto(23);\r
1009     44   :RL(97);\r
1010     47,45,49:RL(258);\r
1011     11     :if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;\r
1012         end; {of 22}\r
1013 \r
1014 23      :case verb of\r
1015    46,50 :if(flasoff)then RL(14)else moveto(21);\r
1016    43,48 :if(flasoff)then RL(14)else moveto(22);\r
1017    44..49:RL(258);\r
1018    26,27 :if(noun=26)then\r
1019            if(en('l'))then Say(26,'open')\r
1020            else begin RL(98);Ev:=Ev+['l'];p[23]:=p[23]+[69];end;\r
1021     3    :if(noun=26)then\r
1022            if(en('l'))then begin RL(171);Ev:=Ev-['l'];p[23]:=p[23]-[69];end\r
1023            else Say(26,'closed');\r
1024   2,52,57:if(en('l'))and((noun=69)or(noun=Null))then moveto(24)else RL(99);\r
1025   24,25  :if(noun=26)then RL(151);\r
1026    11    :if(noun=26)then if(en('l'))then RL(217)else RL(218)\r
1027           else if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;\r
1028         end; {of 23}\r
1029 \r
1030 24      :case verb of\r
1031    51,58:if(en('l'))then moveto(23) else RL(99);\r
1032    52,57:moveto(25);\r
1033   24,25 :if(noun=26)then RL(151);\r
1034    3    :if(noun=26)then begin RL(171);Ev:=Ev-['l'];end else\r
1035          if(noun=55)then RL(411);\r
1036    2    :if(noun=69)then Moveto(25);\r
1037    26   :if(noun=26)then begin RL(98);Ev:=Ev+['l'];end else\r
1038          if(noun=55)then RL(412);\r
1039    11   :if(noun=26)then if(en('l'))then RL(217)else RL(218)else\r
1040          if(noun=55)then RL(410);\r
1041    27,28:If(noun=55)then RL(411);\r
1042        end;\r
1043 \r
1044 end   {of case}\r
1045 else SA\r
1046 end;  {of SP4}\r
1047 {-------------------}\r
1048 overlay procedure SpecialAnswers5;\r
1049 \r
1050 begin\r
1051 FlagSA:='r';\r
1052 if Present then\r
1053 Case Prm of\r
1054 \r
1055 25     :case verb of\r
1056      43:begin writeln('The door slides open...');play(55,70,40);moveto(27);\r
1057          writeln('The door slides shut behind you.');play(70,55,40);\r
1058          if not(en('Y'))then begin Ev:=Ev+['Y'];Sc:=Sc+30 end end;\r
1059      44:moveto(32); 45:moveto(30);\r
1060      46:moveto(34); 47:moveto(28); 49:moveto(31);\r
1061      48:if(en('v')and not(en('p')))then begin Verbose:=False;moveto(35);\r
1062           RS(25);DEAD; end else moveto(35);\r
1063      50:moveto(33); 51,58:moveto(24);\r
1064      52,2:if(noun=69)or(noun=Null)then moveto(26);\r
1065      17,27,28,38:if(noun=26)then\r
1066           begin RL(413);play(55,70,45);play(69,54,45)end;\r
1067    26,40:if(noun=26)then RL(414);\r
1068         end;\r
1069 \r
1070 27      :case verb of\r
1071    44,58:begin writeln('The door slides open...');play(55,70,40);moveto(25);\r
1072           writeln('The door slides shut behind you.');delay(999);play(70,55,40)\r
1073          end;\r
1074      17,27,28,38:if(noun=26)then\r
1075           begin RL(413);play(30,40,25);play(40,30,25)end;\r
1076    26,40:if(noun=26)then RL(414);\r
1077    11  :if(noun in[20,21])then RL(103)\r
1078       else if(noun=58)then case compcon of\r
1079         Null:RL(155); 1:RS(21); 2:RS(22); 3:RS(23);\r
1080         4:begin RS(24);compcon:=Null;gotoxy(1,wherey-1);\r
1081            writeln('. tim. chamb.r c.de: ',Code,'.. ..tel.port...  .  .',\r
1082                    '... . .. ime .  p.n.l ....... ...');\r
1083            RL(105);play(29,29,40);end;end;{of case}\r
1084    53  :begin\r
1085          if(input='1')or(input='one')then begin RL(104);compcon:=1;end;\r
1086          if(input='2')or(input='two')then begin RL(104);compcon:=2;end;\r
1087          if(input='3')or(input='three')then begin RL(104);compcon:=3;end;\r
1088          if(input='4')or(input='four')then begin RL(104);compcon:=4;end;\r
1089          for y:=1 to random(40)+9 do\r
1090           begin x:=random(6000)+99;play(x,x,50);delay(9)end\r
1091        end;\r
1092    31   :if(compcon=null)then begin\r
1093           play(9,999,0);sound(999);RS(20);play(999,9,0);if not(en('J'))then\r
1094           begin Ev:=Ev+['J'];Sc:=Sc+40;end;end;\r
1095        end;\r
1096 \r
1097 28     :case verb of\r
1098    50,58:moveto(25);\r
1099    45,57:moveto(29);\r
1100    28   :if(noun in[33,10])then begin RL(137);play(31,31,450);end;\r
1101        end;\r
1102 \r
1103 29    :case verb of\r
1104    46,58:moveto(28);\r
1105    36   :if(noun2 in[33,10])and(noun in Mov)then\r
1106            if(en('M'))then\r
1107              begin RS(27);Ev:=Ev-['M','r'];Vanish(noun);r[noun]:=28;\r
1108                if not(en('N'))then begin Ev:=Ev+['N'];Sc:=Sc+55;end;\r
1109              play(28,34,600)end\r
1110            else begin Vanish(noun);r[noun]:=28;RL(179);\r
1111              if(noun in[7,8,29,34,40,51])then Ev:=Ev+['M'];end;\r
1112        end;\r
1113 \r
1114 33     :case verb of\r
1115    47,58:moveto(25);\r
1116     34  :RL(272);\r
1117    28,38:if(noun=10)then begin RL(421);x:=random(9999);case random(3) of\r
1118           0:play(x,random(9999),random(3));\r
1119           1:for y:=1 to random(300)+60 do\r
1120              begin x:=random(9999);play(x,x,2);delay(7)end;\r
1121           2:begin y:=9999;o:=0;\r
1122              repeat x:=random(9999);play(x,y,0);\r
1123                     y:=random(9999);play(y,x,0);o:=o+1;\r
1124              until o>7 end end end\r
1125        end;\r
1126 \r
1127 end {of case}\r
1128 else SA\r
1129 end; {of SP5}\r
1130 {-------------------}\r
1131 overlay procedure SpecialAnswers6;\r
1132 \r
1133 begin\r
1134 FlagSA:='r';\r
1135 if Present then\r
1136 Case Prm of\r
1137 \r
1138 30   :case verb of\r
1139    46,58:if(en('e'))then RL(212) else moveto(25);\r
1140    26,27,28,40:if(noun=49)then if(en('h'))then Say(49,'open') else RL(159)\r
1141                else\r
1142                 if(noun in[10,76])and(verb=28)then\r
1143                  begin\r
1144                  if(MnRm=30)then begin RS(76);DEAD;end;\r
1145                   if(en('e'))then\r
1146                    begin RS(29);writeln;\r
1147                     play(1,700,7);play(701,8000,1);Ev:=Ev-['e'];\r
1148        case YearDial of\r
1149               1933:begin Loc:='Civilization!';Sc:=Sc+80;RS(78);HOME;END;\r
1150         2111..2679:begin\r
1151                      Verbose:=False;moveto(41);RS(30);Verbose:=True;\r
1152                      if not(en('O'))then begin Sc:=Sc+55;Ev:=Ev+['O'];end;\r
1153                n[78,5]:=Q;n[37,5]:='glass';n[72,1]:='fence';\r
1154                n[70,1]:='hooded figure';n[70,2]:='hooded';n[70,3]:='figure';\r
1155                n[70,4]:='mutant';n[70,5]:=Q;n[3,1]:='footprints';\r
1156                n[3,2]:='footpri';n[57,1]:='parachute';n[57,2]:='parachu';\r
1157                n[35,1]:='boulder';n[35,2]:='rock';n[35,3]:='rocks';\r
1158                n[66,4]:='red';\r
1159                    end;\r
1160         0..1111   :begin writeln;RS(31);DEAD;end;\r
1161         1112..2110:begin writeln;RS(32);DEAD;end;\r
1162         2680..3789:begin writeln;RS(33);DEAD;end\r
1163              else  begin writeln;RS(34);DEAD;end;\r
1164        end; {of YearDial case}\r
1165                    end\r
1166                   else begin RL(209);play(1,9999,0)end;\r
1167                  end;\r
1168    33   :if(noun in[16,59])or(noun=Null)then begin Ev:=Ev+['e'];RL(210);end;\r
1169    35   :if(en('e'))then begin Ev:=Ev-['e'];RL(211);Attack:=False end;\r
1170    17,0,6:if(noun=49)then RL(160);\r
1171    53  :if(input=Code)then\r
1172          If(en('h'))then Say(49,'open')\r
1173          else\r
1174           begin Ev:=Ev+['h'];RL(173);play(23,24,250);Sc:=Sc+30;\r
1175             if(PanelCon<>Null)then begin r[PanelCon]:=30;Code:='R';\r
1176              writeln('Sitting inside the panel compartment is a ',\r
1177                       n[PanelCon,1],'.');end\r
1178             else RL(183);\r
1179           end\r
1180         else RL(172);\r
1181    3   :If(noun=49)then RL(159);\r
1182    39  :if(noun=25)then RL(115) else\r
1183         case noun of\r
1184         24:if(DialNum>0)and(DialNum<377)then begin RL(176);DayDial:=DialNum;end\r
1185            else RL(178);\r
1186         82:if(DialNum>-1)and(DialNum<5000)then begin RL(177);\r
1187              YearDial:=DialNum;end else RL(178);\r
1188         end;\r
1189  11,24:case noun of\r
1190    49:begin SA;if(en('h'))then if(PanelCon=Null)then RL(183)\r
1191                  else writeln('Inside the compartment is a ',n[PanelCon,1],'.')\r
1192                else RL(184);end;\r
1193    82:begin SA;writeln('The year dial is set to ',YearDial,'.');end;\r
1194    24:begin SA;writeln('The day dial is set to ',DayDial,'.');end;\r
1195    16:begin RL(203);RL(204)end;\r
1196    25:RL(115);\r
1197    38:RL(161);\r
1198       end;\r
1199        end; {of 30}\r
1200 \r
1201 end  {of case}\r
1202 else SA\r
1203 end; {of SP6}\r
1204 {-------------------}\r
1205 overlay procedure SpecialAnswers7;\r
1206 \r
1207 begin\r
1208 FlagSA:='r';\r
1209 if Present then\r
1210 Case Prm of\r
1211 \r
1212 26     :case verb of\r
1213   51,58,2:if(noun=69)or(noun=Null)then moveto(25);\r
1214   43,48 :moveto(36); 44,49 :moveto(38); 45,47 :moveto(39); 46,50 :moveto(37);\r
1215         end;\r
1216 \r
1217 35      :case verb of\r
1218    49,58:moveto(25);\r
1219   11:case noun of\r
1220     54:RL(100);\r
1221     62:if(en('v'))then RL(205)else RL(206);\r
1222     end;\r
1223   28  :if(noun in[55,10])then\r
1224         if(en('v'))then begin RL(101);Ev:=Ev-['v'];play(40,65,80)end\r
1225         else\r
1226          begin RL(102); Ev:=Ev+['v'];play(65,40,80);\r
1227           if not(en('p'))then begin RS(28);DEAD;end\r
1228           else if(MnRm=35)then\r
1229            begin n[23,1]:='melted monster';n[23,4]:='melted';MnRm:=Null;\r
1230             RS(74);p[35]:=p[35]+[77];\r
1231             if not(en('W'))then begin Sc:=Sc+65;Ev:=Ev+['W'] end\r
1232            end\r
1233          end;\r
1234   14  :if(noun in[1,77])and(77 in p[35])then begin Sc:=Sc+10;noun:=77;end;\r
1235   55  :if(noun=74)then\r
1236         if(en('v'))then begin RS(26);DEAD end;\r
1237   38 :RL(30);\r
1238        end;\r
1239 \r
1240 36     :case verb of\r
1241   44,49,58:moveto(26);\r
1242     45  :moveto(39);\r
1243     46  :moveto(37);\r
1244     57  :if(noun=12)then RL(215);\r
1245         end;\r
1246 \r
1247 37     :case verb of\r
1248   45,47,58:moveto(26);\r
1249     43  :moveto(36);\r
1250     44  :moveto(38);\r
1251     57  :if(noun=12)then RL(215);\r
1252         end;\r
1253 \r
1254 38     :case verb of\r
1255   43,48,58:moveto(26);\r
1256     45  :moveto(39);\r
1257     46  :moveto(37);\r
1258     57  :if(noun=12)then RL(215);\r
1259    0..99:if(noun=28)or(noun2=28)then\r
1260           begin RS(35);RL(220);p[40]:=p[40]+[48];moveto(40);Ev:=Ev-['g'];\r
1261            if(MnRm=Prm)then begin RS(79);DEAD end\r
1262           end;\r
1263         end;{of 38}\r
1264 \r
1265 39     :case verb of\r
1266   46,50,58:moveto(26);\r
1267     45  :if(en('g'))then moveto(40);\r
1268     3   :if(noun=26)then if(en('g'))then RL(225) else Say(26,'shut');\r
1269     43  :moveto(36);\r
1270     44  :moveto(38);\r
1271     57  :if(noun=12)then RL(215);\r
1272         end;\r
1273 \r
1274 40     :case verb of\r
1275   46,58 :if(en('g'))then moveto(39) else RL(221);\r
1276    26   :if(noun=26)then if(en('g'))then Say(26,'open') else RL(221);\r
1277    3    :if(noun=26)then if(en('g'))then RL(225) else Say(26,'shut');\r
1278   11,14 :if(noun in[12,43,83])then RL(261);\r
1279        end;\r
1280 \r
1281 end  {of case}\r
1282 else SA\r
1283 end; {of SP7}\r
1284 {-------------------}\r
1285 overlay procedure SpecialAnswers8;\r
1286 \r
1287 begin\r
1288 FlagSA:='r';\r
1289 if Present then\r
1290 Case Prm of\r
1291 \r
1292 41     :case verb of\r
1293     43  :moveto(42);\r
1294     44  :moveto(43);\r
1295   2,19  :if(noun in[53,73,87])then\r
1296            begin RS(39);RL(287);moveto(46);Rx:=4;end;\r
1297        end;\r
1298 \r
1299 42     :case verb of\r
1300     44  :moveto(41);\r
1301     43  :RL(296);\r
1302     14  :if(noun in[13,1])and(13 in p[42])then\r
1303           begin Sc:=Sc+10;noun:=13;end;\r
1304   2,19  :if(noun in[53,73,87])then\r
1305            begin RS(39);RL(287);moveto(46);Rx:=4;end;\r
1306        end;\r
1307 \r
1308 43     :case verb of\r
1309     43  :moveto(41);\r
1310     44  :moveto(44);\r
1311   2,19  :if(noun in[53,73,87])then\r
1312            begin RS(39);RL(287);moveto(46);Rx:=4;end;\r
1313         end;\r
1314 \r
1315 44     :case verb of\r
1316     43  :moveto(43);\r
1317     46  :moveto(47);\r
1318     45  :begin RL(274);Rx:=0;moveto(46);end;\r
1319   43..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);\r
1320        end;\r
1321 \r
1322 45     :case verb of\r
1323     44  :moveto(49);\r
1324     46  :begin RL(274);Rx:=8;moveto(46);end;\r
1325     45  :begin Rx:=9;RL(274);moveto(46);end;\r
1326   43..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);\r
1327         end;\r
1328 \r
1329 46     :case verb of\r
1330     45  :begin Rx:=Rx+1;RL(274);\r
1331           if(Rx=9)then begin\r
1332           if not(en('T'))then begin Ev:=Ev+['T'];Sc:=Sc+30;end;\r
1333           moveto(45)end;\r
1334           if(Rx>86)then begin RL(340);moveto(47)end\r
1335          end;\r
1336     46  :begin Rx:=Rx-1;RL(274);\r
1337           if(Rx=8)then moveto(45);\r
1338           if(Rx<1)then moveto(44);\r
1339          end;\r
1340   43..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);\r
1341         end;\r
1342 \r
1343 47     :case verb of\r
1344   46,52,2,19:begin if(random(2)=1)then begin RS(37);DropAll;moveto(48)end\r
1345                    else begin RL(277);moveto(48)end;end;\r
1346     45  :moveto(44);\r
1347   43..50:RL(278);\r
1348         end;\r
1349 \r
1350 48     :case verb of\r
1351   45,51,2:if(random(3)=2)and(noun<>35)then begin RS(38);moveto(47)end\r
1352           else if(noun<>35)then RL(279);\r
1353    43..50:RL(279);\r
1354      14  :if(noun in[27,1])and(27 in p[48])then\r
1355            begin Sc:=Sc+20;noun:=27;end;\r
1356      11 :if(noun=35)then RL(289)\r
1357         end;\r
1358 \r
1359 end  {of case}\r
1360 else SA\r
1361 end; {of SP8}\r
1362 {-------------------}\r
1363 overlay procedure SpecialAnswers9;\r
1364 \r
1365 begin\r
1366 FlagSA:='r';\r
1367 if Present then\r
1368 Case Prm of\r
1369 \r
1370 50     :case verb of\r
1371   43,58 :begin RL(290);moveto(49);end;\r
1372   44,57 :if(noun=Null)or(noun in[88,26,50])then\r
1373           begin RS(41);if not(en('L'))then\r
1374            begin Ev:=Ev+['L'];Sc:=Sc+25;end;moveto(51);end;\r
1375     11  :case noun of\r
1376           35,50:RL(292);\r
1377           88,68:RS(42);\r
1378           46,66:RS(43);\r
1379          end;\r
1380   30,28,38,17,14:if(noun=88)then RL(294);\r
1381         end;\r
1382 \r
1383 51     :case verb of\r
1384     44  :moveto(52);\r
1385     46  :moveto(52);\r
1386     48  :moveto(53);\r
1387         end;\r
1388 \r
1389 52     :case verb of\r
1390     43  :moveto(51);\r
1391     47  :moveto(53);\r
1392     46  :moveto(51);\r
1393         end;\r
1394 \r
1395 53     :case verb of\r
1396    52,2,57:if(noun=Null)or(noun=69)then begin if not(en('Q'))then\r
1397             begin Ev:=Ev+['Q'];Sc:=Sc+30;end;moveto(55);end;\r
1398     47  :moveto(52);\r
1399     45  :moveto(53);\r
1400     49  :moveto(54);\r
1401         end;\r
1402 \r
1403 54     :case verb of\r
1404     43  :moveto(52);\r
1405     49  :moveto(53);\r
1406     44  :moveto(51);\r
1407     50  :begin if not(en('R'))then\r
1408           begin Ev:=Ev+['R'];Sc:=Sc+20;end;moveto(56);end;\r
1409         end; {verb case}\r
1410 \r
1411 55     :case verb of\r
1412   51,2,58,44:if(noun=Null)or(noun=69)then moveto(53);\r
1413    11   :if(noun in[11,45])then\r
1414           begin RL(297);if(en('k'))then RL(298) else RL(299)end;\r
1415    26,40:if(noun in[45,26,11,68])and(noun2=27)and(SepWord='with')then\r
1416            if not(en('k'))then\r
1417             begin Ev:=Ev+['k'];RS(45);for o:=2 to NMax do\r
1418              if(o in cabiset)then r[o]:=55;\r
1419              if not(en('R'))then begin Ev:=Ev+['R'];Sc:=Sc+55;end;\r
1420             end\r
1421            else Say(11,'open')\r
1422           else if(SepWord='s')then RL(317);\r
1423    29   :if(noun=27)and(noun2 in[45,26,11,68])and(SepWord='in')then\r
1424           if not(en('k'))then\r
1425            begin Ev:=Ev+['k'];RS(45);for o:=2 to NMax do\r
1426             if(o in cabiset)then r[o]:=55;\r
1427             if not(en('R'))then begin Ev:=Ev+['R'];Sc:=Sc+55;end;\r
1428            end\r
1429           else RL(216);\r
1430    3    :if(noun in[45,26,11])then\r
1431           if(en('k'))then\r
1432            begin RL(314);play(30,32,30);Ev:=Ev-['k'];\r
1433             for o:= 2 to NMax do if(o in cabiset)then r[o]:=Null;\r
1434            end\r
1435           else Say(11,'shut & locked');\r
1436   24,30 :if(noun in[26,11])then\r
1437           if(en('k'))then\r
1438            begin RL(324);\r
1439             if(cabiset=[])then RL(339)else\r
1440              for o:=0 to NMax do if(o in Cabiset)then writeln('a ',n[o,1])\r
1441            end\r
1442           else RL(299);\r
1443        end; {of 55}\r
1444 \r
1445 \r
1446 end  {of case}\r
1447 else SA\r
1448 end; {of SP9}\r
1449 {-------------------}\r
1450 overlay procedure SpecialAnswers10;\r
1451 \r
1452 begin\r
1453 FlagSA:='r';\r
1454 if Present then\r
1455 Case Prm of\r
1456 \r
1457 56     :case verb of\r
1458     47  :moveto(54);\r
1459   2,51,58:if(noun=Null)or(noun=69)then moveto(57);\r
1460         end;\r
1461 \r
1462 57     :case verb of\r
1463    46,57,2,33:if(noun=Null)or(noun=65)then\r
1464           begin n[68,1]:='keyhole';n[68,4]:='slot';moveto(58)end;\r
1465    52   :moveto(56);\r
1466         end;\r
1467 \r
1468 58     :case verb of\r
1469    45,58:moveto(57);\r
1470    43..51,20:if(en('i'))and(en('j'))and KeyHole then\r
1471          begin sound(38);RS(61);ShRm:=2;moveto(59);sound(20);\r
1472          for o:=0 to NMax do if(r[o]=58)then r[o]:=59;\r
1473          if not(en('S'))then begin Ev:=Ev+['S'];Sc:=Sc+60 end end else RL(325);\r
1474    28   :if(noun=10)then noun:=81;\r
1475    11   :if(noun=68)then if KeyHole then RL(336)else RL(404);\r
1476         end;\r
1477 \r
1478 65     :case verb of\r
1479    43,47:moveto(66);\r
1480    44,49:moveto(68);\r
1481    45,57:begin if not(en('w'))then begin Ev:=Ev+['w'];RL(346);end\r
1482                else begin RL(347);DEAD end end;\r
1483    46..50:moveto(63);\r
1484     58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
1485     51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
1486     52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
1487     14  :if(noun=63)then begin RS(65);DEAD;end;\r
1488     28  :if(noun=10)then noun:=81;\r
1489         end;\r
1490 \r
1491 66     :case verb of\r
1492     43  :RL(343);\r
1493   46,50 :moveto(65);\r
1494   45,49 :moveto(67);\r
1495     47  :moveto(64);\r
1496     48  :moveto(63);\r
1497   57,44 :begin sound(25);if not(en('V'))then begin Ev:=Ev+['V'];Sc:=Sc+30;end;\r
1498           RS(67);writeln;moveto(69);nosound;\r
1499          end;\r
1500     58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
1501     51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
1502     52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
1503     14  :if(noun=63)then begin RS(65);DEAD;end;\r
1504     28  :if(noun=10)then noun:=81;\r
1505         end; {of 66}\r
1506 \r
1507 67     :case verb of\r
1508     46  :begin RL(347);DEAD;end;\r
1509   43,48 :moveto(66);\r
1510   44,50 :moveto(68);\r
1511   45..49:moveto(64);\r
1512     58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
1513     51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
1514     52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
1515     14  :if(noun=63)then begin RS(65);DEAD;end;\r
1516     28  :if(noun=10)then noun:=81;\r
1517         end; {of 67}\r
1518 \r
1519 end  {of case}\r
1520 else SA\r
1521 end; {of SP10}\r
1522 {-------------------}\r
1523 overlay procedure SpecialAnswers11;\r
1524 \r
1525 begin\r
1526 FlagSA:='r';\r
1527 if Present then\r
1528 Case Prm of\r
1529 \r
1530 63     :case verb of\r
1531    45   :moveto(65);\r
1532    47   :moveto(66);\r
1533    49   :moveto(68);\r
1534   43..50:RL(343);\r
1535     58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
1536     51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
1537     52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
1538     14  :if(noun=63)then begin RS(65);DEAD;end;\r
1539     28  :if(noun=10)then noun:=81;\r
1540         end;\r
1541 \r
1542 64     :case verb of\r
1543    46   :moveto(67);\r
1544    48   :moveto(66);\r
1545    50   :moveto(68);\r
1546   43..50:RL(343);\r
1547     58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
1548     51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
1549     52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
1550     14  :if(noun=63)then begin RS(65);DEAD;end;\r
1551     28  :if(noun=10)then noun:=81;\r
1552         end;\r
1553 \r
1554 68     :case verb of\r
1555     43  :begin RL(347);DEAD;end;\r
1556     44  :RL(343);\r
1557     50  :moveto(63);\r
1558     49  :moveto(64);\r
1559   46,48 :moveto(65);\r
1560   45,47 :moveto(67);\r
1561     58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
1562     51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
1563     52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
1564     14  :if(noun=63)then begin RS(65);DEAD;end;\r
1565     28  :if(noun=10)then noun:=81;\r
1566         end;\r
1567 \r
1568 69     :case verb of\r
1569   28,27 :if(noun in[10,21,81,36])then RL(351);\r
1570    11   :if(noun in[10,21,81,36,20,25])then RL(352)else\r
1571          if(noun=65)then RL(353);\r
1572   43,58 :moveto(70);\r
1573         end;\r
1574 \r
1575 70     :case verb of\r
1576   44,57,2,33:if(noun=Null)or(noun=65)then moveto(69)else\r
1577          if(noun in[69,50])then moveto(71);\r
1578   43,47,48:RL(354);\r
1579   49,52 :moveto(71);\r
1580     11  :if(noun=65)then RL(353)\r
1581          else if(noun=68)then if KeyHole then RL(336)else RL(404);\r
1582        end;\r
1583 \r
1584 71     :case verb of\r
1585   48,51,58:moveto(70);\r
1586     45  :moveto(72);\r
1587     11  :if(noun=58)then RL(386)else\r
1588          if(noun=25)then RL(418);\r
1589    28,27:if(noun in[10,36])then begin RL(387);\r
1590           for o:=1 to random(12)+4 do play(random(250),random(250),random(30))\r
1591          end;\r
1592     39  :if(noun=25)then begin RL(387);\r
1593           for o:=1 to random(99)+75 do\r
1594            begin x:=random(9999);play(x,x,random(19)+10);delay(5)end\r
1595          end\r
1596         end;{ of 71}\r
1597 \r
1598 end  {of case}\r
1599 else SA\r
1600 end; {of SP11}\r
1601 {-------------------}\r
1602 overlay procedure SpecialAnswers12;\r
1603 \r
1604 begin\r
1605 FlagSA:='r';\r
1606 if Present then\r
1607 Case Prm of\r
1608 \r
1609 11      :case verb of\r
1610    5,45,47,48,50:if FlasOff then RL(14)\r
1611           else case verb of\r
1612           48:moveto(9);47:moveto(13);\r
1613           5:if(29 in inven)or(40 in inven)or(2 in inven)then\r
1614                     RL(58)\r
1615                   else begin RL(18); moveto(12);end;\r
1616           50:RL(17);\r
1617           45:if(en('C'))then moveto(14) else RL(144);\r
1618             end;\r
1619    31   :if(input='nepo egassap')and not(en('C'))then\r
1620              begin Ev:=Ev+['C']; RS(11);Sc:=Sc+35;end;\r
1621   11 :if(noun in [79,72])then if(en('C'))then RL(270)else RS(13);\r
1622   27,28:if(noun in [79,72])then RL(26);\r
1623   17,0,6:if(noun in [79,72])then RL(27);\r
1624   38  :if(noun in [79,72])then RL(30);\r
1625           end; {of 11}\r
1626 \r
1627 12     :case verb of\r
1628   4,47 :if FlasOff then RL(14)\r
1629            else case verb of\r
1630              4:begin RL(18); moveto(11);end;\r
1631                47   :RL(17);\r
1632                 end;\r
1633   43..52  :if FlasOff then RL(14);\r
1634    14  :if(noun in[70,1])and not(en('G'))then\r
1635          begin noun:=70;Ev:=Ev+['G'];Sc:=Sc+40;end;\r
1636    7   :if not(en('G'))then begin Ev:=Ev+['G'];RL(157);\r
1637           FlagSA:='r';verb:=14;noun:=70;Sc:=Sc+40;end;\r
1638           end; {of 12}\r
1639 \r
1640 13      :case verb of\r
1641    50    :if flasoff then RL(14)\r
1642             else begin moveto(11); Ev:=Ev-['q'];end;\r
1643    43    :if(en('q'))then begin RL(24); DEAD;end\r
1644             else begin RL(23); Ev:=Ev+['q'];end;\r
1645    52,19,33:RL(42);\r
1646   14    :if(noun=47)then RL(25);\r
1647   9   :begin RL(68);vanish(noun);end;\r
1648           end;{of 13}\r
1649 \r
1650 17       :case verb of\r
1651    51,19,2:RL(15);\r
1652    45    :if(flasoff)then RL(14)else moveto(18);\r
1653           end;\r
1654 \r
1655 18      :case verb of\r
1656    46    :if(flasoff)then RL(14)else moveto(17);\r
1657   49,52  :if(flasoff)then RL(14)else begin RL(308);moveto(19);end;\r
1658    47    :if(flasoff)then RL(14)else\r
1659            if not(en('F'))then begin RS(19);writeln;moveto(21);\r
1660             Ev:=Ev+['F'];Sc:=Sc+10;end\r
1661            else moveto(21);\r
1662   11     :if(noun in[79,50])then RL(254);\r
1663          end;{of 18}\r
1664 \r
1665 end  {of case}\r
1666 else SA\r
1667 end; {of SP12}\r
1668 {-------------------}\r
1669 overlay procedure SpecialAnswers13;\r
1670 \r
1671 begin\r
1672 FlagSA:='r';\r
1673 if Present then\r
1674 Case Prm of\r
1675 \r
1676 2         :case verb of\r
1677    46     :moveto(1);\r
1678    45, 44 :RL(1);\r
1679    19,2   :if(noun in[53,6,64,73])then begin RL(0);DEAD;end;\r
1680   14,27 :if noun=14 then RL(2)else\r
1681          if(noun in[1,40])and(40 in p[2])then\r
1682             begin noun:=40;Sc:=Sc+10;Verb:=14;RL(417);FlagSA:='r' end;\r
1683    11   :if(noun in[66,46])then RL(11);\r
1684    26   :if noun=14then RL(13);\r
1685          end;\r
1686 \r
1687 31     :case verb of\r
1688    48,58:moveto(25);\r
1689    14   :if not(en('I'))and(noun in[7,1])then\r
1690            begin Ev:=Ev+['I'];noun:=7;Sc:=Sc+5 end;\r
1691  23,24,11:if(noun=84)then RL(152)else\r
1692           if(noun=22)then RL(415);\r
1693        end;\r
1694 \r
1695 32     :case verb of\r
1696    43,58:moveto(25);\r
1697  11,23  :case Noun of\r
1698           61:if(en('H'))then RL(153) else begin Ev:=Ev+['H'];r[34]:=32;\r
1699                RL(154);Sc:=Sc+15;end;\r
1700          end;{of Noun case}\r
1701        end;\r
1702 \r
1703 34    :case verb of\r
1704    45,58:moveto(25);\r
1705    14   :if(noun=74)and(74 in P[34])then begin P[34]:=P[34]-[74];\r
1706            inven:=inven+[74];RL(138);Sc:=Sc+25;end;\r
1707    42   :if(noun=74)and(74 in P[34])then RL(175);\r
1708    28,27:if(noun in[10,36])then begin RL(387);\r
1709           for o:=1 to random(12)+4 do play(random(250),random(250),random(30))\r
1710          end;\r
1711    39   :if(noun=25)then begin RL(387);\r
1712           for o:=1 to random(99)+75 do\r
1713            begin x:=random(9999);play(x,x,random(19)+10);delay(5)end\r
1714          end;\r
1715    11   :case noun of\r
1716           0:RL(139);\r
1717           25:RL(418);\r
1718           21:begin;RL(140);RL(141);end;\r
1719           68:if(SlotCon=Null)then RL(143) else\r
1720               begin SA;writeln('The slot contains a ',n[SlotCon,1],'.')end;\r
1721           58:if(SlotCon=77)and not(en('x'))then\r
1722               begin Ev:=Ev+['x'];Sc:=Sc+5;RS(75)end\r
1723              else if(SlotCon=77)then RS(77)else RL(385)\r
1724          end\r
1725        end;\r
1726 \r
1727 0         :case verb of\r
1728    45     :MoveTo(1);\r
1729    44     :begin TextColor(m8);writeln('Casino Hall');TextColor(m2);RS(0)end;\r
1730   19,2    :if(noun in[53,6,64,73])then begin RL(0);DEAD;end;\r
1731   11    :if(noun=73)then RL(19);\r
1732          end;\r
1733 \r
1734 1        :case verb of\r
1735    46     :moveto(0);\r
1736    45     :moveto(2);\r
1737    43,57  :moveto(3);\r
1738    6,17   :if(noun=57)and(here(40))and((noun2=40)or(noun2=Null))then\r
1739            begin RS(16);Sc:=-500;\r
1740             Loc:='Locked Cabin';Verbose:=True;inven:=[];KitSet:=KitSet-[57];\r
1741             n[57,1]:='plastic card';n[57,2]:='card';n[57,3]:='plastic';\r
1742             n[57,4]:='elevato card';n[57,5]:='elevato';r[57]:=76;moveto(76)\r
1743            end;\r
1744  33,19,2  :if(noun in[6,53,64])then moveto(3)\r
1745           end;\r
1746 \r
1747 end  {of case}\r
1748 else SA\r
1749 end; {of SP13}\r
1750 {-------------------}\r
1751 overlay procedure SpecialAnswers14;\r
1752 \r
1753 begin\r
1754 FlagSA:='r';\r
1755 if Present then\r
1756 Case Prm of\r
1757 \r
1758 49     :case verb of\r
1759     43  :moveto(45);\r
1760   44,57 :begin RL(290);moveto(50);n[36,1]:='lever';n[36,2]:='handle';end;\r
1761   45..50:RL(291);\r
1762     11  :if(noun in[26,50])then RL(292);\r
1763     2   :if(noun=72)then RL(312);\r
1764     11  :if(noun=72)then RL(313);\r
1765         end;\r
1766 \r
1767 59     :case verb of\r
1768    43..50:begin o:=random(8)+3;writeln('You travel about ',o,' miles...');\r
1769            if(random(4)=2)then ShRm:=13 else ShRm:=Random(15);moveto(59)end;\r
1770    52,57:RL(341);\r
1771     58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
1772     51  :begin sound(30);\r
1773           if not(en('U'))then begin RS(64);writeln;Ev:=Ev+['U'];Sc:=Sc+45;end\r
1774           else RL(349);moveto(63);sound(20)end;\r
1775     14  :if(noun=63)then begin RS(65);DEAD;end;\r
1776     28  :if(noun=10)then noun:=81;\r
1777         end; {of case 59}\r
1778 \r
1779 72     :case verb of\r
1780     46  :moveto(71);\r
1781   43,44,58:moveto(73);\r
1782     45  :moveto(74);\r
1783         end;\r
1784 \r
1785 73     :case verb of\r
1786   43,45,58:moveto(72);\r
1787     46  :moveto(73);\r
1788     44  :begin moveto(74);if(MnRm=Null)then RL(356);end;\r
1789         end;\r
1790 \r
1791 74     :case verb of\r
1792   43,45 :moveto(73);\r
1793   46,58 :moveto(74);\r
1794     44  :if(MnRm=Null)then begin Verbose:=False;Moveto(75);Verbose:=True;\r
1795           RS(69);MnRm:=75;Attack:=False end else moveto(75);\r
1796         end;\r
1797 \r
1798 75     :case verb of\r
1799   43,58 :moveto(74);\r
1800    11   :if(noun in[14,61])then RL(364);\r
1801         end;\r
1802 \r
1803 76     :case verb of\r
1804    43   :RL(114);\r
1805    11   :if(noun=26)then RL(271)else\r
1806          if(noun=57)then RL(408);\r
1807         end;\r
1808 \r
1809 end  {of case}\r
1810 else SA\r
1811 end; {of SP14}\r
1812 {===================}\r
1813 procedure ScreenDraw_PlayerInput;\r
1814   begin\r
1815    gotoxy(1,23);writeln;TextColor(m5);write(chr(175),' ');\r
1816    Window(1,1,80,25);\r
1817    gotoxy(1,1);textcolor(m4);TextBackGround(m6);\r
1818    gotoxy(10,1); writeln(Tic,'  '); gotoxy(75,1); writeln(Sc,' ');\r
1819    gotoxy(35-(length(Loc)div 2),1);writeln('     ',Loc,'     ');\r
1820    gotoxy(3,25);TextBackGround(0);Window(1,2,80,25);\r
1821    textcolor(m1);BufLen:=77;\r
1822    if(Loc<>'Civilization!')then READLN(LINE)else repeat;until false;\r
1823    if(Line='r')or(Line='repeat')then Line:=Again\r
1824    else Again:=Line;\r
1825    gotoxy(1,23);TextColor(m3);writeln(chr(175));TextColor(m2);\r
1826   end;\r
1827 {-------------------}\r
1828 \r
1829 \r
1830 BEGIN\r
1831 clrscr;\r
1832 assign0;\r
1833 assign1;assign2;assign3;assign4;assign5;assign6;assign7;assign8;\r
1834 Initialize;\r
1835 \r
1836                             {*****} repeat {*****}\r
1837 \r
1838 if Skip then Time; writeln;\r
1839 \r
1840 if(length(Line)=0)then begin\r
1841  ScreenDraw_PlayerInput;\r
1842  while pos(' then ',Line)>0 do\r
1843   begin x:=pos('then ',Line);delete(Line,x,4);insert('.',Line,x)end;\r
1844  LowerCase(Line);\r
1845  Format(Line);\r
1846  Chop(Line);\r
1847 end;\r
1848 if(pos('.',Line)>0)then begin\r
1849   Input:=copy(Line,1,pos('.',Line));\r
1850   delete(Line,1,pos('.',Line));\r
1851   delete(Input,pos('.',Input),1);\r
1852 end else\r
1853  begin\r
1854   Input:=Line;\r
1855   Line:=''\r
1856  end;\r
1857 Input:=Input+' ';\r
1858 while pos(' it ',Input)>0 do\r
1859  begin x:=pos(' it ',Input)+1;delete(Input,x,2);insert(LastNoun,Input,x);\r
1860  Format(Input);Chop(Input)end;\r
1861 if(Input[length(Input)]=' ')then delete(Input,length(Input),1);\r
1862 \r
1863 \r
1864 \r
1865 Check(SepWord);\r
1866 \r
1867 if Flag = 'g' then\r
1868   begin\r
1869     case Prm of\r
1870       3..4                :SpecialAnswers1;\r
1871       5..10               :SpecialAnswers2;\r
1872       14..16              :SpecialAnswers3;\r
1873       19..24              :SpecialAnswers4;\r
1874       25,27..29,33        :SpecialAnswers5;\r
1875       30                  :SpecialAnswers6;\r
1876       26,35..40           :SpecialAnswers7;\r
1877       41..48              :SpecialAnswers8;\r
1878       50..55              :SpecialAnswers9;\r
1879       56..58,60..62,65..67:SpecialAnswers10;\r
1880       63,64,68..71        :SpecialAnswers11;\r
1881       11..13,17,18        :SpecialAnswers12;\r
1882       0..2,31,32,34       :SpecialAnswers13;\r
1883       49,59,72..76        :SpecialAnswers14\r
1884     end;\r
1885 \r
1886     if FlagSA <> 's' then\r
1887       case Verb of\r
1888        11,18,22,41,43..52,57,58    :DefaultAnswers1;\r
1889        29                          :DefaultAnswers2;\r
1890        1,2,8,12,13,15,16,19,21,\r
1891         23..25,31,33,34,38,40,60,63:DefaultAnswers3;\r
1892        3,6,7,20,30,35,53..56,59    :DefaultAnswers4;\r
1893        9,26                        :DefaultAnswers5;\r
1894        27,28,62                    :DefaultAnswers6;\r
1895        14,64,4,5                   :DefaultAnswers7;\r
1896        0,10,17,42,39               :DefaultAnswers8;\r
1897        32                          :DefaultAnswers9;\r
1898        36,37,61,65                 :DefaultAnswers10;\r
1899       end;\r
1900   end;\r
1901 \r
1902                          {*****} until False {*****}\r
1903 \r
1904 END. {of program}\r
1905 \1a