~ubuntu-branches/ubuntu/vivid/inform/vivid

« back to all changes in this revision

Viewing changes to inform-6.31.1/lib/english.h

  • Committer: Bazaar Package Importer
  • Author(s): Jan Christoph Nordholz
  • Date: 2008-05-26 22:09:44 UTC
  • mfrom: (2.1.1 lenny)
  • Revision ID: james.westby@ubuntu.com-20080526220944-ba7phz0d1k4vo7wx
Tags: 6.31.1+dfsg-1
* Remove a considerable number of files from the package
  due to unacceptable licensing terms.
* Repair library symlinks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
! ==============================================================================
 
2
!   ENGLISH:  Language Definition File
 
3
!
 
4
!   Supplied for use with Inform 6 -- Release 6/11 -- Serial number 040227
 
5
!
 
6
!   Copyright Graham Nelson 1993-2004 but freely usable (see manuals)
 
7
!
 
8
!   This file is automatically Included in your game file by "parserm".
 
9
!   Strictly, "parserm" includes the file named in the "language__" variable,
 
10
!   whose contents can be defined by+language_name=XXX compiler setting (with a
 
11
!   default of "english").
 
12
!
 
13
!   Define the constant DIALECT_US before including "Parser" to obtain American
 
14
!   English.
 
15
! ==============================================================================
 
16
 
 
17
System_file;
 
18
 
 
19
! ------------------------------------------------------------------------------
 
20
!   Part I.   Preliminaries
 
21
! ------------------------------------------------------------------------------
 
22
 
 
23
Constant EnglishNaturalLanguage;    ! Needed to keep old pronouns mechanism
 
24
 
 
25
Class   CompassDirection
 
26
  with  number 0, article "the",
 
27
        description [;
 
28
            if (location provides compass_look && location.compass_look(self)) rtrue;
 
29
            if (self.compass_look()) rtrue;
 
30
            L__M(##Look, 7, self);
 
31
        ],
 
32
        compass_look false,
 
33
  has   scenery;
 
34
 
 
35
Object Compass "compass" has concealed;
 
36
 
 
37
#Ifndef WITHOUT_DIRECTIONS;
 
38
CompassDirection -> n_obj "north"
 
39
                    with door_dir n_to, name 'n//' 'north';
 
40
CompassDirection -> s_obj "south"
 
41
                    with door_dir s_to, name 's//' 'south';
 
42
CompassDirection -> e_obj "east"
 
43
                    with door_dir e_to, name 'e//' 'east';
 
44
CompassDirection -> w_obj "west"
 
45
                    with door_dir w_to, name 'w//' 'west';
 
46
CompassDirection -> ne_obj "northeast"
 
47
                    with door_dir ne_to, name 'ne' 'northeast';
 
48
CompassDirection -> nw_obj "northwest"
 
49
                    with door_dir nw_to, name 'nw' 'northwest';
 
50
CompassDirection -> se_obj "southeast"
 
51
                    with door_dir se_to, name 'se' 'southeast';
 
52
CompassDirection -> sw_obj "southwest"
 
53
                    with door_dir sw_to, name 'sw' 'southwest';
 
54
CompassDirection -> u_obj "up above"
 
55
                    with door_dir u_to, name 'u//' 'up' 'ceiling' 'above' 'sky';
 
56
CompassDirection -> d_obj "ground"
 
57
                    with door_dir d_to, name 'd//' 'down' 'floor' 'below' 'ground';
 
58
#endif; ! WITHOUT_DIRECTIONS
 
59
 
 
60
CompassDirection -> in_obj "inside"
 
61
                    with door_dir in_to, name 'in' 'inside';
 
62
CompassDirection -> out_obj "outside"
 
63
                    with door_dir out_to, name 'out' 'outside';
 
64
 
 
65
! ------------------------------------------------------------------------------
 
66
!   Part II.   Vocabulary
 
67
! ------------------------------------------------------------------------------
 
68
 
 
69
Constant AGAIN1__WD     = 'again';
 
70
Constant AGAIN2__WD     = 'g//';
 
71
Constant AGAIN3__WD     = 'again';
 
72
Constant OOPS1__WD      = 'oops';
 
73
Constant OOPS2__WD      = 'o//';
 
74
Constant OOPS3__WD      = 'oops';
 
75
Constant UNDO1__WD      = 'undo';
 
76
Constant UNDO2__WD      = 'undo';
 
77
Constant UNDO3__WD      = 'undo';
 
78
 
 
79
Constant ALL1__WD       = 'all';
 
80
Constant ALL2__WD       = 'each';
 
81
Constant ALL3__WD       = 'every';
 
82
Constant ALL4__WD       = 'everything';
 
83
Constant ALL5__WD       = 'both';
 
84
Constant AND1__WD       = 'and';
 
85
Constant AND2__WD       = 'and';
 
86
Constant AND3__WD       = 'and';
 
87
Constant BUT1__WD       = 'but';
 
88
Constant BUT2__WD       = 'except';
 
89
Constant BUT3__WD       = 'but';
 
90
Constant ME1__WD        = 'me';
 
91
Constant ME2__WD        = 'myself';
 
92
Constant ME3__WD        = 'self';
 
93
Constant OF1__WD        = 'of';
 
94
Constant OF2__WD        = 'of';
 
95
Constant OF3__WD        = 'of';
 
96
Constant OF4__WD        = 'of';
 
97
Constant OTHER1__WD     = 'another';
 
98
Constant OTHER2__WD     = 'other';
 
99
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 > 1) print "s";
 
709
        51: "(Since something dramatic has happened, your list of commands has been cut short.)";
 
710
        52: "^Type a number from 1 to ", x1, ", 0 to redisplay or press ENTER.";
 
711
        53: "^[Please press SPACE.]";
 
712
        54: "[Comment recorded.]";
 
713
        55: "[Comment NOT recorded.]";
 
714
        56: print ".^";
 
715
        57: print "?^";
 
716
    }
 
717
  No,Yes:   "That was a rhetorical question.";
 
718
  NotifyOff:
 
719
            "Score notification off.";
 
720
  NotifyOn: "Score notification on.";
 
721
  Objects: switch (n) {
 
722
        1:  "Objects you have handled:^";
 
723
        2:  "None.";
 
724
        3:  print "   (worn)";
 
725
        4:  print "   (held)";
 
726
        5:  print "   (given away)";
 
727
        6:  print "   (in ", (name) x1, ")";
 
728
        7:  print "   (in ", (the) x1, ")";
 
729
        8:  print "   (inside ", (the) x1, ")";
 
730
        9:  print "   (on ", (the) x1, ")";
 
731
        10: print "   (lost)";
 
732
    }
 
733
  Open: switch (n) {
 
734
        1:  print_ret (ctheyreorthats) x1, " not something you can open.";
 
735
        2:  if (x1 has pluralname) print "They seem "; else print "It seems ";
 
736
            "to be locked.";
 
737
        3:  print_ret (ctheyreorthats) x1, " already open.";
 
738
        4:  print "You open ", (the) x1, ", revealing ";
 
739
            if (WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT) == 0) "nothing.";
 
740
            ".";
 
741
        5:  "You open ", (the) x1, ".";
 
742
    }
 
743
  Order:    print (The) x1;
 
744
            if (x1 has pluralname) print " have"; else print " has";
 
745
            " better things to do.";
 
746
  Places: switch (n) {
 
747
        1:  print "You have visited: ";
 
748
        2:  print ".^";
 
749
    }
 
750
  Pray:     "Nothing practical results from your prayer.";
 
751
  Prompt:   print "^>";
 
752
  Pronouns: switch (n) {
 
753
        1:  print "At the moment, ";
 
754
        2:  print "means ";
 
755
        3:  print "is unset";
 
756
        4:  "no pronouns are known to the game.";
 
757
        5:  ".";
 
758
    }
 
759
  Pull,Push,Turn: switch (n) {
 
760
        1:  if (x1 has pluralname) print "Those are "; else print "It is ";
 
761
            "fixed in place.";
 
762
        2:  "You are unable to.";
 
763
        3:  "Nothing obvious happens.";
 
764
        4:  "That would be less than courteous.";
 
765
    }
 
766
! Push: see Pull
 
767
  PushDir: switch (n) {
 
768
        1:  "Is that the best you can think of?";
 
769
        2:  "That's not a direction.";
 
770
        3:  "Not that way you can't.";
 
771
    }
 
772
  PutOn: switch (n) {
 
773
        1:  "You need to be holding ", (the) x1, " before you can put ",
 
774
                (itorthem) x1, " on top of something else.";
 
775
        2:  "You can't put something on top of itself.";
 
776
        3:  "Putting things on ", (the) x1, " would achieve nothing.";
 
777
        4:  "You lack the dexterity.";
 
778
        5:  "(first taking ", (itorthem) x1, " off)^";
 
779
        6:  "There is no more room on ", (the) x1, ".";
 
780
        7:  "Done.";
 
781
        8:  "You put ", (the) x1, " on ", (the) second, ".";
 
782
    }
 
783
  Quit: switch (n) {
 
784
        1:  print "Please answer yes or no.";
 
785
        2:  print "Are you sure you want to quit? ";
 
786
    }
 
787
  Remove: switch (n) {
 
788
        1:  if (x1 has pluralname) print "They are"; else print "It is";
 
789
            " unfortunately closed.";
 
790
        2:  if (x1 has pluralname) print "But they aren't"; else print "But it isn't";
 
791
            " there now.";
 
792
        3:  "Removed.";
 
793
    }
 
794
  Restart: switch (n) {
 
795
        1:  print "Are you sure you want to restart? ";
 
796
        2:  "Failed.";
 
797
    }
 
798
  Restore: switch (n) {
 
799
        1:  "Restore failed.";
 
800
        2:  "Ok.";
 
801
    }
 
802
  Rub:      "You achieve nothing by this.";
 
803
  Save: switch (n) {
 
804
        1:  "Save failed.";
 
805
        2:  "Ok.";
 
806
    }
 
807
  Score: switch (n) {
 
808
        1:  if (deadflag) print "In that game you scored "; else print "You have so far scored ";
 
809
            print score, " out of a possible ", MAX_SCORE, ", in ", turns, " turn";
 
810
            if (turns ~= 1) print "s";
 
811
            return;
 
812
        2:  "There is no score in this story.";
 
813
    }
 
814
  ScriptOff: switch (n) {
 
815
        1:  "Transcripting is already off.";
 
816
        2:  "^End of transcript.";
 
817
        3:  "Attempt to end transcript failed.";
 
818
    }
 
819
  ScriptOn: switch (n) {
 
820
        1:  "Transcripting is already on.";
 
821
        2:  "Start of a transcript of";
 
822
        3:  "Attempt to begin transcript failed.";
 
823
    }
 
824
  Search: switch (n) {
 
825
        1:  "But it's dark.";
 
826
        2:  "There is nothing on ", (the) x1, ".";
 
827
        3:  print "On ", (the) x1;
 
828
            WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT);
 
829
            ".";
 
830
        4:  "You find nothing of interest.";
 
831
        5:  "You can't see inside, since ", (the) x1, " ", (isorare) x1, " closed.";
 
832
        6:  print_ret (The) x1, " ", (isorare) x1, " empty.";
 
833
        7:  print "In ", (the) x1;
 
834
            WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT);
 
835
            ".";
 
836
    }
 
837
  Set:      "No, you can't set ", (thatorthose) x1, ".";
 
838
  SetTo:    "No, you can't set ", (thatorthose) x1, " to anything.";
 
839
  Show: switch (n) {
 
840
        1:  "You aren't holding ", (the) x1, ".";
 
841
        2:  print_ret (The) x1, " ", (isorare) x1, " unimpressed.";
 
842
    }
 
843
  Sing:     "Your singing is abominable.";
 
844
  Sleep:    "You aren't feeling especially drowsy.";
 
845
  Smell:    "You smell nothing unexpected.";
 
846
            #Ifdef DIALECT_US;
 
847
  Sorry:    "Oh, don't apologize.";
 
848
            #Ifnot;
 
849
  Sorry:    "Oh, don't apologise.";
 
850
            #Endif;
 
851
  Squeeze: switch (n) {
 
852
        1:  "Keep your hands to yourself.";
 
853
        2:  "You achieve nothing by this.";
 
854
    }
 
855
  Strong:   "Real adventurers do not use such language.";
 
856
  Swim:     "There's not enough water to swim in.";
 
857
  Swing:    "There's nothing sensible to swing here.";
 
858
  SwitchOff: switch (n) {
 
859
        1:  print_ret (ctheyreorthats) x1, " not something you can switch.";
 
860
        2:  print_ret (ctheyreorthats) x1, " already off.";
 
861
        3:  "You switch ", (the) x1, " off.";
 
862
    }
 
863
  SwitchOn: switch (n) {
 
864
        1:  print_ret (ctheyreorthats) x1, " not something you can switch.";
 
865
        2:  print_ret (ctheyreorthats) x1, " already on.";
 
866
        3:  "You switch ", (the) x1, " on.";
 
867
    }
 
868
  Take: switch (n) {
 
869
        1:  "Taken.";
 
870
        2:  "You are always self-possessed.";
 
871
        3:  "I don't suppose ", (the) x1, " would care for that.";
 
872
        4:  print "You'd have to get ";
 
873
            if (x1 has supporter) print "off "; else print "out of ";
 
874
            print_ret (the) x1, " first.";
 
875
        5:  "You already have ", (thatorthose) x1, ".";
 
876
        6:  if (noun has pluralname) print "Those seem "; else print "That seems ";
 
877
            "to belong to ", (the) x1, ".";
 
878
        7:  if (noun has pluralname) print "Those seem "; else print "That seems ";
 
879
            "to be a part of ", (the) x1, ".";
 
880
        8:  print_ret (Cthatorthose) x1, " ", (isorare) x1,
 
881
            "n't available.";
 
882
        9:  print_ret (The) x1, " ", (isorare) x1, "n't open.";
 
883
        10: if (x1 has pluralname) print "They're "; else print "That's ";
 
884
            "hardly portable.";
 
885
        11: if (x1 has pluralname) print "They're "; else print "That's ";
 
886
            "fixed in place.";
 
887
        12: "You're carrying too many things already.";
 
888
        13: "(putting ", (the) x1, " into ", (the) SACK_OBJECT, " to make room)";
 
889
    }
 
890
  Taste:    "You taste nothing unexpected.";
 
891
  Tell: switch (n) {
 
892
        1:  "You talk to yourself a while.";
 
893
        2:  "This provokes no reaction.";
 
894
    }
 
895
  Think:    "What a good idea.";
 
896
  ThrowAt: switch (n) {
 
897
        1:  "Futile.";
 
898
        2:  "You lack the nerve when it comes to the crucial moment.";
 
899
    }
 
900
! Tie:  see JumpOver.
 
901
  Touch: switch (n) {
 
902
        1:  "Keep your hands to yourself!";
 
903
        2:  "You feel nothing unexpected.";
 
904
        3:  "If you think that'll help.";
 
905
    }
 
906
! Turn: see Pull.
 
907
  Unlock:  switch (n) {
 
908
        1:  if (x1 has pluralname) print "They don't "; else print "That doesn't ";
 
909
            "seem to be something you can unlock.";
 
910
        2:  print_ret (ctheyreorthats) x1, " unlocked at the moment.";
 
911
        3:  if (x1 has pluralname) print "Those don't "; else print "That doesn't ";
 
912
            "seem to fit the lock.";
 
913
        4:  "You unlock ", (the) x1, ".";
 
914
    }
 
915
  VagueGo:  "You'll have to say which compass direction to go in.";
 
916
  Verify: switch (n) {
 
917
        1:  "The game file has verified as intact.";
 
918
        2:  "The game file did not verify as intact, and may be corrupt.";
 
919
    }
 
920
  Wait:     "Time passes.";
 
921
  Wake:     "The dreadful truth is, this is not a dream.";
 
922
  WakeOther:"That seems unnecessary.";
 
923
  Wave: switch (n) {
 
924
        1:  "But you aren't holding ", (thatorthose) x1, ".";
 
925
        2:  "You look ridiculous waving ", (the) x1, ".";
 
926
    }
 
927
  WaveHands:"You wave, feeling foolish.";
 
928
  Wear: switch (n) {
 
929
        1:  "You can't wear ", (thatorthose) x1, "!";
 
930
        2:  "You're not holding ", (thatorthose) x1, "!";
 
931
        3:  "You're already wearing ", (thatorthose) x1, "!";
 
932
        4:  "You put on ", (the) x1, ".";
 
933
    }
 
934
! Yes:  see No.
 
935
];
 
936
 
 
937
! ==============================================================================
 
938
 
 
939
Constant LIBRARY_ENGLISH;       ! for dependency checking.
 
940
 
 
941
! ==============================================================================