Inventory This is the complete source code of the example game English.inf.
Back to List
Complete
Browsing English.h
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.