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 site is no longer supported; information may be out of date.
Maintained as a historical archive by the Interactive Fiction Technology Foundation. Copyright 1993-2018 IFTF, CC-BY-SA unless otherwise noted.
This page was originally managed by Graham Nelson (graham@gnelson.demon.co.uk) assisted by C Knight.