take this piece of code and "shove" it please...

Okay I’m stumped…

[code]Moving stuff is an action applying to one thing.

Understand “lift [something]” or “move [something]” or “drag [something]” or “shove [something]” as moving stuff.

Instead of moving stuff:
try pulling [the noun] instead.[/code]

This piece of code seems to work in all the cases except when the player types: “shove box” - then it returns “You must supply a noun” when I compile it. It works fine with the other words though. I can’t get it to recognize the command “shove” as moving something? Or figure out how to override the command “shove” if it’s an action that’s already defined in I7.

The answer must be embarrassingly simple but I haven’t found it yet. Any help much appreciated…Thanks!

That should be

 try pulling the noun instead. 

No brackets.

There’s a couple of issues with your code, but they’re all pretty simple to fix:

First, [edit: as Ron points out] outside of quoted material, anything in brackets is ignored as a comment. You have “try pulling [the noun] instead” when you mean “try pulling the noun instead.”

Second, when defining new actions and synonyms for them, it’s best to first check the Index tab --> Actions. Below the actions is a section called “Commands available to the player” which lists (almost) all commands currently defined. You can see (if you comment out your “understand” grammar line) that “move” is already defined as “same as push” and “drag” as “same as pull.” This means that those pairs of words are interchangeable. In that case, you need to decouple “move” from its original meaning before redefining it. This is done using “Understand the command as something new.” Don’t use quotes or brackets in this case – see below:
[edited to add: You don’t need to worry about “drag” at all since it’s already the same as “pull”][code]Lab is a room. The ball is in Lab.

Moving stuff is an action applying to one thing.

Understand the command move as something new.

Understand “lift [something]” or “move [something]” or “shove [something]” as moving stuff.

Instead of moving stuff:
try pulling the noun instead.

test ball with “lift ball / move it / drag it / shove it”.

test me with “test ball / actions / test ball”.[/code]

I should add that “Understand the command … as something new” should be used with caution. Even though you need it in the case of words defined as the “same as” other words, in most cases you don’t. The reason you need to be careful with it is that this code essentially eliminates that word from the parser’s dictionary. If you say “Understand the command take as something new” you haven’t just removed the word “take” from the understood grammar of the “taking” action, but also the “taking inventory” action. Similarly, if you “Understand the command get as something new” Inform won’t be able to understand “get [something],” “get up,” “get in,” “get out,” etc. You can always redefine these to work as before, but it’s easy to forget to do so in certain cases. That’s why I recommend checking the index before making those kinds of changes.

Yes, obviously it works without the quotes. The Manual (“Writing with Inform”, that is) actually puts quotes round the commands in such understand statements:


And that seems to work as well.

Thanks, Felix.
I’m not sure where I got the idea that this case didn’t use quotes. In any event, it’s best to do as Felix suggests and use quotes, since this is the canonical syntax. Future changes might render my code unusable.

Thanks to you all, I learned something new today that’ll save me a lot of frustration!