Noobie question about "understand"

Hello, im new here, and already seeking for help xD. Probably is a really stupid question .

Well, i created an action (Nosing).

Room1 is a room. here is a banana and a screw.

nosing is an action applying to one thing.
understand "nose [screw]" as nosing.
instead of nosing the screw, try smelling the screw.

instead of smelling anything, say "Smells like a [noun]".

It works fine…

>nose screw Smells like a screw

but Inform tends to try to supply the noun if user dont give any:

>nose
(the screw)
Smells like a screw

Which is a feature i dont want (with any other objects or such)

i can “fix” with understand "nose [anything]" as nosing. but then ill have to write exceptions for all objects i dont want to “nose” or viceversa…

is there a command or something to disable ANY attempt to supply ANY missing word?

thx!

Yep: Understand "nose" as a mistake ("Nose what? Try again.")

You may get the right result if you use

Understand "nose [something]" as nosing.

Since more than one object is now acceptable for the nosing action, the parser won’t assume one.

You’ll have to write a rule to handle the default case (“nose banana”, “nose player”, etc). But that’s a good thing overall. Players learn the game’s verbs by experimenting, and that only works if all verbs can be parsed with all objects.

first of all: thanx guys for replying! and so fast!

@Zarf: I’ve tried your solution before but the problem is if i want to “understand” a built in verb with a specific item, lets say “take”, it would cause troubles.

for example.

Understand "nose [something]" as taking.

On the other hand, I guess Ron’s approach would fit. Im not in my PC so could not try it yet, but tomorrow hopefully ill try it.

Thx guys!

What problems does that example cause? I’ve done it.

(To exactly match the library’s behavior you would want

Understand "nose [things]" as taking.

…because the taking action accepts multiple objects. Most other actions don’t, though, so stick with [something] for your own actions.)

Or did you mean the other way around?

Understand "take [wrench]" as nosing.

You can do this, but it’s almost never the right way to customize an action. Better to write an instead rule:

Instead of taking the wrench:
    try nosing the wrench.

That will catch all synonyms (“get wrench”, “pick up wrench”, etc.) I think it also gives better disambiguation behavior.

You might use an Understand declaration if you don’t want to catch synonyms. For example,

Understand "take [pill]" as medicating.

That would not catch “get pill” or “pick up pill”. That might be what you want, but it still risks confusing players.

hello zarf, thanks again, you have been very helpful!

I didnt explain myself well, (not native english speaker)

but still you gave me the correct answer :smiley:.

What I tried to explain is that i wanted to assing differnt “nosing” depending on the object being “nosed” xD.

I thought it as:

understand “nose [wrench]” as nosing.
understand "nose [Fred] as talking. (yah nonsense)

but the right way to do it (i suppose) is like you told me:

understand "nose [something]" as nosing.
instead of nosing the wrench, try smelling the wrench.
instead of nosing Fred, try talking to Fred.
etc.

of course what i try to achieve its not related with “nosing” xD but i get the idea now.

Thank you mate!