Can't "take all" people's possessions even when unlisted

Try this:

[code]Test is a room.

Bob is a man in Test. “Bob is [if Bob hold something]holding out [a list of things held by bob] to you[otherwise]empty-handed[end if].” Bob holds a wrapped present. Bob holds a gold watch.

Check an actor taking (this is the accepting gifts rule):
let the local ceiling be the common ancestor of the actor with the noun;
let H be the not-counting-parts holder of the noun;
while H is not nothing and H is not the local ceiling:
if H is an person:
continue the action;
let H be the not-counting-parts holder of H;

The accepting gifts rule is listed instead of the can’t take people’s possessions rule in the check taking rulebook.

test me with “take present/take all from bob”[/code]
When taking a single item, the rule replacement works, but when I use “take all,” the original rule still seems to be in place. I couldn’t find mention of it in the Standard Rules, so I’m guessing this is happening in the template layer with the arcane workings of “take all” in the parser. Any suggestions for how to get around it?

Never mind, it’s the same library message but it’s from a different rule: the “can’t remove from people” rule. Unfortunately, my WIP seems to have a more complex problem that this example doesn’t duplicate. Damn.

I still can’t duplicate the problem, but the situation is more like this:

[code]Test is a room.

Bob is a man in Test. “Bob is [if Bob holds the tray and the tray holds something]holding out [a list of things held by the tray] to you on a tray[otherwise if Bob holds something]holding [a list of things held by Bob][otherwise]empty-handed[end if].” Bob holds a tray. A wrapped present is on the tray. A gold watch is on the tray.

Understand “take [something] from [something]” as removing it from.

Instead of removing something from bob:
try removing the noun from the tray.

Instead of taking the tray:
say “Bob isn’t offering you the tray.”

Check an actor taking (this is the accepting gifts rule):
let the local ceiling be the common ancestor of the actor with the noun;
let H be the not-counting-parts holder of the noun;
while H is not nothing and H is not the local ceiling:
if H is an person:
continue the action;
let H be the not-counting-parts holder of H;

The accepting gifts rule is listed instead of the can’t take people’s possessions rule in the check taking rulebook.

test me with “take present from bob/take all from bob”[/code]

The problem in this case is that “all” applies to the tray instead of the contents of the tray. Which is a hard enough problem to make me want to disable “all” completely, but I’m not even sure if it’s the same problem in the WIP. Damn and damn!

If you have any ideas for making “all” work at least in this example, I would really, really love to hear them.

Frankly, I’d be inclined to replace[code]Understand “take [something] from [something]” as removing it from.

Instead of removing something from bob:
try removing the noun from the tray.[/code] with Bob is privately-named. To decide what action name is the action-to-be: (- action_to_be -). Understand "Bob" as the tray when the action-to-be is the removing it from action. Understand "Bob" as Bob when the action-to-be is not the removing it from action. not as a particularly elegant solution, but at least one that requires little effort.

That makes me want to work on a noun-redirection extension I’ve been thinking about. The understand lines for the two objects are already a bit complicated.