I’m working on an extension to replace the least-liked library messages with better ones that a) don’t make dangerous assumptions, b) don’t contain inappropriate narrative tone, and c) do better at explaining what went wrong and how to fix it.
Ideas cribbed from hither and yon, although a special shout-out to Sara Morayati who nicely catalogued many of the offenders last year.
This requires the latest version of Default Messages by Ron Newcomb (which, note, is different than the old Default Messages by David Fisher). It’s very incomplete as far as documentation, support for other extensions, etc., but since parser messages can be such tricky beasts to write, I wanted to get some feedback. I would love to hear if any of these seem like they’re not going to work in certain contexts or will be otherwise problematic, or if you have examples of better wordings.
Meat of the extension pasted below; or download here.
Oh: I’d like to ultimately address the parser/narrator distinction by having “Undo is not supported” styled differently than “Bob goes east,” and so on, but doing so presents tricky challenges and so is not addressed in this version.
[The main complaints levied against the standard library messages are as follows:
-- They sometimes imply a certain tone of wry amusement which descends from the Infocom/adventure era, and which is not always appropriate to modern works of IF.
-- There is not a clear distinction between messages narrating story world events and those giving parser refusals, leading to a muddying of the difference between the author's voice and the default system messages.
-- Error messages often do not contain information instructing players how to better restate their command.
-- They can sometimes contradict the story world, as in the assumption "That's plainly inedible," or mislead the player about a course of action, as in "This dangerous action would achieve little."
-- Inconsistencies in style, such as whether command examples are given in CAPS or 'quotes', or which messages are wrapped in square brackets and what that signifies.
]
Section - Better Instruction
[Some messages do not give the player enough information about why their command failed, or what the expected input form is.]
Table of custom library messages (continued)
library-action library-message-id library-message-text
-- 14 "Nothing to correct. 'Oops' or 'O' followed by a word corrects a single misunderstood word in the last command." ["Sorry, that can't be corrected."]
-- 16 "Too many words. 'Oops' or 'O' corrects a single misunderstood word in the last command." ["'Oops' can only correct a single word."]
-- 23 "In some stories, you can type CHARACTER, COMMAND to give someone else an order; but I couldn't understand what you said in that context." ["You seem to want to talk to someone, but I can't see whom."]
-- 25 "In some stories, you can type CHARACTER, COMMAND to give someone else an order; but I couldn't understand some of what you said before the comma in that context." ["To talk to someone, try 'someone, hello' or some such."]
-- 27 "I can't understand your command. Most commands are a verb followed by a noun." ["I didn't understand that sentence."]
-- 28 "I can't understand your entire command, although the first part matched the action [ignore library line break]" ["I only understood you as far as wanting to [ignore library line break]"]
-- 29 "I can't understand your entire command, although the first part matched an action I expected to include a number." ["I didn't understand that number."]
-- 44 "That would exclude everything you could [the quoted verb]." ["There are none at all available!"]
-- 67 "Part of your command is not a physical part of the story world, so you can't act on it in that way." ["You must name something more substantial."]
Exiting action 1 "You're not inside something. To leave this location, try a direction or 'out'." ["But you aren't in anything at the moment."]
climbing action 1 "[That-Those noun] can't be climbed in that way. Sometimes a direction like 'up' or 'down' works instead." ["I don't think much is to be achieved by that." <-- This is to help address a common problem in poorly implemented works with something like a staircase and no support for CLIMBing it.]
taking action 10 "[That-those noun] [is-are] just scenery, and can't be taken." ["That's hardly portable."]
taking action 11 "[That-those noun] can't be taken in this story." ["That's fixed in place."]
Section - Generic action rejections
[Some actions, such as taking, directly interface with the world model and thus can fail with specific explanations as to why. But actions without a detailed world model supporting them can't know whether the player's request is categorically impossible (>DRINK SKY), plausible but not implemented (>DRINK STREAM), or simply not being tried with the correct grammar (>DRINK FROM STREAM).
Unfortunately, many of the default messages attempt to guess which of these situations has arisen, sometimes leading to messages that are counterfactual ("That's plainly inedible") or, more dangerously, misleading ("Violence isn't the answer to this one"). Ideally, these messages should refuse the command without implying anything about the possibility or desireability of the requested action. In addition, since we don't know anything about the author's usage of the verb in question, we can't recommend a better command to try.
Ideally, of course, an author implementing a non-standard verb will replace the default message with his own instructions, but we can't rely on that.
]
Table of custom library messages (continued)
library-action library-message-id library-message-text
attacking action 1 "You can't attack [that-them noun], or can't do so in that way." ["Violence isn't the answer to this one."]
burning action 1 "You can't burn [that-them noun], or can't do so in that way." ["This dangerous act would achieve little."]
buying action 1 "You can't buy [that-them noun], or can't do so in that way." ["Nothing is on sale."]
Cutting action 1 "You can't cut [that-them noun], or can't do so in that way." ["Cutting that up would achieve little."]
Drinking action 1 "You can't consume [that-them noun], or can't do so in that way." ["There's nothing suitable to drink here."]
Eating action 1 "[if noun is a person]You can't normally consume other characters.[otherwise]You can't consume [that-them noun], or can't do so in that way." ["There's nothing suitable to drink here."]
rubbing action 1 "You can't rub [that-them noun], or can't do so in that way." ["You achieve nothing by this."]
setting it to action 1 "You can't set [that-them noun] to something, or can't do so in that way." ["No, you can't set that to anything."]
singing action 1 "You can't sing in this story, or can't do so in that way." ["Your singing is abominable."]
swinging action 1 "You can't swing [that-them noun], or can't do so in that way." ["There's nothing sensible to swing here."]
throwing it at action 2 "You can't throw [the noun] at [the second noun], or can't do so in that way." ["You lack the nerve when it comes to the crucial moment."]
Tying it to action 1 "You can't tie [that-them noun] to something, or can't do so in that way." ["You would achieve nothing by this."]
Section - NPC action rejections
[Using verbs on people is problematic, since player expectations are so much higher. For this reason the library blocks many actions that are allowed on other objects. Lacking a valid physical objection, these messages fall back on social ones, like "That would be less than courteous." But these messages make assumptions about the player character which may not be appropriate.]
Table of custom library messages (continued)
library-action library-message-id library-message-text
[Most of these actions fail, so we must find a neutral way to decline to perform them.]
pulling action 4 "You can't normally pull other characters." ["That would be less than courteous."]
taking action 3 "You can't normally pick up other characters." ["I don't suppose Bob would care for that."]
Turning action 4 "You can't normally turn other characters." ["That would be less than courteous."]
showing it to action 2 "Showing [that-them noun] to [it-them of second noun] may not be the best approach; you might try to ASK or TELL [it-them of second noun] ABOUT [it-them of noun]." ["Bob is unimpressed."]
giving it to action 3 "Giving [that-them noun] to [it-them of second noun] may not be the best approach; you might try to ASK or TELL [it-them of second noun] ABOUT [it-them of noun]." ["Bob doesn't seem interested."]
pushing action 4 "Try expressing your anger in another way." ["That would be less than courteous."]
touching action 1 "Try expressing your curiosity in another way." ["Keep your hands to yourself!"]
squeezing action 1 "Try expressing your affection in another way." ["Keep your hands to yourself."]
Kissing action 1 "Try expressing your affection in another way." ["Keep your mind on the game."]
Waking action 1 "You can't wake [the noun], or can't do so in that way." ["That seems unnecessary."]
Section - Generic action acceptance messages
[Some actions succeed by default. We want to take care to describe these successes in the vaguest possible terms, so as not to contradict any author-written text. Even the cautious default for some of these, "Nothing obvious happens," seems too suggestive that something non-obvious might be happening elsewhere. The default examining message has been very slightly softened, to reduce the incongruency of rare objects being called "nothing special," and to bring it in line with the other default sensory messages.
Conversation actions that succeed mean the parser must admit the action took place, without implying anything about the NPC's reaction: "The detective is unimpressed" can be particularly misleading if you've just shown him a bloody weapon. The solution adopted here is to narrate the player's action, not the NPC's response.]
Table of custom library messages (continued)
library-action library-message-id library-message-text
squeezing action 2 "You squeeze [the noun]." ["You achieve nothing by this."]
pushing action 3 "You push [the noun]." ["Nothing obvious happens."]
pulling action 3 "You pull [the noun]." ["Nothing obvious happens."]
turning action 3 "You turn [the noun]." ["Nothing obvious happens."]
examining action 2 "You see nothing unexpected about [the noun]." ["You see nothing special about Bob."]
thinking action 1 "Time passes." ["What a good idea."]
asking it about action 1 "You learn nothing new." ["There is no reply."]
telling it about action 2 "You learn nothing new." ["This provokes no reaction."]
asking it for action 1 "You aren't successful." ["There is no reply."]
answering it that action 1 "You speak." ["There is no reply."]
Section - You Can't See Any Such Thing
[This famous message has frustrated many. Part of the difficulty is the wide variety of circumstances it can appear under. From the player's perspective, this message appears when she tries to use a verb with
a) something neither mentioned nor implemented (like the sky)
b) something mentioned in descriptive text but not implemented
c) something implemented but not given the specific word used as a synonym
d) a misspelled word
e) a word that mistakenly is understood as part of the direct object, rather than a word in the grammar line, as in >TAKE INVENTORY NOW which is matched as {take | inventory now}.
f) something that exists but has never been seen and is not in scope
g) something previously seen but no longer in scope, perhaps without the player realizing it's no longer available
In nearly all of these cases, the player believes the object they're referring to should exist, meaning the message is often frustrating.
Distinguishing between these subtle cases can be difficult. For instance, short of capturing all text output and analyzing it, there is no way to distinguish A from B. Perhaps the easiest distinction to make is between commands containing dictionary words and those that don't, which seperates A-D from E-G. Some IF systems implement this by telling the player when she's used an invalid word. The classic argument against this, that sneaky players can use it to figure out the existence of yet-unseen objects, seems both a Zork-era concern and one vastly outweighed by the benefits of actually telling the player why her command didn't work. A more pressing objection is that messages of this sort can draw attention to the primitive nature of the parser ("I don't know the word 'love.'") I've tried to phrase the message below in the best light possible.
Several additional extensions can help break things down further. "Remembering" carves off G from E-F, while "Poor Man's Mistype" can sometimes address D. "Smarter Parser" can sometimes offer helpful messages for certain types of A command related to body parts and common environmental features like the sky. Eric Eve's Text Capture could be a tool in distinguishing A from B.
]
Table of custom library messages (continued)
library-action library-message-id library-message-text
-- 30 "[if position of non-dictionary word is 0]That's not something you can see now, or I misunderstood you.[otherwise]You don't need to type the word '[the misunderstood word]' in this story." ["You can't see any such thing."]
[Here are some things you can see: [the list of visible things which are not the player].]
Section - Personality-neutral parser
[Many parser messages are written in too strong of a narrative voice, which can clash with the author's prose. ]
Table of custom library messages (continued)
library-action library-message-id library-message-text
-- 9 "You can't see anything." ["It is now pitch dark in here!"]
-- 10 "No command given." ["I beg your pardon?"]
-- 11 "Can't 'undo' on the first turn." ["[You can't 'undo' what hasn't been done!]"]
-- 12 "Your interpreter does not support multiple 'undo' commands in a row." ["Can't 'undo' twice in succession. Sorry!"]
-- 15 "Nothing to correct. 'Oops' or 'O' followed by a word corrects a single misunderstood word in the last command." ["Think nothing of it."]
-- 21 "There is not a command to repeat." ["You can hardly repeat that."]
-- 70 "You can't 'undo' in this story." [The use of UNDO is forbidden in this game."]
Eating action 2 "You eat [the noun]." ["You eat [the noun]. Not bad."]
Entering action 1 "You're already [if noun is a supporter]on[otherwise]in[end if] [the noun]." [But you're already in the car.]
Examining action 1 "It's too dark to see." ["Darkness, noun. An absence of light to see by."]
Giving it to action 2 "You're already holding [it-them of noun]." ["You juggle [the noun] for a while, but don't achieve much."]
Jumping action 1 "You jump up and down." ["You jump on the spot, fruitlessly."]
Looking under action 1 "It's too dark to see." ["But it's dark."]
pushing it to action 3 "There is no exit in that direction." ["Not that way you can't."]
putting it on action 3 "[The second noun] doesn't need to hold anything in this story." ["Putting things on the car would achieve nothing."]
putting it on action 4 "[if we are dropping]You can't drop yourself.[else]You can't put anything on [the second noun] while you're holding [it-them of second noun]." ["You lack the dexterity." <-- Also runs in the "can't drop yourself" rule.]
removing it from action 1 "You can't, because [it-they of noun] [is-are] closed." [It is unfortunately closed.]
searching action 1 "It's too dark to see." ["But it's dark."]
sleeping action 1 "You can't sleep right now." ["You aren't feeling especially drowsy."]
taking action 2 "You can't take yourself." ["You are always self-possessed."]
telling it about action 1 "You can't tell yourself about something." ["You talk to yourself a while."]
throwing it at action 1 "You can't throw [that-them noun], or can't do so in that way." ["Futile." <-- for inanimate objects]
touching action 3 "As expected." ["If you think that'll help." <-- for TOUCH SELF]
Waking up action 1 "As far as you know, you're already awake." ["The dreadful truth is, this is not a dream."]
waving action 2 "You wave [the noun]." ["You look ridiculous waving [the noun]."]
waving hands action 1 "You wave." ["You wave, feeling foolish."]
Section - Performance
[This small set of verbs normally produce jokey or out-of-character responses. These may be read as something the player is directing his character to say, or something he's expressing himself. Here, we simply say that the action does nothing under the current circumstances. ]
Table of custom library messages (continued)
library-action library-message-id library-message-text
saying yes action 1 "Saying yes here has no effect." ["That was a rhetorical question."]
saying no action 1 "Saying no here has no effect." ["That was a rhetorical question."]
saying sorry action 1 "Saying sorry here has no effect." ["Oh, don't apologise."]
swearing mildly action 1 "Swearing here has no effect." ["Quite."]
swearing obscenely action 1 "Swearing here has no effect." ["Real adventurers do not use such language."]
Section - Less Excited parser
[Some of the default messages end with exclamation points, which can make the parser seem breathless on occasion. Most of these messages are replaced elsewhere, but for the remainder:]
Table of custom library messages (continued)
library-action library-message-id library-message-text
-- 31 "You seem to have said too little." [This error may possibly be deprecated now, since I can't find where in the library the error type TOOLIT_PE is ever assigned.]
-- 32 "You aren't holding that."
-- 36 "You excepted something not included anyway."
-- 43 "Nothing to do."
wearing action 1 "[if noun is a person]You can't normally wear other characters.[otherwise]You can't wear [that-those noun]."
wearing action 2 "You're not holding [that-those noun]."
wearing action 3 "You're already wearing [that-those noun]."
Section - Story, not Game
[Modern terminology prefers calling an IF a story, not a game. This has been adopted in the main I7 structures, but not yet these messages.]
Table of custom library messages (continued)
library-action library-message-id library-message-text
-- 70 "The use of UNDO is forbidden in this story."
requesting the pronoun meanings action 4 "no pronouns are known to the story."
requesting the score action 1 "[if the story has ended]You scored [otherwise]You have so far scored [end if][score] out of a possible [the maximum score], in [turn count] turn[s][ignore library line break]"
Verifying the story file action 1 "The story file has verified as intact."
Verifying the story file action 2 "The story file did not verify as intact, and may be corrupt."
Section - Player Description
The description of the player is usually "As expected." [Note: the library still contains Miscellaneous 19 for examining the player, but this is apparently no longer used.]