Jump to content

Noqn

Members
  • Posts

    527
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by Noqn

  1. Honestly, I hadn't considered this until you wrote it I imagine it was useful from a developer perspective, for stuff like syncing voice actor lines. It could maybe be useful for us if I make some templates based on these? Like if someone's adding a ChanterChant1 "branch" it'll always default to this: This is gold, I'm still laughing at this image
  2. I might've misunderstood the question but the SpeakerComponent.ChatterPrefix value will be used when determining the .wem path, so two speakers will have separate file paths for identical nodes even if they point to the same Chatter Aah wait, nvm I get it... Yeah as I've implemented it right now, it will select the .wem of the first matching speaker with that Chatter. I'll maybe have to think a bit more about that feature later...
  3. @Kvellen I thought I'd write down some discoveries about Chatters and show some progress: Nodes - Chatters only have 2 noteworthy Node types - ChatterNode and ChatterEventData. ChatterEventData each act like a "Root Node" (see the video below ) and will contain one or more ChatterNode children. Each ChatterEventData is connected to a specific event (such as casting a spell or being given a unique item by the Watcher) that could trigger a voice line. ChatterNode - defines a specific voice line that could be played. Each ChatterNode has a corresponding .wem audio file. ChatterNodes can't have children. ScriptNode - may be inserted between ChatterEventData and ChatterNode children to add common Conditionals to several children. StringTableFilenames - Defines which StringTables the Chatter should fetch entries from. Each Chatter will utilize its own unique table (should be the first in the StringTableFilenames list), but also has the option to fetch entries from other "generic" tables. Which table in StringTableFilenames a ChatterNode should fetch text from will be determined from the NodeID. Nodes with a NodeID starting with X0'000 will fetch the table with (zero-based) index X in StringTableFilenames. If we have for example "NodeID": 20017, then the from the tables below it should fetch "chatter/parents/chp_chanter_casts.stringtable" (the 3rd entry in the list) "StringTableFilenames": [ "chatter/00_companions/ch_companion_pallegina_voice_set.stringtable", "chatter/parents/chp_barbarian_shout.stringtable", "chatter/parents/chp_chanter_casts.stringtable", "chatter/parents/chp_cipher_casts.stringtable", "chatter/parents/chp_common.stringtable", "chatter/parents/chp_ko.stringtable", "chatter/parents/chp_paladin_commands.stringtable", "chatter/parents/chp_wizard_casts.stringtable" ], As you can see in the video below, I've removed the "edit text button" from Nodes with IDs greater than 10'000, so that the user is only able to edit the Chatter's own string table entries. AudioLookup - These can be auto-generated and refreshed when the Chatter is edited, how the strings are calculated is similar to .wem paths which is described below. Manifests - From what I looked at the decompiled code, Chatters will require a manifest file similar to Conversations, though the contents seem to be a bit different. It's something I'll have to look a bit more into. .wem paths - The path to the .wem file of a ChatterNode will be determined by The character's SpeakerGameData -> SpeakerComponent -> ChatterPrefix The EventType value of the ChatterNode's ChatterEventData parent. (The exact EventType -> string mappings are defined in the ChatterEventsGameData named "chatter" available under "Audio"). The ChatterNode ID <SpeakerComponent.ChatterPrefix>\ch_<SpeakerComponent.ChatterPrefix>_<EventType>_<NodeID>.wem eder\ch_eder_item_purchase_rare_0153.wem \PillarsOfEternityII_Data\StreamingAssets\Audio\Windows\Voices\English(US)\eder\ch_eder_item_purchase_rare_0153.wem I added a button for opening and highlighting a ChatterNode's .wem file in the users file manager. (Though not included in the preview video...)
  4. The Pet slot is unlocked with a specific ability (Unlock_Pet_Slot), iirc a script in one of the the prologue conversations give this ability to Eder. There's actually an existing mod that does this more or less: https://www.nexusmods.com/pillarsofeternity2/mods/400 (though I think it unlocks the pet slots without taking Can I Pet Him Too into account) I checked and it does it by creating a BaseProgressionTableAppendGameData object that effectively adds the Unlock_Pet_Slot ability to all party members' Ability Trees (though hidden).
  5. Oh and I second Kvellen, really good mod concept
  6. Each ModScriptHook will automatically trigger every time the player enters a new scene or loads a save. You can add conditionals to the hook, and set whether it should only trigger a single time, etc: https://eternity.obsidian.net/game-data-formats/components#modscripthookcomponent In Apotheosis it can be found under Game Data -> ModScriptHooks -> ModScriptHook
  7. https://www.nexusmods.com/pillarsofeternity2/mods/804 This should fix the bug described here: https://gamefaqs.gamespot.com/pc/227477-pillars-of-eternity-ii-deadfire/faqs/76599/bugs-and-oddities As I've understood it, this has been a pain point ever since patch 5.0 for many Credit to @ShadyDax for nudging me to check this bug out Note that this does not fix potions added by mods (I'm gonna have to patch Potion of Enlightenment later ) Going to sleep now
  8. Btw @Kvellen I'm still working on the chatterbundles, just letting you know I've know abandoned that . I noticed a lot of code related to the flowchart bundles could be refactored so I'm taking the time to get that done, while I've been working some other stuff in parallel that turned up
  9. IIRC I added two versions of the mod 1) Tuotilo is untouched, completely identical to vanilla. 2) Tuotilo gets an initial nerf to Acc/Pen, but once it's upgraded to Legendary it will have the same values as vanilla, and if upgraded to Mythical will be better than vanilla.
  10. Hi, I think this is actually a very similar issue as the one @Adonis Jorge Silva Santos had (which I've been planning on working on soon). Basically the shield has to be upgraded from EquippableGameData -> WeaponGameData, and then have an WeaponComponent added to it, but Apotheosis does not support this yet.
  11. Sorry about this, I think it happens any gamedata or (most likely) localization files are corrupt. I'll try to take a look at it during the weekend to make Apotheosis produce an error message instead of freezing, once and for all If you want Apotheosis to start working meanwhile, my only suggestion is to reinstall/repair your Deadfire installation. Again, sorry for the issues : ( Sadly @brokensave seems to have deleted their account but I've improved the behavior of the export setup dialog now 2025-04-10 Improved initial setup dialog behavior when extracting icons and loose data files into apotheosis_exported: Export progress is now visualised by progress bars. Apotheosis no longer freezes indefinitely if an error occurred during exporting, instead a message box will pop up. I put some extra work into making sure progress is displayed to the user, so it doesn't just feel like the program has frozen:
  12. On another note, I've completed Avowed now so I'll have a lot more time to spend on Apotheosis
  13. Hi, sorry for the late reply. Short version: Apotheosis does not support this yet. You have to change the GameData type of the ability to the appropriate type that can hold one of those components. I'll start working on adding support for that after I'm done with the export freeze and Chatters.
  14. Sent you a PM extract the 7z file so that the apotheosis_exported folder is placed in your PillarsOfEternityII_Data folder, like this: ...\Pillars of Eternity II Deadfire\PillarsOfEternityII_Data\apotheosis_exported\...
  15. Ah, sorry about that... I'll add way for users to change the path to the Deadfire exe at that point To solve this for now (presuming you are on windows) in the file explorer enter %APPDATA%, then open the "Apotheosis" folder, then delete "apotheosis.json" You should be able to enter a new path after that
  16. Sorry about this, I think it happens any gamedata or (most likely) localization files are corrupt. I'll try to take a look at it during the weekend to make Apotheosis produce an error message instead of freezing, once and for all If you want Apotheosis to start working meanwhile, my only suggestion is to reinstall/repair your Deadfire installation. Again, sorry for the issues : (
  17. I'm always happy to get new feature requests Just from a first quick look, I think a lot can luckily be reused from the Conversation flowchart models (even moreso than Quests/AI Trees) Oh, and if I implement Chatters, the only remaining stuff from the design folders will be .aibehaviorbundle files
  18. This is so cool, I'm ridiculously excited that someone got to utilize this feature Thanks for posting the script too, awesome to see what you've written Feel free to give feedback if you think any parts were tricky to use! (Whether editing process, VS Code integration or the API itself.)
  19. Yep! If you go to the StatusEffect you can edit the OverrideDescriptionString text by pressing the pen icon:
  20. Ah... Shame it didn't work out of the box... I'll see if I can find a way to debug the mac build somehow and figure out what's wrong. Sorry for the false hope
×
×
  • Create New...