Plural objects and 'x all' (adv3Lite)

Here’s a nice little problem. One of my beta-testers used ‘x all’ (as some players like to do), and it caused an unintended consequence, I forget what. So I redefined the Examine action to allow only one thing at a time to be examined. However, the PC has a purse (synonym ‘bag’) and there’s a room with some burlap bags in it. The bags are just scenery, but players will want to examine them. And now they can’t, because if the PC is carrying the purse, ‘x bags’ will cause the parser to think the player is referring to both the burlap bags and the purse.

I suppose I can replace the burlap bags with big crockery jars, but it’s not nice when you have to change the design of a game because of a limitation of the library. So my question is, how can multiDobj be prevented in the Examine action except in certain locations, or with respect to certain words?

…and no, a Doer doesn’t seem to do the trick. Nothing in the documented command input syntax of the Doer allows one to define multiple objects, so a Doer that attempts to do that doesn’t appear to work.

Hi Jim, sorry if I’m completely unhelpful again coming from adv3. In adv3 I have often put words like ‘bags’ in the regular noun section rather than in the plural section (in adv3 you preface a plural with *), so that the parser will recognize it but it won’t be included in a multiple dobj kind of command…

After grunting and groaning for a while, I found the easy solution. I routed the entering and exiting of the room through TravelConnectors, and did this in the TravelConnector:

execTravel (actor, traveler, conn) {
    reticule.removeVocabWord('bags', MatchPlural);
    inherited(actor, traveler, conn);
}

And using addVocabWord when the player exits that room, obviously. Turns out the library adds ‘bags’ as a plural when setting up the object, even if the programmer only uses the singular ‘bag’. So the MatchPlural flag addresses that specific vocabulary item, causing it to vanish when the player is in the room with the bags.

Interesting solution… wow, there appears to be less crossover between adv3 and Lite than I’d have guessed…

The programming syntax is identical, because the compiler is identical. And many of the classes have the same names. But beyond that, differences crop up.