Page 1 of 1

Add Player responses recursively when using links to other conversations.

Posted: Tue Dec 05, 2023 8:49 am
by OwNathan
I am currently making extensive use of links to external conversations in the dialogue database, and everything works perfectly for NPCs since they only have a single option to be used. Sadly, when it comes to the player possible responses are not added recursively by going inside each possible linked conversation/node, but only the first one found is added.
Is there any native feature to search all links recursively? If not, in case we need to code some sort of script to do that, where should we look?
Thank you!

Re: Add Player responses recursively when using links to other conversations.

Posted: Tue Dec 05, 2023 9:22 am
by Tony Li
Hi,

There shouldn't be a difference between NPC and PC links at that stage of evaluation. Can you please provide some screenshots that illustrate the difference?

Re: Add Player responses recursively when using links to other conversations.

Posted: Tue Dec 05, 2023 9:55 am
by OwNathan
Sure!

In this example, we have two different external links and a direct link to a PC reply, all of them connected to an empty group.
dialogues_0.png
dialogues_0.png (32.91 KiB) Viewed 14266 times
Only the first connection is linked to Player entries with conditions, while the other two should always be available. All conditions are checked after the connections.
dialogues_1.png
dialogues_1.png (26.24 KiB) Viewed 14266 times
When played in Unity, this dialogue first jumps into conversation 16, all conditions are seen as false, then it goes into conversation 43, finds a viable Player entry, adds it to the responses, and never adds the last one. (the one saying "go away").
dialogues_2.png
dialogues_2.png (25.4 KiB) Viewed 14266 times
When a condition is true in the Quest conversation, it jumps to, only a single response from that conversation is available. Considering the dynamic system we put in place, we would need the Dialogue System to search inside all conversations it is connected to and add all valid responses.

I hope this clarified a little!

EDIT: we are using version 2.2.20

Re: Add Player responses recursively when using links to other conversations.

Posted: Tue Dec 05, 2023 10:29 am
by Tony Li
Hi,

Are the options linked from the first two group nodes (Jump to: [QUEST Dialogues Access Point] and Jump to: [PC Options - Attack]) assigned to a Player actor? Except for {group} modes, all options' nodes should be colored blue. It doesn't matter whether group nodes are assigned to the Player or NPC.

If any nodes (except for {group} nodes) are assigned to an NPC, the conversation will use that node instead of any Player nodes.

If that doesn't help, can you either send a copy of your dialogue database to tony (at) pixelcrushers.com or back up your project, update to the current DS version, and import again from articy?

Re: Add Player responses recursively when using links to other conversations.

Posted: Sun Dec 17, 2023 7:44 am
by OwNathan
Hi Tony,
after some time, I finally discovered what happens. Instructions from Articy, at least in the version we are using, are imported as NPC nodes and not groups, meaning that all links added as responses previously are lost.
I don't know if that could be fixed by updating to a newer version, but currently, we have changed a few things on Dialogue System to allow some of our other systems to work, so we'd prefer not to switch versions right now. We will try to change how Instructions are imported so that they becomes groups!

My only doubt is that, in the importer, there is the following comment "Since groups are processed one level ahead, don't make this a group:", but so far scripts in groups worked perfectly for us.

Re: Add Player responses recursively when using links to other conversations.

Posted: Sun Dec 17, 2023 9:55 am
by Tony Li
Hi,

More details on that comment: Conversations Evaluate Conditions One Extra Level Ahead

It should be fine to change your import code to make it a group -- but if it's immediately followed by a condition, add a node between the instruction and the condition.