When you use something like “move the foo to the bar” it doesn’t check the carrying capacity. The carrying capacity comes in in a “check putting it on” rule, so it gets invoked when the action that’s happening is “putting it on.” (There are other places carrying capacity gets used – for instance, when the player picks something up, their carrying capacity is checked. And there are some bugs with that.)
Your best bet here, I reckon, is to redirect tying a lure to the rod to putting the lure on the rod. That means that the built-in carrying capacity rules will kick in; it also ensures that “PUT LURE ON ROD” is treated the same as “TIE LURE TO ROD,” which is good. (In fact, if you try “PUT LURE ON ROD” in your code, it’ll respect the carrying capacity limits.)
Thus:
[code]A rod is a kind of supporter. A rod is portable. A rod has carrying capacity 1.
A lure is a kind of thing.
River Bank is a room. The player carries a rod and three lures.
Instead of tying a lure to a rod:
try putting the noun on the second noun.
After putting a lure on a rod:
say “You expertly tie [the noun] to [the second noun].”
The can’t put onto something being carried rule is not listed in any rulebook.[/code]
Some subtleties: We want to change the message you get from putting a lure on a rod, so we use an “after” rule, which fires and then prevents the Report rules from firing. That’s why we don’t get the standard message for putting things on other things.
There’s a standard rule that prevents the player from putting things onto things they’re carrying, I guess with the thought that most supporters take two hands to carry and it’s hard to put things on them without putting them down. We don’t want that, so we eliminate that rule.
Also, it might be good practice to put [the noun] in brackets, which lets Inform handle the definite article for the rod/lure in case you’ve defined something with a special article.
EDIT: You’ll also need to write some code to make sure that you can only put lures on rods.
Instead of putting something on a rod when the noun is not a lure: say "The rod is too delicate to support that!"
might do.
Also, if you got my code before I updated, it won’t compile because I stupidly wrote “first noun” one place I should’ve had “noun.”