Sounds like an interesting concept. I don’t use Twine but I write in AXMA which has a <<choice>>
macro which essentially lets the player click a radio button (it’s actually a check mark) so they can toggle multiple choices on the same screen before proceeding with a link.
In AXMA, the choice macro sets a variable and there can be multiples on each page like:
They:
<<choice 'Discuss the weather.;Discuss the problem.;Frown.' $dialog1>>
Your response:
<<choice 'I hate rain.;Avoid the problem;Smile.' $dialog2>>
[[Proceed|passage2]]
The player can pick from both lists (or not) before clicking proceed. The variables will be set at 0 if no choice is made, 1 for the first in the list, 2 for the second, etc. So then in passage2 you’d just compare each combination.
(This is just an example of how I’d do it in AXMA - in Twine there hopefully is a similar “radio button” style choice option; your code likely won’t match this at all, but conceptually…)
::passage2
<<if $dialog1 eq 1>>
"Wow it's raining pretty hard."
<<if $dialog2 eq 0>>
Your response is silence.
<<elseif $dialog2 eq 1>>
"I hate rain," you respond.
<<elseif $dialog2 eq 2>
"I'd rather not discuss it," you say.
<<elseif $dialog2 eq 3>>
You smile back.
<<endif>>
<<elseif $dialog1 eq 2>>
"I think we need to discuss this problem we have..."
<<if $dialog2 eq 0>>
You have no answer to that line of questioning.
<<elseif $dialog2 eq 1>>
"I'm too furious to discuss this because of all this rain," you grunt
<<elseif $dialog2 eq 2>>
"Tell me news of that sports team you like?" you interrupt.
<<elseif $dialog2 eq 3>>
A smile is your response. You'd rather not talk about it.
<<endif>>
<<elseif $dialog1 eq 3>>
A frown crosses your friend's face.
<<if $dialog2 eq 0>>
You don't respond to whatever they're unhappy about.
<<elseif $dialog2 eq 1>>
"You're angry about the rain too? I can see it on your face!"
<<elseif $dialog2 eq 2>>
"Tell me news of that sports team you like?" you interrupt.
<<elseif $dialog2 eq 3>>
You smile back in opposition.
<<endif>>
<<else>>
You both stare at each other over cooling cups of coffee with little to say.
<<endif>>
Alternatively if that’s too complicated, could you just do both sides of the dialogue “turn-based”? You’d have the player select a dialogue option for one character then on the next page choose the other character’s response.
The natural difficulty (as @KitParsing points out above) in this is avoiding a time-cave like situation where your simple coffee conversation combinatorially explodes into a branching maze of hundreds of potential responses and choices. This can be limited somewhat by smart planning and bottlenecking, but naturally-flowing dialogue with choices is always going to be a complicated undertaking.
One trick I’ve found that helps is to control the conversation’s actual structure - limit the actual subject branches, but give the player a lot of choices on the page that all trickily lead to the same next conversation node. This requires temporarily remembering the player’s response and varying transitional lead-in text to make it feel natural but still go exactly where you want it to. This will be harder if you’re letting the player make choices for both characters, but can be done with good planning. You’re giving the illusion of choice and agency but still keeping control so your weather/coffee conversation doesn’t end up taking 300 passages to complete! 