Noqn Posted November 18, 2022 Posted November 18, 2022 (edited) Free and Open Source (AGPL v3), source code on Gitlab: https://gitlab.com/noqn/apotheosis Windows Download: https://gitlab.com/noqn/apotheosis/-/jobs/artifacts/main/download?job=publish_win-x64 Linux Download: https://gitlab.com/noqn/apotheosis/-/jobs/artifacts/main/download?job=publish_linux-x64 Edited November 18, 2022 by Noqn 8
Kvellen Posted November 18, 2022 Posted November 18, 2022 (edited) Holy ship, this tool looks fantastic! Can't wait to get dug into it. Great work! Just noticed there's a conversation editor! Edited November 18, 2022 by Kvellen there's a conversation editor! 1
Noqn Posted November 22, 2022 Author Posted November 22, 2022 Some updates: Conversation & Quest node links can now be deleted, just click the red button: If there's only one remaining link to a node, a confirmation popup will be displayed. If the last link to a node is deleted, the node will still remain in the Nodes list but won't be accessible from the GUI. (I'm not sure that I want to implement some clean-up logic here, maybe at some point expose a list of all nodes and let the user manually delete unplaced nodes from there?) Regarding String Tables (including some stuff I've not documented yet because lazyness) If a mod has StringTable entries with indexes that exceed the highest vanilla indexes, then the lowest of those indexes would be used as the "mod start index". If the user tries to add a new entry and a start index hasn't been detected, a new value between 1'000'000 and 2'000'000'000 will be assigned instead. (Always ending with '000' to indicate in the stringtable files that it's the start index). After that, the new StringTable entries will be added starting from that index. High values and wide ranges are necessary to minimize the risk of mods generating overlapping keys, but won't look nice in the editor... I've now made it so that if a start index is detected, entries exceeding that number will be shortened down to "k+x" in the gamedata editor, where x is the offset from the start index. An example from Spoils of Caed Nua: 3
Noqn Posted November 26, 2022 Author Posted November 26, 2022 New releases are up! I've added a changelog to keep track of things: https://gitlab.com/noqn/apotheosis/-/blob/main/CHANGELOG.md In short: Fixes to Expression & Query parsing. Making edits to the Preview tab will automatically sticky it. (To prevent losing progress by navigating to another gamedata before saving.) Added a StringTable tab to Conversation pages. It's now possible to make edits from the String Table view, including adding/removing FemaleText values. (Just right-click the row you want to edit.) Full changes since my last post: 2022-11-23 Fixed regression causing the result of Expression Popups not to update Improvements to Expression & Query parsing: Can now parse negative numbers Now properly parses identifiers starting with numbers 2022-11-25 Add a StringTable tab to Conversation pages. Allow editing StringTable entries in the StringTableView Allow adding FemaleText values in the StringTableView In the Conversation & Quest pages, keep text synced between the Diagram, StringTableView, EndState tabs. 2022-11-26 Added a changelog file Allow removing FemaleText values in the StringTableView Automatically sticky the Preview tab on making an edit. 2
Kvellen Posted November 26, 2022 Posted November 26, 2022 (edited) This is such a fantastic tool, thanks a lot for putting it together! A bit of feedback after some time messing around in Apotheosis: I really love the way Scripting and Condition Calls are handled in this tool! Very clear, quick and easy to parse compared to doing it manually. And I've got to highlight how much I appreciate the ability to just write the instance_id/debug_name and have tool insert the correct GUID when it's saved. It's a very sleek feature that makes adding scripts and conditions so much quicker and more pleasant. Though I will mention it wasn't clear to me to that ModScriptHooks were located under "Global". It makes some sense now that I know where to find them, and I don't really know where else they'd fit beyond having their own section similar to "Speakers" with just the one option. Honestly fine where they are just figured I should mention it, as I was at first under the assumption there was no option to write them in the tool. The Conversations editor makes me so happy, it's probably what I'm the most excited for as far as making mods in this editor! It is so cool to be able to actually work with conversations in a similar manner to what Obsidian actually used for making the game. There is so much modding potential this tool will open up! The only potential for frustration I have encountered is when navigating with the scroll wheel I often cycle through the Listener/Speaker options when hoovering over them by accident. I think these are the only dropdowns this happens to, so this might just be bug? Otherwise the GUI you have made makes everything to do with creating and stringing together nodes feels very intuitive! On 11/22/2022 at 1:28 PM, Noqn said: Conversation & Quest node links can now be deleted, just click the red button: If there's only one remaining link to a node, a confirmation popup will be displayed. If the last link to a node is deleted, the node will still remain in the Nodes list but won't be accessible from the GUI. (I'm not sure that I want to implement some clean-up logic here, maybe at some point expose a list of all nodes and let the user manually delete unplaced nodes from there?) Yeah, I think a list of nodes is probably the way to go then. This is something you might already be aware of, but there is currently an issue when a child node's original link is removed, where they become uneditable and inaccessible without using an eternal editor: Once again thanks a lot, for putting this all together, I really think this is going to make modding Deadfire much more approachable to many more people! Edited November 26, 2022 by Kvellen 1
Hoo Posted November 26, 2022 Posted November 26, 2022 I found a conversation bug and I really want to fix this with your great mod, but it's quite hard for me what should be modified. A NPC, Li'l Woody, located in Dunnage and belongs to The Man of Chimes quest, does not disappear even after the quest is completed(with the safest way; Giacolo is rescued), and she kept doing same conversation like when I first meet her. I found the related conversation data from Conversations → 17_cv_lil_woody, however, I still don't know how to fix this... Could you give me some advice? Thanks in advance! 1
Noqn Posted November 26, 2022 Author Posted November 26, 2022 1 hour ago, Kvellen said: This is something you might already be aware of, but there is currently an issue when a child node's original link is removed, where they become uneditable and inaccessible without using an eternal editor: 1 hour ago, Kvellen said: The only potential for frustration I have encountered is when navigating with the scroll wheel I often cycle through the Listener/Speaker options when hoovering over them by accident. I think these are the only dropdowns this happens to, so this might just be bug? Thanks! I've pushed the fixes for these two, the windows job should be done and be available for download in ~10 minutes (see status here). I'll write a proper response later tonight!
Noqn Posted November 26, 2022 Author Posted November 26, 2022 5 hours ago, Kvellen said: Though I will mention it wasn't clear to me to that ModScriptHooks were located under "Global". It makes some sense now that I know where to find them, and I don't really know where else they'd fit beyond having their own section similar to "Speakers" with just the one option. Honestly fine where they are just figured I should mention it, as I was at first under the assumption there was no option to write them in the tool. This is really valuable feedback. If you couldn't find it at first after actively looking, it definitely should be moved to a unique category. ModScriptHooks is something I absolutely do *not* want people to miss. Simply naming it "ModScriptHooks" sounds good? 5 hours ago, Kvellen said: I really love the way Scripting and Condition Calls are handled in this tool! Very clear, quick and easy to parse compared to doing it manually. And I've got to highlight how much I appreciate the ability to just write the instance_id/debug_name and have tool insert the correct GUID when it's saved. It's a very sleek feature that makes adding scripts and conditions so much quicker and more pleasant. Thanks, that is one of the parts I've been especially happy with Another plus is that it'll be more convenient to share scripts on the forum! 5 hours ago, Kvellen said: The only potential for frustration I have encountered is when navigating with the scroll wheel I often cycle through the Listener/Speaker options when hoovering over them by accident. I think these are the only dropdowns this happens to, so this might just be bug? Yeeaah, this is a nasty default behavior by the Gtk GUI library, though at least it's been addressed by the devs in a future version... I had implemented a workaround for most of the dropdowns, but didn't cover the listener/speaker dropdowns, so thanks for reporting. Lastly, a thousand thanks for all the feedback! 3 hours ago, Hoo said: I found a conversation bug and I really want to fix this with your great mod, but it's quite hard for me what should be modified. A NPC, Li'l Woody, located in Dunnage and belongs to The Man of Chimes quest, does not disappear even after the quest is completed(with the safest way; Giacolo is rescued), and she kept doing same conversation like when I first meet her. I found the related conversation data from Conversations → 17_cv_lil_woody, however, I still don't know how to fix this... Could you give me some advice? Thanks in advance! This worked for me: Adding a ScriptNode child to the root node, moving it so that it is the the first child, and giving the following Conditional: IsQuestCompleted(companion_qst_pallegina) This way the conversation will never open if the quest has been completed 1 1
Noqn Posted November 26, 2022 Author Posted November 26, 2022 For clarity, here are the changes in the latest release: 2022-11-26 (2) Conversation/Quest Diagram: Now properly ensures there's one non-ghost link after a link has been deleted. Conversation Diagram: prevent Listener & Speaker ComboBoxes from capturing scroll events.
Hoo Posted November 27, 2022 Posted November 27, 2022 Thank you indeed, Noqn! I'd like to add one thing in addition to your advice; is it possible to remove the NPC after completing the related quest? I found her GUID from here and there are many scripts, but I cannot know which script fit for the purpose... Would you know which one should be used in this case? 1
Noqn Posted November 27, 2022 Author Posted November 27, 2022 Ah, yeah that does better address the root issue. Adding a ModScriptHook with SucceedOnlyOnce set to true and the following script: if { IsQuestCompleted(companion_qst_pallegina) and IsInActiveScene(8c9c23e0-6463-49aa-be47-0ceb2431a35d) } then { ActivateObject(8c9c23e0-6463-49aa-be47-0ceb2431a35d, False) } I guess with this solution the Conversation doesn't have to be edited, which is nice for compatability 1
Kvellen Posted November 27, 2022 Posted November 27, 2022 (edited) 16 hours ago, Noqn said: This is really valuable feedback. If you couldn't find it at first after actively looking, it definitely should be moved to a unique category. ModScriptHooks is something I absolutely do *not* want people to miss. Simply naming it "ModScriptHooks" sounds good? Yeah that'll make it a lot easier to find. Additionally, now that I think about it, having it being under its own section in the "Game Data" tab make it less likely to be confused with "Global Scripts". And if Modscripts default to being saved in "modscripthooks.gamedatabundle" that will be potentially clearer for those without access to the editor. Edited November 27, 2022 by Kvellen 1
Hoo Posted November 28, 2022 Posted November 28, 2022 I'm not sure this is a display bug, but it seems that the PowerLevelScaling Value is actual number that increases, instead of % rate. For example, as shown in the attached file, the UI shows "+20% Value per Power Level" since I set ValueAdjustment to 20, and the Base Value is 200, so the 200-pt All Damage Shield of Beetle Sheel should scale with +40-pt per Power Level. However, I've tested the change and I noticed that the Shield effect increased by 20 per PL, which is the actual number I've input into the ValueAdjustment. I'm not sure whether this is just an exceptional case; Does this happen only in case of Damage Shield effect?... 1 1
Noqn Posted November 29, 2022 Author Posted November 29, 2022 16 hours ago, Hoo said: I'm not sure this is a display bug, but it seems that the PowerLevelScaling Value is actual number that increases, instead of % rate. Thanks for noticing, this was my error and it should not display as percentage. It's now fixed in the latest version! On 11/27/2022 at 4:49 PM, Kvellen said: Yeah that'll make it a lot easier to find. Additionally, now that I think about it, having it being under its own section in the "Game Data" tab make it less likely to be confused with "Global Scripts". And if Modscripts default to being saved in "modscripthooks.gamedatabundle" that will be potentially clearer for those without access to the editor. Great, I've given it its own category now. 2022-11-29 Fix StatusEffectLevelScaling display text Move ModScriptHookGameData to its own category ("ModScriptHooks") 2
Noqn Posted December 4, 2022 Author Posted December 4, 2022 Fixed some bugs, thanks @Kvellen for reporting! 2022-01-03 TopicComponent now properly uses the CompanionTopics StringTable Fixed some properties not being initialized when adding a new Component: TalkingItemComponent.ItemGuidString CompanionComponent.CompanionGuidString 2
Noqn Posted December 4, 2022 Author Posted December 4, 2022 2022-01-04 Improvements to Conversation, Quest & GlobalScript references in the GameData editor: Will now displayed the name of referenced object rather than the ID. Clicking the row will now open a selector popup (previously these were not editable at all). Context menu includes a "Open in New Tab" option. Will no longer appear nested in a GuidString property* -> 1
Kvellen Posted December 8, 2022 Posted December 8, 2022 (edited) I imagine you are already aware of this, but I noticed that Apotheosis tends to just close without warning when attempting to open most conversations created when copy and pasting nodes was the only option. I think is to do with conversation authors not setting "PointsToGhost" to "true" when linking back to previous nodes. I myself made this mistake (see Adventurer conversation) when experimenting with .conversationbundles. Mostly because I didn't really know what "PointsToGhost" was for, and my few attempts to use it (likely with some other combinations of factors I can't remember) seemed to result a lot in becoming stuck in the dialogue window with no way of exiting. Spoiler "I wish I could talk to Durance again in Deadfire." The finger of the monkey's paw tightens closed. Terror creeps up your spine, as you realise too late you have once again selected the response that leads to an accursed node with no exit! Alt+F4 is now your only escape from conversation with Durance... (To this day I have no idea how and why this was happened!) I didn't want to raise this as an issue on GitLab since the error is with the linking of nodes in the .conversationbundle and not with anything Apotheosis is doing per se. On 12/4/2022 at 12:49 PM, Noqn said: Fixed some bugs, thanks @Kvellen for reporting! 2022-01-03 TopicComponent now properly uses the CompanionTopics StringTable Fixed some properties not being initialized when adding a new Component: TalkingItemComponent.ItemGuidString CompanionComponent.CompanionGuidString Happy to help! Somewhere in the future I'm planning to do some more investigating into custom companions made from Adventurers. Really glad to have Apotheosis now for it! Edited December 8, 2022 by Kvellen 1
Noqn Posted December 10, 2022 Author Posted December 10, 2022 (edited) On 12/8/2022 at 10:59 PM, Kvellen said: I didn't want to raise this as an issue on GitLab since the error is with the linking of nodes in the .conversationbundle and not with anything Apotheosis is doing per se. Edited December 10, 2022 by Noqn
Noqn Posted December 10, 2022 Author Posted December 10, 2022 (edited) Ah what the .. my posts are getting cut off after the first paragraph, I've lost everything I wrote Edited December 10, 2022 by Noqn 2
Noqn Posted December 10, 2022 Author Posted December 10, 2022 (edited) Ok, here we go again: From now on, if an exception is thrown when a conversation or quest is loaded, and the issue is easily fixed (in this case setting some links' PointsToGhost to true), the user will get the option to either close the tab or let Apotheosis apply the fix: If there's no straightforward fix or something fundamental is wrong (like a missing root node), the tab will close and a simple message will be displayed: Edited December 10, 2022 by Noqn
Noqn Posted December 10, 2022 Author Posted December 10, 2022 (edited) Oh nono, this is absolutely something Apotheosis should've accounted for. Don't hesitate to raise issues like this on GitLab Edited December 10, 2022 by Noqn
Noqn Posted December 10, 2022 Author Posted December 10, 2022 (edited) Additionally, the bundle selector will hide existing .conversationbundle files when selecting where to create a new Conversation. -> Also added some labels to popups in the bundle selector, and popups will now gray out the parent dialog, not just the main window: -> Edited December 10, 2022 by Noqn 2
Noqn Posted December 10, 2022 Author Posted December 10, 2022 (edited) 2022-12-10 Popups will now "gray out" their parent dialogs and not just the main window. Improvements to Bundle Path selector: Existing files are now hidden when selecting where to create a new Conversation or Quest. Add labels to New File/Folder popups indicating which you clicked, e.g. "New .conversationbundle" New File button in the headerbar is moved to the left of the New Folder button for consistency with icons in the rows. Clicking the empty area to the left of the New File icon in the rows will no longer trigger the New File popup. Exception handling when a Conversation or Quest couldn't be loaded: If it's a "fixable" issue, a confirmation dialog will be displayed with the option to either apply the fix or close the tab. If it's not "fixable", a message dialog with the exception message will be displayed and the tab will close. Excplicit messages have been created for most FlowChart errors. Edited December 10, 2022 by Noqn 2
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