Conversation a la Ex. 271 Sweeney

Happy New Year everyone!

I’m trying to implement a conversation mode like the Sweeney example, but I can’t get it to work with different NPCs. I’ve tried making individual tables like Table of NPC-A Conversation Subjects and Table of NPC-B Conversation Subjects and just duplicating the “Instead of asking someone about the subject a subject listed in the Table of Conversation Subjects:” with Insteads for NPC-A and NPC-B (redundant and bulky sure, but I thought it would work), but then got into disambiguation problems with the Tables of Conversation Subjects if you wanted to ask different NPCs about the same subject. I’m pretty sure I could get this way to work with a little more time spent on the disambiguation, but the whole system just feels horribly crafted.

I’ve looked at the other extensions for conversation, but even the topic-based ones don’t feel quite what I’m looking for. I’ve become quite attached to the Sweeney style, and I hope someone here can give me a hand.

Thanks,

Jason

My choice was to use Conversation Framework and parts of Conversation Responses, but to set up the tables and the rest of the matter in my own way. Conversation Framework is pretty minimal - mostly what it does is set up the object-based conversation actions (if you’re using topics, you probably don’t even need that). Conversation Responses has a concise way of defining responses using the “response of someone” rulebook, and some useful phrases like “asked-or-told about something.”

In my own source, I have a generic response rule that checks first for a scene-specific responses table for an NPC, then checks the NPC’s general responses table. It would be easy enough to set up a universal generic responses table as a third fallback, but instead I think I had each NPC give a stock non-response. Special circumstances can always be handled with more specific response rules.

I also make use of say phrases like “think about something” that modify the player’s state of mind (basically a default variable called “the current subject”). And I mark subjects as “discussed” no matter who they’ve been talked about with (I don’t have a whole lot of talkative characters).