Conversation Framework in a Crowded Room

Eric Eve’s Conversation Framework makes a couple of assumptions that seem mildly problematical – first, that you’re only talking to one person at a time, and second, that before a conversation takes place there will be an implicit (and usually silent) saying hello to action.

I’m working on a scene where there are five people in a room. They’ve all been there for hours, so it’s silly to think that the PC needs to greet any of them before initiating a conversation.

But here’s the problem: The player might very reasonably try the command ‘talk to fred’. The default response, provided by the extension, is, “You say hello to Fred.” Not appropriate in this particular scene. And the only way to provide a more appropriate output seems to be to write a new After rule for the saying hello to action.

Unfortunately, that makes the implicit/silent saying hello action (when the player initiates a conversation) explicit. Writing new After rules will be difficult enough, given that the characters are all hanging around in the same location … but worse, these rules will run every time the player switches conversation from one NPC to another.

I can rip the guts out of the extension, but before I roll up my sleeves and tackle it, I’m wondering if anyone else has grappled with this particular issue, or has any suggestions.

I think you can override the “You say hello to …” response by providing an After rule for the specific case of “explicit greeting”:

After saying hello to someone when the greeting type is explicit (this is the new default greeting rule): say "You turn to [the noun]."
I just tested this in a room with two characters, and it seems to work. It says “You turn to NPC” when you type “>talk to NPC”, but stays silent when you address another NPC B while you are talking to NPC A.

I am dealing with exactly this situation in my WIP. Let me just go look over my source to see what I did…

This part is not directly relevant, but it defines some additional grammar for conversation that might be useful (and it’s used in the more relevant code that follows):

[spoiler][code]Chapter - Conversation tokens

Understand “mind/out/aloud” and “out loud” and “my/your/his/her/its mind” as “[out loud]”.
Understand “about it/that” and “it/that/so” as “[so]”.
Understand “[so]”, “[out loud]”, and “[so] [out loud]” as “[so out loud]”.

Understand “to/with” and “[so out loud] to/with” as “[so out loud to]”

Chapter - Modifying grammar for existing commands

Understand the command “mention” as “answer”.

Understand “answer [any known thing] to [someone]” as informing it about (with nouns reversed).
Understand “tell [someone] that [any known thing]” as informing it about.
Understand “tell [someone] [any known thing]” as informing it about.
Understand “talk to/with [someone] about/regarding [any known thing]” as informing it about.
[/code][/spoiler]

This code is partly tied up with an idea I’m using called the “current subject” so that “talk to X” will be converted to informing X about the current subject. But you might be able to use the “skip greetings rule” I’ve created:

[code]Chapter - Talking

Talking is an action applying to nothing. Understand “t”, “talk”, “talk [so out loud]”, “answer”, “answer [so out loud]” as talking. Talking is implicit-conversing.

Check talking when the current interlocutor is nothing:
say “You need to specify who you want to talk to.” instead.

Carry out talking:
try talking with the current interlocutor.

Chapter - Talking With

Talking with is an action applying to one visible thing. Understand “answer [someone]”, “answer [so out loud to] [something]”, and “talk [so out loud to] [something]” as talking with. Talking with is conversing. Talking with is speaking.

Before saying hello to someone when the player’s command includes “talk”:
Try talking with the noun instead;

Before conversing when the current interlocutor is not the noun (this is the skip greetings rule):
Now the current interlocutor is the noun.

The skip greetings rule is listed instead of the greet a new interlocutor rule in the before rulebook.

Check talking with someone when the current subject is not a thing:
say “There’s nothing in particular on your mind to talk about.” instead.

Carry out talking with:
try informing the noun about the current subject.
[/code]

Thanks. That seems to work perfectly.