1 ! ==============================================================================
2 ! ENGLISH: Language Definition File
4 ! Supplied for use with Inform 6 -- Release 6.12.4 -- Serial number 200718
6 ! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2020
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";
299 'n//': print "north";
300 's//': print "south";
303 'ne//': print "northeast";
304 'nw//': print "northwest";
305 'se//': print "southeast";
306 'sw//': print "southwest";
312 ! ----------------------------------------------------------------------------
313 ! LanguageVerbIsDebugging is called by SearchScope. It should return true
314 ! if word w is a debugging verb which needs all objects to be in scope.
315 ! ----------------------------------------------------------------------------
318 [ LanguageVerbIsDebugging w;
319 if (w == 'purloin' or 'tree' or 'abstract'
320 or 'gonear' or 'scope' or 'showobj')
326 ! ----------------------------------------------------------------------------
327 ! LanguageVerbLikesAdverb is called by PrintCommand when printing an UPTO_PE
328 ! error or an inference message. Words which are intransitive verbs, i.e.,
329 ! which require a direction name as an adverb ('walk west'), not a noun
330 ! ('I only understood you as far as wanting to touch /the/ ground'), should
331 ! cause the routine to return true.
332 ! ----------------------------------------------------------------------------
334 [ LanguageVerbLikesAdverb w;
335 if (w == 'look' or 'go' or 'push' or 'walk')
340 ! ----------------------------------------------------------------------------
341 ! LanguageVerbMayBeName is called by NounDomain when dealing with the
342 ! player's reply to a "Which do you mean, the short stick or the long
343 ! stick?" prompt from the parser. If the reply is another verb (for example,
344 ! LOOK) then then previous ambiguous command is discarded /unless/
345 ! it is one of these words which could be both a verb /and/ an
346 ! adjective in a 'name' property.
347 ! ----------------------------------------------------------------------------
349 [ LanguageVerbMayBeName w;
350 if (w == 'long' or 'short' or 'normal'
351 or 'brief' or 'full' or 'verbose')
356 Constant NKEY__TX = "N = next subject";
357 Constant PKEY__TX = "P = previous";
358 Constant QKEY1__TX = " Q = resume game";
359 Constant QKEY2__TX = "Q = previous menu";
360 Constant RKEY__TX = "RETURN = read subject";
362 Constant NKEY1__KY = 'N';
363 Constant NKEY2__KY = 'n';
364 Constant PKEY1__KY = 'P';
365 Constant PKEY2__KY = 'p';
366 Constant QKEY1__KY = 'Q';
367 Constant QKEY2__KY = 'q';
369 Constant SCORE__TX = "Score: ";
370 Constant MOVES__TX = "Moves: ";
371 Constant TIME__TX = "Time: ";
372 Constant SCORE_S__TX = "S: ";
373 Constant MOVES_S__TX = "M: ";
374 Constant TIME_S__TX = "T: ";
375 Constant CANTGO__TX = "You can't go that way.";
376 Constant FORMER__TX = "your former self";
377 Constant MYFORMER__TX = "my former self";
378 Constant YOURSELF__TX = "yourself";
379 Constant MYSELF__TX = "myself";
380 Constant YOU__TX = "You";
381 Constant DARKNESS__TX = "Darkness";
383 Constant THOSET__TX = "those things";
384 Constant THAT__TX = "that";
385 Constant THE__TX = "the";
386 Constant OR__TX = " or ";
387 Constant NOTHING__TX = "nothing";
388 Constant IS__TX = " is";
389 Constant ARE__TX = " are";
390 Constant IS2__TX = "is ";
391 Constant ARE2__TX = "are ";
392 Constant WAS__TX = " was";
393 Constant WERE__TX = " were";
394 Constant WAS2__TX = "was ";
395 Constant WERE2__TX = "were ";
396 Constant AND__TX = " and ";
397 Constant WHOM__TX = "whom ";
398 Constant WHICH__TX = "which ";
399 Constant COMMA__TX = ", ";
400 Constant COLON__TX = ":";
403 Constant STAND__TX = 'stand';
404 Constant SIT__TX = 'sit';
405 Constant LIE__TX = 'lie';
407 Constant LIBERROR__TX = "Library error ";
408 Constant TERP__TX = "Interpreter ";
409 Constant VER__TX = "Version ";
410 Constant STDTERP__TX = "Standard interpreter ";
411 Constant TERPVER__TX = "Interpreter version ";
412 Constant LIBSER__TX = "Library Serial Number ";
413 Constant VM__TX = "VM ";
414 Constant RELEASE__TX = "Release ";
415 Constant SERNUM__TX = "Serial number ";
416 Constant INFORMV__TX = "Inform v";
417 Constant LIBRARYV__TX = " Library v";
419 ! ----------------------------------------------------------------------------
420 ! FYI on nominative pronouns versus accusative pronouns...
421 ! Consider the sentence "She hit him.".
422 ! "She" is in the nominative case. It appears at the beginning of a sentence.
423 ! "him" is in the accusative case. It won't appear at the beginning.
424 ! ----------------------------------------------------------------------------
429 if (player provides narrative_voice) {
430 if (player.narrative_voice == 1) { print "me"; return; }
431 if (player.narrative_voice == 3) { CDefart(player); return; }
436 if (obj has pluralname) { print "those"; return; }
437 if (obj has female) { print "her"; return; }
438 if (obj has male or animate)
439 if (obj hasnt neuter) { print "him"; return; }
446 if (player provides narrative_voice) {
447 if (player.narrative_voice == 1) { print "myself"; return; }
448 if (player.narrative_voice == 3) { CDefart(player); return; }
453 if (obj has pluralname) { print "them"; return; }
454 if (obj has female) { print "her"; return; }
455 if (obj has male or animate)
456 if (obj hasnt neuter) { print "him"; return; }
463 if (player provides narrative_voice) {
464 if (player.narrative_voice == 1) { print "I"; return; }
465 if (player.narrative_voice == 3) { CDefart(player); return; }
470 if (obj has pluralname) { print "Those"; return; }
471 if (obj has female) { print "She"; return; }
472 if (obj has male or animate) {
473 if (obj hasnt neuter) { print "He"; return; }
479 [ CTheyreOrThats obj;
481 if (player provides narrative_voice) {
482 if (player.narrative_voice == 1) { Tense("I'm", "I was"); return; }
483 if (player.narrative_voice == 3) { CDefart(player); Tense("'s", " was"); return; }
485 Tense("You're", "You were");
488 if (obj has pluralname) { Tense("They're", "They were"); return; }
489 if (obj has female) { Tense("She's", "She was"); return; }
490 if (obj has male or animate) {
491 if (obj hasnt neuter) { Tense("He's", "He was"); return; }
493 Tense("That's", "That was");
497 if (player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
498 if (obj has pluralname || obj == player) print "were"; else print "was";
501 if (obj has pluralname || obj == player) print "are"; else print "is";
505 [ nop x; x = x; ]; ! print rule to absorb unwanted return value
507 [ SubjectNotPlayer obj reportage nocaps v2 v3 past;
508 if (past && player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
512 if (reportage && actor ~= player) {
513 L__M(##Miscellany, 60, actor);
515 print (theActor) obj, " ", (string) v3;
519 if (obj has pluralname) {
520 print (the) obj, " ", (string) v2;
523 else {print (the) obj, " ", (string) v3; return;}
526 if (obj has pluralname) {
531 print " ", (string) v2;
539 print " ", (string) v3; return;
543 [ CSubjectVoice obj v1 v2 v3 past;
544 if (past && player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
549 if (v2 == 0) v2 = v1;
550 if (v3 == 0) v3 = v1;
552 if (obj ~= player) { print (string) v3; return; }
554 if (player provides narrative_voice) switch (player.narrative_voice) {
555 1: print (string) v1; return;
557 3: print (string) v3; return;
558 default: RunTimeError(16, player.narrative_voice);
561 print (string) v2; return;
564 [ CSubjectVerb obj reportage nocaps v1 v2 v3 past;
565 if (past && player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
570 if (v2 == 0) v2 = v1;
571 if (v3 == 0) v3 = v1;
574 if (player provides narrative_voice) switch (player.narrative_voice) {
575 1: print "I ", (string) v1; return;
578 print " ", (string) v3; return;
579 default: RunTimeError(16, player.narrative_voice);
581 if (nocaps) { print "you ", (string) v2; return; }
582 print "You ", (string) v2; return;
584 SubjectNotPlayer(obj, reportage, nocaps, v2, v3);
587 [ CSubjectIs obj reportage nocaps;
589 if (player provides narrative_voice) switch (player.narrative_voice) {
590 1: Tense("I'm", "I was"); return;
593 Tense(" is", " was"); return;
594 default: RunTimeError(16, player.narrative_voice);
596 if (nocaps) Tense("you're", "you were");
597 else Tense("You're", "You were");
600 SubjectNotPlayer(obj, reportage, nocaps, "are", "is", "was");
603 [ CSubjectIsnt obj reportage nocaps;
605 if (player provides narrative_voice) switch (player.narrative_voice) {
606 1: Tense("I'm not", "I wasn't"); return;
609 Tense(" isn't", " wasn't"); return;
610 default: RunTimeError(16, player.narrative_voice);
612 if (nocaps) Tense("you aren't", "you weren't");
613 else Tense("You aren't", "You weren't");
616 SubjectNotPlayer(obj, reportage, nocaps, "aren't", "isn't", "wasn't");
619 [ CSubjectHas obj reportage nocaps;
621 if (player provides narrative_voice) switch (player.narrative_voice) {
622 1: Tense("I've", "I had"); return;
625 Tense(" has", " had"); return;
626 default: RunTimeError(16, player.narrative_voice);
628 if (nocaps) Tense("you've", "you'd");
629 else Tense("You've", "You'd");
632 SubjectNotPlayer(obj, reportage, nocaps, "have", "has", "had");
635 [ CSubjectWill obj reportage nocaps;
637 if (player provides narrative_voice) switch (player.narrative_voice) {
638 1: Tense("I'll", "I would"); return;
641 Tense(" will", " would"); return;
642 default: RunTimeError(16, player.narrative_voice);
644 if (nocaps) Tense("you'll", "you'd");
645 else Tense("You'll", "You'd");
648 SubjectNotPlayer(obj, reportage, nocaps, "will", "will", "would");
651 [ CSubjectCan obj reportage nocaps;
652 CSubjectVerb(obj, reportage, nocaps, "can", 0, "can", "could");
655 [ CSubjectCant obj reportage nocaps;
656 CSubjectVerb(obj, reportage, nocaps, "can't", 0, "can't", "couldn't");
659 [ CSubjectDont obj reportage nocaps;
660 CSubjectVerb(obj, reportage, nocaps, "don't", 0, "doesn't", "didn't");
666 if (player provides narrative_voice) switch(player.narrative_voice) {
667 1: print (string) MYSELF__TX; return;
669 3: if (obj has female) {print "herself"; return;}
670 print "himself"; return;
671 default: RunTimeError(16, player.narrative_voice);
673 print "yourself"; return;
675 if (obj has male) { print "himself"; return; }
676 if (obj has female) {print "herself"; return; }
677 print "itself"; return;
681 [ Possessive obj caps;
683 if (player provides narrative_voice) switch(player.narrative_voice) {
684 1: if (caps) print "M"; else print "m"; print "y"; return;
688 default: RunTimeError(16, player.narrative_voice);
690 if (caps) print "Y"; else print "y";
693 if (obj has pluralname) {
694 if (caps) print "T"; else print "t";
695 print "heir"; return;
697 if (obj has female) {
698 if (caps) print "H"; else print "h";
701 if (obj has male or animate) {
702 if (obj hasnt neuter) {
703 if (caps) print "H"; else print "h";
707 if (caps) print "I"; else { print "i"; }
711 [ PossessiveCaps obj;
712 Possessive(obj, true);
717 if (obj provides narrative_voice) {
718 switch (obj.narrative_voice) {
719 1: print "I"; return;
721 3: if (obj has neuter) { print "it"; return; }
722 if (obj has female) { print "she"; return; }
724 default: RunTimeError(16, player.narrative_voice);
729 if (obj has pluralname) { print "they"; return; }
730 if (obj has female) { print "she"; return; }
731 if (obj has male or animate)
732 if (obj hasnt neuter) { print "he"; return; }
736 [ SupportObj obj s1 s2;
737 if (obj has supporter) print (string) s1;
738 else print (string) s2;
741 [ PluralObj obj s1 s2 past;
742 if (player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
746 if (obj has pluralname) print (string) s1;
747 else print (string) s2;
750 ! ----------------------------------------------------------------------------
751 ! Tense is a little helper function to present the correct tense of a
752 ! verb. The first parameter is the verb in present tense. The second
753 ! parameter is the verb in past tense. If the second parameter is
754 ! omitted, then nothing will be printed if the appropriate tense is past.
755 ! ----------------------------------------------------------------------------
756 [ Tense present past;
757 if (player provides narrative_tense && player.narrative_tense == PAST_TENSE) {
758 if (past == false) return;
762 print (string) present;
766 CSubjectVerb(actor, false, false, "decide",0,"decides","decided");
768 Tense("'s not", " wasn't");
769 " such a good idea.";
774 [ LowerCase c; ! for ZSCII matching ISO 8859-1
776 'A' to 'Z': c = c + 32;
777 202, 204, 212, 214, 221: c--;
779 158 to 160, 167, 168, 208 to 210: c = c - 3;
780 186 to 190, 196 to 200: c = c - 5 ;
781 175 to 180: c = c - 6;
786 [ UpperCase c; ! for ZSCII matching ISO 8859-1
788 'a' to 'z': c = c - 32;
789 201, 203, 211, 213, 220: c++;
791 155 to 157, 164, 165, 205 to 207: c = c + 3;
792 181 to 185, 191 to 195: c = c + 5 ;
793 169 to 174: c = c + 6;
798 #Ifnot; ! TARGET_GLULX
800 [ LowerCase c; return glk_char_to_lower(c); ];
801 [ UpperCase c; return glk_char_to_upper(c); ];
807 [ LanguageLM n x1 x2;
813 Attack: print "Violence ";
814 Tense("isn't", "wasn't");
815 " the answer to this one.";
816 Blow: CSubjectCant(actor,true);
817 " usefully blow ", (thatorthose) x1, ".";
819 1: print "This dangerous act would ";
820 Tense("achieve", "have achieved");
824 Buy: print "Nothing ";
828 1: print "Climbing ", (ThatOrThose) x1, " would ";
829 Tense("achieve", "have achieved");
834 1: CSubjectIs(x1,true);
835 print " not something ", (theActor) actor;
836 Tense(" can close", " could have closed");
838 2: CSubjectIs(x1,true); " already closed.";
839 3: CSubjectVerb(actor,false,false,"close",0,"closes","closed");
841 4: "(first closing ", (the) x1, ")";
843 CommandsOff: switch (n) {
844 1: "[Command recording off.]";
846 2: "[Command recording already off.]";
849 CommandsOn: switch (n) {
850 1: "[Command recording on.]";
852 2: "[Commands are currently replaying.]";
853 3: "[Command recording already on.]";
854 4: "[Command recording failed.]";
857 CommandsRead: switch (n) {
858 1: "[Replaying commands.]";
860 2: "[Commands are already replaying.]";
861 3: "[Command replay failed. Command recording is on.]";
862 4: "[Command replay failed.]";
863 5: "[Command replay complete.]";
866 Consult: CSubjectVerb(actor,true,false,"discover",0,"discovers","discovered");
867 print " nothing of interest in ";
868 if (x1 == player) { OnesSelf(x1); ".";}
869 else print_ret (the) x1, ".";
871 1: print "Cutting ", (ThatOrThose) x1, " up would ";
872 Tense("achieve", "have achieved");
876 Dig: print "Digging would ";
877 Tense("achieve", "have achieved");
879 Disrobe: switch (n) {
880 1: CSubjectIsnt(actor,true); " wearing ", (ThatOrThose) x1, ".";
881 2: CSubjectVerb(actor,false,false,"take off",0,"takes off", "took off");
883 3: "(first taking ", (the) x1, " off)";
884 4: CSubjectVerb(actor,false,false, "will need to", 0, 0, "had to");
885 " remove ", (the) noun, " first.";
887 Drink: print "There";
889 " nothing suitable to drink here.";
891 1: CSubjectIs(x1,true); " already here.";
892 2: CSubjectVerb(actor, false, false, "haven't got", 0, "hasn't got",
898 1: CSubjectIs(x1,true); " plainly inedible.";
899 2: CSubjectVerb(actor,false,false,"eat",0,"eats", "ate"); print " ", (the) x1;
900 if (actor == player) ". Not bad."; else ".";
903 1: CSubjectCant(x1,true); " contain things.";
904 2: CSubjectIs(x1,true); " closed.";
905 3: CSubjectIs(x1,true); " empty already.";
906 4: print "That wouldn't ";
907 Tense("empty", "have emptied");
911 1: print "But "; CSubjectIs(actor,true,true);
912 " already ", (nop) SupportObj(x1,"on ","in "), (the) x1, ".";
913 2: CSubjectIs(x1,true);
914 print " not something ", (theActor) actor;
915 Tense(" can ", " could ");
917 'stand': "stand on.";
918 'sit': "sit down on.";
919 'lie': "lie down on.";
922 3: CSubjectCant(actor,true);
923 " get into the closed ", (name) x1, ".";
924 4: CSubjectCan(actor,true);
925 " only get into something free-standing.";
926 5: CSubjectVerb(actor,false,false,"get",0,"gets","got");
927 SupportObj(x1," onto"," into"); " ", (the) x1, ".";
928 6: "(getting ", (nop) SupportObj(x1,"off","out of"), " ", (the) x1, ")";
929 7: if (x1 has supporter) "(getting onto ", (the) x1, ")";
930 if (x1 has container) "(getting into ", (the) x1, ")";
931 "(entering ", (the) x1, ")";
933 Examine: switch (n) {
934 1: "Darkness, noun. An absence of light to see by.";
935 2: CSubjectVerb(actor,true,false,"see",0,"sees","saw");
936 " nothing special about ", (the) x1, ".";
937 3: CSubjectIs(x1,true);
940 if (x1 has on) "on."; else "off.";
944 CSubjectIsnt(actor,true,true);
945 " in anything at the moment.";
946 2: CSubjectCant(actor,false);
947 " get out of the closed ", (name) x1, ".";
948 3: CSubjectVerb(actor,false,false,"get",0,"gets", "got");
950 SupportObj(x1,"off","out of"); " ", (the) x1, ".";
951 4: CSubjectIsnt(actor,true);
953 SupportObj(x1,"on","in"); " ", (the) x1, ".";
954 5: "(first getting ", (nop) SupportObj(x1,"off","out of"),
956 6: CSubjectVerb(actor,false,false,"stand",0,"stands","stood"); " up.";
960 Tense("isn't", "wasn't");
961 " anything obvious with which to fill ", (the) x1, ".";
962 2: print "Filling ", (the) x1, " from ", (the) x2, " wouldn't ";
963 Tense("make", "have made");
966 FullScore: switch (n) {
967 1: if (deadflag) print "The score was "; else print "The score is ";
968 "made up as follows:^";
969 2: "finding sundry items";
970 3: "visiting various places";
971 4: print "total (out of ", MAX_SCORE; ")";
973 GetOff: print "But ";
974 CSubjectIsnt(actor,true,true); " on ", (the) x1, " at the moment.";
976 1: CSubjectIsnt(actor,true); " holding ", (the) x1, ".";
977 2: CSubjectVerb(actor,false,false,"juggle",0,"juggles","juggled");
978 print " ", (the) x1, " for a while, but ";
979 CSubjectVoice(actor,"don't","don't","doesn't","didn't");
981 3: CSubjectDont(x1,true); " seem interested.";
982 4: CSubjectVerb(actor,false,false,"hand over",0,"hands over","handed over");
986 1: CSubjectWill(actor,true);
987 Tense(" have", " have had");
988 " to get ", (nop) SupportObj(x1,"off","out of"), " ", (the) x1, " first.";
989 2: CSubjectCant(actor,true); " go that way.";
990 3: CSubjectIs (actor,true); " unable to climb ", (the) x1, ".";
991 4: CSubjectIs (actor,true); " unable to descend by ", (the) x1, ".";
992 5: CSubjectCant(actor,true); " since ", (the) x1, " ", (IsOrAre) x1, " in the way.";
993 6: CSubjectCant(actor,true); " since ", (the) x1, " ", (nop) PluralObj(x1,"lead","leads","led"), " nowhere.";
994 7: CSubjectVerb(actor,false,false,"depart",0,"departs","departed"); ".";
997 1: CSubjectVerb(actor,true,false,"need",0,"needs","needed");
998 print " to be holding ", (the) x1, " before ", (theActor) actor;
999 Tense(" can", " could");
1000 " put ", (ItOrThem) x1, " into something else.";
1001 2: CSubjectCant(x1,true); " contain things.";
1002 3: CSubjectIs (x1,true); " closed.";
1003 4: CSubjectWill(actor,true);
1004 Tense(" need", " have needed");
1005 " to take ", (ItOrThem) x1, " off first.";
1006 5: CSubjectCant(actor,true); " put something inside itself.";
1007 6: "(first taking ", (ItOrThem) x1, " off)";
1009 Tense(" is", " was");
1010 " no more room in ", (the) x1, ".";
1012 9: CSubjectVerb(actor,false,false,"put",0,"puts","put"); " ", (the) x1, " into ", (the) x2, ".";
1015 1: CSubjectIs (actor,false); " carrying nothing.";
1016 2: CSubjectIs (actor,false); print " carrying";
1020 Jump: CSubjectVerb(actor,false,false,"jump",0,"jumps","jumped"); " on the spot, fruitlessly.";
1021 JumpIn: switch (n) {
1022 1: print "Jumping in ", (the) x1, " ";
1023 Tense("would achieve", "would have achieved");
1027 JumpOn: switch (n) {
1028 1: print "Jumping upon ", (the) x1, " ";
1029 Tense("would achieve", "would have achieved");
1033 JumpOver: switch (n) {
1034 1: print "Jumping over ", (the) x1, " ";
1035 Tense("would achieve", "would have achieved");
1039 Kiss: "Keep your mind on the game.";
1040 Listen: CSubjectVerb(actor,true,false,"hear",0,"hears","heard"); " nothing unexpected.";
1041 ListMiscellany: switch (n) {
1042 1: print " (providing light)";
1043 2: print " (which ", (IsOrAre) x1, " closed)";
1044 3: print " (closed and providing light)";
1045 4: print " (which ", (IsOrAre) x1, " empty)";
1046 5: print " (empty and providing light)";
1047 6: print " (which ", (IsOrAre) x1, " closed and empty)";
1048 7: print " (closed, empty and providing light)";
1049 8: print " (providing light and being worn";
1050 9: print " (providing light";
1051 10: print " (being worn";
1052 11: print " (which ", (IsOrAre) x1, " ";
1054 13: print "open but empty";
1056 15: print "closed and locked";
1057 16: print " and empty";
1058 17: print " (which ", (IsOrAre) x1, " empty)";
1059 18: print " containing ";
1061 20: print ", on top of ";
1063 22: print ", inside ";
1065 LMode1: print (string) Story, " is now in its ";
1066 if (initial_lookmode == 1) print "normal ";
1067 "~brief~ printing mode, which gives long descriptions
1068 of places never before visited and short descriptions otherwise.";
1069 LMode2: print (string) Story, " is now in its ";
1070 if (initial_lookmode ~= 1 or 3) print "normal ";
1071 "~verbose~ mode, which always gives long descriptions
1072 of locations (even if you've been there before).";
1073 LMode3: print (string) Story, " is now in its ";
1074 if (initial_lookmode == 3) print "normal ";
1075 "~superbrief~ mode, which always gives short descriptions
1076 of locations (even if you haven't been there before).";
1078 1: CSubjectDont(x1,true);
1079 print " seem to be something ", (theActor) actor;
1080 Tense(" can", " could");
1082 2: CSubjectIs (x1,true); " locked at the moment.";
1083 3: CSubjectWill(actor,true); " first have to close ", (the) x1, ".";
1084 4: CSubjectDont(x1,true); " seem to fit the lock.";
1085 5: CSubjectVerb(actor,false,false,"lock",0,"locks","locked"); " ", (the) x1, ".";
1088 1: print " (on ", (the) x1, ")";
1089 2: print " (in ", (the) x1, ")";
1090 3: print " (as ", (object) x1, ")";
1091 4: print "^On ", (the) x1;
1092 WriteListFrom(child(x1),
1093 ENGLISH_BIT+RECURSE_BIT+PARTINV_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT);
1096 if (x1 ~= location) {
1097 if (x1 has supporter) print "^On "; else print "^In ";
1098 print (the) x1, " ", (theActor) actor, " ";
1099 Tense("can", "could");
1101 else { new_line; CSubjectCan(actor,false); }
1102 if (n == 5) print " also";
1104 WriteListFrom(child(x1),
1105 ENGLISH_BIT+RECURSE_BIT+PARTINV_BIT+TERSE_BIT+CONCEAL_BIT+WORKFLAG_BIT);
1106 if (x1 ~= location) "."; else " here.";
1107 7: CSubjectVerb(actor,true,false,"see",0,"sees", "saw"); " nothing unexpected in that direction.";
1109 LookUnder: switch (n) {
1111 Tense("'s", " was");
1113 2: CSubjectVerb(actor,true,false,"find",0,"finds", "found"); " nothing of interest.";
1116 Miscellany: switch (n) {
1117 1: "(considering the first sixteen objects only)^";
1118 2: "Nothing to do.";
1119 3: print " "; CSubjectVerb(player, false, false, "died", "have died", "has died");
1121 4: print " "; CSubjectVerb(player, false, false, "won", "have won", "has won");
1123 5: print "^Would you like to RESTART, RESTORE a saved game";
1124 #Ifdef DEATH_MENTION_UNDO;
1125 print ", UNDO your last move";
1127 if (TASKS_PROVIDED == 0) print ", give the FULL score for that game";
1128 if (deadflag == 2 && AMUSING_PROVIDED == 0)
1129 print ", see some suggestions for AMUSING things to do";
1130 SerialComma(3); print " or QUIT?";
1131 6: "[Your interpreter does not provide ~undo~. Sorry!]";
1132 #Ifdef TARGET_ZCODE;
1133 7: "~Undo~ failed. [Not all interpreters provide it.]";
1134 #Ifnot; ! TARGET_GLULX
1135 7: "[You cannot ~undo~ any further.]";
1137 8: "Please give one of the answers above.";
1139 Tense("is now", "was");
1140 print " pitch dark in ";
1141 Tense("here", "there");
1143 10: "I beg your pardon?";
1144 11: "[You can't ~undo~ what hasn't been done!]";
1145 12: "[Can't ~undo~ twice in succession. Sorry!]";
1146 13: "[Previous turn undone.]";
1147 14: "Sorry, that can't be corrected.";
1148 15: "Think nothing of it.";
1149 16: "~Oops~ can only correct a single word.";
1152 print " pitch dark, and ", (theActor) actor;
1153 Tense(" can't", " couldn't");
1155 18: print "yourself";
1156 19: "As good-looking as ever.";
1157 20: "To repeat a command like ~frog, jump~, just say ~again~, not ~frog, again~.";
1158 21: CSubjectCan(actor,true); " hardly repeat that.";
1159 22: CSubjectCant(actor, true); " begin with a comma.";
1160 23: CSubjectVerb(actor, true, false, "seem", "seem", "seems", "seemed");
1161 print " to want to talk to someone, but I ";
1162 Tense("can't", "couldn't"); " see whom.";
1163 24: CSubjectCant(actor, true); " talk to ", (the) x1, ".";
1164 25: "To talk to someone, try ~someone, hello~ or some such.";
1165 26: "(first taking ", (the) x1, ")";
1166 27: "I didn't understand that sentence.";
1167 28: print "I only understood you as far as wanting to ";
1168 29: "I didn't understand that number.";
1169 30: CSubjectCant(actor,true); " see any such thing.";
1170 31: CSubjectVerb(actor, true, false, "seem", "seem", "seems", "seemed");
1171 " to have said too little.";
1172 32: CSubjectIsnt(actor); " holding that.";
1173 33: "You can't use multiple objects with that verb.";
1174 34: "You can only use multiple objects once on a line.";
1175 35: "I'm not sure what ~", (address) x1, "~ refers to.";
1176 36: "You excepted something not included anyway.";
1177 37: CSubjectCan(actor,true); " only do that to something animate.";
1179 38: "That's not a verb I recognize.";
1181 38: "That's not a verb I recognise.";
1183 39: "That's not something you need to refer to in the course of this game.";
1184 40: CSubjectCant(actor,true); " see ~", (address) x1, "~ (", (the) x2, ") at the moment.";
1185 41: "I didn't understand the way that finished.";
1186 42: if (x1 == 0) print "None"; else print "Only ", (number) x1;
1188 if (x1 == 1) print "is"; else print "are";
1190 43: "Nothing to do.";
1193 " nothing to ", (address) x1, ".";
1194 45: print "Who do you mean, ";
1195 46: print "Which do you mean, ";
1196 47: "Sorry, you can only have one item here. Which exactly?";
1198 CSubjectVoice(player, "do", "do", "does", "did");
1200 CSubjectVerb(player, false, true, "want", "want", "want", "want");
1201 if (x1 ~= player && x1 ~= nothing) print " ", (the) x1;
1202 print " to "; PrintCommand(); "?";
1204 CSubjectVoice(player, "do", "do", "does", "did");
1206 CSubjectVerb(player, false, true, "want", "want", "want", "want");
1207 if (x1 ~= player && x1 ~= nothing) print " ", (the) x1;
1208 print " to "; PrintCommand(); "?";
1209 50: print "The score has just gone ";
1210 if (x1 > 0) print "up"; else { x1 = -x1; print "down"; }
1211 print " by ", (number) x1, " point";
1212 if (x1 > 1) print "s";
1213 51: "(Since something dramatic has happened, your list of commands has been cut short.)";
1214 52: "^Type a number from 1 to ", x1, ", 0 to redisplay or press ENTER.";
1215 53: "^[Please press SPACE.]";
1216 54: "[Comment recorded.]";
1217 55: "[Comment NOT recorded.]";
1220 58: "(first taking ", (the) x1, " ", (nop) SupportObj(x2,"off","out of"), " ", (the) x2, ")";
1221 59: "You'll have to be more specific.";
1222 60: print (The) x1, " observes that ";
1224 No,Yes: "That was a rhetorical question.";
1226 "Score notification off.";
1227 NotifyOn: "Score notification on.";
1228 Objects: switch (n) {
1229 1: print (nop) CSubjectVerb(actor, false, false, "have", "have", "has"), " handled";
1230 2: CSubjectVerb(actor, false, false, "have", "have", "has"); " handled nothing.";
1233 5: print " (given away)";
1234 6: print " (in ", (name) x1, ")";
1235 7: print " (in ", (the) x1, ")";
1236 8: print " (inside ", (the) x1, ")";
1237 9: print " (on ", (the) x1, ")";
1238 10: print " (lost)";
1241 1: CSubjectIs (x1,true);
1242 print " not something ", (theActor) actor;
1243 Tense(" can open", " could have opened");
1245 2: CSubjectVerb(x1,true,false,"seem",0,"seems","seemed"); " to be locked.";
1246 3: CSubjectIs (x1,true); " already open.";
1247 4: CSubjectVerb(actor,false,false,"open",0,"opens","opened"); print " ", (the) x1;
1248 Tense(", revealing ", " and revealed ");
1249 if (WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT) == 0) "nothing.";
1251 5: CSubjectVerb(actor,false,false,"open",0,"opens","opened"); " ", (the) x1, ".";
1252 6: "(first opening ", (the) x1, ")";
1254 Order: CSubjectHas(x1,false); " better things to do.";
1255 Places: switch (n) {
1256 1: print (nop) CSubjectVerb(actor, false, false, "have", "have", "has"), " visited";
1258 3: CSubjectVerb(actor, false, false, "have", "have", "has"); " visited nothing.";
1260 Pray: print "Nothing practical ";
1261 Tense("results", "resulted");
1262 " from ", (Possessive) actor, " prayer.";
1264 Pronouns: switch (n) {
1265 1: print "At the moment, ";
1267 3: print "is unset";
1268 4: "no pronouns are known to the game.";
1271 Pull,Push,Turn: switch (n) {
1272 1: if (player provides narrative_voice && player.narrative_voice == 3) {
1273 print_ret (The) player, " ", (nop) Tense("isn't", "wasn't"),
1274 " likely to help matters by punishing ",
1275 (OnesSelf) player, " that way.";
1277 "Punishing ", (OnesSelf) player, " that way ",
1278 (nop) Tense("isn't", "wasn't"), " likely to help matters.";
1280 2: CSubjectIs (x1,true); " fixed in place.";
1281 3: CSubjectIs (actor,true); " unable to.";
1282 4: print "Nothing obvious ";
1283 Tense("happens", "happened");
1285 5: print "That would ";
1286 Tense("be", "have been");
1287 " less than courteous.";
1291 PushDir: switch (n) {
1292 1: print "That really wouldn't ";
1293 Tense("serve", "have served");
1296 Tense("not", "wasn't");
1298 3: print "Not that way ", (theActor) actor;
1299 Tense(" can't", "couldn't");
1303 1: CSubjectVerb(actor,true,false,"need",0,"needs","needed");
1304 print " to be holding ", (the) x1, " before ", (theActor) actor;
1305 Tense(" can", " could");
1306 " put ", (ItOrThem) x1, " on top of something else.";
1307 2: CSubjectCant(actor,true,true); " put something on top of itself.";
1308 3: print "Putting things on ", (the) x1, " would";
1309 Tense(" achieve", "'ve achieved");
1311 4: CSubjectVerb(actor,true,false,"lack",0,"lacks","lacked"); " the dexterity.";
1312 5: "(first taking ", (ItOrThem) x1, " off)";
1315 " no more room on ", (the) x1, ".";
1317 8: CSubjectVerb(actor,false,false,"put",0,"puts","put"); " ", (the) x1, " on ", (the) x2, ".";
1320 1: print "Please answer yes or no.";
1321 2: print "Are you sure you want to quit? ";
1323 Remove: switch (n) {
1324 1: CSubjectIs (x1,true); " unfortunately closed.";
1326 CSubjectIsnt(x1,true,true); " there now.";
1329 Restart: switch (n) {
1330 1: print "Are you sure you want to restart? ";
1333 Restore: switch (n) {
1334 1: "Restore failed.";
1338 1: CSubjectVerb(actor,true,false,"achieve",0,"achieves","achieved");
1339 " nothing by this.";
1342 RunTimeError: print "** ";
1344 1: print "Preposition not found (this should not occur)";
1345 2: print "Property value not routine or string: ~", (property) x2,
1346 "~ of ~", (name) x1, "~ (", x1, ")";
1347 3: print "Entry in property list not routine or string: ~",
1348 (property) x2, "~ list of ~", (name) x1, "~ (", x1, ")";
1349 4: print "Too many timers/daemons are active simultaneously.
1350 The limit is the library constant MAX_TIMERS
1351 (currently ", MAX_TIMERS, ") and should be increased";
1352 5: print "Object ~", (name) x1, "~ has no ~", (property) x2,
1354 7: print "The object ~", (name) x1, "~ can only be used as a player
1355 object if it has the ~number~ property";
1356 8: print "Attempt to take random entry from an empty table array";
1357 9: print x1, " is not a valid direction property number";
1358 10: print "The player-object is outside the object tree";
1359 11: print "The room ~", (name) x1, "~ has no ~", (property) x2,
1361 12: print "Tried to set a non-existent pronoun using SetPronoun";
1362 13: print "A 'topic' token can only be followed by a preposition";
1363 14: print "Overflowed buffer limit of ", x1,
1364 " using '@@64output_stream 3' ", (string) x2;
1365 15: print "LoopWithinObject broken because the object ",
1366 (name) x1, " was moved while the loop passed through it.";
1367 16: print "Attempt to use illegal narrative_voice of ", x1, ".";
1369 print "(unexplained)";
1377 1: if (deadflag) print "In that game you scored "; else print "You have so far scored ";
1378 print score, " out of a possible ", MAX_SCORE, ", in ", turns, " turn";
1379 if (turns ~= 1) print "s";
1381 2: "There is no score in this story.";
1383 ScriptOff: switch (n) {
1384 1: "Transcripting is already off.";
1385 2: "^End of transcript.";
1386 3: "Attempt to end transcript failed.";
1388 ScriptOn: switch (n) {
1389 1: "Transcripting is already on.";
1390 2: print "Start of a transcript of"; VersionSub();
1391 3: "Attempt to begin transcript failed.";
1393 Search: switch (n) {
1395 Tense("'s", " was");
1399 " nothing on ", (the) x1, ".";
1400 3: print "On ", (the) x1;
1401 WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT);
1403 4: CSubjectVerb(actor,true,false,"find",0,"finds","found"); " nothing of interest.";
1404 5: CSubjectCant(actor,true); " see inside, since ", (the) x1, " ", (IsOrAre) x1, " closed.";
1405 6: "", (The) x1, " ", (IsOrAre) x1, " empty.";
1407 7: print "In ", (the) x1;
1408 WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT);
1411 ! Preceding "No," unable to be used for Set and SetTo
1412 Set: CSubjectCant(actor,true); " set ", (ThatOrThose) x1, ".";
1413 SetTo: CSubjectCant(actor,true); " set ", (ThatOrThose) x1, " to anything.";
1415 1: CSubjectIsnt(actor,true); " holding ", (the) x1, ".";
1416 2: CSubjectIs (x1,true); " unimpressed.";
1418 Sing: print (PossessiveCaps) actor, " singing ";
1421 Sleep: CSubjectIsnt(actor,true); " feeling especially drowsy.";
1423 1: CSubjectVerb(actor,true,false,"smell",0,"smells","smelled"); " nothing unexpected.";
1427 Sorry: "Oh, don't apologize.";
1429 Sorry: "Oh, don't apologise.";
1431 Squeeze: switch (n) {
1433 2: CSubjectVerb(actor,true,false,"achieve",0,"achieves","achieved"); " nothing by this.";
1435 Strong: print "Real adventurers ";
1436 Tense ("do", "did");
1437 " not use such language.";
1438 Swim: print "There";
1439 Tense("'s not", " wasn't");
1440 " enough water to swim in.";
1441 Swing: print "There";
1442 Tense("'s", " was");
1443 " nothing sensible to swing here.";
1444 SwitchOff: switch (n) {
1445 1: CSubjectIs (x1,true);
1446 print " not something ", (theActor) actor, " ";
1447 Tense("can", "could");
1449 2: CSubjectIs (x1,true); " already off.";
1450 3: CSubjectVerb(actor,false,false,"switch",0,"switches","switched"); " ", (the) x1, " off.";
1452 SwitchOn: switch (n) {
1453 1: CSubjectIs (x1,true);
1454 print " not something ", (theActor) actor, " ";
1455 Tense("can", "could");
1457 2: CSubjectIs (x1,true); " already on.";
1458 3: CSubjectVerb(actor,false,false,"switch",0,"switches","switched"); " ", (the) x1, " on.";
1463 2: CSubjectIs (actor,false); " always self-possessed.";
1464 3: print "I don't suppose ", (the) x1, " would ";
1465 Tense("care", "have cared");
1467 4: CSubjectWill(actor,true);
1470 "to get ", (nop) SupportObj(x1,"off","out of"), " ", (the) x1, " first.";
1471 5: CSubjectVerb(actor,true,false,"already have",0,"already has","already had"); " ", (ThatOrThose) x1, ".";
1472 6: CSubjectVerb(x2,true,false,"seem",0,"seems","seemed"); " to belong to ", (the) x1, ".";
1473 7: CSubjectVerb(x2,true,false,"seem",0,"seems","seemed"); " to be a part of ", (the) x1, ".";
1474 8: CSubjectIs (x1,true); " not available.";
1475 9: CSubjectIs (x1,true); " not open.";
1476 10: CSubjectIs (x1,true); " hardly portable.";
1477 11: CSubjectIs (x1,true); " fixed in place.";
1478 12: CSubjectIs (actor,true); " carrying too many things already.";
1479 13: "(putting ", (the) x1, " into ", (the) x2, " to make room)";
1480 14: CSubjectVerb(actor, false, false, "should take", 0, 0, "should have taken");
1481 " ", (the) x1, " first.";
1484 1: CSubjectVerb(actor,true,false,"taste",0,"tastes","tasted"); " nothing unexpected.";
1488 1: CSubjectVerb(actor,false,false,"talk",0,"talks","talked");
1489 " to ", (OnesSelf) actor, " for a while.";
1490 2: print "This provoke";
1494 Think: "What a good idea.";
1495 ThrowAt: switch (n) {
1497 2: CSubjectVerb(actor,true,false,"lack",0,"lacks","lacked");
1498 print " the nerve when it ";
1499 Tense("comes", "came");
1500 " to the crucial moment.";
1503 1: CSubjectVerb(actor,true,false,"would",0,0);
1504 Tense(" achieve", " have achieved");
1505 " nothing by this.";
1510 2: CSubjectVerb(actor,true,false,"feel",0,"feels","felt"); " nothing unexpected.";
1511 3: print "That really wouldn't ";
1512 Tense("serve", "have served");
1516 Unlock: switch (n) {
1517 1: CSubjectDont(x1,true);
1518 print " seem to be something ", (theActor) actor;
1519 Tense(" can unlock", " could have unlocked");
1521 2: CSubjectIs (x1,true); " unlocked at the moment.";
1522 3: CSubjectDont(x1,true); " seem to fit the lock.";
1523 4: CSubjectVerb(actor,false,false,"unlock",0,"unlocks","unlocked"); " ", (the) x1, ".";
1524 5: "(first unlocking ", (the) x1, ")";
1526 VagueGo: CSubjectWill(actor);
1529 "to say which compass direction to go in.";
1530 Verify: switch (n) {
1531 1: "The game file has verified as intact.";
1532 2: "The game file did not verify as intact, and may be corrupt.";
1534 Wait: print "Time passe";
1537 Wake: print "The dreadful truth is, this ";
1540 WakeOther:print "That seem";
1545 CSubjectIsnt(actor,true,true); " holding ", (ThatOrThose) x1, ".";
1546 2: CSubjectVerb(actor,false,false,"look",0,"looks","looked");
1547 print " ridiculous waving ", (the) x1;
1549 " at ", (the) x2, ".";
1554 CSubjectVerb(actor,false,false,"wave",0,"waves","waved");
1557 2: print " at ", (the) x1;
1559 ", feeling foolish.";
1561 1: CSubjectCant(actor,true); " wear ", (ThatOrThose) x1, ".";
1562 2: CSubjectIs (actor,true); " not holding ", (ThatOrThose) x1, ".";
1563 3: CSubjectIs (actor,true); " already wearing ", (ThatOrThose) x1, ".";
1564 4: CSubjectVerb(actor,false,false,"put on",0,"puts on","put on"); " ", (the) x1, ".";
1569 ! ==============================================================================
1571 Constant LIBRARY_ENGLISH; ! for dependency checking.
1574 ! ==============================================================================