Conversations for multiplayer games
![Dragonfolk2000](https://forums.beamdog.com/uploads/userpics/152/nGFQ6KCMQDFFW.jpg)
My friends and I are considering making multiplayer modules. We've been tooling around and we have found that conversations are weird. What is the best way for us to handle a conversation for with an NPC for multiple PCs?
My main concern is that the PC who has dialogue skills (like Persuade and Intimidate) wouldn't be able to help if the wrong PC starts the conversation. I was thinking about if whenever a conversation page appears there could be a script that checks which PCs are nearby. A conversation option should give the PC currently in control either the ability to pass the conversation off to them or the ability to make the skill check using that PC's modifiers. The game will keep track of and assume that it was the conversationalist PC who made the check even though a different PC is in control. It's safe to assume that the players will be using Discord (or something like it) to voice chat so I'm not worried about the other PCs being able to see all of the dialogue options. The one in control could just read them outloud.
What are everyone else's thoughts on this? Are there examples of modules addressing this sort of issue?
My main concern is that the PC who has dialogue skills (like Persuade and Intimidate) wouldn't be able to help if the wrong PC starts the conversation. I was thinking about if whenever a conversation page appears there could be a script that checks which PCs are nearby. A conversation option should give the PC currently in control either the ability to pass the conversation off to them or the ability to make the skill check using that PC's modifiers. The game will keep track of and assume that it was the conversationalist PC who made the check even though a different PC is in control. It's safe to assume that the players will be using Discord (or something like it) to voice chat so I'm not worried about the other PCs being able to see all of the dialogue options. The one in control could just read them outloud.
What are everyone else's thoughts on this? Are there examples of modules addressing this sort of issue?
0
Comments
A loop to see if there are other PCs are within say 10m and in the same party is easy. It would have to be called each time a skill check is required from the script executing the skill check.
It would need another loop to determine who has the best skill rank and use that number.
I think you have to make several versions of the skill check scripts to use for different DCs and the different skills. (pretty sure there's a number of these in the default game: e.g. easy-medium CHA check script; hard CON check, etc)
There needs to be tracking for who has spoken to an NPC and how far they are thru a quest/conversation so that the conversation doesn't restart at the beginning each time. Or, the NPCs don't act as if you've never spoken when you just completed their 2000 word convo. This should also update the journal.
The easiest way for me was using a database object in each player's inventory.
Another loop at the end can mark each player's database object with who they've spoken to and whatever their quest progress is.
Once the initial busy work is set, you can crank out convos from there.
PM me or post back here if you need more. I can dig up some script samples from my mod in a couple days (work permitting)
Is a database object required? Couldn't I store the variables globally?
If you're making a persistent world type module, storing it on the player database object is a good way to do it.
If it's module like the original campaign, you can just store a local variable on the module object. Add a prefix or suffix to the players character name and store it under that.