OSDN Git Service

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