Completely remove autofilling in the noun from a command

Consider this code:


Doghouse is a room.

Barking at is an action applying to one thing. Understand “bark at [something]” and “growl at [something]” as barking at.

Check barking at:
if the noun is the player:
say “You can’t intimidate yourself.”;
otherwise if the noun is a person:
say “There isn’t a reason to intimidate [the noun] right now.”;
say “[regarding the noun][Those] won’t respond to intimidation.”;
stop the action.

The player is wearing a collar.

A chew toy is in the Doghouse. A dog biscuit is an edible thing in the Doghouse. A cat is an animal in the Doghouse.[/code]

If you try just “BARK,” it will do (at the collar), which is not exactly the thing the player is especially likely to try to bark at (experimentation suggests that it defaults to the collar since it is the only thing in the player’s inventory). In fact, I think it is most preferable (for the game I am making, not the example code above) that BARK never guesses a noun, but instead always asks “What do you want to bark at?”

I’ve checked through the documentation, but I can’t seem to find out how to do that. The closest I can do is add:

Understand "bark" and "bark at" and "growl" and "growl at" as barking at.

But that results in “You must supply a noun.” if you try BARK. It would be preferable if it was “What do you want to bark at?”. I know you can just change the supplying a missing noun activity so that it says “What do you want to bark at?” instead, but if I do that it doesn’t give the option to just type in the noun as a response to the question. It also wouldn’t change to “What do you want to growl at?” if you typed GROWL instead, unlike other synonym commands.

Another option I’ve tried is to add “Does the player mean barking at something carried: it is unlikely.” and “Does the player mean barking at something worn: it is unlikely.” so that it doesn’t automatically go to things worn or carried, but I’ve noticed it is still doing noun guesses in other situations where I can’t yet understand why it decides to guess a specific noun.

How can I disable autofilling the noun for barking at altogether?

I think the extension Disambiguation Control by Jon Ingold takes care of this problem–that is, if I remember correctly, all you have to do is include the extension and the autofilling will go away. There are versions available for both 6G60 and 6L02 (the 6L02 version would probably work with the newest build too).

Aside from this extension, I don’t think there’s actually a good solution. In the past zarf has suggested starting the player with more than one thing in their inventory (or with none).

Disambiguation Control v8 seems to be doing the trick for this particular situation, without having to code anything extra other than adding the extension. However, it appears that, to remove all potential issues, I should use the “Use no parser suggestions.” option in the extension. Unfortunately, although the extension by itself is working fine in 6L38, “Use no parser suggestions.” is always causing a translating the source error. I would assume that the discussion of that is better off elsewhere, though.


Well that’s not good. I think the problem is that there’s a missing #endif in Disambiguation Control, and I think I know where it is, but I will see if I can beep Draconis who may be maintaining the extension at the moment and who certainly knows more Inform 6 than I do.

A simple solution, no need for extensions:

Does the player mean barking at something: it is unlikely.