Creating a dialogue system with branching choices, conditions and consequences

Hey there!

I am currently developping a small visual novel with a strong emphasis on choices and branching story, and am looking for a way to create a reliable system to manage all the dialogues, including choices and their outcomes, conditions blocking certain choices and different consequences for choosing A or B.

So far, I have created a datatable and a blueprint structure which hold the text, character sprites, etc., as well as a few functions (in my main HUD widget blueprint) to manage player inputs and when to display the “choices” UI or the normal one - see pictures.

Problem is, this system doesn’t work to efficiently and simply manage choices, blocking options if certain conditions are not met, or to create branches in the story. I’d also have to put all my dialogues in a single DT, which would be impossible to manage in the long run.

How do I turn this system (or create an entirely new one if I have to) to achieve what I am looking for?

Thank you very much for your help!