Hmm...this is intended to be multiplayer, so that may complicate things slightly. I have not actually touched any of the multiplayer plugin for the engine, so I have no idea how to help you on the multiplayer front, but some advice of how to do it, besides the multiplayer/peer-connection part:
Use arrays or dictionaries and loading/saving from json to localstorage for storing the conversation-data with the choices a player has made previously. Dictionaries may be your better choice, as they are easier to learn and understand than arrays are, and a dictionary can do anything an array can do, data-wise, besides if you specifically need to loop elements, which arrays are used for. Below is some psuedo-code for how it may work with an example conversation, once you figure how the array/dict and json/localstorage first:
Is "firstconversationwithAlan" =/= 0
Player is overlapping with Alan = true
Is player pressing button-action "Space"
Dictionary key "AlanconversationDeterminator" = "StringValue" OR [is variable "branch1choice" = 3] (depending on how you want to approach things)
Textbox event stuff (not sure if you have a system setup for textboxes)
Set text-object Alantext to = "ReactionA"
Else
Textbox event stuff
Set text-object Alantext to = "ReactionB"
Something small to note with checking the dict-key here. Depending on if you have static dialogue choices that are pre-defined or allow the player enter their own unique responses (ala old text-adventure games, you can do either:
*Static dialogue choices = check for a variable's value (which is where you'll store what dialogue choices the player choose from previous convos) for when setting NPC reactions
*Allow for entering text = Check for a specific string, such as this example:
Dictionary key "Alanconversationbranch1choice" = "There was nobody home. This is suspicious, I've tried already for four days. He's not even answering. He's either a hermit now or something is very wrong..."
The minor problem I suppose with option b is that strings are very specific...they're case sensitive, so the player has to enter exactly what you want for the trigger to occur.