Redefining an existing action

I know this will have been posted somewhere but I can’t for the life of me find a solution to my exact problem.

I want to redefine the ‘Throwing it at’ action to reduce the inbuilt limitations and increase it’s ‘intelligence’.
My problem is running into conflicts with the existing command, and when I try to redefine it; I often end up redefining the “Throw” command rather that “Throwing it at”

I’ve tried all I can think of and have lost track, but here’s a couple of things I tried and failed.

This never redefined throwing it at.

Understand the command "throwing" as something new.
Understand "throw [something preferably held] at [something visible]" as throwing it at.

Here I tried to create a new command, and redirect it but it still ran the original throwing it at action

Understand "toss" or "lob" or "chuck" as "[throw]".
Understand "[throw] [something preferably held] at [something]" as tossing it at.
Understand "[throw] [something preferably held] [direction]" as tossing it at.
Tossing it at is an action applying to two things.
carry out tossing it at:
	say "Succeeded".

I’m out of ideas and can’t find a solution that seems to work.

If you want to remove all the existing Understand lines for an action, you can do this:

Understand nothing as throwing it at.

This will remove the grammar lines for throwing it at, and allow you to define your new action with the same grammar lines, but will leave plain old “throw rock” in place.

For the other way around, what you’d have to do is this:

Understand the command "throw" as something new.

For this, you have to get the exact word that the player types, not the action name. So this would eliminate every Understand line starting with “throw,” including the understand line for “Throw rock” as well as that for “Throw rock at target.” See §17.3 of Writing with Inform.

(In older versions of Inform the option for eliminating all the commands leading to a particular action didn’t exist, and you always had to eliminate every verb one by one, and then redefine the Understand lines you didn’t want to eliminate as well as write new ones for your new action. The “Understand nothing as…” option is much more convenient!)

Ahh legend!

Sounds like it must have been a chore…

Thanks for helping!

So I tried doing that and I’m hitting trouble…

Understand nothing as throwing it at.
Understand "throw" and "toss" and "lob" as "[throw]".
Understand "[throw] [something preferably held] at [something visible]" as throwing it at.
Check Throwing it at:
	say "checking".
Carry out Throwing it at:
	say "Succeed".

This will still run the original Throwing it at action when I type ‘lob x at y’, even though it’s supposedly overridden.
And if I type “throw x at y” it can’t identify the second noun.

The “understand nothing as…” only removes the grammar lines (i.e. the commands that the parser understands as referring to this action), not the action rules (i.e. what happens after the parser has recognized the player’s command as referring to this action). If you want to start from scratch you’ll have to either create a new action or unlist the standard rules of the old one:

The block throwing at rule is not listed in any rulebook.
The futile to throw things at inanimate objects rule is not listed in any rulebook.
The implicitly remove thrown clothing rule is not listed in any rulebook.

The new understand lines should look like this:

Understand "throw [something preferably held] at [something visible]" as throwing it at.
Understand the commands "toss" and "lob" as "throw".

You can’t change the basic structure of a built-in action (whether it applies to zero/one/two objects, whether it applies to visible or touchable things). If you want that stuff to be different in your game, you have to create a new action.