[solved] I7: Bizarre missing noun problem

We have an action called disassembling. It goes like this:

Disassembling is an action applying to one thing. Disassembling something is tough work. Understand "Disassemble [something]", "Unfurl [something]", "Pull down [something]" and "Take down [something]" as disassembling.

When you type ‘disassemble’ it comes up with the following message:

That’s odd enough. To compound it, we’ve got an almost identical action called assembling. This looks like this:

Assembling is an action applying to one thing. Assembling something is tough work. Understand "Assemble [something]", "Build [something]" and "Put up [something]" as assembling.

When you type ‘assemble’ it comes up with the correct question:

Furthermore, putting in a rule for supplying a missing noun does nothing:

Rule for supplying a missing noun while disassembling (this is the disassemble missing noun rule): say "What would you like to disassemble?" instead.

My collaborator Melvin looked carefully at the rules that were firing or not firing and he reckons it’s an Inform 6 bug. Anyone have a clue?

Inform internally represents dictionary words only with the first 9 characters of their names, so the command “disassemble” matches the dictionary word ‘disassemb’, which is what is printed.

Fix thus:

Include (-
[ LanguageVerb i;
switch (i) {
’i//’,’inv’,’inventory’:
print "take inventory";
’l//’: print "look";
’x//’: print "examine";
’z//’: print "wait";
’disassemble’: print "disassemble";   ! Here we add the fix
default: rfalse;
}
rtrue;
];

[ LanguageVerbLikesAdverb w;
if (w == ’look’ or ’go’ or ’push’ or ’walk’)
rtrue;
rfalse;
];

[ LanguageVerbMayBeName w;
if (w == ’long’ or ’short’ or ’normal’
or ’brief’ or ’full’ or ’verbose’)
rtrue;
rfalse;
];
-) instead of "Commands" in "Language.i6t".

(It’s only the first of these three I6 function you’re interested in, but you need to do replacements of I6 templates sectionwise.)

EDIT:
You could do this:

[code]Understand “disassemble” as disassembling.

Rule for supplying a missing noun while disassembling (this is the disassemble missing noun rule):
say “What would you like to disassemble?” instead.[/code]

(Supplying a missing noun rules only run, if you have actually defined a command with too few understand tokens.)

However, I think the LanguageVerb function is called in some situations besides the one that can be handled by the supplying a missing noun activity, so the I6 hack is probably preferable.

Your I6 code works great, thanks! (Melvin says thanks too). The frustrating thing was that we knew about having to define a command with too few understand tokens, as we’ve already got a bunch of supplying a missing noun rules in the game. It was definitely a face-to-palm moment.