Glub Posted January 19, 2021 Posted January 19, 2021 Hi everyone ! First of all, sorry for my bad english, french here =) At first I wanted to make a romance mod for Vatnir but with suggestions from people on Tumblr (and because I realized that I love modding), I decided to push the project further by extending the Beast of Winter DLC. So far, I've managed to get by, to understand logically how dialogs, nodes, variables work, how to add stuff to what already exists, how to put it all properly in an override folder. I even managed to create a passive effect to add to the player after a certain event (I thank all the people in this forum who took the time to explain how to do all these things, it clearly helped me!). I still have a lot of work to do but I'm stuck on one thing: adding a brand new dialogue. Even if I followed the few infos I could find on this subject, I didn't succeed (and I admit I don't want to spend days testing. It was fun at the beginning but now I just want to move forward on this project). Here's what I'm trying to do: I'd like to create a hub dialog for Vatnir like the other companions that is in a separate file (so a new dialog). The problem is that no matter what I do, when I talk to him in the game, the harbinger_leader dialog starts (the file where his main conversations are in the vanilla game). How do I make the game understand that I'd like it to start another one? I hope this is understandable ^^' 2
Noqn Posted January 19, 2021 Posted January 19, 2021 I think which conversations are triggered when speaking to characters are hardcoded in the Unity asset files. You could try inserting a TriggerConversationNode at the right place (and with the right conditionals) in harbinger_leader to intercept the conversation and trigger your own. an example from 04_cv_queen_onezaka_ii_wahaki_quest: Spoiler { "$type": "OEIFormats.FlowCharts.Conversations.TriggerConversationNode, OEIFormats", "ConversationGuid": "07069a05-0efc-4b25-b883-57621d1d3f4d", "StartNodeID": 0, "NotSkippable": false, "IsQuestionNode": false, "HideSpeaker": false, "IsTempText": false, "PlayVOAs3DSound": false, "PlayType": 0, "Persistence": 0, "NoPlayRandomWeight": 0, "VOPositioning": 0, "DisplayType": 1, "NodeID": 29, "ContainerNodeID": -1, "Links": [], "ClassExtender": { "ExtendedProperties": [ "SpeakerAnimation,0", "ListenerAnimation,0", "DoNotClearText,False", "FocusedSpeaker,", "VOEventOverride,None" ] }, "Conditionals": { "Operator": 0, "Components": [] }, "OnEnterScripts": [], "OnExitScripts": [], "OnUpdateScripts": [] } 1
Glub Posted January 20, 2021 Author Posted January 20, 2021 (edited) 19 hours ago, Noqn said: You could try inserting a TriggerConversationNode at the right place (and with the right conditionals) in harbinger_leader to intercept the conversation and trigger your own. This seems to work, thank you!! Gonna make more dialogues and tests but the new convo is taken into account and appears in the game Quick question: Is it possible to add audio files (voice files to be exact) via override? I have a feeling it doesn't work. =/ Edited January 20, 2021 by Glub 2
Kvellen Posted January 20, 2021 Posted January 20, 2021 (edited) Only way I have gotten my audio mods to work is by placing the files inside of a folder in StreamingAssets\Audio\Windows\Voices\English(US). Placing audio inside a mod's override folder doesn't work from what I can tell. I am really interested to see it might be possible to add new audio and dialogue! Edited January 21, 2021 by Kvellen 2
Glub Posted January 30, 2021 Author Posted January 30, 2021 On 1/20/2021 at 5:53 PM, Kvellen said: Only way I have gotten my audio mods to work is by placing the files inside of a folder in StreamingAssets\Audio\Windows\Voices\English(US). Placing audio inside a mod's override folder doesn't work from what I can tell. I am really interested to see it might be possible to add new audio and dialogue! Hey! Didn't manage to find how to make audio files work other way yet. But, about dialogues, Nonq's solution worked well! Vatnir has now a hub conversation with more than 100 entries \0/ Now I've reached the point in the mod where I'd like to try to make Waidwen a companion. Before I start, I'd like to know if it's even possible? I came across a post where someone explained that it was possible to create a new companion from an existing NPC but without any more details. I'll look a little on my side but if someone has info, I'll take it. 1
Kvellen Posted January 31, 2021 Posted January 31, 2021 That's awesome! I found a reply from a developer regarding if audio files can be placed in the override folder. Regardless I believe adding audio to a new conversations is possible! It's simply a case of naming the audio files such that they have the title of the conversation they correspond to, in addition to the node number they should play on (Eg. lax02_01_cv_harbinger_leader_0001.wem, lax02_01_cv_harbinger_leader_0003.wem, lax02_02_cv_dracolich_phylactery_0175.wem, etc). I've only tested this with pre-existing conversations, but I don't see why it shouldn't work for a completely new conversations as well! 1
Glub Posted February 2, 2021 Author Posted February 2, 2021 (edited) @Kvellen Yeah, I had tested this on an existing conversation and I have just tested it on a new one, I can confirm that it also works very well. Thank you! Now I'm trying to create a new companion without success so far. I've tried to make Waidwen a companion by using what already exists on him and adding some data from Edér but it doesn't seem to be working. Basically, in lax2_characters.gamedatabundle, I added some stuff to LAX02_CHA_02_Waidwen (I can't remember what exactly, I'll have to check the backup) and I created 'CompanionWaidwen' with the same data as 'CompanionEder' (which is in characters.gamedatabundle) and new IDs where needed. For the prefabs, I took the ones you can find from Waidwen (assets/prefabs/characters/lax02_poe2_npcs/lax02_npc_02_wandering_soul_waidwen.prefab) Spoiler { "$type": "Game.GameData.CharacterStatsGameData, Assembly-CSharp", "DebugName": "LAX02_CHA_02_Waidwen", "ID": "1291ce93-b9f3-4374-85c6-a9e935961e52", "Components": [ { "$type": "Game.GameData.CharacterStatsComponent, Assembly-CSharp", "DisplayName": 1599, "Gender": "Male", "RaceID": "74e606b7-022a-40af-858d-83dd90a98e62", "SubraceID": "6cdda9a5-05d4-406a-92b2-2fd3f69f5403", "CultureID": "8759fdd6-fc2c-4af3-84de-0679b41738f1", "CharacterProgressionTableID": "c6842b0c-75a9-49a8-8e2b-2283bdecd558", "BaseClassLevel": 1, "SpeakerID": "8f8fa428-8a08-436b-b5e9-f93381163eca", "NakedArmorMaterial": "None", "CreatureTypeGDID": "00000000-0000-0000-0000-000000000000", "BestiaryEntryID": "00000000-0000-0000-0000-000000000000", "BackgroundID": "05594ae8-9d20-4592-97b5-62a1d69c1ddb", "KeywordsIDs": [ "8b258944-236a-47cf-8bc2-534dd0e011f6" ], "BaseMight": 10, "BaseConstitution": 10, "BaseDexterity": 10, "BasePerception": 10, "BaseIntellect": 10, "BaseResolve": 10, "SkillsList": [], "ImmuneToEngagement": "false", "ImmuneToAttacks": "false", "PerceptionType": "Normal", "StealthDetectionID": "4b59d454-61f3-472f-906f-ff36afd861c0", "StealingAdjustmentID": "00000000-0000-0000-0000-000000000000", "StartingMaxEngageableEnemyCount": 0, "StartingAttackSpeedMultiplier": 1, "StartingRateOfFireMultiplier": 1, "StartingReloadTimeMultiplier": 1, "PersonalityID": "414cb4f8-afb6-44da-9976-b6934922e00e", "AnimationAudioEventListID": "61f5933a-6899-4c1d-9ef1-43b3b444965f", "MinLevelAdjustment": -50, "MaxLevelAdjustment": 50, "IsNamedCharacter": "false" }, { "$type": "Game.GameData.EquipmentSetComponent, Assembly-CSharp", "HeadID": "00000000-0000-0000-0000-000000000000", "NeckID": "00000000-0000-0000-0000-000000000000", "CapeID": "00000000-0000-0000-0000-000000000000", "ChestID": "cf0258c3-ecc3-413a-9d3c-53bf53208517", "HandsID": "00000000-0000-0000-0000-000000000000", "RightHandRingID": "00000000-0000-0000-0000-000000000000", "LeftHandRingID": "00000000-0000-0000-0000-000000000000", "FeetID": "00000000-0000-0000-0000-000000000000", "WaistID": "00000000-0000-0000-0000-000000000000", "GrimoireOrTrinketID": "00000000-0000-0000-0000-000000000000", "PetID": "00000000-0000-0000-0000-000000000000", "WeaponSets": [ { "PrimaryWeaponID": "1a3485bc-ec1a-4089-8086-28da996c2aad", "SecondaryWeaponID": "a7cabebc-a444-45b7-b60b-4927f29ee542" }, { "PrimaryWeaponID": "0bc6b44a-df87-4995-af66-196fbfd1d821", "SecondaryWeaponID": "00000000-0000-0000-0000-000000000000" } ], "PropsIDs": [ "d00d6d3b-1a5d-40bc-9657-51a5b62c3bd5" ] } ] }, Spoiler { "$type": "Game.GameData.CompanionGameData, Assembly-CSharp", "DebugName": "CompanionWaidwen", "ID": "3fd48add-b6b0-4a58-b1e9-12ecf7f84ebd", "Components": [ { "$type": "Game.GameData.CompanionComponent, Assembly-CSharp", "CompanionGuidString": "b1a7e811-0000-0000-0000-000000000000", "ScriptName": "c_eder", "Prefab": "assets/prefabs/characters/lax02_poe2_npcs/lax02_npc_02_wandering_soul_waidwen.prefab", "SpeakerID": "8f8fa428-8a08-436b-b5e9-f93381163eca", "Topics": [ { "TopicID": "2a640694-a441-456c-94f6-043d101e35da", "Axis": "Negative", "WeightID": "d8cd9f8e-5be6-4036-a8cb-48afbd7edc54", "Conditional": { "Operator": 0, "Components": [] } }, { "TopicID": "2f84723b-2330-4248-a199-cde68fe4a005", "Axis": "Negative", "WeightID": "d8cd9f8e-5be6-4036-a8cb-48afbd7edc54", "Conditional": { "Operator": 0, "Components": [] } }, { "TopicID": "60a2b7d7-e104-4f5a-aa7a-8d373451a528", "Axis": "Positive", "WeightID": "c131acce-6af4-4d78-b0e2-48b26e6631b1", "Conditional": { "Operator": 0, "Components": [] } }, { "TopicID": "9ef259f0-29c7-4862-a5ff-e148188e3f48", "Axis": "Positive", "WeightID": "d8cd9f8e-5be6-4036-a8cb-48afbd7edc54", "Conditional": { "Operator": 0, "Components": [] } }, { "TopicID": "e79eabe7-8d68-4cf4-9a07-3e84b154d6ec", "Axis": "Positive", "WeightID": "c131acce-6af4-4d78-b0e2-48b26e6631b1", "Conditional": { "Operator": 0, "Components": [] } }, { "TopicID": "841c7801-3f8a-4190-ba5d-abc5375f415e", "Axis": "Negative", "WeightID": "d8cd9f8e-5be6-4036-a8cb-48afbd7edc54", "Conditional": { "Operator": 0, "Components": [] } }, { "TopicID": "54839ad8-07dd-454a-9627-69e663201577", "Axis": "Positive", "WeightID": "d8cd9f8e-5be6-4036-a8cb-48afbd7edc54", "Conditional": { "Operator": 0, "Components": [] } }, { "TopicID": "f03d4876-6981-4b74-bf24-1041a5f3a101", "Axis": "Positive", "WeightID": "c131acce-6af4-4d78-b0e2-48b26e6631b1", "Conditional": { "Operator": 0, "Components": [] } } ], "TopicReactions": [ { "ChangeStrengthID": "54772c0d-cf3f-4589-8cab-9f3601d575c2", "Axis": "Positive", "Lines": [ { "String": 3 }, { "String": 67 }, { "String": 76 }, { "String": 81 }, { "String": 82 } ] }, { "ChangeStrengthID": "e19a6f92-2165-4e34-be10-c65e8de970eb", "Axis": "Positive", "Lines": [ { "String": 5 }, { "String": 69 }, { "String": 77 } ] }, { "ChangeStrengthID": "54772c0d-cf3f-4589-8cab-9f3601d575c2", "Axis": "Negative", "Lines": [ { "String": 70 }, { "String": 79 }, { "String": 1 }, { "String": 72 }, { "String": 73 } ] }, { "ChangeStrengthID": "e19a6f92-2165-4e34-be10-c65e8de970eb", "Axis": "Negative", "Lines": [ { "String": 71 }, { "String": 2 }, { "String": 74 }, { "String": 75 } ] } ], "PlayerRelationship": [ { "Threshold": "Neutral", "Conversation": { "GuidString": "00000000-0000-0000-0000-000000000000" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "Positive", "Conversation": { "GuidString": "311098db-e08c-4cd4-a611-b07c54f4159b" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "VeryPositive", "Conversation": { "GuidString": "311098db-e08c-4cd4-a611-b07c54f4159b" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "Negative", "Conversation": { "GuidString": "311098db-e08c-4cd4-a611-b07c54f4159b" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "VeryNegative", "Conversation": { "GuidString": "311098db-e08c-4cd4-a611-b07c54f4159b" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } } ], "CompanionRelationships": [ { "CompanionID": "5e73e8f1-9228-4271-92ec-6cc85d6fa3f3", "RelationshipThresholds": [ { "Threshold": "Neutral", "Conversation": { "GuidString": "00000000-0000-0000-0000-000000000000" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "Positive", "Conversation": { "GuidString": "00000000-0000-0000-0000-000000000000" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "VeryPositive", "Conversation": { "GuidString": "00000000-0000-0000-0000-000000000000" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "Negative", "Conversation": { "GuidString": "00000000-0000-0000-0000-000000000000" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "VeryNegative", "Conversation": { "GuidString": "00000000-0000-0000-0000-000000000000" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } } ] }, { "CompanionID": "66817b77-8b74-4ca5-a3f8-bf536d5db2b8", "RelationshipThresholds": [ { "Threshold": "Neutral", "Conversation": { "GuidString": "00000000-0000-0000-0000-000000000000" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "Positive", "Conversation": { "GuidString": "ed333d7a-dfde-4f8c-9f8c-a45cdbacbcfe" }, "Node": 16, "Conditionals": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsGlobalValue(String, Operator, Int32)", "Parameters": [ "n_xoti_relationship_eder_banter", "EqualTo", "1" ], "Flags": "", "UnrealCall": "", "FunctionHash": 901380568, "ParameterHash": -1060131068 }, "Not": false, "Operator": 0 }, { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsGlobalValue(String, Operator, Int32)", "Parameters": [ "b_Xoti_dead", "EqualTo", "1" ], "Flags": "", "UnrealCall": "", "FunctionHash": 901380568, "ParameterHash": -665091540 }, "Not": true, "Operator": 0 }, { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsCompanionActiveInPartyOrPresent(Guid)", "Parameters": [ "b1a7e800-0000-0000-0000-000000000000" ], "Flags": "", "UnrealCall": "", "FunctionHash": -419637131, "ParameterHash": 30861781 }, "Not": false, "Operator": 0 } ] } }, { "Threshold": "VeryPositive", "Conversation": { "GuidString": "00000000-0000-0000-0000-000000000000" }, "Node": 0, "Conditionals": { "Operator": 0, "Components": [] } }, { "Threshold": "Negative", "Conversation": { "GuidString": "ed333d7a-dfde-4f8c-9f8c-a45cdbacbcfe" }, "Node": 16, "Conditionals": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsGlobalValue(String, Operator, Int32)", "Parameters": [ "n_xoti_relationship_eder_banter", "EqualTo", "1" ], "Flags": "", "UnrealCall": "", "FunctionHash": 901380568, "ParameterHash": -1060131068 }, "Not": false, "Operator": 0 }, { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsGlobalValue(String, Operator, Int32)", "Parameters": [ "b_Xoti_dead", "EqualTo", "1" ], "Flags": "", "UnrealCall": "", "FunctionHash": 901380568, "ParameterHash": -665091540 }, "Not": true, "Operator": 0 }, { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsCompanionActiveInPartyOrPresent(Guid)", "Parameters": [ "b1a7e800-0000-0000-0000-000000000000" ], "Flags": "", "UnrealCall": "", "FunctionHash": -419637131, "ParameterHash": 30861781 }, "Not": false, "Operator": 0 } ] } }, { "Threshold": "VeryNegative", "Conversation": { "GuidString": "ed333d7a-dfde-4f8c-9f8c-a45cdbacbcfe" }, "Node": 16, "Conditionals": { "Operator": 0, "Components": [] } } ] } ], "ProgressionTablesIDs": [ "5dd582c1-044a-41d2-8f4e-bf1965f0d6ff", "3593fca2-5d9d-4e33-a76a-c50fb86b41d8", "85df7158-f55b-4324-8362-fd5010a21388" ], "IsSidekick": "true" } ] }, What am I doing wrong? Is there something missing? Can someone help me? ^^' Edited February 2, 2021 by Glub 1
Kvellen Posted June 18, 2022 Posted June 18, 2022 (edited) On 1/30/2021 at 5:46 PM, Glub said: Now I've reached the point in the mod where I'd like to try to make Waidwen a companion. Before I start, I'd like to know if it's even possible? I came across a post where someone explained that it was possible to create a new companion from an existing NPC but without any more details. I'll look a little on my side but if someone has info, I'll take it. Hey, hope you're doing well, and sorry for the very late reply! I've done a bit of looking into modding companions recently, and remembered your post asking for information on the subject, and thought I might share something that might be useful. For companion data, the GUID on the "CompanionGuidString" line refers to the ID of the actual in game object of the character. This is a different GUID to the ones found in "lax2_characters.gamedatabundle", and is pretty hard to track down. But opening up the game an using the "PrintInstance oei_hovered" console command while hovering your mouse over Waidwen should get you the right ID. If so then replacing the "b1a7e811-0000-0000-0000-000000000000" in your code with this ID, as well as in the script you're using to add him to the party, could possibly work? Maybe... I haven't actually tried it with an NPC. Edited June 18, 2022 by Kvellen
Glub Posted June 20, 2022 Author Posted June 20, 2022 @Kvellen Hey ! Thank you for your reply I'm not into PoE lately and not working on my mod since then, but when I feel like it again, I'll try what you suggested 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now