1 ! ==============================================================================
2 ! ENGLISH: Language Definition File
4 ! Supplied for use with Inform 6 -- Release 6.12.3 -- Serial number 190320
6 ! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2019
8 ! This file is free software: you can redistribute it and/or modify
9 ! it under the terms of the GNU Affero General Public License as
10 ! published by the Free Software Foundation, either version 3 of the
11 ! License, or (at your option) any later version.
13 ! This file is distributed in the hope that it will be useful, but
14 ! WITHOUT ANY WARRANTY; without even the implied warranty of
15 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 ! Affero General Public License for more details.
18 ! You should have received a copy of the GNU Affero General Public
19 ! License along with this program. If not, see
20 ! https://gnu.org/licenses/
22 ! This file is automatically Included in your game file by "parserm".
23 ! Strictly, "parserm" includes the file named in the "language__" variable,
24 ! whose contents can be defined by+language_name=XXX compiler setting (with a
25 ! default of "english").
27 ! Define the constant DIALECT_US before including "parser" to obtain American
29 ! ==============================================================================
33 #Ifndef LIBRARY_ENGLISH; ! if this file is already included,
34 ! don't try to include it again.
36 ! ------------------------------------------------------------------------------
37 ! Part I. Preliminaries
38 ! ------------------------------------------------------------------------------
40 Constant EnglishNaturalLanguage; ! Needed to keep old pronouns mechanism
42 Class CompassDirection
43 with number 0, article "the",
45 if (location provides compass_look && location.compass_look(self)) rtrue;
46 if (self.compass_look()) rtrue;
47 L__M(##Look, 7, self);
50 parse_name [; return -1; ]
53 Object Compass "compass" has concealed;
55 #Ifndef WITHOUT_DIRECTIONS;
56 CompassDirection -> n_obj with short_name "north", door_dir n_to,
58 CompassDirection -> s_obj with short_name "south", door_dir s_to,
60 CompassDirection -> e_obj with short_name "east", door_dir e_to,
62 CompassDirection -> w_obj with short_name "west", door_dir w_to,
64 CompassDirection -> ne_obj with short_name "northeast", door_dir ne_to,
65 name 'ne' 'northeast';
66 CompassDirection -> nw_obj with short_name "northwest", door_dir nw_to,
67 name 'nw' 'northwest';
68 CompassDirection -> se_obj with short_name "southeast", door_dir se_to,
69 name 'se' 'southeast';
70 CompassDirection -> sw_obj with short_name "southwest", door_dir sw_to,
71 name 'sw' 'southwest';
72 CompassDirection -> u_obj with short_name "up above", door_dir u_to,
73 name 'u//' 'up' 'ceiling' 'above' 'sky';
74 CompassDirection -> d_obj with short_name "ground", door_dir d_to,
75 name 'd//' 'down' 'floor' 'below' 'ground';
76 #endif; ! WITHOUT_DIRECTIONS
78 CompassDirection -> in_obj with short_name "inside", door_dir in_to;
79 CompassDirection -> out_obj with short_name "outside", door_dir out_to;
81 ! ------------------------------------------------------------------------------
83 ! ------------------------------------------------------------------------------
85 Constant AGAIN1__WD = 'again';
86 Constant AGAIN2__WD = 'g//';
87 Constant AGAIN3__WD = 'again';
88 Constant OOPS1__WD = 'oops';
89 Constant OOPS2__WD = 'o//';
90 Constant OOPS3__WD = 'oops';
91 Constant UNDO1__WD = 'undo';
92 Constant UNDO2__WD = 'undo';
93 Constant UNDO3__WD = 'undo';
95 Constant ALL1__WD = 'all';
96 Constant ALL2__WD = 'each';
97 Constant ALL3__WD = 'every';
98 Constant ALL4__WD = 'everything';
99 Constant ALL5__WD = 'both';
100 Constant AND1__WD = 'and';
101 Constant AND2__WD = 'and';
102 Constant AND3__WD = 'and';
103 Constant BUT1__WD = 'but';
104 Constant BUT2__WD = 'except';
105 Constant BUT3__WD = 'but';
106 Constant ME1__WD = 'me';
107 Constant ME2__WD = 'myself';
108 Constant ME3__WD = 'self';
109 Constant OF1__WD = 'of';
110 Constant OF2__WD = 'of';
111 Constant OF3__WD = 'of';
112 Constant OF4__WD = 'of';
113 Constant OTHER1__WD = 'another';
114 Constant OTHER2__WD = 'other';
115 Constant OTHER3__WD = 'other';
116 Constant THEN1__WD = 'then';
117 Constant THEN2__WD = 'then';
118 Constant THEN3__WD = 'then';
120 Constant NO1__WD = 'n//';
121 Constant NO2__WD = 'no';
122 Constant NO3__WD = 'no';
123 Constant YES1__WD = 'y//';
124 Constant YES2__WD = 'yes';
125 Constant YES3__WD = 'yes';
127 Constant AMUSING__WD = 'amusing';
128 Constant FULLSCORE1__WD = 'fullscore';
129 Constant FULLSCORE2__WD = 'full';
130 Constant QUIT1__WD = 'q//';
131 Constant QUIT2__WD = 'quit';
132 Constant RESTART__WD = 'restart';
133 Constant RESTORE__WD = 'restore';
135 Array LanguagePronouns table
137 ! word possible GNAs connected
143 'it' $$001000111000 NULL
144 'him' $$100000100000 NULL
145 'her' $$010000010000 NULL
146 'them' $$000111000111 NULL;
148 Array LanguageDescriptors table
150 ! word possible GNAs descriptor connected
151 ! to follow: type: to:
156 'my' $$111111111111 POSSESS_PK 0
157 'this' $$111111111111 POSSESS_PK 0
158 'these' $$000111000111 POSSESS_PK 0
159 'that' $$111111111111 POSSESS_PK 1
160 'those' $$000111000111 POSSESS_PK 1
161 'his' $$111111111111 POSSESS_PK 'him'
162 'her' $$111111111111 POSSESS_PK 'her'
163 'their' $$111111111111 POSSESS_PK 'them'
164 'its' $$111111111111 POSSESS_PK 'it'
165 'the' $$111111111111 DEFART_PK NULL
166 'a//' $$111000111000 INDEFART_PK NULL
167 'an' $$111000111000 INDEFART_PK NULL
168 'some' $$000111000111 INDEFART_PK NULL
169 'lit' $$111111111111 light NULL
170 'lighted' $$111111111111 light NULL
171 'unlit' $$111111111111 (-light) NULL;
173 Array LanguageNumbers table
174 'one' 1 'two' 2 'three' 3 'four' 4 'five' 5
175 'six' 6 'seven' 7 'eight' 8 'nine' 9 'ten' 10
176 'eleven' 11 'twelve' 12 'thirteen' 13 'fourteen' 14 'fifteen' 15
177 'sixteen' 16 'seventeen' 17 'eighteen' 18 'nineteen' 19 'twenty' 20;
179 ! ------------------------------------------------------------------------------
180 ! Part III. Translation
181 ! ------------------------------------------------------------------------------
183 [ LanguageToInformese;
186 ! ------------------------------------------------------------------------------
188 ! ------------------------------------------------------------------------------
190 Constant LanguageAnimateGender = male;
191 Constant LanguageInanimateGender = neuter;
193 Constant LanguageContractionForms = 2; ! English has two:
194 ! 0 = starting with a consonant
195 ! 1 = starting with a vowel
197 [ LanguageContraction text;
198 if (text->0 == 'a' or 'e' or 'i' or 'o' or 'u'
199 or 'A' or 'E' or 'I' or 'O' or 'U') return 1;
203 Array LanguageArticles -->
205 ! Contraction form 0: Contraction form 1:
206 ! Cdef Def Indef Cdef Def Indef
208 "The " "the " "a " "The " "the " "an " ! Articles 0
209 "The " "the " "some " "The " "the " "some "; ! Articles 1
213 ! m f n m f n m f n m f n
215 Array LanguageGNAsToArticles --> 0 0 0 1 1 1 0 0 0 1 1 1;
217 [ LanguageDirection d;
223 ne_to: print "northeast";
224 nw_to: print "northwest";
225 se_to: print "southeast";
226 sw_to: print "southwest";
231 default: return RunTimeError(9,d);
235 [ LanguageNumber n f;
236 if (n == 0) { print "zero"; rfalse; }
237 if (n < 0) { print "minus "; n = -n; }
238 if (n >= 1000) { print (LanguageNumber) n/1000, " thousand"; n = n%1000; f = 1; }
240 if (f == 1) print ", ";
241 print (LanguageNumber) n/100, " hundred"; n = n%100; f = 1;
245 if (f == 1) print " ";
247 if (f == 1) print " and ";
262 13: print "thirteen";
263 14: print "fourteen";
266 17: print "seventeen";
267 18: print "eighteen";
268 19: print "nineteen";
269 20 to 99: switch (n/10) {
279 if (n%10 ~= 0) print "-", (LanguageNumber) n%10;
283 [ LanguageTimeOfDay hours mins i;
286 if (i < 10) print " ";
287 print i, ":", mins/10, mins%10;
288 if ((hours/12) > 0) print " pm"; else print " am";
293 'i//','inv','inventory':
294 print "take inventory";
296 'x//': print "examine";
303 ! ----------------------------------------------------------------------------
304 ! LanguageVerbIsDebugging is called by SearchScope. It should return true
305 ! if word w is a debugging verb which needs all objects to be in scope.
306 ! ----------------------------------------------------------------------------
309 [ LanguageVerbIsDebugging w;
310 if (w == 'purloin' or 'tree' or 'abstract'
311 or 'gonear' or 'scope' or 'showobj')
317 ! ----------------------------------------------------------------------------
318 ! LanguageVerbLikesAdverb is called by PrintCommand when printing an UPTO_PE
319 ! error or an inference message. Words which are intransitive verbs, i.e.,
320 ! which require a direction name as an adverb ('walk west'), not a noun
321 ! ('I only understood you as far as wanting to touch /the/ ground'), should
322 ! cause the routine to return true.
323 ! ----------------------------------------------------------------------------
325 [ LanguageVerbLikesAdverb w;
326 if (w == 'look' or 'go' or 'push' or 'walk')
331 ! ----------------------------------------------------------------------------
332 ! LanguageVerbMayBeName is called by NounDomain when dealing with the
333 ! player's reply to a "Which do you mean, the short stick or the long
334 ! stick?" prompt from the parser. If the reply is another verb (for example,
335 ! LOOK) then then previous ambiguous command is discarded /unless/
336 ! it is one of these words which could be both a verb /and/ an
337 ! adjective in a 'name' property.
338 ! ----------------------------------------------------------------------------
340 [ LanguageVerbMayBeName w;
341 if (w == 'long' or 'short' or 'normal'
342 or 'brief' or 'full' or 'verbose')
347 Constant NKEY__TX = "N = next subject";
348 Constant PKEY__TX = "P = previous";
349 Constant QKEY1__TX = " Q = resume game";
350 Constant QKEY2__TX = "Q = previous menu";
351 Constant RKEY__TX = "RETURN = read subject";
353 Constant NKEY1__KY = 'N';
354 Constant NKEY2__KY = 'n';
355 Constant PKEY1__KY = 'P';
356 Constant PKEY2__KY = 'p';
357 Constant QKEY1__KY = 'Q';
358 Constant QKEY2__KY = 'q';
360 Constant SCORE__TX = "Score: ";
361 Constant MOVES__TX = "Moves: ";
362 Constant TIME__TX = "Time: ";
363 Constant SCORE_S__TX = "S: ";
364 Constant MOVES_S__TX = "M: ";
365 Constant TIME_S__TX = "T: ";
366 Constant CANTGO__TX = "You can't go that way.";
367 Constant FORMER__TX = "your former self";
368 Constant MYFORMER__TX = "my former self";
369 Constant YOURSELF__TX = "yourself";
370 Constant MYSELF__TX = "myself";
371 Constant YOU__TX = "You";
372 Constant DARKNESS__TX = "Darkness";
374 Constant THOSET__TX = "those things";
375 Constant THAT__TX = "that";
376 Constant OR__TX = " or ";
377 Constant NOTHING__TX = "nothing";
378 Constant IS__TX = " is";
379 Constant ARE__TX = " are";
380 Constant IS2__TX = "is ";
381 Constant ARE2__TX = "are ";
382 Constant WAS__TX = " was";
383 Constant WERE__TX = " were";
384 Constant WAS2__TX = "was ";
385 Constant WERE2__TX = "were ";
386 Constant AND__TX = " and ";
387 Constant WHOM__TX = "whom ";
388 Constant WHICH__TX = "which ";
389 Constant COMMA__TX = ", ";
390 Constant COLON__TX = ": ";
392 ! ----------------------------------------------------------------------------
393 ! FYI on nominative pronouns versus accusative pronouns...
394 ! Consider the sentence "She hit him.".
395 ! "She" is in the nominative case. It appears at the beginning of a sentence.
396 ! "him" is in the accusative case. It won't appear at the beginning.
397 ! ----------------------------------------------------------------------------
402 if (player provides narrative_voice) {
403 if (player.narrative_voice == 1) { print "me"; return; }
404 if (player.narrative_voice == 3) { CDefart(player); return; }
409 if (obj has pluralname) { print "those"; return; }
410 if (obj has female) { print "her"; return; }
411 if (obj has male or animate)
412 if (obj hasnt neuter) { print "him"; return; }
419 if (player provides narrative_voice) {
420 if (player.narrative_voice == 1) { print "myself"; return; }
421 if (player.narrative_voice == 3) { CDefart(player); return; }
426 if (obj has pluralname) { print "them"; return; }
427 if (obj has female) { print "her"; return; }
428 if (obj has male or animate)
429 if (obj hasnt neuter) { print "him"; return; }
436 if (player provides narrative_voice) {
437 if (player.narrative_voice == 1) { print "I"; return; }
438 if (player.narrative_voice == 3) { CDefart(player); return; }
443 if (obj has pluralname) { print "Those"; return; }
444 if (obj has female) { print "She"; return; }
445 if (obj has male or animate) {
446 if (obj hasnt neuter) { print "He"; return; }
452 [ CTheyreorThats obj;
454 if (player provides narrative_voice) {
455 if (player.narrative_voice == 1) { Tense("I'm", "I was"); return; }
456 if (player.narrative_voice == 3) { CDefart(player); Tense("'s", " was"); return; }
458 Tense("You're", "You were");
461 if (obj has pluralname) { Tense("They're", "They were"); return; }
462 if (obj has female) { Tense("She's", "She was"); return; }
463 if (obj has male or animate) {
464 if (obj hasnt neuter) { Tense("He's", "He was"); return; }
466 Tense("That's", "That was");
470 if (player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
471 if (obj has pluralname || obj == player) print "were"; else print "was";
474 if (obj has pluralname || obj == player) print "are"; else print "is";
478 [ nop x; x = x; ]; ! print rule to absorb unwanted return value
480 [ SubjectNotPlayer obj reportage v2 v3 past;
481 if (past && player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
485 if (reportage && actor ~= player) {
486 L__M(##Miscellany, 60, actor);
488 print (theActor) obj, " ", (string) v3;
492 if (obj has pluralname) {
493 print (the) obj, " ", (string) v2;
496 else {print (the) obj, " ", (string) v3; return;}
499 if (obj has pluralname) { print (The) obj, " ", (string) v2; return;}
500 else { print (The) obj, " ", (string) v3; return;}
503 [ CSubjectVoice obj v1 v2 v3 past;
504 if (past && player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
509 if (v2 == 0) v2 = v1;
510 if (v3 == 0) v3 = v1;
512 if (obj ~= player) { print (string) v3; return; }
514 if (player provides narrative_voice) switch (player.narrative_voice) {
515 1: print (string) v1; return;
517 3: print (string) v3; return;
518 default: RunTimeError(16, player.narrative_voice);
521 print (string) v2; return;
524 [ CSubjectVerb obj reportage nocaps v1 v2 v3 past;
525 if (past && player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
530 if (v2 == 0) v2 = v1;
531 if (v3 == 0) v3 = v1;
534 if (player provides narrative_voice) switch (player.narrative_voice) {
535 1: print "I ", (string) v1; return;
538 print " ", (string) v3; return;
539 default: RunTimeError(16, player.narrative_voice);
541 if (nocaps) { print "you ", (string) v2; return; }
542 print "You ", (string) v2; return;
544 SubjectNotPlayer(obj, reportage, v2, v3);
547 [ CSubjectIs obj reportage nocaps;
549 if (player provides narrative_voice) switch (player.narrative_voice) {
550 1: Tense("I'm", "I was"); return;
553 Tense(" is", " was"); return;
554 default: RunTimeError(16, player.narrative_voice);
556 if (nocaps) Tense("you're", "you were");
557 else Tense("You're", "You were");
560 SubjectNotPlayer(obj, reportage, "are", "is", "was");
563 [ CSubjectIsnt obj reportage nocaps;
565 if (player provides narrative_voice) switch (player.narrative_voice) {
566 1: Tense("I'm not", "I wasn't"); return;
569 Tense(" isn't", " wasn't"); return;
570 default: RunTimeError(16, player.narrative_voice);
572 if (nocaps) Tense("you aren't", "you weren't");
573 else Tense("You aren't", "You weren't");
576 SubjectNotPlayer(obj, reportage, "aren't", "isn't", "wasn't");
579 [ CSubjectHas obj reportage nocaps;
581 if (player provides narrative_voice) switch (player.narrative_voice) {
582 1: Tense("I've", "I had"); return;
585 Tense(" has", " had"); return;
586 default: RunTimeError(16, player.narrative_voice);
588 if (nocaps) Tense("you've", "you'd");
589 else Tense("You've", "You'd");
592 SubjectNotPlayer(obj, reportage, "have", "has", "had");
595 [ CSubjectWill obj reportage nocaps;
597 if (player provides narrative_voice) switch (player.narrative_voice) {
598 1: Tense("I'll", "I would"); return;
601 Tense(" will", " would"); return;
602 default: RunTimeError(16, player.narrative_voice);
604 if (nocaps) Tense("you'll", "you'd");
605 else Tense("You'll", "You'd");
608 SubjectNotPlayer(obj, reportage, "will", "will", "would");
611 [ CSubjectCan obj reportage nocaps;
612 CSubjectVerb(obj, reportage, nocaps, "can", 0, "can", "could");
615 [ CSubjectCant obj reportage nocaps;
616 CSubjectVerb(obj, reportage, nocaps, "can't", 0, "can't", "couldn't");
619 [ CSubjectDont obj reportage nocaps;
620 CSubjectVerb(obj, reportage, nocaps, "don't", 0, "doesn't", "didn't");
626 if (player provides narrative_voice) switch(player.narrative_voice) {
627 1: print (string) MYSELF__TX; return;
629 3: if (obj has female) {print "herself"; return;}
630 print "himself"; return;
631 default: RunTimeError(16, player.narrative_voice);
633 print "yourself"; return;
635 if (obj has male) { print "himself"; return; }
636 if (obj has female) {print "herself"; return; }
637 print "itself"; return;
641 [ Possessive obj caps;
643 if (player provides narrative_voice) switch(player.narrative_voice) {
644 1: if (caps) print "M"; else print "m"; print "y"; return;
648 default: RunTimeError(16, player.narrative_voice);
650 if (caps) print "Y"; else print "y";
653 if (obj has pluralname) {
654 if (caps) print "T"; else print "t";
655 print "heir"; return;
657 if (obj has female) {
658 if (caps) print "H"; else print "h";
661 if (obj has male or animate) {
662 if (obj hasnt neuter) {
663 if (caps) print "H"; else print "h";
667 if (caps) print "I"; else { print "i"; }
671 [ PossessiveCaps obj;
672 Possessive(obj, true);
677 if (obj provides narrative_voice) {
678 switch (obj.narrative_voice) {
679 1: print "I"; return;
681 3: if (obj has neuter) { print "it"; return; }
682 if (obj has female) { print "she"; return; }
684 default: RunTimeError(16, player.narrative_voice);
689 if (obj has pluralname) { print "they"; return; }
690 if (obj has female) { print "she"; return; }
691 if (obj has male or animate)
692 if (obj hasnt neuter) { print "he"; return; }
696 [ SupportObj obj s1 s2;
697 if (obj has supporter) print (string) s1;
698 else print (string) s2;
701 [ PluralObj obj s1 s2 past;
702 if (player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
706 if (obj has pluralname) print (string) s1;
707 else print (string) s2;
710 ! ----------------------------------------------------------------------------
711 ! Tense is a little helper function to present the correct tense of a
712 ! verb. The first parameter is the verb in present tense. The second
713 ! parameter is the verb in past tense. If the second parameter is
714 ! omitted, then nothing will be printed if the appropriate tense is past.
715 ! ----------------------------------------------------------------------------
716 [ Tense present past;
717 if (player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
718 if (past == false) return;
722 print (string) present;
726 CSubjectVerb(actor, false, false, "decide",0,"decides","decided");
728 Tense("'s not", " wasn't");
729 " such a good idea.";
734 [ LowerCase c; ! for ZSCII matching ISO 8859-1
736 'A' to 'Z': c = c + 32;
737 202, 204, 212, 214, 221: c--;
739 158 to 160, 167, 168, 208 to 210: c = c - 3;
740 186 to 190, 196 to 200: c = c - 5 ;
741 175 to 180: c = c - 6;
746 [ UpperCase c; ! for ZSCII matching ISO 8859-1
748 'a' to 'z': c = c - 32;
749 201, 203, 211, 213, 220: c++;
751 155 to 157, 164, 165, 205 to 207: c = c + 3;
752 181 to 185, 191 to 195: c = c + 5 ;
753 169 to 174: c = c + 6;
758 #Ifnot; ! TARGET_GLULX
760 [ LowerCase c; return glk_char_to_lower(c); ];
761 [ UpperCase c; return glk_char_to_upper(c); ];
767 [ LanguageLM n x1 x2;
773 Attack: print "Violence ";
774 Tense("isn't", "wasn't");
775 " the answer to this one.";
776 Blow: CSubjectCant(actor,true);
777 " usefully blow ", (thatorthose) x1, ".";
779 1: print "This dangerous act would ";
780 Tense("achieve", "have achieved");
784 Buy: print "Nothing ";
788 1: print "Climbing ", (ThatOrThose) x1, " would ";
789 Tense("achieve", "have achieved");
794 1: CSubjectIs(x1,true);
795 print " not something ", (theActor) actor;
796 Tense(" can close", " could have closed");
798 2: CSubjectIs(x1,true); " already closed.";
799 3: CSubjectVerb(actor,false,false,"close",0,"closes","closed");
801 4: "(first closing ", (the) x1, ")";
803 CommandsOff: switch (n) {
804 1: "[Command recording off.]";
806 2: "[Command recording already off.]";
809 CommandsOn: switch (n) {
810 1: "[Command recording on.]";
812 2: "[Commands are currently replaying.]";
813 3: "[Command recording already on.]";
814 4: "[Command recording failed.]";
817 CommandsRead: switch (n) {
818 1: "[Replaying commands.]";
820 2: "[Commands are already replaying.]";
821 3: "[Command replay failed. Command recording is on.]";
822 4: "[Command replay failed.]";
823 5: "[Command replay complete.]";
826 Consult: CSubjectVerb(actor,true,false,"discover",0,"discovers","discovered");
827 print " nothing of interest in ";
828 if (x1 == player) { OnesSelf(x1); ".";}
829 else print_ret (the) x1, ".";
831 1: print "Cutting ", (ThatOrThose) x1, " up would ";
832 Tense("achieve", "have achieved");
836 Dig: print "Digging would ";
837 Tense("achieve", "have achieved");
839 Disrobe: switch (n) {
840 1: CSubjectIsnt(actor,true); " wearing ", (ThatOrThose) x1, ".";
841 2: CSubjectVerb(actor,false,false,"take off",0,"takes off", "took off");
844 Drink: print "There";
846 " nothing suitable to drink here.";
848 1: CSubjectIs(x1,true); " already here.";
849 2: CSubjectVerb(actor, false, false, "haven't got", 0, "hasn't got",
852 3: "(first taking ", (the) x1, " off)";
856 1: CSubjectIs(x1,true); " plainly inedible.";
857 2: CSubjectVerb(actor,false,false,"eat",0,"eats", "ate"); print " ", (the) x1;
858 if (actor == player) ". Not bad."; else ".";
861 1: CSubjectCant(x1,true); " contain things.";
862 2: CSubjectIs(x1,true); " closed.";
863 3: CSubjectIs(x1,true); " empty already.";
864 4: print "That wouldn't ";
865 Tense("empty", "have emptied");
869 1: print "But "; CSubjectIs(actor,true,true);
870 " already ", (nop) SupportObj(x1,"on ","in "), (the) x1, ".";
871 2: CSubjectIs(x1,true);
872 print " not something ", (theActor) actor;
873 Tense(" can ", " could ");
875 'stand': "stand on.";
876 'sit': "sit down on.";
877 'lie': "lie down on.";
880 3: CSubjectCant(actor,true);
881 " get into the closed ", (name) x1, ".";
882 4: CSubjectCan(actor,true);
883 " only get into something free-standing.";
884 5: CSubjectVerb(actor,false,false,"get",0,"gets","got");
885 SupportObj(x1," onto"," into"); " ", (the) x1, ".";
886 6: "(getting ", (nop) SupportObj(x1,"off","out of"), " ", (the) x1, ")";
887 7: if (x1 has supporter) "(getting onto ", (the) x1, ")";
888 if (x1 has container) "(getting into ", (the) x1, ")";
889 "(entering ", (the) x1, ")";
891 Examine: switch (n) {
892 1: "Darkness, noun. An absence of light to see by.";
893 2: CSubjectVerb(actor,true,false,"see",0,"sees","saw");
894 " nothing special about ", (the) x1, ".";
895 3: CSubjectIs(x1,true);
898 if (x1 has on) "on."; else "off.";
902 CSubjectIsnt(actor,true,true);
903 " in anything at the moment.";
904 2: CSubjectCant(actor,false);
905 " get out of the closed ", (name) x1, ".";
906 3: CSubjectVerb(actor,false,false,"get",0,"gets", "got");
908 SupportObj(x1,"off","out of"); " ", (the) x1, ".";
909 4: CSubjectIsnt(actor,true);
911 SupportObj(x1,"on","in"); " ", (the) x1, ".";
912 5: "(first getting ", (nop) SupportObj(x1,"off","out of"),
914 6: CSubjectVerb(actor,false,false,"stand",0,"stands","stood"); " up.";
918 Tense("isn't", "wasn't");
919 " anything obvious with which to fill ", (the) x1, ".";
920 2: print "Filling ", (the) x1, " from ", (the) x2, " wouldn't ";
921 Tense("make", "have made");
924 FullScore: switch (n) {
925 1: if (deadflag) print "The score was "; else print "The score is ";
926 "made up as follows:^";
927 2: "finding sundry items";
928 3: "visiting various places";
929 4: print "total (out of ", MAX_SCORE; ")";
931 GetOff: print "But ";
932 CSubjectIsnt(actor,true,true); " on ", (the) x1, " at the moment.";
934 1: CSubjectIsnt(actor,true); " holding ", (the) x1, ".";
935 2: CSubjectVerb(actor,false,false,"juggle",0,"juggles","juggled");
936 print " ", (the) x1, " for a while, but ";
937 CSubjectVoice(actor,"don't","don't","doesn't","didn't");
939 3: CSubjectDont(x1,true); " seem interested.";
940 4: CSubjectVerb(actor,false,false,"hand over",0,"hands over","handed over");
944 1: CSubjectWill(actor,true);
945 Tense(" have", " have had");
946 " to get ", (nop) SupportObj(x1,"off","out of"), " ", (the) x1, " first.";
947 2: CSubjectCant(actor,true); " go that way.";
948 3: CSubjectIs (actor,true); " unable to climb ", (the) x1, ".";
949 4: CSubjectIs (actor,true); " unable to descend by ", (the) x1, ".";
950 5: CSubjectCant(actor,true); " since ", (the) x1, " ", (IsOrAre) x1, " in the way.";
951 6: CSubjectCant(actor,true); " since ", (the) x1, " ", (nop) PluralObj(x1,"lead","leads","led"), " nowhere.";
952 7: CSubjectVerb(actor,false,false,"depart",0,"departs","departed"); ".";
955 1: CSubjectVerb(actor,true,false,"need",0,"needs","needed");
956 print " to be holding ", (the) x1, " before ", (theActor) actor;
957 Tense(" can", " could");
958 " put ", (ItOrThem) x1, " into something else.";
959 2: CSubjectCant(x1,true); " contain things.";
960 3: CSubjectIs (x1,true); " closed.";
961 4: CSubjectWill(actor,true);
962 Tense(" need", " have needed");
963 " to take ", (ItOrThem) x1, " off first.";
964 5: CSubjectCant(actor,true); " put something inside itself.";
965 6: "(first taking ", (ItOrThem) x1, " off)";
967 Tense(" is", " was");
968 " no more room in ", (the) x1, ".";
970 9: CSubjectVerb(actor,false,false,"put",0,"puts","put"); " ", (the) x1, " into ", (the) x2, ".";
973 1: CSubjectIs (actor,false); " carrying nothing.";
974 2: CSubjectIs (actor,false); print " carrying";
978 Jump: CSubjectVerb(actor,false,false,"jump",0,"jumps","jumped"); " on the spot, fruitlessly.";
980 1: print "Jumping in ", (the) x1, " ";
981 Tense("would achieve", "would have achieved");
986 1: print "Jumping upon ", (the) x1, " ";
987 Tense("would achieve", "would have achieved");
991 JumpOver: switch (n) {
992 1: print "Jumping over ", (the) x1, " ";
993 Tense("would achieve", "would have achieved");
997 Kiss: "Keep your mind on the game.";
998 Listen: CSubjectVerb(actor,true,false,"hear",0,"hears","heard"); " nothing unexpected.";
999 ListMiscellany: switch (n) {
1000 1: print " (providing light)";
1001 2: print " (which ", (IsOrAre) x1, " closed)";
1002 3: print " (closed and providing light)";
1003 4: print " (which ", (IsOrAre) x1, " empty)";
1004 5: print " (empty and providing light)";
1005 6: print " (which ", (IsOrAre) x1, " closed and empty)";
1006 7: print " (closed, empty and providing light)";
1007 8: print " (providing light and being worn";
1008 9: print " (providing light";
1009 10: print " (being worn";
1010 11: print " (which ", (IsOrAre) x1, " ";
1012 13: print "open but empty";
1014 15: print "closed and locked";
1015 16: print " and empty";
1016 17: print " (which ", (IsOrAre) x1, " empty)";
1017 18: print " containing ";
1019 20: print ", on top of ";
1021 22: print ", inside ";
1023 LMode1: print (string) Story, " is now in its ";
1024 if (initial_lookmode == 1) print "normal ";
1025 "~brief~ printing mode, which gives long descriptions
1026 of places never before visited and short descriptions otherwise.";
1027 LMode2: print (string) Story, " is now in its ";
1028 if (initial_lookmode ~= 1 or 3) print "normal ";
1029 "~verbose~ mode, which always gives long descriptions
1030 of locations (even if you've been there before).";
1031 LMode3: print (string) Story, " is now in its ";
1032 if (initial_lookmode == 3) print "normal ";
1033 "~superbrief~ mode, which always gives short descriptions
1034 of locations (even if you haven't been there before).";
1036 1: CSubjectDont(x1,true);
1037 print " seem to be something ", (theActor) actor;
1038 Tense(" can", " could");
1040 2: CSubjectIs (x1,true); " locked at the moment.";
1041 3: CSubjectWill(actor,true); " first have to close ", (the) x1, ".";
1042 4: CSubjectDont(x1,true); " seem to fit the lock.";
1043 5: CSubjectVerb(actor,false,false,"lock",0,"locks","locked"); " ", (the) x1, ".";
1046 1: print " (on ", (the) x1, ")";
1047 2: print " (in ", (the) x1, ")";
1048 3: print " (as ", (object) x1, ")";
1049 4: print "^On ", (the) x1;
1050 WriteListFrom(child(x1),
1051 ENGLISH_BIT+RECURSE_BIT+PARTINV_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT);
1054 if (x1 ~= location) {
1055 if (x1 has supporter) print "^On "; else print "^In ";
1056 print (the) x1, " ", (theActor) actor, " ";
1057 Tense("can", "could");
1059 else { new_line; CSubjectCan(actor,false); }
1060 if (n == 5) print " also";
1062 WriteListFrom(child(x1),
1063 ENGLISH_BIT+RECURSE_BIT+PARTINV_BIT+TERSE_BIT+CONCEAL_BIT+WORKFLAG_BIT);
1064 if (x1 ~= location) "."; else " here.";
1065 7: CSubjectVerb(actor,true,false,"see",0,"sees", "saw"); " nothing unexpected in that direction.";
1067 LookUnder: switch (n) {
1069 Tense("'s", " was");
1071 2: CSubjectVerb(actor,true,false,"find",0,"finds", "found"); " nothing of interest.";
1074 Miscellany: switch (n) {
1075 1: "(considering the first sixteen objects only)^";
1076 2: "Nothing to do!";
1077 3: print " "; CSubjectVerb(player, false, false, "died", "have died", "has died");
1079 4: print " "; CSubjectVerb(player, false, false, "won", "have won", "has won");
1081 5: print "^Would you like to RESTART, RESTORE a saved game";
1082 #Ifdef DEATH_MENTION_UNDO;
1083 print ", UNDO your last move";
1085 if (TASKS_PROVIDED == 0) print ", give the FULL score for that game";
1086 if (deadflag == 2 && AMUSING_PROVIDED == 0)
1087 print ", see some suggestions for AMUSING things to do";
1088 SerialComma(3); print " or QUIT?";
1089 6: "[Your interpreter does not provide ~undo~. Sorry!]";
1090 #Ifdef TARGET_ZCODE;
1091 7: "~Undo~ failed. [Not all interpreters provide it.]";
1092 #Ifnot; ! TARGET_GLULX
1093 7: "[You cannot ~undo~ any further.]";
1095 8: "Please give one of the answers above.";
1097 Tense("is now", "was");
1098 print " pitch dark in ";
1099 Tense("here", "there");
1101 10: "I beg your pardon?";
1102 11: "[You can't ~undo~ what hasn't been done!]";
1103 12: "[Can't ~undo~ twice in succession. Sorry!]";
1104 13: "[Previous turn undone.]";
1105 14: "Sorry, that can't be corrected.";
1106 15: "Think nothing of it.";
1107 16: "~Oops~ can only correct a single word.";
1110 print " pitch dark, and ", (theActor) actor;
1111 Tense(" can't", " couldn't");
1113 18: print "yourself";
1114 19: "As good-looking as ever.";
1115 20: "To repeat a command like ~frog, jump~, just say ~again~, not ~frog, again~.";
1116 21: CSubjectCan(actor,true); " hardly repeat that.";
1117 22: CSubjectCant(actor, true); " begin with a comma.";
1118 23: CSubjectVerb(actor, true, false, "seem", "seem", "seems", "seemed");
1119 print " to want to talk to someone, but I ";
1120 Tense("can't", "couldn't"); " see whom.";
1121 24: CSubjectCant(actor, true); " talk to ", (the) x1, ".";
1122 25: "To talk to someone, try ~someone, hello~ or some such.";
1123 26: "(first taking ", (the) x1, ")";
1124 27: "I didn't understand that sentence.";
1125 28: print "I only understood you as far as wanting to ";
1126 29: "I didn't understand that number.";
1127 30: CSubjectCant(actor,true); " see any such thing.";
1128 31: CSubjectVerb(actor, true, false, "seem", "seem", "seems", "seemed");
1129 " to have said too little!";
1130 32: CSubjectIsnt(actor); " holding that!";
1131 33: "You can't use multiple objects with that verb.";
1132 34: "You can only use multiple objects once on a line.";
1133 35: "I'm not sure what ~", (address) x1, "~ refers to.";
1134 36: "You excepted something not included anyway!";
1135 37: CSubjectCan(actor,true); " only do that to something animate.";
1137 38: "That's not a verb I recognize.";
1139 38: "That's not a verb I recognise.";
1141 39: "That's not something you need to refer to in the course of this game.";
1142 40: CSubjectCant(actor,true); " see ~", (address) x1, "~ (", (the) x2, ") at the moment.";
1143 41: "I didn't understand the way that finished.";
1144 42: if (x1 == 0) print "None"; else print "Only ", (number) x1;
1146 if (x1 == 1) print "is"; else print "are";
1148 43: "Nothing to do!";
1151 " nothing to ", (address) x1, ".";
1152 45: print "Who do you mean, ";
1153 46: print "Which do you mean, ";
1154 47: "Sorry, you can only have one item here. Which exactly?";
1156 CSubjectVoice(player, "do", "do", "does", "did");
1158 CSubjectVerb(player, false, true, "want", "want", "want", "want");
1159 if (x1 ~= player && x1 ~= nothing) print " ", (the) x1;
1160 print " to "; PrintCommand(); "?";
1162 CSubjectVoice(player, "do", "do", "does", "did");
1164 CSubjectVerb(player, false, true, "want", "want", "want", "want");
1165 if (x1 ~= player && x1 ~= nothing) print " ", (the) x1;
1166 print " to "; PrintCommand(); "?";
1167 50: print "The score has just gone ";
1168 if (x1 > 0) print "up"; else { x1 = -x1; print "down"; }
1169 print " by ", (number) x1, " point";
1170 if (x1 > 1) print "s";
1171 51: "(Since something dramatic has happened, your list of commands has been cut short.)";
1172 52: "^Type a number from 1 to ", x1, ", 0 to redisplay or press ENTER.";
1173 53: "^[Please press SPACE.]";
1174 54: "[Comment recorded.]";
1175 55: "[Comment NOT recorded.]";
1178 58: "(first taking ", (the) x1, " ", (nop) SupportObj(x2,"off","out of"), " ", (the) x2, ")";
1179 59: "You'll have to be more specific.";
1180 60: print (The) x1, " observes that ";
1182 No,Yes: "That was a rhetorical question.";
1184 "Score notification off.";
1185 NotifyOn: "Score notification on.";
1186 Objects: switch (n) {
1187 1: "Objects ", (nop) CSubjectVerb(actor, false, true, "have", "have", "has"), " handled:^";
1191 5: print " (given away)";
1192 6: print " (in ", (name) x1, ")";
1193 7: print " (in ", (the) x1, ")";
1194 8: print " (inside ", (the) x1, ")";
1195 9: print " (on ", (the) x1, ")";
1196 10: print " (lost)";
1199 1: CSubjectIs (x1,true);
1200 print " not something ", (theActor) actor;
1201 Tense(" can open", " could have opened");
1203 2: CSubjectVerb(x1,true,false,"seem",0,"seems","seemed"); " to be locked.";
1204 3: CSubjectIs (x1,true); " already open.";
1205 4: CSubjectVerb(actor,false,false,"open",0,"opens","opened"); print " ", (the) x1;
1206 Tense(", revealing ", " and revealed ");
1207 if (WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT) == 0) "nothing.";
1209 5: CSubjectVerb(actor,false,false,"open",0,"opens","opened"); " ", (the) x1, ".";
1210 6: "(first opening ", (the) x1, ")";
1212 Order: CSubjectHas(x1,false); " better things to do.";
1213 Places: switch (n) {
1214 1: print "You have visited: ";
1217 Pray: print "Nothing practical ";
1218 Tense("results", "resulted");
1219 " from ", (Possessive) actor, " prayer.";
1221 Pronouns: switch (n) {
1222 1: print "At the moment, ";
1224 3: print "is unset";
1225 4: "no pronouns are known to the game.";
1228 Pull,Push,Turn: switch (n) {
1229 1: if (player provides narrative_voice && player.narrative_voice == 3) {
1230 print_ret (The) player, " ", (nop) Tense("isn't", "wasn't"),
1231 " likely to help matters by punishing ",
1232 (OnesSelf) player, " that way.";
1234 "Punishing ", (OnesSelf) player, " that way ",
1235 (nop) Tense("isn't", "wasn't"), " likely to help matters.";
1237 2: CSubjectIs (x1,true); " fixed in place.";
1238 3: CSubjectIs (actor,true); " unable to.";
1239 4: print "Nothing obvious ";
1240 Tense("happens", "happened");
1242 5: print "That would ";
1243 Tense("be", "have been");
1244 " less than courteous.";
1248 PushDir: switch (n) {
1249 1: print "That really wouldn't ";
1250 Tense("serve", "have served");
1253 Tense("not", "wasn't");
1255 3: print "Not that way ", (theActor) actor;
1256 Tense(" can't", "couldn't");
1260 1: CSubjectVerb(actor,true,false,"need",0,"needs","needed");
1261 print " to be holding ", (the) x1, " before ", (theActor) actor;
1262 Tense(" can", " could");
1263 " put ", (ItOrThem) x1, " on top of something else.";
1264 2: CSubjectCant(actor,true,true); " put something on top of itself.";
1265 3: print "Putting things on ", (the) x1, " would";
1266 Tense(" achieve", "'ve achieved");
1268 4: CSubjectVerb(actor,true,false,"lack",0,"lacks","lacked"); " the dexterity.";
1269 5: "(first taking ", (ItOrThem) x1, " off)";
1272 " no more room on ", (the) x1, ".";
1274 8: CSubjectVerb(actor,false,false,"put",0,"puts","put"); " ", (the) x1, " on ", (the) x2, ".";
1277 1: print "Please answer yes or no.";
1278 2: print "Are you sure you want to quit? ";
1280 Remove: switch (n) {
1281 1: CSubjectIs (x1,true); " unfortunately closed.";
1283 CSubjectIsnt(x1,true); " there now.";
1286 Restart: switch (n) {
1287 1: print "Are you sure you want to restart? ";
1290 Restore: switch (n) {
1291 1: "Restore failed.";
1295 1: CSubjectVerb(actor,true,false,"achieve",0,"achieves","achieved");
1296 " nothing by this.";
1304 1: if (deadflag) print "In that game you scored "; else print "You have so far scored ";
1305 print score, " out of a possible ", MAX_SCORE, ", in ", turns, " turn";
1306 if (turns ~= 1) print "s";
1308 2: "There is no score in this story.";
1310 ScriptOff: switch (n) {
1311 1: "Transcripting is already off.";
1312 2: "^End of transcript.";
1313 3: "Attempt to end transcript failed.";
1315 ScriptOn: switch (n) {
1316 1: "Transcripting is already on.";
1317 2: print "Start of a transcript of"; VersionSub();
1318 3: "Attempt to begin transcript failed.";
1320 Search: switch (n) {
1322 Tense("'s", " was");
1326 " nothing on ", (the) x1, ".";
1327 3: print "On ", (the) x1;
1328 WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT);
1330 4: CSubjectVerb(actor,true,false,"find",0,"finds","found"); " nothing of interest.";
1331 5: CSubjectCant(actor,true); " see inside, since ", (the) x1, " ", (IsOrAre) x1, " closed.";
1332 6: "", (The) x1, " ", (IsOrAre) x1, " empty.";
1334 7: print "In ", (the) x1;
1335 WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT);
1338 ! Preceding "No," unable to be used for Set and SetTo
1339 Set: CSubjectCant(actor,true); " set ", (ThatOrThose) x1, ".";
1340 SetTo: CSubjectCant(actor,true); " set ", (ThatOrThose) x1, " to anything.";
1342 1: CSubjectIsnt(actor,true); " holding ", (the) x1, ".";
1343 2: CSubjectIs (x1,true); " unimpressed.";
1345 Sing: print (PossessiveCaps) actor, " singing ";
1348 Sleep: CSubjectIsnt(actor,true); " feeling especially drowsy.";
1350 1: CSubjectVerb(actor,true,false,"smell",0,"smells","smelled"); " nothing unexpected.";
1354 Sorry: "Oh, don't apologize.";
1356 Sorry: "Oh, don't apologise.";
1358 Squeeze: switch (n) {
1360 2: CSubjectVerb(actor,true,false,"achieve",0,"achieves","achieved"); " nothing by this.";
1362 Strong: print "Real adventurers ";
1363 Tense ("do", "did");
1364 " not use such language.";
1365 Swim: print "There";
1366 Tense("'s not", " wasn't");
1367 " enough water to swim in.";
1368 Swing: print "There";
1369 Tense("'s", " was");
1370 " nothing sensible to swing here.";
1371 SwitchOff: switch (n) {
1372 1: CSubjectIs (x1,true);
1373 print " not something ", (theActor) actor, " ";
1374 Tense("can", "could");
1376 2: CSubjectIs (x1,true); " already off.";
1377 3: CSubjectVerb(actor,false,false,"switch",0,"switches","switched"); " ", (the) x1, " off.";
1379 SwitchOn: switch (n) {
1380 1: CSubjectIs (x1,true);
1381 print " not something ", (theActor) actor, " ";
1382 Tense("can", "could");
1384 2: CSubjectIs (x1,true); " already on.";
1385 3: CSubjectVerb(actor,false,false,"switch",0,"switches","switched"); " ", (the) x1, " on.";
1390 2: CSubjectIs (actor,false); " always self-possessed.";
1391 3: print "I don't suppose ", (the) x1, " would ";
1392 Tense("care", "have cared");
1394 4: CSubjectWill(actor,true);
1397 "to get ", (nop) SupportObj(x1,"off","out of"), " ", (the) x1, " first.";
1398 5: CSubjectVerb(actor,true,false,"already have",0,"already has","already had"); " ", (ThatOrThose) x1, ".";
1399 6: CSubjectVerb(x2,true,false,"seem",0,"seems","seemed"); " to belong to ", (the) x1, ".";
1400 7: CSubjectVerb(x2,true,false,"seem",0,"seems","seemed"); " to be a part of ", (the) x1, ".";
1401 8: CSubjectIs (x1,true); " not available.";
1402 9: CSubjectIs (x1,true); " not open.";
1403 10: CSubjectIs (x1,true); " hardly portable.";
1404 11: CSubjectIs (x1,true); " fixed in place.";
1405 12: CSubjectIs (actor,true); " carrying too many things already.";
1406 13: "(putting ", (the) x1, " into ", (the) x2, " to make room)";
1409 1: CSubjectVerb(actor,true,false,"taste",0,"tastes","tasted"); " nothing unexpected.";
1413 1: CSubjectVerb(actor,false,false,"talk",0,"talks","talked");
1414 " to ", (OnesSelf) actor, " for a while.";
1415 2: print "This provoke";
1419 Think: "What a good idea.";
1420 ThrowAt: switch (n) {
1422 2: CSubjectVerb(actor,true,false,"lack",0,"lacks","lacked");
1423 print " the nerve when it ";
1424 Tense("comes", "came");
1425 " to the crucial moment.";
1428 1: CSubjectVerb(actor,true,false,"would",0,0);
1429 Tense(" achieve", " have achieved");
1430 " nothing by this.";
1435 2: CSubjectVerb(actor,true,false,"feel",0,"feels","felt"); " nothing unexpected.";
1436 3: print "That really wouldn't ";
1437 Tense("serve", "have served");
1441 Unlock: switch (n) {
1442 1: CSubjectDont(x1,true);
1443 print " seem to be something ", (theActor) actor;
1444 Tense(" can unlock", " could have unlocked");
1446 2: CSubjectIs (x1,true); " unlocked at the moment.";
1447 3: CSubjectDont(x1,true); " seem to fit the lock.";
1448 4: CSubjectVerb(actor,false,false,"unlock",0,"unlocks","unlocked"); " ", (the) x1, ".";
1449 5: "(first unlocking ", (the) x1, ")";
1451 VagueGo: CSubjectWill(actor);
1454 "to say which compass direction to go in.";
1455 Verify: switch (n) {
1456 1: "The game file has verified as intact.";
1457 2: "The game file did not verify as intact, and may be corrupt.";
1459 Wait: print "Time passe";
1462 Wake: print "The dreadful truth is, this ";
1465 WakeOther:print "That seem";
1470 CSubjectIsnt(actor,true,true); " holding ", (ThatOrThose) x1, ".";
1471 2: CSubjectVerb(actor,false,false,"look",0,"looks","looked");
1472 print " ridiculous waving ", (the) x1;
1474 " at ", (the) x2, ".";
1479 CSubjectVerb(actor,false,false,"wave",0,"waves","waved");
1482 2: print " at ", (the) x1;
1484 ", feeling foolish.";
1486 1: CSubjectCant(actor,true); " wear ", (ThatOrThose) x1, "!";
1487 2: CSubjectIs (actor,true); " not holding ", (ThatOrThose) x1, "!";
1488 3: CSubjectIs (actor,true); " already wearing ", (ThatOrThose) x1, "!";
1489 4: CSubjectVerb(actor,false,false,"put on",0,"puts on","put on"); " ", (the) x1, ".";
1494 ! ==============================================================================
1496 Constant LIBRARY_ENGLISH; ! for dependency checking.
1499 ! ==============================================================================