Since the last time I've talked about it, I've already re-gutted the dialogue system and put it on top of a new framework which is a Unity addon that is still in pre-release, but it handles branch cases much better. (Moved from Behaviour graph system to Graph Toolkit system)
It still isn't the prettiest system, but I'm much happier with the logic flow and being able to jump between different sub-topics.
A graph will represent a single dialogue interaction. Each conversation will be a different graph instance.
The details here aren't super important, but note the titles at the top of each box.
DialogueNode - tells the UI who the speaker is and what they are saying
ChoiceNode - tells the UI to display choices and splits to different directions based on the choice
TopicLink - Tells the graph to jump to a specific TopicHolder in the graph (Here I have links and groups colour-coded to match)
TopicHolder - Exists as a way to link groups together
I feel like I'm really close to having a full level stage, but a notable piece that I'm missing is navigational/parkour controls. Which I had on the previous character controller, and now I'm back to trying to re-integrate it into my new character controller, and here I am talking about constantly switching systems and re-integrating things that already previously worked and then I decided to uproot and write from scratch again. It will be better in the long run I pray.
Anyway, what I will be doing is making different types of navigational obstacles that act as an action trigger to the player. The player will receive the trigger and if the prerequisites are met, the player will then execute the necessary movement and animation.
My naming conventions are getting to be a bit confusing, since an "action" is the character manually interacting with an object or tool in the scene, but an "action" here means an environmental trigger is telling the character to act in a certain way.
The main difference here, is that one is the player manually triggering a character interaction, (Calls an event function)
and the other is an environmental trigger that momentarily suspends player control until it is complete. (Overrides character behaviour)