Inform - Support - Source

Back to List

Inventory
Complete

Plain
Coloured
Gaudy

Browsing English.h

This is the complete source code of the example game English.inf.

001  ! ===========================================================================
002  !   Inform Language Definition File: English 991113
003  !
004  !   (c) Graham Nelson 1997, 1998, 1999
005  !
006  !   Define the constant DIALECT_US before including "Parser" to
007  !   obtain American English
008  ! ---------------------------------------------------------------------------
009  System_file;
010  ! ---------------------------------------------------------------------------
011  !   Part I.   Preliminaries
012  ! ---------------------------------------------------------------------------
013  Constant EnglishNaturalLanguage;   ! Needed to keep old pronouns mechanism
014   
015  Class  CompassDirection
016    with article "the", number 0
017    has  scenery;
018  Object Compass "compass" has concealed;
019  IFNDEF WITHOUT_DIRECTIONS;
020  CompassDirection -> n_obj "north wall"
021                      with name 'n//' 'north' 'wall',    door_dir n_to;
022  CompassDirection -> s_obj "south wall"
023                      with name 's//' 'south' 'wall',    door_dir s_to;
024  CompassDirection -> e_obj "east wall"
025                      with name 'e//' 'east' 'wall',     door_dir e_to;
026  CompassDirection -> w_obj "west wall"
027                      with name 'w//' 'west' 'wall',     door_dir w_to;
028  CompassDirection -> ne_obj "northeast wall"
029                      with name 'ne' 'northeast' 'wall', door_dir ne_to;
030  CompassDirection -> nw_obj "northwest wall"
031                      with name 'nw' 'northwest' 'wall', door_dir nw_to;
032  CompassDirection -> se_obj "southeast wall"
033                      with name 'se' 'southeast' 'wall', door_dir se_to;
034  CompassDirection -> sw_obj "southwest wall"
035                      with name 'sw' 'southwest' 'wall', door_dir sw_to;
036  CompassDirection -> u_obj "ceiling"
037                      with name 'u//' 'up' 'ceiling',    door_dir u_to;
038  CompassDirection -> d_obj "floor"
039                      with name 'd//' 'down' 'floor',    door_dir d_to;
040  ENDIF;
041  CompassDirection -> out_obj "outside"
042                      with                               door_dir out_to;
043  CompassDirection -> in_obj "inside"
044                      with                               door_dir in_to;
045  ! ---------------------------------------------------------------------------
046  !   Part II.   Vocabulary
047  ! ---------------------------------------------------------------------------
048  Constant AGAIN1__WD   = 'again';
049  Constant AGAIN2__WD   = 'g//';
050  Constant AGAIN3__WD   = 'again';
051  Constant OOPS1__WD    = 'oops';
052  Constant OOPS2__WD    = 'o//';
053  Constant OOPS3__WD    = 'oops';
054  Constant UNDO1__WD    = 'undo';
055  Constant UNDO2__WD    = 'undo';
056  Constant UNDO3__WD    = 'undo';
057   
058  Constant ALL1__WD     = 'all';
059  Constant ALL2__WD     = 'each';
060  Constant ALL3__WD     = 'every';
061  Constant ALL4__WD     = 'everything';
062  Constant ALL5__WD     = 'both';
063  Constant AND1__WD     = 'and';
064  Constant AND2__WD     = 'and';
065  Constant AND3__WD     = 'and';
066  Constant BUT1__WD     = 'but';
067  Constant BUT2__WD     = 'except';
068  Constant BUT3__WD     = 'but';
069  Constant ME1__WD      = 'me';
070  Constant ME2__WD      = 'myself';
071  Constant ME3__WD      = 'self';
072  Constant OF1__WD      = 'of';
073  Constant OF2__WD      = 'of';
074  Constant OF3__WD      = 'of';
075  Constant OF4__WD      = 'of';
076  Constant OTHER1__WD   = 'another';
077  Constant OTHER2__WD   = 'other';
078  Constant OTHER3__WD   = 'other';
079  Constant THEN1__WD    = 'then';
080  Constant THEN2__WD    = 'then';
081  Constant THEN3__WD    = 'then';
082   
083  Constant NO1__WD      = 'n//';
084  Constant NO2__WD      = 'no';
085  Constant NO3__WD      = 'no';
086  Constant YES1__WD     = 'y//';
087  Constant YES2__WD     = 'yes';
088  Constant YES3__WD     = 'yes';
089   
090  Constant AMUSING__WD  = 'amusing';
091  Constant FULLSCORE1__WD = 'fullscore';
092  Constant FULLSCORE2__WD = 'full';
093  Constant QUIT1__WD    = 'q//';
094  Constant QUIT2__WD    = 'quit';
095  Constant RESTART__WD  = 'restart';
096  Constant RESTORE__WD  = 'restore';
097   
098  Array LanguagePronouns table
099   
100     !  word       possible GNAs                   connected
101     !             to follow:                      to:
102     !             a     i
103     !             s  p  s  p
104     !             mfnmfnmfnmfn                 
105   
106        'it'     $$001000111000                    NULL
107        'him'    $$100000000000                    NULL
108        'her'    $$010000000000                    NULL
109        'them'   $$000111000111                    NULL;
110   
111  Array LanguageDescriptors table
112   
113     !  word       possible GNAs   descriptor      connected
114     !             to follow:      type:           to:
115     !             a     i
116     !             s  p  s  p
117     !             mfnmfnmfnmfn                 
118   
119        'my'     $$111111111111    POSSESS_PK      0
120        'this'   $$111111111111    POSSESS_PK      0
121        'these'  $$000111000111    POSSESS_PK      0
122        'that'   $$111111111111    POSSESS_PK      1
123        'those'  $$000111000111    POSSESS_PK      1
124        'his'    $$111111111111    POSSESS_PK      'him'
125        'her'    $$111111111111    POSSESS_PK      'her'
126        'their'  $$111111111111    POSSESS_PK      'them'
127        'its'    $$111111111111    POSSESS_PK      'it'
128        'the'    $$111111111111    DEFART_PK       NULL
129        'a//'    $$111000111000    INDEFART_PK     NULL
130        'an'     $$111000111000    INDEFART_PK     NULL
131        'some'   $$000111000111    INDEFART_PK     NULL
132        'lit'    $$111111111111    light           NULL
133       'lighted' $$111111111111    light           NULL
134        'unlit'  $$111111111111    (-light)        NULL;
135   
136  Array LanguageNumbers table
137      'one' 1 'two' 2 'three' 3 'four' 4 'five' 5
138      'six' 6 'seven' 7 'eight' 8 'nine' 9 'ten' 10
139      'eleven' 11 'twelve' 12 'thirteen' 13 'fourteen' 14 'fifteen' 15
140      'sixteen' 16 'seventeen' 17 'eighteen' 18 'nineteen' 19 'twenty' 20;
141   
142  ! ---------------------------------------------------------------------------
143  !   Part III.   Translation
144  ! ---------------------------------------------------------------------------
145   
146  [ LanguageToInformese;
147  ];
148   
149  ! ---------------------------------------------------------------------------
150  !   Part IV.   Printing
151  ! ---------------------------------------------------------------------------
152   
153  Constant LanguageAnimateGender   = male;
154  Constant LanguageInanimateGender = neuter;
155   
156  Constant LanguageContractionForms = 2;     ! English has two:
157                                             ! 0 = starting with a consonant
158                                             ! 1 = starting with a vowel
159   
160  [ LanguageContraction text;
161    if (text->0 == 'a' or 'e' or 'i' or 'o' or 'u'
162                   or 'A' or 'E' or 'I' or 'O' or 'U') return 1;
163    return 0;
164  ];
165   
166  Array LanguageArticles -->
167   
168   !   Contraction form 0:     Contraction form 1:
169   !   Cdef   Def    Indef     Cdef   Def    Indef
170   
171       "The " "the " "a "      "The " "the " "an "          ! Articles 0
172       "The " "the " "some "   "The " "the " "some ";       ! Articles 1
173   
174                     !             a           i
175                     !             s     p     s     p
176                     !             m f n m f n m f n m f n                 
177   
178  Array LanguageGNAsToArticles --> 0 0 0 1 1 1 0 0 0 1 1 1;
179   
180  [ LanguageDirection d;
181     switch(d)
182     {   n_to: print "north";
183         s_to: print "south";
184         e_to: print "east";
185         w_to: print "west";
186         ne_to: print "northeast";
187         nw_to: print "northwest";
188         se_to: print "southeast";
189         sw_to: print "southwest";
190         u_to: print "up";
191         d_to: print "down";
192         in_to: print "in";
193         out_to: print "out";
194         default: return RunTimeError(9,d);
195     }
196  ];
197   
198  [ LanguageNumber n f;
199    if (n==0)    { print "zero"; rfalse; }
200    if (n<0)     { print "minus "; n=-n; }
201    if (n>=1000) { print (LanguageNumber) n/1000, " thousand"; n=n%1000; f=1; }
202    if (n>=100)  { if (f==1) print ", ";
203                   print (LanguageNumber) n/100, " hundred"; n=n%100; f=1; }
204    if (n==0) rfalse;
205    #ifndef DIALECT_US;
206    if (f==1) print " and ";
207    #ifnot;
208    if (f==1) print " ";
209    #endif;
210    switch(n)
211    {   1:  print "one";
212        2:  print "two";
213        3:  print "three";
214        4:  print "four";
215        5:  print "five";
216        6:  print "six";
217        7:  print "seven";
218        8:  print "eight";
219        9:  print "nine";
220        10: print "ten";
221        11: print "eleven";
222        12: print "twelve";
223        13: print "thirteen";
224        14: print "fourteen";
225        15: print "fifteen";
226        16: print "sixteen";
227        17: print "seventeen";
228        18: print "eighteen";
229        19: print "nineteen";
230        20 to 99:
231            switch(n/10)
232            {  2: print "twenty";
233               3: print "thirty";
234               4: print "forty";
235               5: print "fifty";
236               6: print "sixty";
237               7: print "seventy";
238               8: print "eighty";
239               9: print "ninety";
240            }
241            if (n%10 ~= 0) print "-", (LanguageNumber) n%10;
242    }
243  ];
244   
245  [ LanguageTimeOfDay hours mins i;
246     i=hours%12;
247     if (i==0) i=12;
248     if (i<10) print " ";
249     print i, ":", mins/10, mins%10;
250     if ((hours/12) > 0) print " pm"; else print " am";
251  ];
252   
253  [ LanguageVerb i;
254     if (i==#n$l)        { print "look";              rtrue; }
255     if (i==#n$z)        { print "wait";              rtrue; }
256     if (i==#n$x)        { print "examine";           rtrue; }
257     if (i==#n$i or 'inv' or 'inventory')
258                         { print "inventory";         rtrue; }
259     rfalse;
260  ];
261   
262  Constant NKEY__TX     = "N = next subject";
263  Constant PKEY__TX     = "P = previous";
264  Constant QKEY1__TX    = "  Q = resume game";
265  Constant QKEY2__TX    = "Q = previous menu";
266  Constant RKEY__TX     = "RETURN = read subject";
267   
268  Constant NKEY1__KY    = 'N';
269  Constant NKEY2__KY    = 'n';
270  Constant PKEY1__KY    = 'P';
271  Constant PKEY2__KY    = 'p';
272  Constant QKEY1__KY    = 'Q';
273  Constant QKEY2__KY    = 'q';
274   
275  Constant SCORE__TX    = "Score: ";
276  Constant MOVES__TX    = "Moves: ";
277  Constant TIME__TX     = "Time: ";
278  Constant CANTGO__TX   = "You can't go that way.";
279  Constant FORMER__TX   = "your former self";
280  Constant YOURSELF__TX = "yourself";
281  Constant DARKNESS__TX = "Darkness";
282   
283  Constant THOSET__TX   = "those things";
284  Constant THAT__TX     = "that";
285  Constant OR__TX       = " or ";
286  Constant NOTHING__TX  = "nothing";
287  Constant IS__TX       = " is";
288  Constant ARE__TX      = " are";
289  Constant IS2__TX      = "is ";
290  Constant ARE2__TX     = "are ";
291  Constant AND__TX      = " and ";
292  Constant WHOM__TX     = "whom ";
293  Constant WHICH__TX    = "which ";
294   
295  [ ThatorThose obj;   ! Used in the accusative
296    if (obj == player) { print "you"; return; }
297    if (obj has pluralname) { print "those"; return; }
298    if (obj has animate)
299    {   if (obj has female) { print "her"; return; }
300        else if (obj hasnt neuter) { print "him"; return; }
301    }
302    print "that";
303  ];
304  [ ItorThem obj;
305    if (obj == player) { print "yourself"; return; }
306    if (obj has pluralname) { print "them"; return; }
307    if (obj has animate)
308    {   if (obj has female) { print "her"; return; }
309        else if (obj hasnt neuter) { print "him"; return; }
310    }
311    print "it";
312  ];
313  [ IsorAre obj;
314    if (obj has pluralname || obj == player) print "are"; else print "is";
315  ];
316  [ CThatorThose obj;   ! Used in the nominative
317    if (obj == player) { print "You"; return; }
318    if (obj has pluralname) { print "Those"; return; }
319    if (obj has animate)
320    {   if (obj has female) { print "She"; return; }
321        else if (obj hasnt neuter) { print "He"; return; }
322    }
323    print "That";
324  ];
325  [ CTheyreorThats obj;
326    if (obj == player) { print "You're"; return; }
327    if (obj has pluralname) { print "They're"; return; }
328    if (obj has animate)
329    {   if (obj has female) { print "She's"; return; }
330        else if (obj hasnt neuter) { print "He's"; return; }
331    }
332    print "That's";
333  ];
334   
335  [ LanguageLM n x1;
336    Prompt:  print "^>";
337    Miscellany:
338             switch(n)
339             {   1: "(considering the first sixteen objects only)^";
340                 2: "Nothing to do!";
341                 3: print " You have died ";
342                 4: print " You have won ";
343                 5: print "^Would you like to RESTART, RESTORE a saved game";
344                    #IFDEF DEATH_MENTION_UNDO;
345                    print ", UNDO your last move";
346                    #ENDIF;
347                    if (TASKS_PROVIDED==0)
348                        print ", give the FULL score for that game";
349                    if (deadflag==2 && AMUSING_PROVIDED==0)
350                        print ", see some suggestions for AMUSING things to do";
351                    " or QUIT?";
352                 6: "[Your interpreter does not provide ~undo~.  Sorry!]";
353                 7: "~Undo~ failed.  [Not all interpreters provide it.]";
354                 8: "Please give one of the answers above.";
355                 9: "^It is now pitch dark in here!";
356                10: "I beg your pardon?";
357                11: "[You can't ~undo~ what hasn't been done!]";
358                12: "[Can't ~undo~ twice in succession. Sorry!]";
359                13: "[Previous turn undone.]";
360                14: "Sorry, that can't be corrected.";
361                15: "Think nothing of it.";
362                16: "~Oops~ can only correct a single word.";
363                17: "It is pitch dark, and you can't see a thing.";
364                18: print "yourself";
365                19: "As good-looking as ever.";           
366                20: "To repeat a command like ~frog, jump~, just say
367                     ~again~, not ~frog, again~.";
368                21: "You can hardly repeat that.";
369                22: "You can't begin with a comma.";
370                23: "You seem to want to talk to someone, but I can't see whom.";
371                24: "You can't talk to ", (the) x1, ".";
372                25: "To talk to someone, try ~someone, hello~ or some such.";
373                26: "(first taking ", (the) not_holding, ")";
374                27: "I didn't understand that sentence.";
375                28: print "I only understood you as far as wanting to ";
376                29: "I didn't understand that number.";
377                30: "You can't see any such thing.";
378                31: "You seem to have said too little!";
379                32: "You aren't holding that!";
380                33: "You can't use multiple objects with that verb.";
381                34: "You can only use multiple objects once on a line.";
382                35: "I'm not sure what ~", (address) pronoun_word,
383                    "~ refers to.";
384                36: "You excepted something not included anyway!";
385                37: "You can only do that to something animate.";
386                38: #ifdef DIALECT_US;
387                    "That's not a verb I recognize.";
388                    #ifnot;
389                    "That's not a verb I recognise.";
390                    #endif;
391                39: "That's not something you need to refer to
392                     in the course of this game.";
393                40: "You can't see ~", (address) pronoun_word,
394                    "~ (", (the) pronoun_obj, ") at the moment.";
395                41: "I didn't understand the way that finished.";
396                42: if (x1==0) print "None";
397                    else print "Only ", (number) x1;
398                    print " of those ";
399                    if (x1==1) print "is"; else print "are";
400                    " available.";
401                43: "Nothing to do!";
402                44: "There are none at all available!";
403                45: print "Who do you mean, ";
404                46: print "Which do you mean, ";
405                47: "Sorry, you can only have one item here. Which exactly?";
406                48: print "Whom do you want";
407                    if (actor~=player) print " ", (the) actor; print " to ";
408                    PrintCommand(); print "?^";
409                49: print "What do you want";
410                    if (actor~=player) print " ", (the) actor; print " to ";
411                    PrintCommand(); print "?^";
412                50: print "Your score has just gone ";
413                    if (x1 > 0) print "up"; else { x1 = -x1; print "down"; }
414                    print " by ", (number) x1, " point";
415                    if (x1 > 1) print "s";
416                51: "(Since something dramatic has happened,
417                     your list of commands has been cut short.)";
418                52: "^Type a number from 1 to ", x1,
419                    ", 0 to redisplay or press ENTER.";
420                53: "^[Please press SPACE.]";
421             }
422   
423    ListMiscellany:
424             switch(n)
425             {   1: print " (providing light)";
426                 2: print " (which ", (isorare) x1, " closed)";
427                 3: print " (closed and providing light)";
428                 4: print " (which ", (isorare) x1, " empty)";
429                 5: print " (empty and providing light)";
430                 6: print " (which ", (isorare) x1, " closed and empty)";
431                 7: print " (closed, empty and providing light)";
432                 8: print " (providing light and being worn";
433                 9: print " (providing light";
434                10: print " (being worn";
435                11: print " (which ", (isorare) x1, " ";
436                12: print "open";
437                13: print "open but empty";
438                14: print "closed";
439                15: print "closed and locked";
440                16: print " and empty";
441                17: print " (which ", (isorare) x1, " empty)";
442                18: print " containing ";
443                19: print " (on ";
444                20: print ", on top of ";
445                21: print " (in ";
446                22: print ", inside ";
447             }
448   
449    Pronouns: switch(n)
450             {   1: print "At the moment, ";
451                 2: print "means ";
452                 3: print "is unset";
453                 4: "no pronouns are known to the game.";
454             }
455    Order:          print (The) x1;
456                    if (x1 has pluralname) print " have"; else print " has";
457                    " better things to do.";
458    Quit:    switch(n)
459             {   1: print "Please answer yes or no.";
460                 2: print "Are you sure you want to quit? ";
461             }
462    Restart: switch(n)
463             {   1: print "Are you sure you want to restart? ";
464                 2: "Failed.";
465             }
466    Restore: switch(n)
467             {   1: "Restore failed.";
468                 2: "Ok.";
469             }
470    Save:    switch(n)
471             {   1: "Save failed.";
472                 2: "Ok.";
473             }
474    Verify:  switch(n)
475             {   1: "The game file has verified as intact.";
476                 2: "The game file did not verify as intact,
477                     and may be corrupt.";
478             }
479    ScriptOn: switch(n)
480             {   1: "Transcripting is already on.";
481                 2: "Start of a transcript of";
482                 3: "Attempt to begin transcript failed.";
483             }
484    ScriptOff: switch(n)
485             {   1: "Transcripting is already off.";
486                 2: "^End of transcript.";
487                 3: "Attempt to end transcript failed.";
488             }
489    NotifyOn:       "Score notification on.";
490    NotifyOff:      "Score notification off.";
491    Places:         print "You have visited: ";
492    Objects: switch(n)
493             {   1: "Objects you have handled:^";
494                 2: "None.";
495                 3: print "   (worn)";
496                 4: print "   (held)";
497                 5: print "   (given away)";
498                 6: print "   (in ", (name) x1, ")";
499                 7: print "   (in ", (the) x1, ")";
500                 8: print "   (inside ", (the) x1, ")";
501                 9: print "   (on ", (the) x1, ")";
502                10: print "   (lost)";
503             }
504    Score:          if (deadflag) print "In that game you scored ";
505                    else print "You have so far scored ";
506                    print score, " out of a possible ", MAX_SCORE,
507                    ", in ", turns, " turn";
508                    if (turns~=1) print "s"; return;
509    FullScore: switch(n)
510             {   1: if (deadflag) print "The score was ";
511                    else          print "The score is ";
512                    "made up as follows:^";
513                 2: "finding sundry items";
514                 3: "visiting various places";
515                 4: print "total (out of ", MAX_SCORE; ")";
516             }
517    Inv:     switch(n)
518             {   1: "You are carrying nothing.";
519                 2: print "You are carrying";
520             }
521    Take:    switch(n)
522             {   1: "Taken.";
523                 2: "You are always self-possessed.";
524                 3: "I don't suppose ", (the) x1, " would care for that.";
525                 4: print "You'd have to get ";
526                    if (x1 has supporter) print "off "; else print "out of ";
527                    print_ret (the) x1, " first.";
528                 5: "You already have ", (thatorthose) x1, ".";
529                 6: if (noun has pluralname) print "Those seem ";
530                    else print "That seems ";
531                    "to belong to ", (the) x1, ".";
532                 7: if (noun has pluralname) print "Those seem ";
533                    else print "That seems ";
534                    "to be a part of ", (the) x1, ".";
535                 8: print_ret (Cthatorthose) x1, " ", (isorare) x1,
536                    "n't available.";
537                 9: print_ret (The) x1, " ", (isorare) x1, "n't open.";
538                10: if (x1 has pluralname) print "They're ";
539                    else print "That's ";
540                    "hardly portable.";
541                11: if (x1 has pluralname) print "They're ";
542                    else print "That's ";
543                    "fixed in place.";
544                12: "You're carrying too many things already.";
545                13: "(putting ", (the) x1, " into ", (the) SACK_OBJECT,
546                    " to make room)";
547             }
548    Drop:    switch(n)
549             {   1: if (x1 has pluralname) print (The) x1, " are ";
550                    else print (The) x1, " is ";
551                    "already here.";
552                 2: "You haven't got ", (thatorthose) x1, ".";
553                 3: "(first taking ", (the) x1, " off)";
554                 4: "Dropped.";
555             }
556    Remove:  switch(n)
557             {   1: if (x1 has pluralname) print "They are"; else print "It is";
558                    " unfortunately closed.";
559                 2: if (x1 has pluralname)
560                        print "But they aren't";
561                    else print "But it isn't";
562                    " there now.";
563                 3: "Removed.";
564             }
565    PutOn:   switch(n)
566             {   1: "You need to be holding ", (the) x1,
567                    " before you can put ", (itorthem) x1,
568                    " on top of something else.";
569                 2: "You can't put something on top of itself.";
570                 3: "Putting things on ", (the) x1, " would achieve nothing.";
571                 4: "You lack the dexterity.";
572                 5: "(first taking ", (itorthem) x1, " off)^";
573                 6: "There is no more room on ", (the) x1, ".";
574                 7: "Done.";
575                 8: "You put ", (the) x1, " on ", (the) second, ".";
576             }
577    Insert:  switch(n)
578             {   1: "You need to be holding ", (the) x1,
579                    " before you can put ", (itorthem) x1,
580                    " into something else.";
581                 2: print_ret (Cthatorthose) x1, " can't contain things.";
582                 3: print_ret (The) x1, " ", (isorare) x1, " closed.";
583                 4: "You'll need to take ", (itorthem) x1, " off first.";
584                 5: "You can't put something inside itself.";
585                 6: "(first taking ", (itorthem) x1, " off)^";
586                 7: "There is no more room in ", (the) x1, ".";
587                 8: "Done.";
588                 9: "You put ", (the) x1, " into ", (the) second, ".";
589             }
590    EmptyT:  switch(n)
591             {   1: print_ret (The) x1, " can't contain things.";
592                 2: print_ret (The) x1, " ", (isorare) x1, " closed.";
593                 3: print_ret (The) x1, " ", (isorare) x1, " empty already.";
594                 4: "That would scarcely empty anything.";
595             }
596    Give:    switch(n)
597             {   1: "You aren't holding ", (the) x1, ".";
598                 2: "You juggle ", (the) x1,
599                    " for a while, but don't achieve much.";
600                 3: print (The) x1;
601                    if (x1 has pluralname) print " don't";
602                    else print " doesn't";
603                    " seem interested.";
604             }
605    Show:    switch(n)
606             {   1: "You aren't holding ", (the) x1, ".";
607                 2: print_ret (The) x1, " ", (isorare) x1, " unimpressed.";
608             }
609    Enter:   switch(n)
610             {   1: print "But you're already ";
611                    if (x1 has supporter) print "on "; else print "in ";
612                    print_ret (the) x1, ".";
613                 2: if (x1 has pluralname) print "They're"; else print "That's";
614                    print " not something you can ";
615                    switch (verb_word) {
616                        'stand': "stand on.";
617                        'sit': "sit down on.";
618                        'lie': "lie down on.";
619                        default: "enter.";
620                    }
621                 3: "You can't get into the closed ", (name) x1, ".";
622                 4: "You can only get into something free-standing.";
623                 5: print "You get ";
624                    if (x1 has supporter) print "onto "; else print "into ";
625                    print_ret (the) x1, ".";
626                 6: print "(getting ";
627                    if (x1 has supporter) print "off "; else print "out of ";
628                    print (the) x1; ")";
629                 7: if (x1 has supporter) "(getting onto ", (the) x1, ")^";
630                    if (x1 has container) "(getting into ", (the) x1, ")^";
631                    "(entering ", (the) x1, ")^";
632             }
633    GetOff:         "But you aren't on ", (the) x1, " at the moment.";
634    Exit:    switch(n)
635             {   1: "But you aren't in anything at the moment.";
636                 2: "You can't get out of the closed ", (name) x1, ".";
637                 3: print "You get ";
638                    if (x1 has supporter) print "off "; else print "out of ";
639                    print_ret (the) x1, ".";
640             }
641    VagueGo:       "You'll have to say which compass direction to go in.";
642   
643    Go:      switch(n)
644             {   1: print "You'll have to get ";
645                    if (x1 has supporter) print "off "; else print "out of ";
646                    print_ret (the) x1, " first.";
647                 2: "You can't go that way.";
648                 3: "You are unable to climb ", (the) x1, ".";
649                 4: "You are unable to descend by ", (the) x1, ".";
650                 5: "You can't, since ", (the) x1, " ", (isorare) x1,
651                    " in the way.";
652                 6: print "You can't, since ", (the) x1;
653                    if (x1 has pluralname) " lead nowhere.";
654                    " leads nowhere.";
655             }
656   
657    LMode1:         " is now in its normal ~brief~ printing mode, which gives
658                     long descriptions of places never before visited and short
659                     descriptions otherwise.";
660    LMode2:         " is now in its ~verbose~ mode, which always gives long
661                     descriptions of locations
662                     (even if you've been there before).";
663    LMode3:         " is now in its ~superbrief~ mode, which always gives short
664                     descriptions of locations
665                     (even if you haven't been there before).";
666   
667    Look:    switch(n)
668             {   1: print " (on ", (the) x1, ")";
669                 2: print " (in ", (the) x1, ")";
670                 3: print " (as "; @print_obj x1; print ")";
671                 4: print "^On ", (the) x1;
672                    WriteListFrom(child(x1),
673                        ENGLISH_BIT + RECURSE_BIT + PARTINV_BIT
674                        + TERSE_BIT + ISARE_BIT + CONCEAL_BIT);
675                    ".";
676           default: if (x1~=location)
677                    {   if (x1 has supporter) print "^On "; else print "^In ";
678                        print (the) x1, " you";
679                    }
680                    else print "^You";
681                    print " can ";
682                    if (n==5) print "also "; print "see ";
683                    WriteListFrom(child(x1),
684                        ENGLISH_BIT + WORKFLAG_BIT + RECURSE_BIT
685                        + PARTINV_BIT + TERSE_BIT + CONCEAL_BIT);
686                    if (x1~=location) ".";
687                    " here.";
688             }
689   
690    Examine: switch(n)
691             {   1: "Darkness, noun.  An absence of light to see by.";
692                 2: "You see nothing special about ", (the) x1, ".";
693                 3: print (The) x1, " ", (isorare) x1, " currently switched ";
694                    if (x1 has on) "on."; else "off.";
695             }
696    LookUnder: switch(n)
697             {   1: "But it's dark.";
698                 2: "You find nothing of interest.";
699             }
700   
701    Search:  switch(n)
702             {   1: "But it's dark.";
703                 2: "There is nothing on ", (the) x1, ".";
704                 3: print "On ", (the) x1;
705                    WriteListFrom(child(x1),
706                        TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT);
707                    ".";
708                 4: "You find nothing of interest.";
709                 5: "You can't see inside, since ", (the) x1, " ",
710                    (isorare) x1, " closed.";
711                 6: print_ret (The) x1, " ", (isorare) x1, " empty.";
712                 7: print "In ", (the) x1;
713                    WriteListFrom(child(x1),
714                        TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT);
715                    ".";
716             }
717   
718    Unlock:  switch(n)
719             {   1: if (x1 has pluralname) print "They don't ";
720                    else print "That doesn't ";
721                    "seem to be something you can unlock.";
722                 2: print_ret (ctheyreorthats) x1,
723                    " unlocked at the moment.";
724                 3: if (x1 has pluralname) print "Those don't ";
725                    else print "That doesn't ";
726                    "seem to fit the lock.";
727                 4: "You unlock ", (the) x1, ".";
728             }
729    Lock:    switch(n)
730             {   1: if (x1 has pluralname) print "They don't ";
731                    else print "That doesn't ";
732                    "seem to be something you can lock.";
733                 2: print_ret (ctheyreorthats) x1, " locked at the moment.";
734                 3: "First you'll have to close ", (the) x1, ".";
735                 4: if (x1 has pluralname) print "Those don't ";
736                    else print "That doesn't ";
737                    "seem to fit the lock.";
738                 5: "You lock ", (the) x1, ".";
739             }
740   
741    SwitchOn: switch(n)
742             {   1: print_ret (ctheyreorthats) x1,
743                    " not something you can switch.";
744                 2: print_ret (ctheyreorthats) x1,
745                    " already on.";
746                 3: "You switch ", (the) x1, " on.";
747             }
748    SwitchOff: switch(n)
749             {   1: print_ret (ctheyreorthats) x1,
750                    " not something you can switch.";
751                 2: print_ret (ctheyreorthats) x1,
752                    " already off.";
753                 3: "You switch ", (the) x1, " off.";
754             }
755   
756    Open:    switch(n)
757             {   1: print_ret (ctheyreorthats) x1,
758                    " not something you can open.";
759                 2: if (x1 has pluralname) print "They seem ";
760                    else print "It seems ";
761                    "to be locked.";
762                 3: print_ret (ctheyreorthats) x1,
763                    " already open.";
764                 4: print "You open ", (the) x1, ", revealing ";
765                    if (WriteListFrom(child(x1),
766                        ENGLISH_BIT + TERSE_BIT + CONCEAL_BIT)==0) "nothing.";
767                    ".";
768                 5: "You open ", (the) x1, ".";
769             }
770   
771    Close:   switch(n)
772             {   1: print_ret (ctheyreorthats) x1,
773                    " not something you can close.";
774                 2: print_ret (ctheyreorthats) x1,
775                    " already closed.";
776                 3: "You close ", (the) x1, ".";
777             }
778    Disrobe: switch(n)
779             {   1: "You're not wearing ", (thatorthose) x1, ".";
780                 2: "You take off ", (the) x1, ".";
781             }
782    Wear:    switch(n)
783             {   1: "You can't wear ", (thatorthose) x1, "!";
784                 2: "You're not holding ", (thatorthose) x1, "!";
785                 3: "You're already wearing ", (thatorthose) x1, "!";
786                 4: "You put on ", (the) x1, ".";
787             }
788    Eat:     switch(n)
789             {   1: print_ret (ctheyreorthats) x1,
790                    " plainly inedible.";
791                 2: "You eat ", (the) x1, ". Not bad.";
792             }
793    Yes, No:        "That was a rhetorical question.";
794    Burn:           "This dangerous act would achieve little.";
795    Pray:           "Nothing practical results from your prayer.";
796    Wake:           "The dreadful truth is, this is not a dream.";
797    WakeOther:      "That seems unnecessary.";
798    Kiss:           "Keep your mind on the game.";
799    Think:          "What a good idea.";
800    Smell:          "You smell nothing unexpected.";
801    Listen:         "You hear nothing unexpected.";
802    Taste:          "You taste nothing unexpected.";
803    Touch:   switch(n)
804             {   1: "Keep your hands to yourself!";
805                 2: "You feel nothing unexpected.";
806                 3: "If you think that'll help.";
807             }
808    Dig:            "Digging would achieve nothing here.";
809    Cut:            "Cutting ", (thatorthose) x1, " up would achieve little.";
810    Jump:           "You jump on the spot, fruitlessly.";
811    JumpOver, Tie:  "You would achieve nothing by this.";
812    Drink:          "There's nothing suitable to drink here.";
813    Fill:           "But there's no water here to carry.";
814    Sorry:          #ifdef DIALECT_US;
815                    "Oh, don't apologize.";
816                    #ifnot;
817                    "Oh, don't apologise.";
818                    #endif;
819    Strong:         "Real adventurers do not use such language.";
820    Mild:           "Quite.";
821    Attack:         "Violence isn't the answer to this one.";
822    Swim:           "There's not enough water to swim in.";
823    Swing:          "There's nothing sensible to swing here.";
824    Blow:           "You can't usefully blow ", (thatorthose) x1, ".";
825    Rub:            "You achieve nothing by this.";
826    Set:            "No, you can't set ", (thatorthose) x1, ".";
827    SetTo:          "No, you can't set ", (thatorthose) x1, " to anything.";
828    WaveHands:      "You wave, feeling foolish.";
829    Wave:    switch(n)
830             {   1: "But you aren't holding ", (thatorthose) x1, ".";
831                 2: "You look ridiculous waving ", (the) x1, ".";
832             }
833    Pull, Push, Turn:
834             switch(n)
835             {   1: if (x1 has pluralname) print "Those are ";
836                    else print "It is ";
837                    "fixed in place.";
838                 2: "You are unable to.";
839                 3: "Nothing obvious happens.";
840                 4: "That would be less than courteous.";
841             }
842    PushDir: switch(n)
843             {   1: "Is that the best you can think of?";
844                 2: "That's not a direction.";
845                 3: "Not that way you can't.";
846             }
847    Squeeze: switch(n)
848             {   1: "Keep your hands to yourself.";
849                 2: "You achieve nothing by this.";
850             }
851    ThrowAt: switch(n)
852             {   1: "Futile.";
853                 2: "You lack the nerve when it comes to the crucial moment.";
854             }
855    Tell:    switch(n)
856             {   1: "You talk to yourself a while.";
857                 2: "This provokes no reaction.";
858             }
859    Answer, Ask:    "There is no reply.";
860    Buy:            "Nothing is on sale.";
861    Sing:           "Your singing is abominable.";
862    Climb:          "I don't think much is to be achieved by that.";
863    Wait:           "Time passes.";
864    Sleep:          "You aren't feeling especially drowsy.";
865    Consult:        "You discover nothing of interest in ", (the) x1, ".";
866  ];
867   
868  ! ---------------------------------------------------------------------------


Last updated 27 February 2004. This web site has not been fully supported since April 2008. Information may be out of date. This page was originally managed by Graham Nelson (graham@gnelson.demon.co.uk) assisted by C Knight.