



Inventory This is the complete source code of the example game English.inf.
Back to List
Complete
Browsing English.h
001 ! ==============================================================================
002 ! ENGLISH: Language Definition File
003 !
004 ! Supplied for use with Inform 6 -- Release 6/11 -- Serial number 040227
005 !
006 ! Copyright Graham Nelson 1993-2004 but freely usable (see manuals)
007 !
008 ! This file is automatically Included in your game file by "parserm".
009 ! Strictly, "parserm" includes the file named in the "language__" variable,
010 ! whose contents can be defined by+language_name=XXX compiler setting (with a
011 ! default of "english").
012 !
013 ! Define the constant DIALECT_US before including "Parser" to obtain American
014 ! English.
015 ! ==============================================================================
016
017 System_file;
018
019 ! ------------------------------------------------------------------------------
020 ! Part I. Preliminaries
021 ! ------------------------------------------------------------------------------
022
023 Constant EnglishNaturalLanguage; ! Needed to keep old pronouns mechanism
024
025 Class CompassDirection
026 with number 0, article "the",
027 description [;
028 if (location provides compass_look && location.compass_look(self)) rtrue;
029 if (self.compass_look()) rtrue;
030 L__M(##Look, 7, self);
031 ],
032 compass_look false,
033 has scenery;
034
035 Object Compass "compass" has concealed;
036
037 #Ifndef WITHOUT_DIRECTIONS;
038 CompassDirection -> n_obj "north"
039 with door_dir n_to, name 'n//' 'north';
040 CompassDirection -> s_obj "south"
041 with door_dir s_to, name 's//' 'south';
042 CompassDirection -> e_obj "east"
043 with door_dir e_to, name 'e//' 'east';
044 CompassDirection -> w_obj "west"
045 with door_dir w_to, name 'w//' 'west';
046 CompassDirection -> ne_obj "northeast"
047 with door_dir ne_to, name 'ne' 'northeast';
048 CompassDirection -> nw_obj "northwest"
049 with door_dir nw_to, name 'nw' 'northwest';
050 CompassDirection -> se_obj "southeast"
051 with door_dir se_to, name 'se' 'southeast';
052 CompassDirection -> sw_obj "southwest"
053 with door_dir sw_to, name 'sw' 'southwest';
054 CompassDirection -> u_obj "up above"
055 with door_dir u_to, name 'u//' 'up' 'ceiling' 'above' 'sky';
056 CompassDirection -> d_obj "ground"
057 with door_dir d_to, name 'd//' 'down' 'floor' 'below' 'ground';
058 #endif; ! WITHOUT_DIRECTIONS
059
060 CompassDirection -> in_obj "inside"
061 with door_dir in_to, name 'in' 'inside';
062 CompassDirection -> out_obj "outside"
063 with door_dir out_to, name 'out' 'outside';
064
065 ! ------------------------------------------------------------------------------
066 ! Part II. Vocabulary
067 ! ------------------------------------------------------------------------------
068
069 Constant AGAIN1__WD = 'again';
070 Constant AGAIN2__WD = 'g//';
071 Constant AGAIN3__WD = 'again';
072 Constant OOPS1__WD = 'oops';
073 Constant OOPS2__WD = 'o//';
074 Constant OOPS3__WD = 'oops';
075 Constant UNDO1__WD = 'undo';
076 Constant UNDO2__WD = 'undo';
077 Constant UNDO3__WD = 'undo';
078
079 Constant ALL1__WD = 'all';
080 Constant ALL2__WD = 'each';
081 Constant ALL3__WD = 'every';
082 Constant ALL4__WD = 'everything';
083 Constant ALL5__WD = 'both';
084 Constant AND1__WD = 'and';
085 Constant AND2__WD = 'and';
086 Constant AND3__WD = 'and';
087 Constant BUT1__WD = 'but';
088 Constant BUT2__WD = 'except';
089 Constant BUT3__WD = 'but';
090 Constant ME1__WD = 'me';
091 Constant ME2__WD = 'myself';
092 Constant ME3__WD = 'self';
093 Constant OF1__WD = 'of';
094 Constant OF2__WD = 'of';
095 Constant OF3__WD = 'of';
096 Constant OF4__WD = 'of';
097 Constant OTHER1__WD = 'another';
098 Constant OTHER2__WD = 'other';
099 Constant OTHER3__WD = 'other';
100 Constant THEN1__WD = 'then';
101 Constant THEN2__WD = 'then';
102 Constant THEN3__WD = 'then';
103
104 Constant NO1__WD = 'n//';
105 Constant NO2__WD = 'no';
106 Constant NO3__WD = 'no';
107 Constant YES1__WD = 'y//';
108 Constant YES2__WD = 'yes';
109 Constant YES3__WD = 'yes';
110
111 Constant AMUSING__WD = 'amusing';
112 Constant FULLSCORE1__WD = 'fullscore';
113 Constant FULLSCORE2__WD = 'full';
114 Constant QUIT1__WD = 'q//';
115 Constant QUIT2__WD = 'quit';
116 Constant RESTART__WD = 'restart';
117 Constant RESTORE__WD = 'restore';
118
119 Array LanguagePronouns table
120
121 ! word possible GNAs connected
122 ! to follow: to:
123 ! a i
124 ! s p s p
125 ! mfnmfnmfnmfn
126
127 'it' $$001000111000 NULL
128 'him' $$100000000000 NULL
129 'her' $$010000000000 NULL
130 'them' $$000111000111 NULL;
131
132 Array LanguageDescriptors table
133
134 ! word possible GNAs descriptor connected
135 ! to follow: type: to:
136 ! a i
137 ! s p s p
138 ! mfnmfnmfnmfn
139
140 'my' $$111111111111 POSSESS_PK 0
141 'this' $$111111111111 POSSESS_PK 0
142 'these' $$000111000111 POSSESS_PK 0
143 'that' $$111111111111 POSSESS_PK 1
144 'those' $$000111000111 POSSESS_PK 1
145 'his' $$111111111111 POSSESS_PK 'him'
146 'her' $$111111111111 POSSESS_PK 'her'
147 'their' $$111111111111 POSSESS_PK 'them'
148 'its' $$111111111111 POSSESS_PK 'it'
149 'the' $$111111111111 DEFART_PK NULL
150 'a//' $$111000111000 INDEFART_PK NULL
151 'an' $$111000111000 INDEFART_PK NULL
152 'some' $$000111000111 INDEFART_PK NULL
153 'lit' $$111111111111 light NULL
154 'lighted' $$111111111111 light NULL
155 'unlit' $$111111111111 (-light) NULL;
156
157 Array LanguageNumbers table
158 'one' 1 'two' 2 'three' 3 'four' 4 'five' 5
159 'six' 6 'seven' 7 'eight' 8 'nine' 9 'ten' 10
160 'eleven' 11 'twelve' 12 'thirteen' 13 'fourteen' 14 'fifteen' 15
161 'sixteen' 16 'seventeen' 17 'eighteen' 18 'nineteen' 19 'twenty' 20;
162
163 ! ------------------------------------------------------------------------------
164 ! Part III. Translation
165 ! ------------------------------------------------------------------------------
166
167 [ LanguageToInformese;
168 ];
169
170 ! ------------------------------------------------------------------------------
171 ! Part IV. Printing
172 ! ------------------------------------------------------------------------------
173
174 Constant LanguageAnimateGender = male;
175 Constant LanguageInanimateGender = neuter;
176
177 Constant LanguageContractionForms = 2; ! English has two:
178 ! 0 = starting with a consonant
179 ! 1 = starting with a vowel
180
181 [ LanguageContraction text;
182 if (text->0 == 'a' or 'e' or 'i' or 'o' or 'u'
183 or 'A' or 'E' or 'I' or 'O' or 'U') return 1;
184 return 0;
185 ];
186
187 Array LanguageArticles -->
188
189 ! Contraction form 0: Contraction form 1:
190 ! Cdef Def Indef Cdef Def Indef
191
192 "The " "the " "a " "The " "the " "an " ! Articles 0
193 "The " "the " "some " "The " "the " "some "; ! Articles 1
194
195 ! a i
196 ! s p s p
197 ! m f n m f n m f n m f n
198
199 Array LanguageGNAsToArticles --> 0 0 0 1 1 1 0 0 0 1 1 1;
200
201 [ LanguageDirection d;
202 switch (d) {
203 n_to: print "north";
204 s_to: print "south";
205 e_to: print "east";
206 w_to: print "west";
207 ne_to: print "northeast";
208 nw_to: print "northwest";
209 se_to: print "southeast";
210 sw_to: print "southwest";
211 u_to: print "up";
212 d_to: print "down";
213 in_to: print "in";
214 out_to: print "out";
215 default: return RunTimeError(9,d);
216 }
217 ];
218
219 [ LanguageNumber n f;
220 if (n == 0) { print "zero"; rfalse; }
221 if (n < 0) { print "minus "; n = -n; }
222 if (n >= 1000) { print (LanguageNumber) n/1000, " thousand"; n = n%1000; f = 1; }
223 if (n >= 100) {
224 if (f == 1) print ", ";
225 print (LanguageNumber) n/100, " hundred"; n = n%100; f = 1;
226 }
227 if (n == 0) rfalse;
228 #Ifdef DIALECT_US;
229 if (f == 1) print " ";
230 #Ifnot;
231 if (f == 1) print " and ";
232 #Endif;
233 switch (n) {
234 1: print "one";
235 2: print "two";
236 3: print "three";
237 4: print "four";
238 5: print "five";
239 6: print "six";
240 7: print "seven";
241 8: print "eight";
242 9: print "nine";
243 10: print "ten";
244 11: print "eleven";
245 12: print "twelve";
246 13: print "thirteen";
247 14: print "fourteen";
248 15: print "fifteen";
249 16: print "sixteen";
250 17: print "seventeen";
251 18: print "eighteen";
252 19: print "nineteen";
253 20 to 99: switch (n/10) {
254 2: print "twenty";
255 3: print "thirty";
256 4: print "forty";
257 5: print "fifty";
258 6: print "sixty";
259 7: print "seventy";
260 8: print "eighty";
261 9: print "ninety";
262 }
263 if (n%10 ~= 0) print "-", (LanguageNumber) n%10;
264 }
265 ];
266
267 [ LanguageTimeOfDay hours mins i;
268 i = hours%12;
269 if (i == 0) i = 12;
270 if (i < 10) print " ";
271 print i, ":", mins/10, mins%10;
272 if ((hours/12) > 0) print " pm"; else print " am";
273 ];
274
275 [ LanguageVerb i;
276 switch (i) {
277 'i//','inv','inventory':
278 print "take inventory";
279 'l//': print "look";
280 'x//': print "examine";
281 'z//': print "wait";
282 default: rfalse;
283 }
284 rtrue;
285 ];
286
287 ! ----------------------------------------------------------------------------
288 ! LanguageVerbIsDebugging is called by SearchScope. It should return true
289 ! if word w is a debugging verb which needs all objects to be in scope.
290 ! ----------------------------------------------------------------------------
291
292 #Ifdef DEBUG;
293 [ LanguageVerbIsDebugging w;
294 if (w == 'purloin' or 'tree' or 'abstract'
295 or 'gonear' or 'scope' or 'showobj')
296 rtrue;
297 rfalse;
298 ];
299 #Endif;
300
301 ! ----------------------------------------------------------------------------
302 ! LanguageVerbLikesAdverb is called by PrintCommand when printing an UPTO_PE
303 ! error or an inference message. Words which are intransitive verbs, i.e.,
304 ! which require a direction name as an adverb ('walk west'), not a noun
305 ! ('I only understood you as far as wanting to touch /the/ ground'), should
306 ! cause the routine to return true.
307 ! ----------------------------------------------------------------------------
308
309 [ LanguageVerbLikesAdverb w;
310 if (w == 'look' or 'go' or 'push' or 'walk')
311 rtrue;
312 rfalse;
313 ];
314
315 ! ----------------------------------------------------------------------------
316 ! LanguageVerbMayBeName is called by NounDomain when dealing with the
317 ! player's reply to a "Which do you mean, the short stick or the long
318 ! stick?" prompt from the parser. If the reply is another verb (for example,
319 ! LOOK) then then previous ambiguous command is discarded /unless/
320 ! it is one of these words which could be both a verb /and/ an
321 ! adjective in a 'name' property.
322 ! ----------------------------------------------------------------------------
323
324 [ LanguageVerbMayBeName w;
325 if (w == 'long' or 'short' or 'normal'
326 or 'brief' or 'full' or 'verbose')
327 rtrue;
328 rfalse;
329 ];
330
331 Constant NKEY__TX = "N = next subject";
332 Constant PKEY__TX = "P = previous";
333 Constant QKEY1__TX = " Q = resume game";
334 Constant QKEY2__TX = "Q = previous menu";
335 Constant RKEY__TX = "RETURN = read subject";
336
337 Constant NKEY1__KY = 'N';
338 Constant NKEY2__KY = 'n';
339 Constant PKEY1__KY = 'P';
340 Constant PKEY2__KY = 'p';
341 Constant QKEY1__KY = 'Q';
342 Constant QKEY2__KY = 'q';
343
344 Constant SCORE__TX = "Score: ";
345 Constant MOVES__TX = "Moves: ";
346 Constant TIME__TX = "Time: ";
347 Constant CANTGO__TX = "You can't go that way.";
348 Constant FORMER__TX = "your former self";
349 Constant YOURSELF__TX = "yourself";
350 Constant YOU__TX = "You";
351 Constant DARKNESS__TX = "Darkness";
352
353 Constant THOSET__TX = "those things";
354 Constant THAT__TX = "that";
355 Constant OR__TX = " or ";
356 Constant NOTHING__TX = "nothing";
357 Constant IS__TX = " is";
358 Constant ARE__TX = " are";
359 Constant IS2__TX = "is ";
360 Constant ARE2__TX = "are ";
361 Constant AND__TX = " and ";
362 Constant WHOM__TX = "whom ";
363 Constant WHICH__TX = "which ";
364 Constant COMMA__TX = ", ";
365
366
367 [ ThatorThose obj; ! Used in the accusative
368 if (obj == player) { print "you"; return; }
369 if (obj has pluralname) { print "those"; return; }
370 if (obj has animate) {
371 if (obj has female) { print "her"; return; }
372 else
373 if (obj hasnt neuter) { print "him"; return; }
374 }
375 print "that";
376 ];
377
378 [ ItorThem obj;
379 if (obj == player) { print "yourself"; return; }
380 if (obj has pluralname) { print "them"; return; }
381 if (obj has animate) {
382 if (obj has female) { print "her"; return; }
383 else
384 if (obj hasnt neuter) { print "him"; return; }
385 }
386 print "it";
387 ];
388
389 [ IsorAre obj;
390 if (obj has pluralname || obj == player) print "are"; else print "is";
391 ];
392
393 [ CThatorThose obj; ! Used in the nominative
394 if (obj == player) { print "You"; return; }
395 if (obj has pluralname) { print "Those"; return; }
396 if (obj has animate) {
397 if (obj has female) { print "She"; return; }
398 else
399 if (obj hasnt neuter) { print "He"; return; }
400 }
401 print "That";
402 ];
403
404 [ CTheyreorThats obj;
405 if (obj == player) { print "You're"; return; }
406 if (obj has pluralname) { print "They're"; return; }
407 if (obj has animate) {
408 if (obj has female) { print "She's"; return; }
409 else if (obj hasnt neuter) { print "He's"; return; }
410 }
411 print "That's";
412 ];
413
414 [ LanguageLM n x1;
415 Answer,Ask:
416 "There is no reply.";
417 ! Ask: see Answer
418 Attack: "Violence isn't the answer to this one.";
419 Blow: "You can't usefully blow ", (thatorthose) x1, ".";
420 Burn: "This dangerous act would achieve little.";
421 Buy: "Nothing is on sale.";
422 Climb: "I don't think much is to be achieved by that.";
423 Close: switch (n) {
424 1: print_ret (ctheyreorthats) x1, " not something you can close.";
425 2: print_ret (ctheyreorthats) x1, " already closed.";
426 3: "You close ", (the) x1, ".";
427 }
428 CommandsOff: switch (n) {
429 1: "[Command recording off.]";
430 #Ifdef TARGET_GLULX;
431 2: "[Command recording already off.]";
432 #Endif; ! TARGET_
433 }
434 CommandsOn: switch (n) {
435 1: "[Command recording on.]";
436 #Ifdef TARGET_GLULX;
437 2: "[Commands are currently replaying.]";
438 3: "[Command recording already on.]";
439 4: "[Command recording failed.]";
440 #Endif; ! TARGET_
441 }
442 CommandsRead: switch (n) {
443 1: "[Replaying commands.]";
444 #Ifdef TARGET_GLULX;
445 2: "[Commands are already replaying.]";
446 3: "[Command replay failed. Command recording is on.]";
447 4: "[Command replay failed.]";
448 5: "[Command replay complete.]";
449 #Endif; ! TARGET_
450 }
451 Consult: "You discover nothing of interest in ", (the) x1, ".";
452 Cut: "Cutting ", (thatorthose) x1, " up would achieve little.";
453 Dig: "Digging would achieve nothing here.";
454 Disrobe: switch (n) {
455 1: "You're not wearing ", (thatorthose) x1, ".";
456 2: "You take off ", (the) x1, ".";
457 }
458 Drink: "There's nothing suitable to drink here.";
459 Drop: switch (n) {
460 1: if (x1 has pluralname) print (The) x1, " are "; else print (The) x1, " is ";
461 "already here.";
462 2: "You haven't got ", (thatorthose) x1, ".";
463 3: "(first taking ", (the) x1, " off)";
464 4: "Dropped.";
465 }
466 Eat: switch (n) {
467 1: print_ret (ctheyreorthats) x1, " plainly inedible.";
468 2: "You eat ", (the) x1, ". Not bad.";
469 }
470 EmptyT: switch (n) {
471 1: print_ret (The) x1, " can't contain things.";
472 2: print_ret (The) x1, " ", (isorare) x1, " closed.";
473 3: print_ret (The) x1, " ", (isorare) x1, " empty already.";
474 4: "That would scarcely empty anything.";
475 }
476 Enter: switch (n) {
477 1: print "But you're already ";
478 if (x1 has supporter) print "on "; else print "in ";
479 print_ret (the) x1, ".";
480 2: if (x1 has pluralname) print "They're"; else print "That's";
481 print " not something you can ";
482 switch (verb_word) {
483 'stand': "stand on.";
484 'sit': "sit down on.";
485 'lie': "lie down on.";
486 default: "enter.";
487 }
488 3: "You can't get into the closed ", (name) x1, ".";
489 4: "You can only get into something free-standing.";
490 5: print "You get ";
491 if (x1 has supporter) print "onto "; else print "into ";
492 print_ret (the) x1, ".";
493 6: print "(getting ";
494 if (x1 has supporter) print "off "; else print "out of ";
495 print (the) x1; ")";
496 7: if (x1 has supporter) "(getting onto ", (the) x1, ")^";
497 if (x1 has container) "(getting into ", (the) x1, ")^";
498 "(entering ", (the) x1, ")^";
499 }
500 Examine: switch (n) {
501 1: "Darkness, noun. An absence of light to see by.";
502 2: "You see nothing special about ", (the) x1, ".";
503 3: print (The) x1, " ", (isorare) x1, " currently switched ";
504 if (x1 has on) "on."; else "off.";
505 }
506 Exit: switch (n) {
507 1: "But you aren't in anything at the moment.";
508 2: "You can't get out of the closed ", (name) x1, ".";
509 3: print "You get ";
510 if (x1 has supporter) print "off "; else print "out of ";
511 print_ret (the) x1, ".";
512 4: print "But you aren't ";
513 if (x1 has supporter) print "on "; else print "in ";
514 print_ret (the) x1, ".";
515 }
516 Fill: "But there's no water here to carry.";
517 FullScore: switch (n) {
518 1: if (deadflag) print "The score was "; else print "The score is ";
519 "made up as follows:^";
520 2: "finding sundry items";
521 3: "visiting various places";
522 4: print "total (out of ", MAX_SCORE; ")";
523 }
524 GetOff: "But you aren't on ", (the) x1, " at the moment.";
525 Give: switch (n) {
526 1: "You aren't holding ", (the) x1, ".";
527 2: "You juggle ", (the) x1, " for a while, but don't achieve much.";
528 3: print (The) x1;
529 if (x1 has pluralname) print " don't"; else print " doesn't";
530 " seem interested.";
531 }
532 Go: switch (n) {
533 1: print "You'll have to get ";
534 if (x1 has supporter) print "off "; else print "out of ";
535 print_ret (the) x1, " first.";
536 2: print_ret (string) CANTGO__TX; ! "You can't go that way."
537 3: "You are unable to climb ", (the) x1, ".";
538 4: "You are unable to descend by ", (the) x1, ".";
539 5: "You can't, since ", (the) x1, " ", (isorare) x1, " in the way.";
540 6: print "You can't, since ", (the) x1;
541 if (x1 has pluralname) " lead nowhere."; else " leads nowhere.";
542 }
543 Insert: switch (n) {
544 1: "You need to be holding ", (the) x1, " before you can put ", (itorthem) x1,
545 " into something else.";
546 2: print_ret (Cthatorthose) x1, " can't contain things.";
547 3: print_ret (The) x1, " ", (isorare) x1, " closed.";
548 4: "You'll need to take ", (itorthem) x1, " off first.";
549 5: "You can't put something inside itself.";
550 6: "(first taking ", (itorthem) x1, " off)^";
551 7: "There is no more room in ", (the) x1, ".";
552 8: "Done.";
553 9: "You put ", (the) x1, " into ", (the) second, ".";
554 }
555 Inv: switch (n) {
556 1: "You are carrying nothing.";
557 2: print "You are carrying";
558 3: print ":^";
559 4: print ".^";
560 }
561 Jump: "You jump on the spot, fruitlessly.";
562 JumpOver,Tie:
563 "You would achieve nothing by this.";
564 Kiss: "Keep your mind on the game.";
565 Listen: "You hear nothing unexpected.";
566 ListMiscellany: switch (n) {
567 1: print " (providing light)";
568 2: print " (which ", (isorare) x1, " closed)";
569 3: print " (closed and providing light)";
570 4: print " (which ", (isorare) x1, " empty)";
571 5: print " (empty and providing light)";
572 6: print " (which ", (isorare) x1, " closed and empty)";
573 7: print " (closed, empty and providing light)";
574 8: print " (providing light and being worn";
575 9: print " (providing light";
576 10: print " (being worn";
577 11: print " (which ", (isorare) x1, " ";
578 12: print "open";
579 13: print "open but empty";
580 14: print "closed";
581 15: print "closed and locked";
582 16: print " and empty";
583 17: print " (which ", (isorare) x1, " empty)";
584 18: print " containing ";
585 19: print " (on ";
586 20: print ", on top of ";
587 21: print " (in ";
588 22: print ", inside ";
589 }
590 LMode1: " is now in its normal ~brief~ printing mode, which gives long descriptions
591 of places never before visited and short descriptions otherwise.";
592 LMode2: " is now in its ~verbose~ mode, which always gives long descriptions
593 of locations (even if you've been there before).";
594 LMode3: " is now in its ~superbrief~ mode, which always gives short descriptions
595 of locations (even if you haven't been there before).";
596 Lock: switch (n) {
597 1: if (x1 has pluralname) print "They don't "; else print "That doesn't ";
598 "seem to be something you can lock.";
599 2: print_ret (ctheyreorthats) x1, " locked at the moment.";
600 3: "First you'll have to close ", (the) x1, ".";
601 4: if (x1 has pluralname) print "Those don't "; else print "That doesn't ";
602 "seem to fit the lock.";
603 5: "You lock ", (the) x1, ".";
604 }
605 Look: switch (n) {
606 1: print " (on ", (the) x1, ")";
607 2: print " (in ", (the) x1, ")";
608 3: print " (as ", (object) x1, ")";
609 4: print "^On ", (the) x1;
610 WriteListFrom(child(x1),
611 ENGLISH_BIT+RECURSE_BIT+PARTINV_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT);
612 ".";
613 5,6:
614 if (x1 ~= location) {
615 if (x1 has supporter) print "^On "; else print "^In ";
616 print (the) x1, " you";
617 }
618 else print "^You";
619 print " can ";
620 if (n == 5) print "also ";
621 print "see ";
622 WriteListFrom(child(x1),
623 ENGLISH_BIT+RECURSE_BIT+PARTINV_BIT+TERSE_BIT+CONCEAL_BIT+WORKFLAG_BIT);
624 if (x1 ~= location) "."; else " here.";
625 7: "You see nothing unexpected in that direction.";
626 }
627 LookUnder: switch (n) {
628 1: "But it's dark.";
629 2: "You find nothing of interest.";
630 }
631 Mild: "Quite.";
632 Miscellany: switch (n) {
633 1: "(considering the first sixteen objects only)^";
634 2: "Nothing to do!";
635 3: print " You have died ";
636 4: print " You have won ";
637 5: print "^Would you like to RESTART, RESTORE a saved game";
638 #Ifdef DEATH_MENTION_UNDO;
639 print ", UNDO your last move";
640 #Endif;
641 if (TASKS_PROVIDED == 0) print ", give the FULL score for that game";
642 if (deadflag == 2 && AMUSING_PROVIDED == 0)
643 print ", see some suggestions for AMUSING things to do";
644 " or QUIT?";
645 6: "[Your interpreter does not provide ~undo~. Sorry!]";
646 #Ifdef TARGET_ZCODE;
647 7: "~Undo~ failed. [Not all interpreters provide it.]";
648 #Ifnot; ! TARGET_GLULX
649 7: "[You cannot ~undo~ any further.]";
650 #Endif; ! TARGET_
651 8: "Please give one of the answers above.";
652 9: "^It is now pitch dark in here!";
653 10: "I beg your pardon?";
654 11: "[You can't ~undo~ what hasn't been done!]";
655 12: "[Can't ~undo~ twice in succession. Sorry!]";
656 13: "[Previous turn undone.]";
657 14: "Sorry, that can't be corrected.";
658 15: "Think nothing of it.";
659 16: "~Oops~ can only correct a single word.";
660 17: "It is pitch dark, and you can't see a thing.";
661 18: print "yourself";
662 19: "As good-looking as ever.";
663 20: "To repeat a command like ~frog, jump~, just say ~again~, not ~frog, again~.";
664 21: "You can hardly repeat that.";
665 22: "You can't begin with a comma.";
666 23: "You seem to want to talk to someone, but I can't see whom.";
667 24: "You can't talk to ", (the) x1, ".";
668 25: "To talk to someone, try ~someone, hello~ or some such.";
669 26: "(first taking ", (the) not_holding, ")";
670 27: "I didn't understand that sentence.";
671 28: print "I only understood you as far as wanting to ";
672 29: "I didn't understand that number.";
673 30: "You can't see any such thing.";
674 31: "You seem to have said too little!";
675 32: "You aren't holding that!";
676 33: "You can't use multiple objects with that verb.";
677 34: "You can only use multiple objects once on a line.";
678 35: "I'm not sure what ~", (address) pronoun_word, "~ refers to.";
679 36: "You excepted something not included anyway!";
680 37: "You can only do that to something animate.";
681 #Ifdef DIALECT_US;
682 38: "That's not a verb I recognize.";
683 #Ifnot;
684 38: "That's not a verb I recognise.";
685 #Endif;
686 39: "That's not something you need to refer to in the course of this game.";
687 40: "You can't see ~", (address) pronoun_word, "~ (", (the) pronoun_obj,
688 ") at the moment.";
689 41: "I didn't understand the way that finished.";
690 42: if (x1 == 0) print "None"; else print "Only ", (number) x1;
691 print " of those ";
692 if (x1 == 1) print "is"; else print "are";
693 " available.";
694 43: "Nothing to do!";
695 44: "There are none at all available!";
696 45: print "Who do you mean, ";
697 46: print "Which do you mean, ";
698 47: "Sorry, you can only have one item here. Which exactly?";
699 48: print "Whom do you want";
700 if (actor ~= player) print " ", (the) actor;
701 print " to "; PrintCommand(); print "?^";
702 49: print "What do you want";
703 if (actor ~= player) print " ", (the) actor;
704 print " to "; PrintCommand(); print "?^";
705 50: print "Your score has just gone ";
706 if (x1 > 0) print "up"; else { x1 = -x1; print "down"; }
707 print " by ", (number) x1, " point";
708 if (x1 >