Hi,
As I read through your post, I came up with some alternative ideas. What if in your dialogue database there is always one Player actor and one Assistant actor?

- playerAssistantActors.png (15.1 KiB) Viewed 677 times
When the player chooses whether to be Player 1 or Player 2, you can set the Player actor's Display Name. For example, if the choices are Romulus and Remus, and if the player chooses Romulus, then in Lua:
Code: Select all
Actor["Player"].Display_Name = "Romulus"
Or in C#:
Code: Select all
DialogueLua.SetActorField("Player", "Display Name", "Romulus");
In your scene(s), set up versions of Romulus and Remus as the Player and versions as the Assistant. In the screenshot below, the Player versions are inactive and grouped under a GameObject named Players:

- romulus.png (54.4 KiB) Viewed 677 times
A Dialogue System Trigger set to OnStart on the Players GameObject will activate the correct child based on the player's choice (e.g., store the choice in a variable). The child that becomes active will register itself as the Player.
Then do the same for the Assistants GameObject.
When interacting with NPCs, as long as you leave the Dialogue System Trigger's Conversation Actor field unassigned, it will use the active player GameObject.
This will make your conversations very easy to write, since you can always use the same Player and Assistant actor regardless of what character the player has chosen.

- playerAssistantConversation.png (12.88 KiB) Viewed 677 times