There is already grammar for this in the standard rules:
Understand "take [things inside] from [something]" as removing it from.
Understand "take [things inside] off [something]" as removing it from.
The “removing it from” action always converts to “taking”.
Note that this grammar fails if the object is not already in the specified location. That is, “take apple from box” generates a useless error message if the apple is not in the box. I think there’s a feature or bug about that.
Aha, well that explains my problem. In this case the NPC is ‘wearing’ scenery, which isn’t allowed so I’ve used custom code to make it seem like they are. A simplified example:
[code]Example room is a room. Bob is a man in example room.
The shoes are scenery in Example Room. The description is “They’re nailed to the floor.” The shoes can be wornbybob or unworn. The shoes are wornbybob.
Every turn when the player has been in Example Room for three turns:
say “Bob steps out of the shoes.”;
now the shoes are unworn.
Before removing the shoes from Bob:
say “Bob can take off his own shoes.”;
stop the action.[/code]
Which explains why:
take shoes off Bob
returns “You can’t see any such thing.” Is there any way to make this work? Or at last return a different error message for this specific situation, since I only need a message to be printed.