Jump to content

Apotheosis - Mod Editor for Deadfire


Recommended Posts

23 minutes ago, Yhekal said:

Hi,

Any ideas why the mod won't start? The start screen is gray after I click "OK" and nothing happens.

Sorry, I messed up an update yesterday, you can download the latest version from gitlab which has fixed this issue: https://gitlab.com/noqn/apotheosis#download-run

You still might have to wait a minute or so for the export to finish depending on how fast your system is. For a future update I will for sure add a progress bar.

Link to comment
Share on other sites

Ok, weird. Open your file explorer and put %Appdata% into the address bar and hit enter. You should now get to something like `C:\Users\Yhekal\AppData\Roaming`

Is there a folder named "Apotheosis" in there? If so, delete it and run Apotheosis.exe again

2 hours ago, Yhekal said:

Does if matter from where on my computer I am running this app?

No, it shouldn't.

 

  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Noqn said:

Ok, weird. Open your file explorer and put %Appdata% into the address bar and hit enter. You should now get to something like `C:\Users\Yhekal\AppData\Roaming`

Is there a folder named "Apotheosis" in there? If so, delete it and run Apotheosis.exe again

 

That made the first window popup, thanks.

Sadly, it still does not work (second step - extracting icons). Window is grayed-out, gave up a after 20 min of waiting.

Link to comment
Share on other sites

On 2/20/2024 at 9:33 PM, Yhekal said:

Sadly, it still does not work (second step - extracting icons). Window is grayed-out, gave up a after 20 min of waiting.

One possibility is that one of the files in the export folder of your installation has been corrupted. The previous bug was caused by a single .stringtable file in the german localization (\exported\localized\de\text\conversations\05_neketaka_artisans_district\05_bs_construct.stringtable) being messed up across all installations by default. That specific file is now being skipped, but if another file has gotten corrupted Apotheosis will still stall when exporting.

I'm working on fixing the stalling and showing an error message to the player instead (as well as showing the update-available prompt earlier), but meanwhile you could try backing up your override folder and reinstalling deadfire.

Really sorry for all this :(

  • Like 2
Link to comment
Share on other sites

  • 4 months later...

I hope I'm not reviving too old a thread here, but I had a few questions about Apotheosis and don't really know where to ask!

So first of all: Where are the icons located for the backgrounds, dispositions and such? There's a path shown, and it seemed to be the one you need to make in your mod folder, but I'd like to take a look at the icons to make them fit in term of style/color and that's a bit hard to make otherwise.

Second: At some point I tried to create a custom background to do a few tests, and noticed I had no options to delete it. I tried what I could think of, Del key, right click, etc, but nothing seemed to work. Have I missed something or is there no way to delete something you added?

Finally, when I click the "Help" button, it crashes the app! I don't know if that's the intended use or not haha.

Anyway, hope everyone is having a nice day and that I'm not bothering anyone!

  • Like 2
Link to comment
Share on other sites

9 hours ago, BegrudgingDM said:

I hope I'm not reviving too old a thread here, but I had a few questions about Apotheosis and don't really know where to ask!

Hi, this is the right place to ask! Also good timing, I've been working on some updates these last weeks and can take a look at your issues as well 😀

9 hours ago, BegrudgingDM said:

So first of all: Where are the icons located for the backgrounds, dispositions and such? There's a path shown, and it seemed to be the one you need to make in your mod folder, but I'd like to take a look at the icons to make them fit in term of style/color and that's a bit hard to make otherwise.

Icons in general are baked into one of the .unity3d or .assets files in

...\PillarsOfEternityII_Data\*.assets
...\PillarsOfEternityII_Data\assetbundles\*.unity3d

I've been using this tool: https://github.com/Perfare/AssetStudio to view & extract them.

Background icons specifically can be found in:

...\PillarsOfEternityII_Data\resources.assets

image.thumb.png.b7e92e3e822a7d3c9eb7628d342ebf18.png

@Kvellen has had success replacing loading screen images, maybe a similar method could be used to override/add new background icons?

9 hours ago, BegrudgingDM said:

Second: At some point I tried to create a custom background to do a few tests, and noticed I had no options to delete it. I tried what I could think of, Del key, right click, etc, but nothing seemed to work. Have I missed something or is there no way to delete something you added?

Yeah this is functionality I really should add 😅 There's no way to do it currently, you'll have to open the mod's .gamedatabundle and remove the json manually. Sorry.

I also want to add some way to compare and revert individual changes made by a mod.

9 hours ago, BegrudgingDM said:

Finally, when I click the "Help" button, it crashes the app! I don't know if that's the intended use or not haha.

Ops, absolutely not intended. It's meant to open the wiki https://gitlab.com/noqn/apotheosis/-/wikis/home
May I ask what's your OS & web browser?
Anyhow, I'll change the method for opening the browser...

  • Like 2
Link to comment
Share on other sites

2 hours ago, Noqn said:

Icons in general are baked into one of the .unity3d or .assets files in

...\PillarsOfEternityII_Data\*.assets
...\PillarsOfEternityII_Data\assetbundles\*.unity3d

I've been using this tool: https://github.com/Perfare/AssetStudio to view & extract them.

Background icons specifically can be found in:

...\PillarsOfEternityII_Data\resources.assets

image.thumb.png.b7e92e3e822a7d3c9eb7628d342ebf18.png

@Kvellen has had success replacing loading screen images, maybe a similar method could be used to override/add new background icons?

I can't for the life of me find where it is located but I'm pretty sure Background and Culture icons are stored in a sprite atlas somewhere. I know I have stumbled upon it at various points whilst searching through assetbundles for something else. Frustratingly I never made a note of where!
The only other evidence I have for its existence is there being a version of it uploaded to the PoE2 wiki:
https://pillarsofeternity.fandom.com/wiki/Category:Pillars_of_Eternity_II:_Deadfire_images_-_Interface?file=Poe2_GameSystemIcons.png

If that is indeed the case I think that would make additions to it not possible with the override folder sadly 😕 

Edited by Kvellen
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

39 minutes ago, Kvellen said:

The only other evidence I have for its existence is there being a version of it uploaded to the PoE2 wiki:
https://pillarsofeternity.fandom.com/wiki/Category:Pillars_of_Eternity_II:_Deadfire_images_-_Interface?file=Poe2_GameSystemIcons.png

Oooh, found the atlas in

...\PillarsOfEternityII_Data\sharedassets2.assets

image.thumb.png.07b10bec3ce19c4d7617dd64d459ff7c.png

Names & Sprite coordinates in UIAtlas (PathID: 632)

image.thumb.png.8e54a6cde35c6cfd6c7e6fbbc869d7f4.png

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

@Kvellen Ok so weirdly they can be found both as loose icons and in a sprite sheet...

2 hours ago, Noqn said:

Background icons specifically can be found in:

...\PillarsOfEternityII_Data\resources.assets

image.thumb.png.b7e92e3e822a7d3c9eb7628d342ebf18.png

 

  • Like 1
  • Hmmm 1
Link to comment
Share on other sites

Thanks a lot for your answer!

Looks like adding Icons won't be as easy as I thought, but I could still try to do something eventually 😄

Quote

May I ask what's your OS & web browser?

Windows 11 Version 10.0.22631 Build 22631 and Firefox Version 10.0.22631 Build 22631, so nothing too out of the ordinary. Could be something to do with my own configuration honestly!

I'm excited to see what the next updates will be like, this tool is already incredible! Having tried to delve into modifying texts and dialogues in PoE 1, something like Apotheosis is a game changer! Modding PoE 2 looks like it will be much easier.

  • Like 2
Link to comment
Share on other sites

Quote

Looks like adding Icons won't be as easy as I thought, but I could still try to do something eventually 

Create the following folder structure ->override->your mod folder->atlases and the following 2 files inside:

  • SpellAbilityIcons.png
  • SpellAbilityIcons.txt

In the image file you can add image icons sized 42 x 42 and add 2 empty pixel between each icon.

In the text file add the following lines:

  • First_Icon = 0 0 42 42
  • Second_Icon = 44 0 42 42
  • Third_Icon = 0 44 42 42
  • etc

First_Icon is the name that you will give to an icon which will be used to be referenced in the editor, 0 0 are x y coordinates and 42 42 are icon size. So first icon is at the top left of the file, second under the first while third right of first.

If you setup everthing correctly, you should be able to view your icons when you open your mod folder inside the editor.

If something is unclear, I suggest you download a mod from nexus such as community patch and check how the folder for icons is set up.

 

Hope this helps.

 

Edit: You can also find most of the icons in the wikia.

Edited by Cmushi
  • Like 1
Link to comment
Share on other sites

4 hours ago, Noqn said:

@Kvellen Ok so weirdly they can be found both as loose icons and in a sprite sheet...

Weird...

I'm honestly not sure which the game uses. Could be both are used but in different contexts? Like the sprite tokens used to mark background specific dialogue.

Either way from what I can tell, creating a similar file path inside the override folder doesn't work for adding individual icons like it does for load screens and scripted/super interaction images. As for additions to the "GameSystemIcons" atlas, assuming I am understanding the code right "ItemIcons" & "SpellAbilityIcons" are the only atlases that Obsidian have set up to accept additions.
qRf2M6L.png

 

  • Like 1
Link to comment
Share on other sites

Thanks a lot for your explanations and your help Cmushi!

It makes things a lot clearer and I'm sure it'll be tremendously useful. As I said, I'm not fully delving into modding yet, but mostly poking at things to see what I'll be able to do once I finished the game.

Great idea to check how another mod did it too, very clever!

Thanks again!

Link to comment
Share on other sites

For some reason the following ability only activates on self. I tried different status effects but it still only affected self. Is this a bug or did I miss something?

image.thumb.png.023f9ec439d60c1f2025ca7485c88b53.png

    {
      "$type": "Game.GameData.AuraAbilityGameData, Assembly-CSharp",
      "DebugName": "Cmushi_Spellweaver_Selective_Spellweave",
      "ID": "a5e25a8f-2484-4d28-9e48-df4f898d14ff",
      "Components": [
        {
          "$type": "Game.GameData.GenericAbilityComponent, Assembly-CSharp",
          "KeywordsIDs": [],
          "DisplayName": 1565691082,
          "Description": 1565691091,
          "DescriptionTactical": -1,
          "UpgradeDescriptions": [],
          "UpgradedFromID": "00000000-0000-0000-0000-000000000000",
          "Vocalization": "AbilityCast",
          "Icon": "Cmushi_Spellweaver_Selective_Spellweave",
          "UsageType": "Spell",
          "UsageValue": 0,
          "AbilityClassID": "acfd1303-4699-4939-91eb-6ac46d4af0bd",
          "AbilityLevel": 1,
          "IsPassive": "false",
          "StackingRuleOverride": "Default",
          "TriggerOnHit": "false",
          "IsModal": "false",
          "ModalGroupID": "00000000-0000-0000-0000-000000000000",
          "IsCombatOnly": "true",
          "IsNonCombatOnly": "false",
          "HideFromUI": "false",
          "ShowStatusEffects": "false",
          "HideFromCombatLog": "false",
          "UniqueSet": "None",
          "NoiseLevelID": "15743f94-1026-40b0-8e13-a667b3f66f63",
          "DurationOverride": 0,
          "OverrideEmpower": "Default",
          "ClearsOnMovement": "false",
          "CannotActivateWhileInStealth": "false",
          "CannotActivateWhileInvisible": "false",
          "ActivationPrerequisites": {
            "Conditional": {
              "Operator": 0,
              "Components": []
            }
          },
          "ApplicationPrerequisites": {
            "Conditional": {
              "Operator": 0,
              "Components": []
            }
          },
          "DeactivationPrerequisites": {
            "Conditional": {
              "Operator": 0,
              "Components": []
            }
          },
          "PowerLevelScaling": {
            "ScalingType": "Default",
            "BaseLevel": 0,
            "LevelIncrement": 1,
            "MaxLevel": 0,
            "DamageAdjustment": 1,
            "DurationAdjustment": 1,
            "BounceCountAdjustment": 0,
            "ProjectileCountAdjustment": 0,
            "AccuracyAdjustment": 0,
            "PenetrationAdjustment": 0
          },
          "StatusEffectKeywordsIDs": [],
          "StatusEffectsIDs": [
            "c0cc58ee-8ef5-4bf7-9dce-f24d30c6c624"
          ],
          "RandomizeStatusEffect": "false",
          "VisualEffects": [],
          "SelfMaterialReplacementID": "00000000-0000-0000-0000-000000000000",
          "AttackID": "00000000-0000-0000-0000-000000000000",
          "AITargetingConditional": {
            "Conditional": {
              "Operator": 0,
              "Components": []
            },
            "Scripts": []
          },
          "AudioEventListID": "ca3fbf1d-69ac-4a94-b4fb-3ed1044fc6b5",
          "GrantedViaScript": "false"
        },
        {
          "$type": "Game.GameData.AuraAbilityComponent, Assembly-CSharp",
          "AuraRadius": -1,
          "ValidTargetTypes": "Ally",
          "AffectedTargetConditional": {
            "Conditional": {
              "Operator": 0,
              "Components": []
            }
          }
        },
        {
          "$type": "Game.GameData.ProgressionUnlockableComponent, Assembly-CSharp"
        }
      ]
    }

 

  • Hmmm 1
Link to comment
Share on other sites

18 hours ago, Cmushi said:

For some reason the following ability only activates on self. I tried different status effects but it still only affected self. Is this a bug or did I miss something?

Not sure, maybe AuraAbilityGameData behaves weirdly when defined as an activated ability?

Link to comment
Share on other sites

New update soon today! Will fix some stuff mentioned here, also added syntax highlighting and auto-completions to the Query text editor which should make it considerably more user friendly:

 

  • Like 3
Link to comment
Share on other sites

2024-07-29

  • Fixed DLC StringTables not being compiled to apotheosis_exported.
  • Corrupt conversation StringTables files are now skipped rather than causing CTDs when compiling vanilla data.
  • Users can now rename and delete GameDataObjects through the Game Data sidebar context menu.
  • Apotheosis will now check for updates before performing a first-time setup.
  • Removed DataEventScriptComponent as an optional component to Ability/Attack GameDataObject types.
  • Text in Quest pages now properly updates when the localization is changed.
  • Added syntax highlighting, auto-completions and multi-line editing to the Game Data Query sidebar!
  • Auto-completions are now automatically closed if...
    • the active text range has been split up in several syntax tokens (e.g. typing a comma after 'Fireball').
    • the user presses backspace while the cursor is at the start of the active text range.
  • Opening auto-completion while the cursor is in existing text (e.g. 'Fireball') will...
    • no longer select that text (the cursor will remain where it is).
    • no longer initially filter the list of options based on that text, instead the best match will be selected. (The list will be filtered once the user starts typing.)
  • Pressing Ctrl+Enter in an expression editor will have the same effect as pressing "Accept".
  • Pressing Ctrl+Space will close an auto-completion window.
  • Like 1
Link to comment
Share on other sites

On 7/20/2024 at 4:42 AM, BegrudgingDM said:

Finally, when I click the "Help" button, it crashes the app! I don't know if that's the intended use or not haha.

I forgot to add it to the changelog but this is also probably solved now 😅

Link to comment
Share on other sites

The autocomplete on gamedata query, looks fantastic!

There are 2 features of conversations I was wondering if you would consider adding support for in the Apotheosis conversation editor:

A way to edit the ExternalVO field within Apotheosis. This is used to specify a path to an existing audio file. The primary use for this is to play audio for a duplicate line that's in the current conversation, or to play audio from another conversation entirely. An example of this field in use can be found in "27_cv_court_of_woedica_player_interrupts" on nodes: "166", "182", "201", "207", and "208".

This a weird one, I noticed while trying to debug a conversations there are sometimes conditions on node links. I'm not really sure what the use case for this above just putting the conditional on the node that it is linked to. But there are only about 77 cases of this being used across the base game & DLCs conversations. An example of this is in "04_cv_queen_onezaka_ii_sabotage_quest.conversationbundle", where the the link from "181" to "182" has a conditional that the player's relationship with Maia be Negative or Very Negative.

Edited by Kvellen
  • Like 1
Link to comment
Share on other sites

Posted (edited)

@Kvellen ah turns out I had time to go ahead and implemented your suggestions 😄 Just got a couple questions

On 7/29/2024 at 10:42 PM, Kvellen said:

This a weird one, I noticed while trying to debug a conversations there are sometimes conditions on node links.

From what I can tell it feels like bad practice to put stuff in the Link Conditionals, for example having to enter duplicate conditionals if there are several links to the same node.
The places I checked out where the devs have used Link Conditionals, they could've just used the Node Conditionals to the same effect.

I'm considering hiding the Link Conditionals button, unless the Link already had existing Conditionals.
This way the user can check out and edit vanilla conditionals but otherwise be prevented from using Link Conditionals instead of Node Conditionals.

Do you think this would be a good idea or too restrictive?

An example:

image.png.fbf7d158ab99e4065a63c4b687d9145f.png

The icon is meant to look like this btw image.png.eb7e44fb797407fd0223cc33e94b9e86.png but doesn't look very clear in small buttons.

 

With this change I'm gonna add a tag to the the conditionals/script button tooltips for clarity, like [Conditionals] / [Link Conditionals] / [On Enter Scripts] / ...

image.png.0358a5743b40240e4db1984ee2213f62.png

This change might be enough that Link Conditionals don't have to be hidden at all? Though less clutter is always nice. I'm going to let you decide what I should go for, I'm uncertain myself 😅

Edited by Noqn
  • Like 1
Link to comment
Share on other sites

Thanks for the hard work, it's pretty impressive!

For question about Link Conditionals, I'd say if they're not useful, maybe they could be hidden by default but made visible with an option somewhere? Just an idea.

Also I tried to implement custom icons for Backgrounds and Dispositions, but couldn't find a way. It seems there's two kinds of icons though, as when I simply tried to put the path for a random buff icon into a BG icon, it didn't appear in the character creation menu, but did appear on the character sheet. I'm guessing the difference comes from loose icons vs sprite sheet, but I have no idea how to add the latter and link it correctly.

It's still probably possible, but it'd need me to go and delve in the actual code of the game and that's a bit out of my skills for now!

  • Like 2
Link to comment
Share on other sites

2024-07-30

  • Users can now edit Exteral VO values in Conversation Talk Nodes.
  • Users can now edit pre-existing vanilla Link Conditionals in Flow Charts.
  • Added appropriate tags to Conditionals and Scripts button tooltips in Flow Chart Nodes for clarity, e.g. [On Enter Scripts].
  • The Query sidebar's "Clear All Text" button now uses the correct icon.

Made a quick release after all 😄

39 minutes ago, BegrudgingDM said:

For question about Link Conditionals, I'd say if they're not useful, maybe they could be hidden by default but made visible with an option somewhere? Just an idea.

Ah yeah you're right, and it's about time I made a dedicated options page 😅

  • Like 2
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...