-
Posts
527 -
Joined
-
Last visited
-
Days Won
3
Content Type
Profiles
Forums
Blogs
Everything posted by Noqn
-
Ultimate has ActivateAllChallenges set to true, I would guess this 1) activates all other challenges or 2) overrides all relevant settings (including ObfscurateNumbers) to true. If it's the former, then setting ObfscurateNumbers in Wael challenge to false should prevent it from activating in the Ultimate. If it's the latter, then you'd have to set ActivateAllChallenges to false and set all the challenge-related properties to true manually instead.
-
Because string tables are separated from .gamedatabundle files, they are saved by clicking the button in the top-left corner of the window: (This also saves edits to convos, quests, etc.) (I'm not too happy about this design tbh (the separate save buttons), but I never got around working out what to do if let's say two gamedata tabs edit the same string table entry, or appends a new entry to the table. What should happen when the user undo/redo something in either tab?) There are three ways of making new GameDataObjects Go to a row in the list of GameData types (e.g. Abilities -> GenericAbility), right-click it. This lets you create a whole new object of that type, filled with default values. Go to a row in the list of GameData objects (e.g. Valorous_Echoes), right-click it and select "Duplicate". This will let you create a duplicate of that object. Go to a gamedata tab, then right-click on a row that points to another gamedata (such as GenericAbilityComponent -> Attack) and select "Assign Duplicate". This will allow you to create a duplicate of that object, and the row will now point to that duplicate. There are some more info iirc in the documentation https://gitlab.com/noqn/apotheosis/-/blob/main/Docs/Usage.md
-
Thank you, that is lovely feedback Right-click the AfflictionComponent's DisplayName value, then select "Assign Entry..." This brings up a menu where you can choose an existing StringTable entry, from here you can find the "Smart" entry: Yep, the way you've done it is the exact right way to do things
-
Yep, if you open Deadfire and go to Options -> Mod Manager you'll see all installed mods. I'm actually uncertain exactly how DurationOverride behaves Try setting the StatusEffect's Duration instead, this I know won't have any side effects. You can search these by navigating to Status Effects -> StatusEffect and using the search box. (Alternatively, you can go to the Ability's Attack row, rightclick the value and select "Open in New Tab". Then in the new Attack tab, go to the StatusEffects row and expand it, then for the child row(s) right-click the value and open those in a new tab as well.) In the StatusEffect tab you can find a Duration row which you can edit instead. Hope this works
-
First of all, there's now a gui mod editor for Deadfire so you don't have to edit the text files directly If you've made direct edits to the files in Pillars of Eternity II\PillarsOfEternityII_Data\exported\design\gamedata, I highly recommend you to revert those changes. Otherwise those changes could "infect" other mods you make or share with others. Anyhow, if you open Apotheosis, you'll find find Time_Parasite under Abilities -> GenericAbility. From the new tab you can change the AbilityLevel and UsageValue. Next, the progression table for cipher can be found under ProgressionTables -> ClassProgressionTable. Click the icon along the AbilityUnlocks row and you'll open the PT editor. Click Time Parasite icon and change the Prerequisites -> PowerLevelRequirement -> MinimumPowerLevel value from 8 to 7. Time Parasite will move up one row. Afterwards, right-click anywhere on the table and select "Apply". Be sure to click the save button in both PT_Cipher and Time_Parasite tabs That should be it
-
Download dnSpy: https://github.com/dnSpyEx/dnSpy which lets you decompile, edit and recompile .NET dlls Go to "...\PillarsOfEternityII_Data\Managed\" and make a backup of "Assmbly-CSharp.dll", then load it in dnSpy. You can now implement the changes you want, though it's probably gonna be a real pain to find what you want and rewrite the UI logic.
-
First update in a while, time to see if the auto-update feature works properly 2023-05-01 Added auto-completion functionality to expression editors! Searching conversation nodes will now also match Bank Node children. Conversation 'Character Mappings' are now scrollable and won't increase the window height. 'Vatnir' and 'Mirke' expression editor aliases now translates to the correct IDs. User scripts now include System.Collections.[Generic | Immutable] usings. One feature I'm very happy about is auto-completions when editing expressions, this will speed things up immensely
-
It works now, a thousand thanks!
-
WoTEP Mod Help
Noqn replied to Destroyner's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
You put an extra space in the type definition Replace this: "Game.GameData.StatusEffectGameData, Assembly-CSharp" with this: "Game.GameData.StatusEffectGameData, Assembly-CSharp" -
I've been unable to post anything in a specific thread. When I hit submit, I get forwarded to .../?failedReply=1
-
New release! I've implemented automatic updates! (You still have to install *this* version manually though) I've also added a popup selector for most of the *.prefab fields. You'll get to choose from among what's available in the corresponding "PillarsOfEternityII_Data/assetbundles/*.unity3d" files. This will make it a lot easier to find values for character and effect prefabs, among others. Also started exporting conversations.manifest and fixed some other stuff mentioned here: 2023-01-19 Auto Updates! When a new release is available, a dialog will give the user the opportunity to download it. Added a "prefab path" selector popup. conversations.manifest files will now be exported. Fixed an issue which caused GameDataObjects to be created with DebugName set to null. SpeakerComponent.ChatterFile will now correctly default to an empty ID string. Improved generation time of Conversation & Quest diagrams. StringTable queries now search GameData/Conversation/Quest tables asynchronously.
-
Thanks had a boatload of vacation days saved up! Oh wow thanks, I wasn't even aware of conversation manifests, I'll make sure they are generated. All you've written re: documentation is invaluable feedback, many thanks! I'm thinking about moving the documentation to the gitlab project's wiki page, then adding a "Help" or ? button to the application's header bar which will open that web page. Sounds good? Good point, how about displaying the mod's stringtable range in the Manifest-editing dialog? Thanks, I'm super happy how the error messages turned out I'll check ot the null debugname bug tho
-
Yeah pretty much. All StringTableEntry text are stored when the mods are loaded, so here I'm just enumerating through the collections and doing standard string comparisons. If its particularily fast, it's thanks to .NET string comparisons being well optimized mmm, it's a bit awkward how the StringTableEntries are stored. You basically got three levels of nested Dictionaries: First you got a Dictionary with string keys (defining the language) and nested Dictionary values. These nested Dictionaries* has either GameData categories (e.g. Abilities, Items) or a path (e.g. "conversations\00_prototype\00_cv_drummer") as keys, and again nested Dictionaries as values. Lastly, these Dictionaries have int keys (StringTableEntry IDs) and StringTableEntry values. (*The second layer is a actually a class that wraps dictionaries and exposes some helper methods. Maybe this could be replaced in favor of just using extension methods?)
-
Added a String Table Query to the sidebar! It will check for matching entries in the standard, Conversation and Quest StringTables: Clicking a row under GameData StringTables will open that StringTable in a new tab. Clicking a row under Conversation/Quest StringTables will open that convo/quest in a new tab. (You can then go to the StringTable view in that tab and find the specific entry from there.)
-
@RilleL oh that would be useful, I'll try to throw something together! Also, maybe this is not what you asked for, but for finding gamedata based on in-game text, check out Queries! https://gitlab.com/noqn/apotheosis/-/blob/main/Docs/Queries.md e.g. #GenericAbility.DisplayName &= "Minoletta" will match all abilities with "Minoletta" in their in-game name
-
@RilleL Thanks for reporting. Yeah, this is the GUI library's doing... The "number editor" popup belongs to a particularily ancient part of the library and has quirks. The widget itself is basically a glorified text entry. To explain the 000000's, It's default behavior is to fill itself with with trailing 0's decimals. I've however disabled the decimals when editing an integer, and made it so that the decimals in a float value will initially be trimmed away. But once you press the +/- buttons, the widget will again fill the entry with trailing 0's decimals. It also formats the string independently of .NET locale like you guessed. I've published a new release which *should* fix the parsing of the string that is returned from the popup on all locales. Can you verify that the latest version is working? ______ Also, Thanks @Kvellen for finding some quite severe regressions and bugs: 2022-12-13 - TalkNode Speaker and Listener options are now updated when Character Mappings are edited - Fix float values being parsed incorrectly in GameData editor - Stop incorrectly throwing MismatchFromNodeID exception when loading Quests - Fix recusion causing stack overflow when editing Quest string tables.