I agree with Erik; it’d be nice if it were possible to override invocation of the multiple-object list (which is one of those hard-code things that in general makes me feel ooky).
For your original question, shammack, the deal as I understand it is that when the player enters a command of the form “Do something to this and that,” Inform effectively breaks it up into two commands, “Do something to this” and “Do something to that,” and tries to execute them in turn. This is the same behavior as “Take all”; when that is entered, Inform figures out what the list of takeable things is and tries to take them all, one by one. It does this by using the “multiple object list,” which is the list of the objects that it’s going to try taking (or whatever the action is).
In this case, we can work around your issue by invoking the multiple object list. We have to detect it when the player is trying to combine more than one thing using “and.” Then, for the first one, we look at the multiple object list and see if it contains exactly two things. If it does, we try combining them. If not, we issue an error message. But the tricky thing is that, if the player had entered “combine x and y,” the game will have done all this while processing the command “combine x,” and it still needs to process “combine y.” So we have to set a flag that tells us whether we’ve already tried this multi-combine once this turn; if so, we ignore the rest of the multi-combines.
So I’d come up with something like this (not tested):
[code]Combining it with is an action applying to two things. Understand “combine [something] with [something]” as combining it with. [and then you have whatever code you want for combining]
Multi-combining-complete is a truth-state that varies. Multi-combining-complete is usually false.
After reading a command: Now multi-combining-complete is false. [This sets the flag to false at the beginning of every turn.]
Multi-combining is an action applying to one thing. Understand “combine [things]” as multi-combining. [The “[things]” token allows the game to understand “combine this and that” as multi-combining.]
Check multi-combining when multi-combining-complete is true: stop the action. [This means after we’ve already tried the multi-combining action on the first thing, we don’t try it again.]
Carry out multi-combining:
let L be the multiple object list;
if the number of objects in L is 0 or the number of objects in L is 1: [I think that if the player types “combine fruit” the multiple object list has 0 entries, but if the player types “combine all on table” and there’s only one thing on the table then the multiple object list has 1 entry]
say “You must specify two things to combine.”;
now multi-combining-complete is true;
stop the action;
otherwise if the number of objects in L is greater than 2:
say “You can only combine two things at once.”;
now multi-combining-complete is true;
stop the action;
otherwise: [this should happen only when there are exactly two things to be combined]
now multi-combining-complete is true;
try combining entry 1 of L with entry 2 of L.
The silently announce items from multiple object lists rule is listed instead of the announce items from multiple object lists rule in the action-processing rules. [The announce items… rule is the one that prints things like “Ball: taken. Bat: taken” when you enter “take ball and bat.” We don’t want that to happen when you’re multi-combining, so we replace it with something that doesn’t do that when you’re multi-combining.]
This is the silently announce items from multiple object lists rule:
unless multi-combining:
if the current item from the multiple object list is not nothing, say “[current item from the multiple object list]: [run paragraph on]”.[/code]
Usual warnings: I am not super expert, I haven’t tested this at all, and I typed some of it straight into the browser window, so there may be goofs (and watch the tab stops). Hopefully it’s something to start with.
The previous thread with some related stuff is here. (I don’t think that thread actually involves a bug, since I was using the multiple object list to hack up a command with three nouns, which Inform usually doesn’t allow.) It’s basically based on the example The Left Hand of Autumn from the manual.
(BTW, there’s a “search” button on the upper right-hand corner of the window, next to the “FAQ” button; but in this case I don’t think it would’ve been easy for you to find what you wanted with a search, anyway.)