1 {//-------------------------------------------------------------------------}
3 {Copyright (C) 1990, 2009 - Apogee Software, Ltd. }
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. }
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. }
14 {See the GNU General Public License for more details. }
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.}
20 {Original Source: 1990 Scott Miller }
21 {Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }
23 {//-------------------------------------------------------------------------}
24 {****************************************************************************}
25 {* BEYOND THE TITANIC *}
26 {* Written by Scott Miller with Turbo Pascal V.2. Began May 12, '84. *}
27 {* Shareware Version *}
29 {$C-,V-,R-*******************************************************************}
31 { Last modified: July 23, 1987 }
43 ComSet = set of 0..VMax;
44 CharSet = set of Char;
45 PlayersObjects = set of 0..NMax;
52 aCabiSet :PlayersObjects;
72 WordList : file of Str16;
73 Things : file of integer;
74 Objects : file of PlayersObjects;
75 GameSave : file of SaveGame;
80 V{erb} : array [0..VMax,1..5] of Str16;
81 D{oushi} : array [0..VMax,1..5] of Str16;
82 N{oun} : array [0..NMax,1..5] of Str16;
83 M{eishi} : array [0..NMAX,1..5] of Str16;
84 Prep{osition} : array [0..VMax] of Str16;
85 R{oom} : array [0..NMax] of integer;
86 P{lace} : array [0..RMax] of PlayersObjects;
88 OneWordCommands: Comset;
92 CabiSet : PlayersObjects;
100 Special1, Special2 : file of Str240;
101 Text1, Text2 : Str240;
102 Line1 : file of Str80;
120 m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,
135 {$I AdParser.PAS}{ <--- Loads in sentence logic. <*********************}
138 {$I Commands.PAS}{ <--- Loads in misc. procedures. <*********************}
141 {$I WordList.PAS }{ <----- CALLS UP THE VERBS & NOUNS <*******************}
144 {$I Objects.PAS }{ <----- CALLS UP THE VERBS & NOUNS <*******************}
150 {===================}
151 procedure DefaultAnswers1;
156 22 :begin if(Prm in[59..68])then
157 begin RmSh:=RmSh-[ShRm];RS(84)end;
158 if flasoff and (Prm in [6..24])then RL(54) else
159 if Verbose then DescribeRm
160 else begin Verbose:=true;DescribeRm;Verbose:=false;end;
161 if(23 in p[Prm])and(MnRm=Prm)then RL(357);
162 if Back then begin Attack:=False; Back:=False;end
165 18 :if inven=[] then RL(116)
168 writeln('
\82 \82È
\82½
\82ª
\8e\9d\82Á
\82Ä
\82¢
\82é
\82Ì
\82Í
\81c');
173 writeln('',m[o,1])else writeln('',m[o,1]);
174 if(ropecon in inven)and(o=ropecon)then
175 writeln(' ',m[o,1],'
\82É
\8c\8b\82Î
\82ê
\82½
\83\8d\81[
\83v');
176 if(o=74)and(en('p'))then RL(174);
177 if(o=89)and(en('i'))then RL(321);
183 2:if(en('b'))then RL(198) else RL(199);
184 29:begin RL(89);if(en('a'))then RL(200) else RL(201);end;
185 57:if(ropecon<>Null)then
186 writeln('
\83\8d\81[
\83v
\82Í',m[ropecon,1],'
\82É
\8c\8b\82Î
\82ê
\82Ä
\82¢
\82é
\81B')
188 65:if(Prm in[59..68])then RS(84)else Line:='l';
198 1:if(Prm=42)and(13 in p[42])then RL(167);
200 9:if(Prm=49)then RL(228)else if(Prm>62)then RS(68)else RL(229);
206 18:if(Prm in[63..70])then RS(68)else RL(348);
207 46,66:If(Prm in[58,59,63,69])then begin
208 TextColor(12);RS(83);TextColor(m2)end;
212 if(Shots>0)then writeln('
\96ñ',Shots*10,'
\83p
\81[
\83Z
\83\93\83g
\82¾
\81B')
213 else Writeln('
\8bó
\82¾
\81B')end;
214 15:if(84 in p[Prm])then RL(180)else If(71 in p[Prm])then RL(182)
216 56,44:if(en('r'))then RL(51) else RL(52)
217 else if not(noun in[1,12,14,15,17,18,19,22,31,36,50,
218 54,67,69,73,79,80,84,87,88])and(random(3)=1)then
221 1 :writeln('
\82»
\82¤
\81A
\82±
\82ê
\82Í',m[noun,1],'
\82¾!');
222 2 :writeln('
\95\81\92Ê
\82Ì',m[noun,1],'
\82Ì
\82æ
\82¤
\82¾
\81B');
224 else writeln(m[noun,1],'
\82É
\95Ï
\82í
\82Á
\82½
\82±
\82Æ
\82Í
\82È
\82¢
\81B')
227 41 :begin writeln('
\8e\9e\82ª
\89ß
\82¬
\82Ä
\82ä
\82');y:=wherey;for o:=1 to 6 do
228 begin gotoxy(14+o,y-1);writeln('.');sound(o*99);delay(30)end;
229 if(Prm in[59..68])then sound(20)else nosound end;
231 43..52 :if(Prm in[6..24])and(FlasOff)then RL(14)else
232 if(Prm=69)then RL(358)else RL(144);
234 57,58 :begin Attack:=False;
235 if(Prm in[6..24])and(FlasOff)then RL(14)else RL(190);end;
238 end; {of DefaultAnswers1}
239 {-------------------}
240 procedure DefaultAnswers2;
245 29 :if(noun in Mov)then
246 if(noun in inven)then
249 39:if(en('o'))then begin RL(186);Vanish(noun);
250 kitset:=kitset+[noun];r[noun]:=Prm;end
253 if(SlotCon=Null)then begin RL(186);Vanish(noun);
254 SlotCon:=Noun;r[noun]:=Prm;end
255 else Say(68,'
\8eg
\97p
\92\86')
257 if(noun=63)and(Prm=58)then
258 begin RL(337);KeyHole:=True;r[63]:=Prm;inven:=inven-[63];end
260 88:begin RL(293);vanish(noun);r[noun]:=random(4)+51;end;
261 47,53,73:if(Prm in[0..6,9,10,13,41..43])then
262 begin RL(307);vanish(noun);end;
263 11:if(en('k'))then begin RL(186);Vanish(noun);
264 CabiSet:=CabiSet+[noun];r[noun]:=Prm;end
266 26:if(Prm=76)and(noun=57)then begin RL(409);Vanish(57)end;
267 49:if(PanelCon=Null)and(noun in[2,7,8,13,27,32,51,52,63,77])then
268 begin RL(186);Vanish(noun);PanelCon:=Noun;r[noun]:=Prm;end
272 begin Ev:=Ev+['d'];RL(69);Vanish(70);r[70]:=Prm;end
273 else Say(70,'
\93D
\82Ì
\92\86')
280 if(noun2 in[4,6,9,11,14,16,22,30,50,59,61,64,65,69,75])then
281 begin RL(186);Vanish(noun);r[noun]:=Prm;end
283 if(SepWord='at')or(SepWord='near')or(SepWord='behind')then
284 if(noun2 in[0,4,6,9,11,12,14,16,17,20..23,26,28,30,35,39,43,
285 50,53,54,59,61,62,64..69,72,73,75,78..80])then
286 begin RL(186);Vanish(noun);r[noun]:=Prm;end
288 if(SepWord='under')then
289 if(noun2 in[4,15,16,20,23,59,60,61,75])then
290 begin RL(186);Vanish(noun);r[noun]:=Prm;end
293 if(noun2 in[6,16,43,47,30,50,59,64,65,72,78,80,84])then
294 begin RL(186);Vanish(noun);r[noun]:=Prm;end
296 if(FlagSA<>'s')then Crazy;
299 else writeln('
\82Ü
\82¸',m[noun,1],'
\82ð
\8e\9d\82Á
\82Ä
\82¢
\82È
\82¯
\82ê
\82Î
\82È
\82ç
\82È
\82¢
\81B')
303 end; {of DefaultAnswers2}
304 {-------------------}
305 procedure DefaultAnswers3;
310 31,63 :if(Verb=63)and(Prm<>MnRm)then RL(395)
314 if(input='hi')or(input='hello')or(input='bye')then RL(396)else
315 if(copy(input,1,6)='follow')then RL(397)else
317 0:RL(365);1:RL(398);2:RL(399);3:RL(400);4:RL(401)
326 23:begin RL(366);DropAll;Ev:=Ev+['r'];Attack:=False end
330 16 :if(MnRm=Prm)then begin Attack:=False;RL(372)end else
331 if(en('r'))then RL(373)else
332 if(Prm<15)and(70 in p[12])then RL(374)else RL(371);
334 19 :if(noun=Null)then RL(136)else Crazy;
335 24 :if(noun=7)then RL(422)else
336 if(noun in[26,6,7,22,36,17,50,65,73,74,80,79,30,84])then RL(126)
341 8 :if(noun in[73,80])or(noun=Null)then
342 if(noun<>Null)then RL(36)
343 else if(here(73))or(here(80))then RL(36)else RL(37)
347 2 :if(noun in[4,35,39,8,11,12,14,20,21,30,57,43,59,67,70,75])then
350 15 :if(noun in mov)then
353 begin RL(62);Vanish(noun);Attack:=False end
359 begin verbose:=false;RL(134);end
360 else begin verbose:=true;RL(135);end;
371 25 :if(Prm>62)and(Noun in[9,18,19,41])then RL(350)else RL(78);
375 end; {of DefaultAnswers3}
376 {-------------------}
377 procedure DefaultAnswers4;
385 6 :if(noun=23)and(here(40))then begin vanish(40);RL(84);end
388 if(noun2=Null)or(noun2=40)then
392 else writeln('
\82 \82Æ
\8f
\82µ
\82Ì
\82Æ
\82±
\82ë
\82Å
\81A',
393 m[noun,1],'
\82Ì
\96½
\82ð
\92D
\82¤
\82Ì
\82ð
\8e~
\82ß
\82½!');
398 30 :if(noun in [39,43,12,26,6,22,47,49,68,78,17,11,
399 50,65,73,74,80,79,30])then RL(93) else RL(94);
401 54 :begin write('
\8fI
\97¹
\82·
\82é
\91O
\82É
\83Q
\81[
\83\80\82ð
\95Û
\91¶
\82µ
\82Ü
\82·
\82©? (Y
\82Ü
\82½
\82Í N) ');
402 flag := readkey;if(upcase(flag)<>'N')then SAVE else writeln('
\82¢
\82¢
\82¦
\81B');
403 write('
\96{
\93\96\82É
\83Q
\81[
\83\80\82ð
\8fI
\97¹
\82µ
\82Ü
\82·
\82©? ');
404 flag := readkey;if(upcase(flag)='Y')then
405 begin RL(367);delay(999);window(1,1,80,25);clrscr;close(rooms1);
406 close(rooms2);close(special1);close(special2);close(line1);
407 HALT end else RL(264)end;
408 53 :if(Prm in[27,30])then RL(123) else RL(145);
409 59 :If(noun=23)then RL(368)else Diagnose;
413 begin Ev:=Ev-['p'];RL(169);end
419 Ev:=Ev-['i'];RL(322);
420 if(Prm in[59,63..68])then begin RS(66);DEAD;end;
425 56 :if(noun=Null)or(noun in[60,23])or(noun in Mov)then
436 2:if(en('b'))then RL(236)else RL(237);
441 84,40,50,68,85:RL(242)
445 7 :begin if(noun=Null)then noun:=30;
446 if(noun in[30,36,47,50,71,72,79])then
448 30,47,50,71:if(Prm in[5..22,44..49])then RL(247) else RL(248);
458 end; {of DefaultAnswers4}
459 {-------------------}
460 procedure DefaultAnswers5;
466 if(noun in Inven)then
467 if(noun=74)and(en('p'))then RL(170)
468 else if(noun=89)and(en('i'))then RL(335)
470 inven:=inven-[noun];writeln(m[noun,1],':
\92u
\82¢
\82½
\81B');
474 writeln(m[noun,1],'
\82ð
\8e\9d\82Á
\82Ä
\82¢
\82È
\82¢
\81B')
477 if(74 in inven)and(en('p'))then RL(170)else
478 if(89 in inven)and(en('i'))then RL(335)else
483 2:if not(en('b'))then
487 else Say(noun,'
\94\8d\82©
\82ê
\82Ä
\82¢
\82é');
489 57:if(ropecon<>Null)then
493 else Say(noun,'
\89ð
\82©
\82ê
\82Ä
\82¢
\82é');
499 end; {of DefaultAnswers5}
500 {-------------------}
501 procedure DefaultAnswers6;
508 29:if not(en('a'))then
511 else begin Ev:=Ev-['a'];
513 57:if(ropecon<>Null)and not(ropecon in inven)
514 and(r[ropecon]<>Prm)then
515 if(ropecon in mov)then begin
516 RL(57);writeln('
\81c',m[ropecon,1],'
\82¾!');
517 r[ropecon]:=Prm;Ev:=Ev-['u'];
518 if(ropecon=29)and not(flasoff)then DescribeRm;end
521 8:begin RL(243);RL(244);play(9999,3500,0);play(3499,2000,1);
522 play(1999,1000,2);play(999,200,5);play(199,8,16);Ev:=Ev+['e'];
523 n[36,5]:=Q;n[78,5]:='glass';n[68,1]:='slot';n[66,4]:=Q;
526 if(MnRm=Prm)then RS(73);
528 81:if not(en('j'))then
530 begin Ev:=Ev+['j'];RL(326);play(2000,2001,200);end
534 if Keyhole then begin RL(326);play(2001,2000,200)end
536 if(Prm in[59..68])then begin nosound;RS(62);DEAD;end;
539 if(Prm > 57)then if(Prm = 58)then RL(123)else
540 begin RS(63);DEAD;end;
545 62 :begin write('
\82 \82È
\82½
\82Í1000
\93_
\92\86',Sc,'
\93_
\82ð
\8al
\93¾
\82µ
\81A');Tic:=Tic-1;
547 0..99:writeln('
\93ü
\96å
\8eÒ
\82Ì
\83\89\83\93\83N
\82É
\92B
\82µ
\82½
\81B');
548 100..249:writeln('
\96`
\8c¯
\8f\89\90S
\8eÒ
\82Ì
\83\89\83\93\83N
\82É
\92B
\82µ
\82½
\81B');
549 250..399:writeln('3
\8b\89\96`
\8c¯
\8eÒ
\82Ì
\83\89\83\93\83N
\82É
\92B
\82µ
\82½
\81B');
550 400..549:writeln('2
\8b\89\96`
\8c¯
\8eÒ
\82Ì
\83\89\83\93\83N
\82É
\92B
\82µ
\82½
\81B');
551 550..699:writeln('1
\8b\89\96`
\8c¯
\8eÒ
\82Ì
\83\89\83\93\83N
\82É
\92B
\82µ
\82½
\81B');
552 700..849:writeln('
\8fn
\97û
\96`
\8c¯
\8eÒ
\82Ì
\83\89\83\93\83N
\82É
\92B
\82µ
\82½
\81B');
553 850..999:writeln('
\8dÅ
\8d\82\96`
\8c¯
\8eÒ
\82Ì
\83\89\83\93\83N
\82É
\92B
\82µ
\82½!')
554 else writeln('
\8e\80\82¹
\82é
\96`
\8c¯
\8eÒ
\82Ì
\83\89\83\93\83N
\82É
\92B
\82µ
\82½!')
557 if(MnRm=Prm)then RL(370)
561 end; {of DefaultAnswers6}
562 {-------------------}
563 procedure DefaultAnswers7;
571 if not(noun in inven)then
574 for o:=0 to NMax do if(o in inven)then Stuff:=Stuff+1;
576 if(en('r'))and(inven<>[])then RL(87)
578 Vanish(Noun);inven:=inven+[noun];
579 writeln(m[noun,1],':
\8eæ
\82Á
\82½
\81B');
580 if(noun=70)then Ev:=Ev-['d'];
584 else writeln(m[noun,1],'
\82Í
\8aù
\82É
\8e\9d\82Á
\82Ä
\82¢
\82é
\81B')
586 else if(en('r'))then RL(88) else
587 begin flag:='0';Stuff:=0;
588 for o:=0 to NMax do if(o in inven)then Stuff:=Stuff+1;
595 vanish(o);inven:=inven+[o];Stuff:=Stuff+1;
596 writeln(m[o,1],':
\8eæ
\82Á
\82½
\81B');flag:='1';
597 if(o=70)then Ev:=Ev-['d'];
601 writeln(m[o,1],':
\82à
\82¤
\8e\9d\82Ä
\82È
\82¢!');end
604 if(flag='0')then RL(49)
612 end; {of DefaultAnswers7}
613 {-------------------}
614 procedure DefaultAnswers8;
619 10 :if(noun in [2,52])then
621 if(en('b'))then begin
622 RL(45); Ev:=Ev+['c'];inven:=inven+[51];
623 Vanish(2);Sc:=Sc+10;end
625 else begin RL(47);Ev:=Ev+['n'];Sc:=Sc+15;Vanish(52);end
626 else writeln('
\82 \82È
\82½
\82ª',m[noun,1],
627 '
\82ð
\8fÁ
\89»
\82Å
\82«
\82é
\82Æ
\82Í
\8ev
\82¦
\82È
\82¢!');
630 74:if not(en('p'))then
632 begin RL(20);inven:=inven+[74];r[74]:=Null;Ev:=Ev+['p'];end
634 else Say(74,'
\92\85\82Ä
\82¢
\82é');
635 89:if not(en('i'))then
637 begin RL(319);vanish(89);inven:=inven+[89];Ev:=Ev+['i'];end
639 else Say(89,'
\94í
\82Á
\82Ä
\82¢
\82é')
643 17,0 :if(noun2=Noun)then Crazy else
644 if(noun2 in Mov)or(Noun2=Null)then
646 2:begin RL(21);Vanish(2);Sc:=Sc+25;r[51]:=Prm;end;
647 60:begin RL(22);DEAD;end;
648 52:begin RL(34);Vanish(52);end;
649 23:if(noun2=null)then RL(369)
650 else begin Vanish(noun2);Attack:=False;
651 writeln('
\89ö
\95¨
\82Í',m[noun2,1],'
\82ð
\92Í
\82Ý
\90H
\82×
\82½!');
653 7:begin RL(35);Vanish(7);r[52]:=Prm;Ev:=Ev+['I'];end
654 else if(verb=0)then writeln('
\82 \82Æ
\8f
\82µ
\82Ì
\82Æ
\82±
\82ë
\82Å',
655 m[noun,1],'
\82Ì
\96½
\82ð
\92D
\82¤
\82Ì
\82ð
\8e~
\82ß
\82½!')
660 39 :if((SepWord='to')or(SepWord='off'))and(Noun2=Null)then
662 29:if(SepWord='to')then begin Ev:=Ev+['a'];RL(120);end
663 else begin Ev:=Ev-['a'];RL(121);end;
671 end; {of DefaultAnswers8}
672 {-------------------}
673 procedure DefaultAnswers9;
678 32 :if(34 in inven)then
682 for x:=1 to (26-(4*(6-Shots))) do
683 begin play(300,350,11-Shots*2);play(320,370,11-Shots*2);end;
684 if(noun=34)and(noun2<>34)and(noun2<>Null)and(SepWord='at')then
685 begin noun:=noun2; noun2:=34; SepWord:='with';end;
686 if((noun2=34)and(noun<>34)and(SepWord='with'))or
687 ((noun<>34)and(SepWord='s'))then
689 1:begin;Crazy;Shots:=Shots+1;end;
690 2,7,8,13,27,29,32,40,51,52,63,74,77,89:begin vanish(noun);
691 writeln(m[noun,1],'
\82Í
\94\9a\94
\82µ
\81A
\91M
\8cõ
\82Ì
\92\86\82É
\8fÁ
\82¦
\82½!');
692 if(noun=74)and(en('p'))then begin RL(232);DEAD;end;
694 48:begin RL(222);RL(223);Ev:=Ev+['g'];p[40]:=p[40]-[48];
695 if not(en('P'))then begin Ev:=Ev+['P'];Sc:=Sc+25;end;end;
697 23:begin case random(4)of 0:RL(375);1:RL(376);2:RL(377);3:RL(378)end;
701 60,56,44:begin RL(233);DEAD;end
702 else writeln('
\82Ü
\82Î
\82ä
\82¢
\8cõ
\90ü
\82ª',m[noun,1],'
\82É
\96½
\92\86\82µ
\82½
\82ª
\81A',
703 '
\8d\95\82
\8fÅ
\82°
\82½
\82¾
\82¯
\82¾
\82Á
\82½
\81B');
705 else if(noun=34)and(noun2=Null)then RL(213)
706 else begin;Crazy;Shots:=Shots+1;end;
708 else begin writeln('
\81c
\83J
\83`
\83b!');play(25,32,9);end
712 end; {of DefaultAnswers9}
713 {-------------------}
714 procedure DefaultAnswers10;
719 36 :if(noun in mov)then
720 if(noun in inven)then
721 if((noun in[2,7,52,29])or
722 (noun2 in[2,7,23,29,47,52,53,73,88]))and(noun<>noun2)then
724 if(noun=2)or(noun2=2)then begin RL(95);vanish(2);
726 if(noun=7)or(noun2=7)then begin RL(35);vanish(7);
727 Ev:=Ev+['I'];r[52]:=Prm;end;
728 if(noun=29)or(noun2=29)then begin RL(96);vanish(29);end;
729 if(noun=52)or(noun2=52)then begin RL(34);vanish(52);end;
730 if(noun2=88)then begin RL(293);vanish(noun);
731 if(noun=2)then noun:=51;if(noun=7)then noun:=52;
732 r[noun]:=random(4)+51;end;
733 if(Prm in[0..6,9,10,13,41..43])and(noun2 in[73,53,47])then
734 begin RL(306);vanish(noun);end;
735 if(noun2=23)then begin Attack:=False;Vanish(noun);RL(379);
736 writeln(m[noun,1],'
\82ð
\83L
\83\83\83b
\83`
\82µ
\82Ä
\90H
\82×
\81A',
737 '
\91å
\82«
\82È
\83Q
\83b
\83v
\82ð
\82µ
\82½!')end;
739 else begin writeln(m[noun,1],'
\82Æ',
740 m[noun2,1],'
\82ð
\82Ô
\82Â
\82¯
\82½
\82ª
\89½
\82à
\8bN
\82±
\82ç
\82È
\82©
\82Á
\82½
\81B');
741 Vanish(noun);r[noun]:=Prm;end
742 else writeln(m[noun,1],'
\82ð
\8e\9d\82Á
\82Ä
\82¢
\82È
\82¯
\82ê
\82Î
\82È
\82ç
\82È
\82¢!')
747 if not(noun2 in[1,15,17,22,30,46,47,50,52,72,73,79,80,83])then
748 if(ropecon=Null)then begin
750 writeln('
\83\8d\81[
\83v
\82ð',m[noun2,1],'
\82É
\82µ
\82Á
\82©
\82è
\82Æ
\8c\8b\82Ñ
\95t
\82¯
\82½
\81B');
751 if(noun2=57)then RL(48);end
752 else writeln('
\83\8d\81[
\83v
\82Í
\82à
\82¤',m[ropecon,1],'
\82É
\8c\8b\82Î
\82ê
\82Ä
\82¢
\82é
\81B')
757 61 :begin RL(245);flag := readkey;
758 if(upcase(flag)<>'N')then
759 begin RL(380);delay(999);window(1,1,80,25);clrscr;close(rooms1);
760 close(rooms2);close(special1);close(special2);close(line1);
761 halt(executeProcess(ParamStr(0), '', []));
769 end; {of DefaultAnswers10}
770 {===================}
771 procedure SpecialAnswers1;
780 20,52 :if(noun=6)then RL(40);
781 14 :if(noun=57)and not(en('o'))then RL(419);
782 6 :if(noun=57)and(here(40))and((noun2=Null)or(noun2=40))then
784 RS(4); tic:=15; moveto(4); Ev:=Ev+['A']; Sc:=Sc+25;
786 for o:= 0 to 57 do begin
787 if(o in kitset)then r[o]:=Prm;
788 if(r[o]=3)then r[o]:=Prm;end
792 begin Ev:=Ev+['o'];RL(328); for o:=2 to 57 do
793 if(o in kitset)then r[o]:=Prm;end
794 else Say(noun,'
\8aJ
\82¢
\82Ä
\82¢
\82é');
797 begin Ev:=Ev-['o'];RL(186); for o:=2 to 57 do
798 if(o in kitset)then r[o]:=Null;end
799 else Say(noun,'
\95Â
\82¶
\82Ä
\82¢
\82é');
800 17,28,27 :if(noun in [6,57,39,59])then RL(29);
803 if kitset=[] then begin RL(329);end
804 else begin RL(330);for o:= 0 to 57 do
805 if(o in kitset)then writeln(' ',m[o,1]);end
815 55 :if(noun=35)then begin RL(332);Ev:=Ev-['B'];end;
816 42,3:if noun=35 then begin RL(8); Ev:=Ev+['B'];end
819 begin Ev:=Ev-['o'];RL(186); for o:=0 to 57 do
820 if(o in kitset)then r[o]:=Null;end
821 else Say(noun,'
\95Â
\82¶
\82Ä
\82¢
\82é');
822 29,37 :if(noun=35)and(noun2=60)then begin
823 RL(8);Ev:=Ev+['B'];end;
824 26 :if(noun=35)and(en('B'))then begin RL(332);Ev:=Ev-['B'];end
827 begin Ev:=Ev+['o'];RL(328); for o:=0 to 57 do
828 if(o in kitset)then r[o]:=Prm;end
829 else Say(noun,'
\8aJ
\82¢
\82Ä
\82¢
\82é');
830 19,2:if(noun in[6,64])or(noun=Null)then
831 if(en('B'))then RL(9)
832 else begin RL(0);DEAD;end;
835 if kitset=[] then begin RL(329);end
836 else begin RL(330);for o:= 0 to 57 do
837 if(o in kitset)then writeln(' ',m[o,1]);end
848 {-------------------}
849 procedure SpecialAnswers2;
858 2 :if(noun=79)then RL(263);
863 43..45,47..52:if FlasOff then RL(14)
865 43:begin Ox:=0;RL(286);moveto(7);end;
866 45:moveto(9); 49:moveto(8);
871 23..25,11:if(noun in[6,36,73,0,15,64,67])then RS(9);
872 43..50 :if FlasOff then RL(14)
875 If(Verb in[43,47,48])then Ox:=Ox+1;
876 If(Verb in[44,49,50])then Ox:=Ox-1;
877 if(Ox<1)then begin RL(286);moveto(6)end
881 if(random(20)=2)then begin writeln;RS(9);
882 if not(en('K'))then begin Ev:=Ev+['K'];Sc:=Sc+15;end;end;
885 28,17,6:if(noun=36)or(noun=15)then begin RS(10);DEAD;end;
886 31 :if(input='help')then begin RL(334);moveto(6)end;
890 48,58:if FlasOff then RL(14) else moveto(6);
891 43..47,49..52:if FlasOff then RL(14);
892 11:if(noun in [46,79])then RS(12)
893 else if(noun in [15,30])then RL(28);
894 38 :if(noun=46)then begin SA;writeln('
\83M
\83U
\83M
\83U
\82¾
\81B');end;
898 43..52 :if FlasOff then RL(14)
900 46:moveto(6);47:moveto(10);49:moveto(11);
905 50,58 :if FlasOff then RL(14)
907 43..49,51..52:if FlasOff then RL(14);
908 19,2:if(noun in[17,80])then begin RL(0);DEAD;end;
914 {-------------------}
915 procedure SpecialAnswers3;
923 46,48 :if FlasOff then RL(14)
924 else if(verb=46)then moveto(11) else moveto(15);
925 43..45,47,49..52 :if FlasOff then RL(14);
929 52,2 :if(en('d'))and(en('t'))then
930 begin RL(63);moveto(16);end else RL(64);
933 14 :if(noun in[57,70])then begin inven:=inven+[noun];r[noun]:=Null;
934 if(noun=70)then Ev:=Ev-['d']
935 else Ev:=Ev-['t'];SA;writeln(m[noun,1],':
\8eæ
\82Á
\82½
\81B');end;
936 45,49 :if(flasoff)then RL(14) else moveto(14);
938 24,11:if(noun=17)and not(en('u'))then RL(74)
939 else if(noun=17)and(en('a'))then RL(75);
940 17,36,29,9:case noun of
941 70:if((noun2 in[30,42])or(noun2=Null))and(verb<>9)then
943 begin RL(69);Ev:=Ev+['d'];r[70]:=Prm;inven:=inven-[70];end
945 else if(verb=9)then begin end else RL(66);
946 57:if(noun2=17)and(verb<>17)then begin
947 if(here(ropecon))and(ropecon<>57)then begin
948 RL(71);inven:=inven-[57];r[57]:=Prm;
949 if(ropecon=70)then Ev:=Ev+['t'];end
950 else begin RL(70);vanish(57); end;
952 else if(verb in[9,29,36])and(noun2=17)and(noun in mov)then
953 if(here(ropecon))and(noun=ropecon)then begin RL(76);
954 inven:=inven-[noun];r[noun]:=Null;
955 if(ropecon=29)then Ev:=Ev+['u'];end
956 else begin RL(72);inven:=inven-[noun];r[noun]:=17;end
963 0,3..18,20..21,26..40,42,53,55,56,60:RL(86);
964 19,61:begin RS(18);Ev:=Ev-['a'];Ev:=Ev+['r'];Sc:=Sc+60;
965 moveto(17);dropall;if(here(2))then begin r[2]:=Null;
966 r[51]:=Prm;end;r[57]:=Null;end;
972 {-------------------}
973 procedure SpecialAnswers4;
981 48,51,58:if(flasoff)then RL(14)else begin RL(311);moveto(18);end;
982 47,52,57:if(flasoff)then RL(14)else begin RL(309);moveto(20);end;
986 50,51,58:if(flasoff)then RL(14)else begin RL(310);moveto(19);end;
987 11,24,25,23:if(noun=67)then RL(90)
988 else if(noun in[12,43])and not(en('E'))then begin RL(92);
989 r[32]:=20;Sc:=Sc+15;Ev:=Ev+['E'];end;
990 14,38:if(noun in[67,12])then RL(91);
991 43..49,57:if(noun=Null)or(noun in[12,43])then RL(215);
995 50 :if(flasoff)then RL(14)else moveto(18);
996 47 :if(flasoff)then RL(14)else moveto(22);
997 2,51:if(flasoff)then RL(14)else
998 if(noun=64)or(noun=Null)then moveto(23);
1001 11 :if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;
1005 50 :if(flasoff)then RL(14)else moveto(21);
1006 2,51 :if(flasoff)then RL(14)else
1007 if(noun=64)or(noun=Null)then moveto(23);
1010 11 :if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;
1014 46,50 :if(flasoff)then RL(14)else moveto(21);
1015 43,48 :if(flasoff)then RL(14)else moveto(22);
1016 44,45,47,49:RL(258);
1017 26,27 :if(noun=26)then
1018 if(en('l'))then Say(26,'
\8aJ
\82¢
\82Ä
\82¢
\82é')
1019 else begin RL(98);Ev:=Ev+['l'];p[23]:=p[23]+[69];end;
1021 if(en('l'))then begin RL(171);Ev:=Ev-['l'];p[23]:=p[23]-[69];end
1022 else Say(26,'
\95Â
\82¶
\82Ä
\82¢
\82é');
1023 2,52,57:if(en('l'))and((noun=69)or(noun=Null))then moveto(24)else RL(99);
1024 24,25 :if(noun=26)then RL(151);
1025 11 :if(noun=26)then if(en('l'))then RL(217)else RL(218)
1026 else if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;
1030 51,58:if(en('l'))then moveto(23) else RL(99);
1032 24,25 :if(noun=26)then RL(151);
1033 3 :if(noun=26)then begin RL(171);Ev:=Ev-['l'];end else
1034 if(noun=55)then RL(411);
1035 2 :if(noun=69)then Moveto(25);
1036 26 :if(noun=26)then begin RL(98);Ev:=Ev+['l'];end else
1037 if(noun=55)then RL(412);
1038 11 :if(noun=26)then if(en('l'))then RL(217)else RL(218)else
1039 if(noun=55)then RL(410);
1040 27,28:If(noun=55)then RL(411);
1046 {-------------------}
1047 procedure SpecialAnswers5;
1055 43:begin writeln('
\94à
\82ª
\82Ð
\82Æ
\82è
\82Å
\82É
\8aJ
\82¢
\82½
\81c');play(55,70,40);moveto(27);
1056 writeln('
\8cã
\82ë
\82Ì
\94à
\82ª
\95Â
\82Ü
\82Á
\82½
\81B');play(70,55,40);
1057 if not(en('Y'))then begin Ev:=Ev+['Y'];Sc:=Sc+30 end end;
1058 44:moveto(32); 45:moveto(30);
1059 46:moveto(34); 47:moveto(28); 49:moveto(31);
1060 48:if(en('v')and not(en('p')))then begin Verbose:=False;moveto(35);
1061 RS(25);DEAD; end else moveto(35);
1062 50:moveto(33); 51,58:moveto(24);
1063 52,2:if(noun=69)or(noun=Null)then moveto(26);
1064 17,27,28,38:if(noun=26)then
1065 begin RL(413);play(55,70,45);play(69,54,45)end;
1066 26,40:if(noun=26)then RL(414);
1070 44,58:begin writeln('
\94à
\82ª
\82Ð
\82Æ
\82è
\82Å
\82É
\8aJ
\82¢
\82½
\81c');play(55,70,40);moveto(25);
1071 writeln('
\8cã
\82ë
\82Ì
\94à
\82ª
\95Â
\82Ü
\82Á
\82½
\81B');delay(999);play(70,55,40)
1073 17,27,28,38:if(noun=26)then
1074 begin RL(413);play(30,40,25);play(40,30,25)end;
1075 26,40:if(noun=26)then RL(414);
1076 11 :if(noun in[20,21])then RL(103)
1077 else if(noun=58)then case compcon of
1078 Null:RL(155); 1:RS(21); 2:RS(22); 3:RS(23);
1079 4:begin RS(24);compcon:=Null;gotoxy(1,wherey-1);
1080 writeln('
\8e\9e....
\89®..
\83R..
\83h: ',Code,'.. ..
\83e
\83\8c..
\81[
\83g... . .',
1081 '... . ..
\8aÔ .
\83p
\83l.. ....... ...');
1082 RL(105);play(29,29,40);end;end;{of case}
1084 if(input='1')or(input='one')then begin RL(104);compcon:=1;end;
1085 if(input='2')or(input='two')then begin RL(104);compcon:=2;end;
1086 if(input='3')or(input='three')then begin RL(104);compcon:=3;end;
1087 if(input='4')or(input='four')then begin RL(104);compcon:=4;end;
1088 for y:=1 to random(40)+9 do
1089 begin x:=random(6000)+99;play(x,x,50);delay(9)end
1091 31 :if(compcon=null)then begin
1092 play(9,999,0);sound(999);RS(20);play(999,9,0);if not(en('J'))then
1093 begin Ev:=Ev+['J'];Sc:=Sc+40;end;end;
1099 28 :if(noun in[33,10])then begin RL(137);play(31,31,450);end;
1104 36 :if(noun2 in[33,10])and(noun in Mov)then
1106 begin RS(27);Ev:=Ev-['M','r'];Vanish(noun);r[noun]:=28;
1107 if not(en('N'))then begin Ev:=Ev+['N'];Sc:=Sc+55;end;
1109 else begin Vanish(noun);r[noun]:=28;RL(179);
1110 if(noun in[7,8,29,34,40,51])then Ev:=Ev+['M'];end;
1116 28,38:if(noun=10)then begin RL(421);x:=random(9999);case random(3) of
1117 0:play(x,random(9999),random(3));
1118 1:for y:=1 to random(300)+60 do
1119 begin x:=random(9999);play(x,x,2);delay(7)end;
1120 2:begin y:=9999;o:=0;
1121 repeat x:=random(9999);play(x,y,0);
1122 y:=random(9999);play(y,x,0);o:=o+1;
1123 until o>7 end end end
1129 {-------------------}
1130 procedure SpecialAnswers6;
1138 46,58:if(en('e'))then RL(212) else moveto(25);
1139 26,27,28,40:if(noun=49)then if(en('h'))then Say(49,'
\8aJ
\82¢
\82Ä
\82¢
\82é') else RL(159)
1141 if(noun in[10,76])and(verb=28)then
1143 if(MnRm=30)then begin RS(76);DEAD;end;
1145 begin RS(29);writeln;
1146 play(1,700,7);play(701,8000,1);Ev:=Ev-['e'];
1148 1933:begin Loc:='Civilization!';Sc:=Sc+80;RS(78);HOME;END;
1150 Verbose:=False;moveto(41);RS(30);Verbose:=True;
1151 if not(en('O'))then begin Sc:=Sc+55;Ev:=Ev+['O'];end;
1152 n[78,5]:=Q;n[37,5]:='glass';n[72,1]:='fence';
1153 n[70,1]:='hooded figure';n[70,2]:='hooded';n[70,3]:='figure';
1154 n[70,4]:='mutant';n[70,5]:=Q;n[3,1]:='footprints';
1155 n[3,2]:='footpri';n[57,1]:='parachute';n[57,2]:='parachu';
1156 n[35,1]:='boulder';n[35,2]:='rock';n[35,3]:='rocks';
1159 0..1111 :begin writeln;RS(31);DEAD;end;
1160 1112..1932,1934..2110:begin writeln;RS(32);DEAD;end;
1161 2680..3789:begin writeln;RS(33);DEAD;end
1162 else begin writeln;RS(34);DEAD;end;
1163 end; {of YearDial case}
1165 else begin RL(209);play(1,9999,0)end;
1167 33 :if(noun in[16,59])or(noun=Null)then begin Ev:=Ev+['e'];RL(210);end;
1168 35 :if(en('e'))then begin Ev:=Ev-['e'];RL(211);Attack:=False end;
1169 17,0,6:if(noun=49)then RL(160);
1170 53 :if(input=Code)then
1171 If(en('h'))then Say(49,'
\8aJ
\82¢
\82Ä
\82¢
\82é')
1173 begin Ev:=Ev+['h'];RL(173);play(23,24,250);Sc:=Sc+30;
1174 if(PanelCon<>Null)then begin r[PanelCon]:=30;Code:='R';
1175 writeln('
\83p
\83l
\83\8b\82Ì
\89\9c\82É',
1176 m[PanelCon,1],'
\82ª
\82 \82é
\81B');end
1180 3 :If(noun=49)then RL(159);
1181 39 :if(noun=25)then RL(115) else
1183 24:if(DialNum>0)and(DialNum<377)then begin RL(176);DayDial:=DialNum;end
1185 82:if(DialNum>-1)and(DialNum<5000)then begin RL(177);
1186 YearDial:=DialNum;end else RL(178);
1189 49:begin SA;if(en('h'))then if(PanelCon=Null)then RL(183)
1190 else writeln('
\83p
\83l
\83\8b\82Ì
\89\9c\82É',m[PanelCon,1],'
\82ª
\82 \82é
\81B')
1192 82:begin SA;writeln('
\94N
\83_
\83C
\83\84\83\8b\82Í',YearDial,'
\82É
\83Z
\83b
\83g
\82³
\82ê
\82Ä
\82¢
\82é
\81B');end;
1193 24:begin SA;writeln('
\93ú
\83_
\83C
\83\84\83\8b\82Í',DayDial,'
\82É
\83Z
\83b
\83g
\82³
\82ê
\82Ä
\82¢
\82é
\81B');end;
1194 16:begin RL(203);RL(204)end;
1203 {-------------------}
1204 procedure SpecialAnswers7;
1212 51,58,2:if(noun=69)or(noun=Null)then moveto(25);
1213 43,48 :moveto(36); 44,49 :moveto(38); 45,47 :moveto(39); 46,50 :moveto(37);
1220 62:if(en('v'))then RL(205)else RL(206);
1222 28 :if(noun in[55,10])then
1223 if(en('v'))then begin RL(101);Ev:=Ev-['v'];play(40,65,80)end
1225 begin RL(102); Ev:=Ev+['v'];play(65,40,80);
1226 if not(en('p'))then begin RS(28);DEAD;end
1227 else if(MnRm=35)then
1228 begin n[23,1]:='melted monster';n[23,4]:='melted';MnRm:=Null;
1229 RS(74);p[35]:=p[35]+[77];
1230 if not(en('W'))then begin Sc:=Sc+65;Ev:=Ev+['W'] end
1233 14 :if(noun in[1,77])and(77 in p[35])then begin Sc:=Sc+10;noun:=77;end;
1235 if(en('v'))then begin RS(26);DEAD end;
1240 44,49,58:moveto(26);
1243 57 :if(noun=12)then RL(215);
1247 45,47,58:moveto(26);
1250 57 :if(noun=12)then RL(215);
1254 43,48,58:moveto(26);
1257 57 :if(noun=12)then RL(215);
1258 0..42,44,47,49..56,59..99:if(noun=28)or(noun2=28)then
1259 begin RS(35);RL(220);p[40]:=p[40]+[48];moveto(40);Ev:=Ev-['g'];
1260 if(MnRm=Prm)then begin RS(79);DEAD end
1265 46,50,58:moveto(26);
1266 45 :if(en('g'))then moveto(40);
1267 3 :if(noun=26)then if(en('g'))then RL(225) else Say(26,'
\95Â
\82¶
\82Ä
\82¢
\82é');
1270 57 :if(noun=12)then RL(215);
1274 46,58 :if(en('g'))then moveto(39) else RL(221);
1275 26 :if(noun=26)then if(en('g'))then Say(26,'
\8aJ
\82¢
\82Ä
\82¢
\82é') else RL(221);
1276 3 :if(noun=26)then if(en('g'))then RL(225) else Say(26,'
\95Â
\82¶
\82Ä
\82¢
\82é');
1277 11,14 :if(noun in[12,43,83])then RL(261);
1283 {-------------------}
1284 procedure SpecialAnswers8;
1294 2,19 :if(noun in[53,73,87])then
1295 begin RS(39);RL(287);moveto(46);Rx:=4;end;
1301 14 :if(noun in[13,1])and(13 in p[42])then
1302 begin Sc:=Sc+10;noun:=13;end;
1303 2,19 :if(noun in[53,73,87])then
1304 begin RS(39);RL(287);moveto(46);Rx:=4;end;
1310 2,19 :if(noun in[53,73,87])then
1311 begin RS(39);RL(287);moveto(46);Rx:=4;end;
1317 45 :begin RL(274);Rx:=0;moveto(46);end;
1318 44,47..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);
1323 46 :begin RL(274);Rx:=8;moveto(46);end;
1324 45 :begin Rx:=9;RL(274);moveto(46);end;
1325 43,47..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);
1329 45 :begin Rx:=Rx+1;RL(274);
1331 if not(en('T'))then begin Ev:=Ev+['T'];Sc:=Sc+30;end;
1333 if(Rx>86)then begin RL(340);moveto(47)end
1335 46 :begin Rx:=Rx-1;RL(274);
1336 if(Rx=8)then moveto(45);
1337 if(Rx<1)then moveto(44);
1339 43,44,47..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);
1343 46,52,2,19:begin if(random(2)=1)then begin RS(37);DropAll;moveto(48)end
1344 else begin RL(277);moveto(48)end;end;
1346 43,44,47..50:RL(278);
1350 45,51,2:if(random(3)=2)and(noun<>35)then begin RS(38);moveto(47)end
1351 else if(noun<>35)then RL(279);
1352 43,44,46..50:RL(279);
1353 14 :if(noun in[27,1])and(27 in p[48])then
1354 begin Sc:=Sc+20;noun:=27;end;
1355 11 :if(noun=35)then RL(289)
1361 {-------------------}
1362 procedure SpecialAnswers9;
1370 43,58 :begin RL(290);moveto(49);end;
1371 44,57 :if(noun=Null)or(noun in[88,26,50])then
1372 begin RS(41);if not(en('L'))then
1373 begin Ev:=Ev+['L'];Sc:=Sc+25;end;moveto(51);end;
1379 30,28,38,17,14:if(noun=88)then RL(294);
1395 52,2,57:if(noun=Null)or(noun=69)then begin if not(en('Q'))then
1396 begin Ev:=Ev+['Q'];Sc:=Sc+30;end;moveto(55);end;
1406 50 :begin if not(en('R'))then
1407 begin Ev:=Ev+['R'];Sc:=Sc+20;end;moveto(56);end;
1411 51,2,58,44:if(noun=Null)or(noun=69)then moveto(53);
1412 11 :if(noun in[11,45])then
1413 begin RL(297);if(en('k'))then RL(298) else RL(299)end;
1414 26,40:if(noun in[45,26,11,68])and(noun2=27)and(SepWord='with')then
1416 begin Ev:=Ev+['k'];RS(45);for o:=2 to NMax do
1417 if(o in cabiset)then r[o]:=55;
1418 if not(en('R'))then begin Ev:=Ev+['R'];Sc:=Sc+55;end;
1420 else Say(11,'
\8aJ
\82¢
\82Ä
\82¢
\82é')
1421 else if(SepWord='s')then RL(317);
1422 29 :if(noun=27)and(noun2 in[45,26,11,68])and(SepWord='in')then
1424 begin Ev:=Ev+['k'];RS(45);for o:=2 to NMax do
1425 if(o in cabiset)then r[o]:=55;
1426 if not(en('R'))then begin Ev:=Ev+['R'];Sc:=Sc+55;end;
1429 3 :if(noun in[45,26,11])then
1431 begin RL(314);play(30,32,30);Ev:=Ev-['k'];
1432 for o:= 2 to NMax do if(o in cabiset)then r[o]:=Null;
1434 else Say(11,'
\8c®
\82ª
\8a|
\82©
\82Á
\82Ä
\82¢
\82é');
1435 24,30 :if(noun in[26,11])then
1438 if(cabiset=[])then RL(339)else
1439 for o:=0 to NMax do if(o in Cabiset)then writeln(' ',m[o,1])
1448 {-------------------}
1449 procedure SpecialAnswers10;
1458 2,51,58:if(noun=Null)or(noun=69)then moveto(57);
1462 46,57,2,33:if(noun=Null)or(noun=65)then
1463 begin n[68,1]:='keyhole';n[68,4]:='slot';moveto(58)end;
1469 43,44,46..51,20:if(en('i'))and(en('j'))and KeyHole then
1470 begin sound(38);RS(61);ShRm:=2;moveto(59);sound(20);
1471 for o:=0 to NMax do if(r[o]=58)then r[o]:=59;
1472 if not(en('S'))then begin Ev:=Ev+['S'];Sc:=Sc+60 end end else RL(325);
1473 28 :if(noun=10)then noun:=81;
1474 11 :if(noun=68)then if KeyHole then RL(336)else RL(404);
1480 45,57:begin if not(en('w'))then begin Ev:=Ev+['w'];RL(346);end
1481 else begin RL(347);DEAD end end;
1482 46,48,50:moveto(63);
1483 58 :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
1484 51 :begin sound(38);RL(344);delay(999);sound(20)end;
1485 52 :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
1486 14 :if(noun=63)then begin RS(65);DEAD;end;
1487 28 :if(noun=10)then noun:=81;
1496 57,44 :begin sound(25);if not(en('V'))then begin Ev:=Ev+['V'];Sc:=Sc+30;end;
1497 RS(67);writeln;moveto(69);nosound;
1499 58 :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
1500 51 :begin sound(38);RL(344);delay(999);sound(20)end;
1501 52 :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
1502 14 :if(noun=63)then begin RS(65);DEAD;end;
1503 28 :if(noun=10)then noun:=81;
1507 46 :begin RL(347);DEAD;end;
1510 45,47,49:moveto(64);
1511 58 :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
1512 51 :begin sound(38);RL(344);delay(999);sound(20)end;
1513 52 :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
1514 14 :if(noun=63)then begin RS(65);DEAD;end;
1515 28 :if(noun=10)then noun:=81;
1521 {-------------------}
1522 procedure SpecialAnswers11;
1533 43,44,46,48,50:RL(343);
1534 58 :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
1535 51 :begin sound(38);RL(344);delay(999);sound(20)end;
1536 52 :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
1537 14 :if(noun=63)then begin RS(65);DEAD;end;
1538 28 :if(noun=10)then noun:=81;
1545 43..45,47,49:RL(343);
1546 58 :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
1547 51 :begin sound(38);RL(344);delay(999);sound(20)end;
1548 52 :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
1549 14 :if(noun=63)then begin RS(65);DEAD;end;
1550 28 :if(noun=10)then noun:=81;
1554 43 :begin RL(347);DEAD;end;
1560 58 :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
1561 51 :begin sound(38);RL(344);delay(999);sound(20)end;
1562 52 :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
1563 14 :if(noun=63)then begin RS(65);DEAD;end;
1564 28 :if(noun=10)then noun:=81;
1568 28,27 :if(noun in[10,21,81,36])then RL(351);
1569 11 :if(noun in[10,21,81,36,20,25])then RL(352)else
1570 if(noun=65)then RL(353);
1575 44,57,2,33:if(noun=Null)or(noun=65)then moveto(69)else
1576 if(noun in[69,50])then moveto(71);
1579 11 :if(noun=65)then RL(353)
1580 else if(noun=68)then if KeyHole then RL(336)else RL(404);
1584 48,51,58:moveto(70);
1586 11 :if(noun=58)then RL(386)else
1587 if(noun=25)then RL(418);
1588 28,27:if(noun in[10,36])then begin RL(387);
1589 for o:=1 to random(12)+4 do play(random(250),random(250),random(30))
1591 39 :if(noun=25)then begin RL(387);
1592 for o:=1 to random(99)+75 do
1593 begin x:=random(9999);play(x,x,random(19)+10);delay(5)end
1600 {-------------------}
1601 procedure SpecialAnswers12;
1609 5,45,47,48,50:if FlasOff then RL(14)
1611 48:moveto(9);47:moveto(13);
1612 5:if(29 in inven)or(40 in inven)or(2 in inven)then
1614 else begin RL(18); moveto(12);end;
1616 45:if(en('C'))then moveto(14) else RL(144);
1618 31 :if(input='nepo egassap')and not(en('C'))then
1619 begin Ev:=Ev+['C']; RS(11);Sc:=Sc+35;end;
1620 11 :if(noun in [79,72])then if(en('C'))then RL(270)else RS(13);
1621 27,28:if(noun in [79,72])then RL(26);
1622 17,0,6:if(noun in [79,72])then RL(27);
1623 38 :if(noun in [79,72])then RL(30);
1627 4,47 :if FlasOff then RL(14)
1629 4:begin RL(18); moveto(11);end;
1632 43..46,48..52 :if FlasOff then RL(14);
1633 14 :if(noun in[70,1])and not(en('G'))then
1634 begin noun:=70;Ev:=Ev+['G'];Sc:=Sc+40;end;
1635 7 :if not(en('G'))then begin Ev:=Ev+['G'];RL(157);
1636 FlagSA:='r';verb:=14;noun:=70;Sc:=Sc+40;end;
1640 50 :if flasoff then RL(14)
1641 else begin moveto(11); Ev:=Ev-['q'];end;
1642 43 :if(en('q'))then begin RL(24); DEAD;end
1643 else begin RL(23); Ev:=Ev+['q'];end;
1645 14 :if(noun=47)then RL(25);
1646 9 :begin RL(68);vanish(noun);end;
1651 45 :if(flasoff)then RL(14)else moveto(18);
1655 46 :if(flasoff)then RL(14)else moveto(17);
1656 49,52 :if(flasoff)then RL(14)else begin RL(308);moveto(19);end;
1657 47 :if(flasoff)then RL(14)else
1658 if not(en('F'))then begin RS(19);writeln;moveto(21);
1659 Ev:=Ev+['F'];Sc:=Sc+10;end
1661 11 :if(noun in[79,50])then RL(254);
1667 {-------------------}
1668 procedure SpecialAnswers13;
1678 19,2 :if(noun in[53,6,64,73])then begin RL(0);DEAD;end;
1679 14,27 :if noun=14 then RL(2)else
1680 if(noun in[1,40])and(40 in p[2])then
1681 begin noun:=40;Sc:=Sc+10;Verb:=14;RL(417);FlagSA:='r' end;
1682 11 :if(noun in[66,46])then RL(11);
1683 26 :if noun=14then RL(13);
1688 14 :if not(en('I'))and(noun in[7,1])then
1689 begin Ev:=Ev+['I'];noun:=7;Sc:=Sc+5 end;
1690 23,24,11:if(noun=84)then RL(152)else
1691 if(noun=22)then RL(415);
1697 61:if(en('H'))then RL(153) else begin Ev:=Ev+['H'];r[34]:=32;
1698 RL(154);Sc:=Sc+15;end;
1704 14 :if(noun=74)and(74 in P[34])then begin P[34]:=P[34]-[74];
1705 inven:=inven+[74];RL(138);Sc:=Sc+25;end;
1706 42 :if(noun=74)and(74 in P[34])then RL(175);
1707 28,27:if(noun in[10,36])then begin RL(387);
1708 for o:=1 to random(12)+4 do play(random(250),random(250),random(30))
1710 39 :if(noun=25)then begin RL(387);
1711 for o:=1 to random(99)+75 do
1712 begin x:=random(9999);play(x,x,random(19)+10);delay(5)end
1717 21:begin;RL(140);RL(141);end;
1718 68:if(SlotCon=Null)then RL(143) else
1719 begin SA;writeln('
\83X
\83\8d\83b
\83g
\82Ì
\92\86\82É
\82Í',m[SlotCon,1],'
\82ª
\82 \82é
\81B')end;
1720 58:if(SlotCon=77)and not(en('x'))then
1721 begin Ev:=Ev+['x'];Sc:=Sc+5;RS(75)end
1722 else if(SlotCon=77)then RS(77)else RL(385)
1728 44 :begin TextColor(m8);writeln('
\83J
\83W
\83m
\83z
\81[
\83\8b');TextColor(m2);RS(0)end;
1729 19,2 :if(noun in[53,6,64,73])then begin RL(0);DEAD;end;
1730 11 :if(noun=73)then RL(19);
1737 6,17 :if(noun=57)and(here(40))and((noun2=40)or(noun2=Null))then
1738 begin RS(16);Sc:=-500;
1739 Loc:='
\95Â
\82¶
\82½
\83L
\83\83\83r
\83\93';Verbose:=True;inven:=[];KitSet:=KitSet-[57];
1740 n[57,1]:='plastic card';n[57,2]:='card';n[57,3]:='plastic';
1741 n[57,4]:='elevato card';n[57,5]:='elevato';m[57,1]:='
\83J
\81[
\83h';r[57]:=76;moveto(76)
1743 33,19,2 :if(noun in[6,53,64])then moveto(3)
1749 {-------------------}
1750 procedure SpecialAnswers14;
1759 44,57 :begin RL(290);moveto(50);n[36,1]:='lever';n[36,2]:='handle';end;
1761 11 :if(noun in[26,50])then RL(292);
1762 2 :if(noun=72)then RL(312);
1763 // 11 :if(noun=72)then RL(313); // FIXME: Bug? Duplicate 11
1767 43..50:begin o:=random(8)+3;writeln(o,'
\83}
\83C
\83\8b\82Ù
\82Ç
\94ò
\8ds
\82µ
\82½
\81c');
1768 if(random(4)=2)then ShRm:=13 else ShRm:=Random(15);moveto(59)end;
1770 58 :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
1771 51 :begin sound(30);
1772 if not(en('U'))then begin RS(64);writeln;Ev:=Ev+['U'];Sc:=Sc+45;end
1773 else RL(349);moveto(63);sound(20)end;
1774 14 :if(noun=63)then begin RS(65);DEAD;end;
1775 28 :if(noun=10)then noun:=81;
1780 43,44,58:moveto(73);
1785 43,45,58:moveto(72);
1787 44 :begin moveto(74);if(MnRm=Null)then RL(356);end;
1793 44 :if(MnRm=Null)then begin Verbose:=False;Moveto(75);Verbose:=True;
1794 RS(69);MnRm:=75;Attack:=False end else moveto(75);
1799 11 :if(noun in[14,61])then RL(364);
1804 11 :if(noun=26)then RL(271)else
1805 if(noun=57)then RL(408);
1811 {===================}
1812 function chr_p(c : byte) : char;
1814 {$ifdef ASCII_TERMINAL}
1816 175: chr_p := '>'; // as
\81â
1824 {===================}
1825 procedure ScreenDraw_PlayerInput;
1827 gotoxy(1,23);writeln;TextColor(m5);write(chr_p(175), ' ');
1829 gotoxy(1,1);textcolor(m4);TextBackGround(m6);
1830 gotoxy(10,1); writeln(Tic,' '); gotoxy(75,1); writeln(Sc,' ');
1831 gotoxy(35-(length(Loc)div 2),1);writeln(' ',Loc,' ');
1832 TextBackGround(0);Window(1,2,80,25);gotoxy(3,24);
1834 if(Loc<>'Civilization!')then READLN(LINE)else repeat;until false;
1835 if(Line='r')or(Line='repeat')then Line:=Again
1839 gotoxy(1,23);TextColor(m3);writeln(chr_p(175));TextColor(m2);
1841 {-------------------}
1847 assign1;assign2;assign3;assign4;assign5;assign6;assign7;assign8;
1850 {*****} repeat {*****}
1852 if Skip then Time; writeln;
1854 if(length(Line)=0)then begin
1855 ScreenDraw_PlayerInput;
1856 while pos(' then ',Line)>0 do
1857 begin x:=pos('then ',Line);delete(Line,x,4);insert('.',Line,x)end;
1862 if(pos('.',Line)>0)then begin
1863 Input:=copy(Line,1,pos('.',Line));
1864 delete(Line,1,pos('.',Line));
1865 delete(Input,pos('.',Input),1);
1872 while pos(' it ',Input)>0 do
1873 begin x:=pos(' it ',Input)+1;delete(Input,x,2);insert(LastNoun,Input,x);
1874 Format(Input);Chop(Input)end;
1875 if(Input[length(Input)]=' ')then delete(Input,length(Input),1);
1884 3..4 :SpecialAnswers1;
1885 5..10 :SpecialAnswers2;
1886 14..16 :SpecialAnswers3;
1887 19..24 :SpecialAnswers4;
1888 25,27..29,33 :SpecialAnswers5;
1889 30 :SpecialAnswers6;
1890 26,35..40 :SpecialAnswers7;
1891 41..48 :SpecialAnswers8;
1892 50..55 :SpecialAnswers9;
1893 56..58,60..62,65..67:SpecialAnswers10;
1894 63,64,68..71 :SpecialAnswers11;
1895 11..13,17,18 :SpecialAnswers12;
1896 0..2,31,32,34 :SpecialAnswers13;
1897 49,59,72..76 :SpecialAnswers14
1900 if FlagSA <> 's' then
1902 11,18,22,41,43..52,57,58 :DefaultAnswers1;
1903 29 :DefaultAnswers2;
1904 1,2,8,12,13,15,16,19,21,
1905 23..25,31,33,34,38,40,60,63:DefaultAnswers3;
1906 3,6,7,20,30,35,53..56,59 :DefaultAnswers4;
1907 9,26 :DefaultAnswers5;
1908 27,28,62 :DefaultAnswers6;
1909 14,64,4,5 :DefaultAnswers7;
1910 0,10,17,42,39 :DefaultAnswers8;
1911 32 :DefaultAnswers9;
1912 36,37,61,65 :DefaultAnswers10;
1916 {*****} until False {*****}