Laurel & Hardy (adv3Lite)

Thinking out loud here. I think maybe I’ve solved the problem, so this post is sort of a tip, not a plaintive cry for assistance.

I have a pair of NPCs who are basically inseparable. They’re always going to be in the same room at the same time, but they have individual names and descriptions. When you first encounter them, you won’t know their names – they’re both security guards. So here’s what I see when the PC enters the room:

Not good. So I create a CollectiveGroup and give it a specialDesc, “Two uniformed security guards are standing here.” I also make the individual guards of class Actor, Fixture, the idea being to prevent them from being listed in the room description. But that doesn’t work. They’re still listed, even though they’re Fixtures. Now I get:

[code]Two uniformed security guards are standing here.

The security guard is here.

The security guard is here.[/code]
I have a solution to that problem. I give the individual guards specialDesc = ‘’. (It’s empty.) But that’s not a complete solution. I’ve put [Examine] in the collectiveActions property of the CollectiveGroup. According to the Library Reference, “For any of the objects in the myObjects list the CollectiveGroup will handle any of the actions in the myActions list.” But that’s not happening. When I type ‘x guards’, I see both the desc of the CollectiveGroup and the desc of each individual guard.

I suppose a workaround would be to create a single object and have it pretend to be two guards … but that would be messy, because the player might want to ask a question: ‘ask ray about chuck’ or ‘ask chuck about ray’. Sorting that out would be almost impossible.

So how can I code Tweedledum and Tweedledee separately, yet have them function as a single object with respect to the Examine action, when and only when the Examine action has the plural object?

The root of the problem, I suspect, is that adv3Lite is quite happy to supply missing plurals as vocabulary. It understands that ‘guards’ can refer to either of the objects whose vocabulary includes ‘guard’. At the moment, that’s a problem. Can I shut that behavior off with respect to this one particular pair of objects?

Edit: And here’s the sneaky solution: Give the noun an absurd non-default plural:

class SecurityGuard: Fixture, Actor vocab = 'security guard{xxxqqq}' specialDesc = '' ;
Now ‘guards’ matches only the CollectiveGroup.