Jump to content

Turning an Adventurer into a Sidekick/Companion?


Recommended Posts

Posted (edited)

This isn't something I am really working on, but I figured it might be interesting to others.

I've just discovered it is possible to have adventurers (the custom characters that can be hired from most inns) speak during a conversation!

In brief you can do this by adding the speaker GUID (these are found in speakers.gamedatabundle) of the voice set in use by the character to the SpeakerGuid and FocusedSpeaker sections of a conversation node. The name of the character and the current portrait will then appear in the conversation window. If there are audiofiles that correspond to the conversation node in the folder associated with the voice set these will also be played during the conversation.

This should in theory allow for the creation of rudimentary sidekicks/companions with voiced dialogue!

With a lot of work and some degree of trial and error possibly even full conversation hubs of their own... Though the main hurdle as far as that goes, is that the lack of a button to start a conversation with adventurers directly. So the only way I could think of is using something like an item to start the conversation, similar to how the burned book works. There is also the lack of modding documentation related to the data structure of .conversationbundle files to contend with.

None the less could be really cool to see what someone dedicated enough might come up with!

I'm happy to answer questions to the best of my ability about anything I have written here.

Edited by Kvellen
fixing some grammar
  • Like 1
Link to comment
Share on other sites

Oh wow, that's an awesome discovery!

1 hour ago, Kvellen said:

Though the main hurdle as far as that goes, is that the lack of a button to start a conversation with adventurers directly. So the only way I could think of is using something like an item to start the conversation, similar to how the burned book works. 

Yeah, maybe also script hooks to trigger convos on entering specific locations.

1 hour ago, Kvellen said:

There is also the lack of modding documentation related to the data structure of .conversationbundle files to contend with.

Actually, I've been working on a thorough documentation of the conversation and quest formats. I'll clean up and post tomorrow.

  • Thanks 2
Link to comment
Share on other sites

1 hour ago, Noqn said:

Yeah, maybe also script hooks to trigger convos on entering specific locations.

Oh yeah now that you mention it, script hooks could total work for this couldn't they!

I do wonder though, would there potentially be some impact on performance with a lot of scripts checking if their conditions are met on level load?

1 hour ago, Noqn said:

Actually, I've been working on a thorough documentation of the conversation and quest formats. I'll clean up and post tomorrow.

Awesome!

  • Like 1
Link to comment
Share on other sites

Posted (edited)

Ok. First up I believe that this blog post by Josh Sawyer gives a great introduction to the general concepts of Deadfire Conversations: https://jesawyer.tumblr.com/post/175082312536/im-curious-as-to-what-the-conversation-editor

 

Basically, Conversations are flow charts. They contain Nodes, where each Node represent e.g. a player dialogue option or an NPC line.

All Nodes have a unique ID, and they contain a list of Links pointing to the IDs "descending" Nodes.

 

Now, here's the WIP documentation on these data formats, I hope it's not too much of a mess: https://docs.google.com/document/d/1jv8GvSuWlunC_nElQsPBM9nqEt8iCOoOP5PlBVAT1Bc/edit?usp=sharing

Most properties and values are somewhat self-explanatory, I've tried to describe the ones that aren't. (The major remaining ones are the concepts of Ghost Links and Question Nodes.)

 

Edited by Noqn
  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
Posted (edited)

So I did a bit of tinkering using the excellent documentation noqn has provided, and have created a basic proof of concept! PoE2_Adventurer_Conversation.zip

There isn't really much to this mod beyond this one custom conversation, with a man giving monosyllabic responses (and possibly challenging you to a staring contest), but it does maybe give some insights into a few aspects of how a custom conversations can be implemented. For convenience, the "Speech Bubble" in the actual mod comes pre-equipped on the character.

There is likely a lot I am skipping over explaining, so if there is something that anyone is curious about or would like me to go into further detail on, please let me know!

Here are a few interesting aspects:

As you can hear the conversation uses voice lines from the Stoic Male voice set. I've used the "ExternalVO" line on some nodes in the .conversationbundle to play specific audiofiles during certain points. For example "ExternalVO": "player_stoic_m/ch_player_stoic_m_investigate_40011", is used on the first node of the conversation for the character to give a sort of grunt as a greeting.

However it's totally possible to add new voiced dialogue for characters during a custom conversation! I only did things this way to keep it simple for myself. But as I mentioned in the original post, if there is an audio file related to a conversation in the folder associated with the speaker (this is defined by the ChatterPrefix line) the game will play it. The audio file itself needs to be named after conversation and the 4 digit ID of the specific node it should be played on. So for example if there were an audio file named "adventurer_caedman_0001.wem" in the "player_stoic_m" folder, this could be played without needing "ExternalVO": "", to be used.

There are a few minor details you might noticed that don't really sell this as a proper conversation between the characters:

  • The adventurer and Watcher don't turn to face each other when speaking. Which is pretty impolite if you ask me!
  • The Watcher won't approach the adventurer like they do other companions, which leads to potential for instances of conversations happening over long distances, or from other rooms entirely.

The scripts FaceTarget and AIPathToObject/AIPathToPoint could be potential solutions for these respective problems? But I've yet to actually test them, since I've only just become aware of them as I am writing this post.

Moving on to the character themselves, there are some pretty cool things that could potentially be done using the GUID of an exported character. An example of this is to do with the "Speech Bubble" item. On the "InspectOnUseButton": [ ]  there is a conditional to only display the "Talk to Caedman" button when a character with the specific GUID of the adventurer is in the party.

Oh and with regards to making a fully featured companion with topics of interest... this GUID can be used to link companion data to the adventurer!

E2poSEK.png

I haven't looked into anything really surrounding flagging a node as a topic, so I have no idea if this character will "roll their eyes and let out a long sigh" when an assigned topic is mentioned in other conversations.

So yeah really exciting stuff!

Edited by Kvellen
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...