Jump to content

Noqn

Members
  • Posts

    495
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Noqn

  1. I don't remember whether I verified it in dnSpy, but I've always had the assumption that the last operator is ignored. I'm defaulting the last operators to 0 in Apotheosis, and that has never caused any unexpected behavior.
  2. I'm pretty much finished with AIDecisionTrees now! The expressions that are used for defining target prioritization use a different set of methods from the standard Scripts, though I've made sure to cover them all. There's no documentation on them, but the auto-completion feature should be of help enough One issue, as you can see in the videos, is that most of the trees have no DebugName assigned to them... I'm thinking of assigning DebugNames to the trees before exporting to `apotheosis_export` based on this order or priority: AiDecisionTrees whose CharacterClassID is set to a specific class will be named after that class. AiDecisionTrees which a CharacterProgressionTable points to will get that PT's name. If a CharacterProgressionTable contains all abilities of the AiDecisionTree, that table's name will be used. Next, the name of the CharacterProgressionTable with MOST matching abilities with the AiDecisionTree will be used. Lastly, the CharacterProgressionTable with ANY matching ability will be used. Afterwards with this implementation it looks like this, which from what I can tell is accurate enough: Sounds good? Idk if I should name the remaining trees something? I've also updated the export dialog so that it will let you know if you have partially exported data, thought it would be a good idea to clarify since it will show up for everyone after the update now that AI decision trees have to be exported.
  3. I found that 5/226 insight checks can also be solved with perception. Which sounds less than I would've thought, but I went to check some scripted interactions manually to confirm and I think it's accurate.
  4. In Carnage_SE_PrimaryAttackDamage you can see that they've intentionally set the scaling to WeaponDamage * 0.33 * (1 + (0.1 * PL)) From what I can tell from the code, the PrimarWeapon/SecondaryWeapon damage in the DynamicValue does not account for modifiers such as Weapon quality, it just makes a new damage roll based on the weapon's base min & max damage values. Which is consistent with what you've found
  5. Yeah, you're right. Looking at the decompiled code with dnSpy, the AttackBeam creates a timer based on "BeamDuration" without any external multipliers taken into account.
  6. New release with AppearancePiece popup and a few fixes and features! Be aware that AppearancePiece values are also used elsewhere for weapon scabbards, as well as character heads, hair and beards. So those will also be available in the popup when you click EquippableComponent -> AppearancePiece. @Hoo Let me know if you think the menu gets to crowded or filled with irrelevant stuff, I can break them up into separate categories if you'd like _____ 2023-07-17 Added AppearancePiece "prefab path" selector popup. AppearancePiece's ModelVisualDataPath and SummonPath's Filename children are now hidden. Clicking AppearancePiece/SummonPath will bring up the prefab selector instead. AppearancePiece and SummonPath can be used directly in string queries, e.g. #Equippable.AppearancePiece &= "great_sword_naga" Pasting objects no longer populates child rows that are supposed to be hidden. Added new context menu options when right-clicking an Expression row: Copy Expression text to clipboard Clear Expression 2023-07-07 Expression editor can now parse GameData DebugNames containing spaces if the user types them out "surrounded with quotation marks".
  7. Great suggestion, I'll add this as well! I think I'll also make it so that `AppearancePiece` can't be expanded, and when you click it you set `ModelVisualDataPath` directly instead.
  8. Those are similar to the instructions I used for No Narrator Updated, which works for voice files but not music files in deadfire
  9. I might have misunderstood your last post, did you want to import new item/spell icons with Apotheosis? If you add new icons by creating the atlas .png & .txt manually, Apotheosis will load those icons correctly and you'll be able to assign them to abilities/items. But there's no way (at the moment) to import new ones through Apotheosis, but it's a feature I've been thinking about adding: https://gitlab.com/noqn/apotheosis/-/issues/6 Try to find some Creative Commons-licensed icons sets, that would be fair game. You could also check these out this icon resource: https://www.nexusmods.com/pillarsofeternity2/mods/339 This too is something I've put on a to-do list https://gitlab.com/noqn/apotheosis/-/issues/5 I've got just a week left until vacation and work is chill atm so I might get started on these features
  10. You might need to edit the duration in the status effect (Spiritshift_StormBlight_SE_ChangeForm) instead.
  11. Not currently sadly I thought before about whether to load other icon sheets besides Item & SpellAbility, but there's a bit of manual work to extract the coordinates for each sheet and I figured it was low priority. Also some concerns about memory usage iirc. Which icon sets are you interested in?
  12. iirc there's no way to set the effect color with .gamedatabundles one solution might be to find some other appropriate effect to use instead? It should be easier to find other effects in Apotheosis now that there's a Popup menu for searching & selecting VisualEffects
  13. I'm viewing them with Unity Asset Studio (I think it's called) but I have no experience with modifying asset files whatsoever so I'm of no help there
  14. Sorry, I didn't mention that modscripthooks only trigger when you load a save or enter a new scene. This command (looking for the ID of the gsd_companion_pallegina_leaves script) A:\Games\Pillars of Eternity II Deadfire\PillarsOfEternityII_Data>findstr /s /i /m e62c7498-4ee1-446e-9008-c00532221daf level* gave me two matches in files `level4` and `level133` inside level4 I found an object `ScriptEvent #34347` which is basically equivalent to this script if { CallGlobalConditional(GE_Companion_Pallegina_Leave) and IsGlobalValue(b_Pallegina_Recruited, EqualTo, 1) and IsGlobalValue(b_Pallegina_Dead, EqualTo, 0) and IsGlobalValue(b_Pallegina_Quit_Party, EqualTo, 0) } then { CallGlobalScriptAfterTimePasses(gsd_companion_pallegina_leaves, 0, 1, 0, 0, False) } GE_Companion_Pallegina_Leave in vanilla is defined as IsGlobalValue(n_VTC_Faction_State, EqualTo, 2) or IsGlobalValue(n_Strongest_Rival_Faction, EqualTo, 2) you could change this conditional to fix the behavior of when her missive triggers
  15. If whatever used to trigger the conversation node has been cut, you could try creating a new ModScriptHook object to trigger it yourself under the right circumstances. Set its SucceedOnlyOnce to true and RunOnlyOnce to false, and with its Script set to trigger the conversation node. Something like this if { IsCompanionInRoster(Pallegina) and { IsGlobalValue(n_Allied_Faction, EqualTo, 1) or IsGlobalValue(n_Allied_Faction, EqualTo, 3) or IsGlobalValue(n_Allied_Faction, EqualTo, 4) } } then { StartConversation(Pallegina, companion_pallegina_hub, 224) } I don't remember whether the StartConversation script ignores the conditionals of the conversation node, so you might still have to edit those
  16. Agh I forgot to reply to this thread back when it was posted... I actually had the exact same experience with replacing music, I successfully replaced the main menu theme with Eora redux (though couldn't get it to loop), but any attempts at replacing any other tracks (in my case Eothas' piano theme with a slightly louder version) got me absolutely nowhere. My suspicion at the time was that you might also have to define the wwise states(?) to match Deadfire's stealth/conversation/normal states (which the main theme doesn't have configured iirc), but I had no motivation whatsoever to investigate that further. encampment...
  17. Ah right. I think you could try removing the ActivationPrerequisites conditional from Hylea's (and Galawain's?) challenges, which currently prevents them from being used with the Ultimate. (Press the pen icon, remove all text, then press accept.) This way you should be able to get all challenge effects. Thanks! I found a similar error in the convos character mapping list last update, I'll make sure to fix these instances too!
  18. 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.
  19. 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
  20. 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
  21. Oh, that's a very good practice. I think the file will load properly if the innermost braces are removed, would be nice if it could be included for next patch { "GameDataObjects": [] }
  22. 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
  23. 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
  24. The closest you could get is making ability with one statuseffect for each possible Attribute value (up to 35?) to make it "scale", then append it to all character/class progression tables.
×
×
  • Create New...