diff --git a/README.md b/README.md new file mode 100755 index 0000000..99d1702 --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# Daggerheart: Voidborne + +Unofficial Daggerheart Playtest content for FoundryVTT + +## Installation +Install the module via the manifest url `https://git.geeks.gay/cosmo/daggerheart-voidborne/raw/branch/main/module.json` + +## Progress + +Environments: +- [x] Tier 1 +- [x] Tier 2 +- [x] Tier 3 +- [x] Tier 4 + +Adversaries: +- [x] Tier 1 +- [x] Tier 2 +- [x] Tier 3 +- [x] Tier 4 + +- [x] Age of Umbra Adversaries (Umbra-Touched) + +Heritages: +- [x] Ancestries +- [x] Communities + +Special Features: +- [x] Transformations + +Classes: +- [x] Assassin +- [x] Blood Hunter (updated 2026-07-09) +- [x] Brawler +- [x] Warlock +- [x] Witch +- [x] Summoner + +Domains: +- [x] Dread +- [x] Blood (updated 2026-07-09) + +## Important Information + +### Automation +Not all Features and Actions can be automated currently, as a lot of work in the system backend is needed. Content will be updated as the system backend evolves. + +### Content Availability +Once content is no longer part of the Void Playtest Materials, it will be removed from this module - regardless of it being adopted into official content or not. + + +## Daggerheart System +Daggerheart is a trademark of Darrington Press LLC. All original content, mechanics, and intellectual property related to the Daggerheart roleplaying game are © Darrington Press LLC. + +This project is intended for personal or non-commercial use. All rights to Daggerheart’s original materials remain with their respective owners. + +This project is an unofficial fan creation and is not affiliated with or endorsed by Darrington Press or Critical Role. diff --git a/icons/svg/blood.svg b/icons/svg/blood.svg new file mode 100755 index 0000000..0317f19 --- /dev/null +++ b/icons/svg/blood.svg @@ -0,0 +1,136 @@ + + diff --git a/icons/svg/blood_domain.svg b/icons/svg/blood_domain.svg new file mode 100755 index 0000000..d319945 --- /dev/null +++ b/icons/svg/blood_domain.svg @@ -0,0 +1,144 @@ + + diff --git a/icons/svg/dread.svg b/icons/svg/dread.svg new file mode 100755 index 0000000..14f2e22 --- /dev/null +++ b/icons/svg/dread.svg @@ -0,0 +1,138 @@ + + diff --git a/icons/svg/dread_domain.svg b/icons/svg/dread_domain.svg new file mode 100755 index 0000000..35094fc --- /dev/null +++ b/icons/svg/dread_domain.svg @@ -0,0 +1,146 @@ + + diff --git a/module.json b/module.json old mode 100644 new mode 100755 index 555ea74..a1cfa70 --- a/module.json +++ b/module.json @@ -3,11 +3,12 @@ "title": "Daggerheart: Voidborne", "url": "https://git.geeks.gay/cosmo/daggerheart-voidborne", "manifest": "https://git.geeks.gay/cosmo/daggerheart-voidborne/raw/branch/main/module.json", - "download": "https://git.geeks.gay/cosmo/daggerheart-voidborne/releases/download/0.1.0/daggerheart-voidborne.zip", - "version": "0.1.0", + "download": "https://git.geeks.gay/cosmo/daggerheart-voidborne/releases/download/0.11.4/daggerheart-voidborne.zip", + "version": "0.11.4", "compatibility": { - "minimum": "14", - "verified": "14" + "minimum": "13", + "verified": "14", + "maximum": "14" }, "description": "

Unofficial Daggerheart Playtest content for FoundryVTT

", "authors": [ @@ -19,7 +20,6 @@ "flags": {} } ], - "url": "https://git.geeks.gay/cosmo/daggerheart-voidborne", "flags": { "canUpload": true }, @@ -61,7 +61,6 @@ "flags": {} } ], - "action": "manageModule", "relationships": { "systems": [ { @@ -70,5 +69,8 @@ "compatibility": {} } ] - } -} \ No newline at end of file + }, + "esmodules": [ + "scripts/voidborne.js" + ] +} diff --git a/packs/Voidborne/000004.log b/packs/Voidborne/000004.log old mode 100644 new mode 100755 diff --git a/packs/Voidborne/000005.ldb b/packs/Voidborne/000005.ldb old mode 100644 new mode 100755 diff --git a/packs/Voidborne/CURRENT b/packs/Voidborne/CURRENT old mode 100644 new mode 100755 diff --git a/packs/Voidborne/LOCK b/packs/Voidborne/LOCK old mode 100644 new mode 100755 diff --git a/packs/Voidborne/LOG b/packs/Voidborne/LOG old mode 100644 new mode 100755 diff --git a/packs/Voidborne/MANIFEST-000002 b/packs/Voidborne/MANIFEST-000002 old mode 100644 new mode 100755 diff --git a/packs/voidborne-actors/.fuse_hidden01261bf80046f3b5 b/packs/voidborne-actors/.fuse_hidden01261bf80046f3b5 new file mode 100644 index 0000000..e6fa266 --- /dev/null +++ b/packs/voidborne-actors/.fuse_hidden01261bf80046f3b5 @@ -0,0 +1,3 @@ +2026/07/09-23:40:00.307031 153bc51fe6c0 Recovering log #173 +2026/07/09-23:40:00.325445 153bc51fe6c0 Delete type=3 #171 +2026/07/09-23:40:00.325650 153bc51fe6c0 Delete type=0 #173 diff --git a/packs/voidborne-actors/.fuse_hidden01261bfc0046f3ae b/packs/voidborne-actors/.fuse_hidden01261bfc0046f3ae new file mode 100644 index 0000000..e69de29 diff --git a/packs/voidborne-actors/.fuse_hidden01261bfd0046f3af b/packs/voidborne-actors/.fuse_hidden01261bfd0046f3af new file mode 100644 index 0000000..5cc567b Binary files /dev/null and b/packs/voidborne-actors/.fuse_hidden01261bfd0046f3af differ diff --git a/packs/voidborne-actors/000005.ldb b/packs/voidborne-actors/000005.ldb deleted file mode 100644 index 763f298..0000000 Binary files a/packs/voidborne-actors/000005.ldb and /dev/null differ diff --git a/packs/voidborne-actors/000009.ldb b/packs/voidborne-actors/000009.ldb deleted file mode 100644 index c053ce3..0000000 Binary files a/packs/voidborne-actors/000009.ldb and /dev/null differ diff --git a/packs/voidborne-actors/000011.log b/packs/voidborne-actors/000011.log deleted file mode 100644 index 7ae0dda..0000000 Binary files a/packs/voidborne-actors/000011.log and /dev/null differ diff --git a/packs/voidborne-actors/000192.ldb b/packs/voidborne-actors/000192.ldb new file mode 100644 index 0000000..35101e2 Binary files /dev/null and b/packs/voidborne-actors/000192.ldb differ diff --git a/packs/voidborne-actors/000214.log b/packs/voidborne-actors/000214.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/voidborne-actors/CURRENT b/packs/voidborne-actors/CURRENT index 3051f81..51af895 100644 --- a/packs/voidborne-actors/CURRENT +++ b/packs/voidborne-actors/CURRENT @@ -1 +1 @@ -MANIFEST-000010 +MANIFEST-000213 diff --git a/packs/voidborne-actors/LOCK b/packs/voidborne-actors/LOCK old mode 100644 new mode 100755 diff --git a/packs/voidborne-actors/LOG b/packs/voidborne-actors/LOG index 4f365a5..17881c0 100644 --- a/packs/voidborne-actors/LOG +++ b/packs/voidborne-actors/LOG @@ -1,3 +1,3 @@ -2026/04/07-02:35:30.041633 146900200b38 Recovering log #8 -2026/04/07-02:35:30.055657 146900200b38 Delete type=3 #6 -2026/04/07-02:35:30.055869 146900200b38 Delete type=0 #8 +2026/07/10-21:11:17.654338 153bc49fd6c0 Recovering log #211 +2026/07/10-21:11:17.673200 153bc49fd6c0 Delete type=3 #209 +2026/07/10-21:11:17.673395 153bc49fd6c0 Delete type=0 #211 diff --git a/packs/voidborne-actors/LOG.old b/packs/voidborne-actors/LOG.old index 796496b..f3b0223 100644 --- a/packs/voidborne-actors/LOG.old +++ b/packs/voidborne-actors/LOG.old @@ -1,8 +1,8 @@ -2026/04/07-01:42:05.635827 146901206b38 Recovering log #4 -2026/04/07-01:42:05.649830 146901206b38 Delete type=3 #2 -2026/04/07-01:42:05.650037 146901206b38 Delete type=0 #4 -2026/04/07-02:34:54.254844 1466fed4ab38 Level-0 table #9: started -2026/04/07-02:34:54.269996 1466fed4ab38 Level-0 table #9: 219326 bytes OK -2026/04/07-02:34:54.276846 1466fed4ab38 Delete type=0 #7 -2026/04/07-02:34:54.277286 1466fed4ab38 Manual compaction at level-0 from '!actors!FmqtvDRydJIiUYSR' @ 72057594037927935 : 1 .. '!folders!wGAczMU7K2yV8sWc' @ 0 : 0; will stop at (end) -2026/04/07-02:34:54.277374 1466fed4ab38 Manual compaction at level-1 from '!actors!FmqtvDRydJIiUYSR' @ 72057594037927935 : 1 .. '!folders!wGAczMU7K2yV8sWc' @ 0 : 0; will stop at (end) +2026/07/10-20:53:15.322831 153bc59ff6c0 Recovering log #207 +2026/07/10-20:53:15.342061 153bc59ff6c0 Delete type=3 #205 +2026/07/10-20:53:15.342255 153bc59ff6c0 Delete type=0 #207 +2026/07/10-20:59:14.278643 153b777fe6c0 Level-0 table #212: started +2026/07/10-20:59:14.278854 153b777fe6c0 Level-0 table #212: 0 bytes OK +2026/07/10-20:59:14.287815 153b777fe6c0 Delete type=0 #210 +2026/07/10-20:59:14.288165 153b777fe6c0 Manual compaction at level-0 from '!actors!207urfCMyvYwCBTZ' @ 72057594037927935 : 1 .. '!folders!zrU38zHjY6cO0YP8' @ 0 : 0; will stop at (end) +2026/07/10-20:59:14.288263 153b777fe6c0 Manual compaction at level-1 from '!actors!207urfCMyvYwCBTZ' @ 72057594037927935 : 1 .. '!folders!zrU38zHjY6cO0YP8' @ 0 : 0; will stop at (end) diff --git a/packs/voidborne-actors/MANIFEST-000010 b/packs/voidborne-actors/MANIFEST-000010 deleted file mode 100644 index bd77af6..0000000 Binary files a/packs/voidborne-actors/MANIFEST-000010 and /dev/null differ diff --git a/packs/voidborne-actors/MANIFEST-000213 b/packs/voidborne-actors/MANIFEST-000213 new file mode 100644 index 0000000..fe551d3 Binary files /dev/null and b/packs/voidborne-actors/MANIFEST-000213 differ diff --git a/packs/voidborne-items/.fuse_hidden01261bed0046f3b6 b/packs/voidborne-items/.fuse_hidden01261bed0046f3b6 new file mode 100644 index 0000000..c4be7fd --- /dev/null +++ b/packs/voidborne-items/.fuse_hidden01261bed0046f3b6 @@ -0,0 +1,3 @@ +2026/07/09-23:40:00.255224 153bc59ff6c0 Recovering log #178 +2026/07/09-23:40:00.282674 153bc59ff6c0 Delete type=3 #176 +2026/07/09-23:40:00.282906 153bc59ff6c0 Delete type=0 #178 diff --git a/packs/voidborne-items/.fuse_hidden01261bf10046f3b1 b/packs/voidborne-items/.fuse_hidden01261bf10046f3b1 new file mode 100644 index 0000000..68fe14a Binary files /dev/null and b/packs/voidborne-items/.fuse_hidden01261bf10046f3b1 differ diff --git a/packs/voidborne-items/.fuse_hidden01261bf20046f3b2 b/packs/voidborne-items/.fuse_hidden01261bf20046f3b2 new file mode 100644 index 0000000..c2e6a01 Binary files /dev/null and b/packs/voidborne-items/.fuse_hidden01261bf20046f3b2 differ diff --git a/packs/voidborne-items/.fuse_hidden01261bf40046f3b0 b/packs/voidborne-items/.fuse_hidden01261bf40046f3b0 new file mode 100755 index 0000000..b1bbb7c Binary files /dev/null and b/packs/voidborne-items/.fuse_hidden01261bf40046f3b0 differ diff --git a/packs/voidborne-items/000009.ldb b/packs/voidborne-items/000009.ldb deleted file mode 100644 index eec56ae..0000000 Binary files a/packs/voidborne-items/000009.ldb and /dev/null differ diff --git a/packs/voidborne-items/000011.log b/packs/voidborne-items/000011.log deleted file mode 100644 index cb4bf1b..0000000 Binary files a/packs/voidborne-items/000011.log and /dev/null differ diff --git a/packs/voidborne-items/000200.ldb b/packs/voidborne-items/000200.ldb new file mode 100644 index 0000000..b6c8729 Binary files /dev/null and b/packs/voidborne-items/000200.ldb differ diff --git a/packs/voidborne-items/000222.log b/packs/voidborne-items/000222.log new file mode 100644 index 0000000..5753ab8 Binary files /dev/null and b/packs/voidborne-items/000222.log differ diff --git a/packs/voidborne-items/CURRENT b/packs/voidborne-items/CURRENT index 3051f81..2582555 100644 --- a/packs/voidborne-items/CURRENT +++ b/packs/voidborne-items/CURRENT @@ -1 +1 @@ -MANIFEST-000010 +MANIFEST-000221 diff --git a/packs/voidborne-items/LOCK b/packs/voidborne-items/LOCK old mode 100644 new mode 100755 diff --git a/packs/voidborne-items/LOG b/packs/voidborne-items/LOG index c467b54..2522d2e 100644 --- a/packs/voidborne-items/LOG +++ b/packs/voidborne-items/LOG @@ -1,3 +1,3 @@ -2026/04/07-02:35:30.022844 146901206b38 Recovering log #8 -2026/04/07-02:35:30.036790 146901206b38 Delete type=3 #6 -2026/04/07-02:35:30.037007 146901206b38 Delete type=0 #8 +2026/07/10-21:11:17.631042 153bc49fd6c0 Recovering log #219 +2026/07/10-21:11:17.649482 153bc49fd6c0 Delete type=3 #217 +2026/07/10-21:11:17.649674 153bc49fd6c0 Delete type=0 #219 diff --git a/packs/voidborne-items/LOG.old b/packs/voidborne-items/LOG.old index 02a1711..b6522a0 100644 --- a/packs/voidborne-items/LOG.old +++ b/packs/voidborne-items/LOG.old @@ -1,7 +1,7 @@ -2026/04/07-01:42:05.617824 146900a03b38 Recovering log #4 -2026/04/07-01:42:05.631822 146900a03b38 Delete type=3 #2 -2026/04/07-01:42:05.632058 146900a03b38 Delete type=0 #4 -2026/04/07-02:34:54.230519 1466fed4ab38 Level-0 table #9: started -2026/04/07-02:34:54.240473 1466fed4ab38 Level-0 table #9: 57996 bytes OK -2026/04/07-02:34:54.247260 1466fed4ab38 Delete type=0 #7 -2026/04/07-02:34:54.277224 1466fed4ab38 Manual compaction at level-0 from '!folders!T7RHxoElWRbPZP8S' @ 72057594037927935 : 1 .. '!items.effects!0FTZNZYDBE2REZRj.sj0wYqkaXT4IGhgN' @ 0 : 0; will stop at (end) +2026/07/10-20:53:15.298676 153bc59ff6c0 Recovering log #215 +2026/07/10-20:53:15.317681 153bc59ff6c0 Delete type=3 #213 +2026/07/10-20:53:15.317885 153bc59ff6c0 Delete type=0 #215 +2026/07/10-20:59:14.269181 153b777fe6c0 Level-0 table #220: started +2026/07/10-20:59:14.269438 153b777fe6c0 Level-0 table #220: 0 bytes OK +2026/07/10-20:59:14.278422 153b777fe6c0 Delete type=0 #218 +2026/07/10-20:59:14.288131 153b777fe6c0 Manual compaction at level-0 from '!folders!0WGVWescnZUp5YTq' @ 72057594037927935 : 1 .. '!items.effects!zQgAwGqG30iGTwUz.v6rwroHG9nfwPZYv' @ 0 : 0; will stop at (end) diff --git a/packs/voidborne-items/MANIFEST-000010 b/packs/voidborne-items/MANIFEST-000010 deleted file mode 100644 index 6f6f24a..0000000 Binary files a/packs/voidborne-items/MANIFEST-000010 and /dev/null differ diff --git a/packs/voidborne-items/MANIFEST-000221 b/packs/voidborne-items/MANIFEST-000221 new file mode 100644 index 0000000..0537af3 Binary files /dev/null and b/packs/voidborne-items/MANIFEST-000221 differ diff --git a/packs/voidborne-items/lost/000182.log b/packs/voidborne-items/lost/000182.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/voidborne-items/lost/MANIFEST-000180 b/packs/voidborne-items/lost/MANIFEST-000180 new file mode 100644 index 0000000..c2e6a01 Binary files /dev/null and b/packs/voidborne-items/lost/MANIFEST-000180 differ diff --git a/packs/voidborne-macros/.fuse_hidden01261c030046f3b7 b/packs/voidborne-macros/.fuse_hidden01261c030046f3b7 new file mode 100644 index 0000000..1aa104c --- /dev/null +++ b/packs/voidborne-macros/.fuse_hidden01261c030046f3b7 @@ -0,0 +1,3 @@ +2026/07/09-23:40:00.785100 153bc59ff6c0 Recovering log #165 +2026/07/09-23:40:00.812536 153bc59ff6c0 Delete type=3 #163 +2026/07/09-23:40:00.812746 153bc59ff6c0 Delete type=0 #165 diff --git a/packs/voidborne-macros/.fuse_hidden01261c070046f3b3 b/packs/voidborne-macros/.fuse_hidden01261c070046f3b3 new file mode 100644 index 0000000..e69de29 diff --git a/packs/voidborne-macros/.fuse_hidden01261c080046f3b4 b/packs/voidborne-macros/.fuse_hidden01261c080046f3b4 new file mode 100644 index 0000000..f641afe Binary files /dev/null and b/packs/voidborne-macros/.fuse_hidden01261c080046f3b4 differ diff --git a/packs/voidborne-macros/000003.log b/packs/voidborne-macros/000003.log deleted file mode 100644 index 426c11b..0000000 Binary files a/packs/voidborne-macros/000003.log and /dev/null differ diff --git a/packs/voidborne-macros/000020.ldb b/packs/voidborne-macros/000020.ldb new file mode 100755 index 0000000..4c6375b Binary files /dev/null and b/packs/voidborne-macros/000020.ldb differ diff --git a/packs/voidborne-macros/000202.log b/packs/voidborne-macros/000202.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/voidborne-macros/CURRENT b/packs/voidborne-macros/CURRENT index 1a84852..6d0c8e6 100644 --- a/packs/voidborne-macros/CURRENT +++ b/packs/voidborne-macros/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000201 diff --git a/packs/voidborne-macros/LOCK b/packs/voidborne-macros/LOCK old mode 100644 new mode 100755 diff --git a/packs/voidborne-macros/LOG b/packs/voidborne-macros/LOG index b8c22da..affec26 100644 --- a/packs/voidborne-macros/LOG +++ b/packs/voidborne-macros/LOG @@ -1 +1,3 @@ -2026/04/07-02:35:30.082311 146900a03b38 Delete type=3 #1 +2026/07/10-21:11:17.678086 153bc59ff6c0 Recovering log #199 +2026/07/10-21:11:17.696881 153bc59ff6c0 Delete type=3 #197 +2026/07/10-21:11:17.697152 153bc59ff6c0 Delete type=0 #199 diff --git a/packs/voidborne-macros/LOG.old b/packs/voidborne-macros/LOG.old new file mode 100644 index 0000000..c92df13 --- /dev/null +++ b/packs/voidborne-macros/LOG.old @@ -0,0 +1,8 @@ +2026/07/10-20:53:15.347511 153bc51fe6c0 Recovering log #195 +2026/07/10-20:53:15.366541 153bc51fe6c0 Delete type=3 #193 +2026/07/10-20:53:15.366732 153bc51fe6c0 Delete type=0 #195 +2026/07/10-20:59:14.288469 153b777fe6c0 Level-0 table #200: started +2026/07/10-20:59:14.288709 153b777fe6c0 Level-0 table #200: 0 bytes OK +2026/07/10-20:59:14.297653 153b777fe6c0 Delete type=0 #198 +2026/07/10-20:59:14.340131 153b777fe6c0 Manual compaction at level-0 from '!macros!GEnYqd0qGRjAjx2K' @ 72057594037927935 : 1 .. '!macros!vbdAkchJjUslprnx' @ 0 : 0; will stop at (end) +2026/07/10-20:59:14.340255 153b777fe6c0 Manual compaction at level-1 from '!macros!GEnYqd0qGRjAjx2K' @ 72057594037927935 : 1 .. '!macros!vbdAkchJjUslprnx' @ 0 : 0; will stop at (end) diff --git a/packs/voidborne-macros/MANIFEST-000002 b/packs/voidborne-macros/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/voidborne-macros/MANIFEST-000002 and /dev/null differ diff --git a/packs/voidborne-macros/MANIFEST-000201 b/packs/voidborne-macros/MANIFEST-000201 new file mode 100644 index 0000000..819c725 Binary files /dev/null and b/packs/voidborne-macros/MANIFEST-000201 differ diff --git a/scripts/features.js b/scripts/features.js new file mode 100755 index 0000000..9db81f8 --- /dev/null +++ b/scripts/features.js @@ -0,0 +1,14 @@ +/** + * Library of Void Features + * Export functions here to make them available globally under window.Void + */ + +export function ComboStrikes() { + console.log("Combo Strikes executed!"); + // Logic for Combo Strikes +} + +export function NewFunction() { + console.log("New Void Function executed!"); + // Logic for New Function +} diff --git a/scripts/voidborne.js b/scripts/voidborne.js new file mode 100755 index 0000000..eeb3cb2 --- /dev/null +++ b/scripts/voidborne.js @@ -0,0 +1,95 @@ +// Import generic features from the library file +import * as VoidFeatures from './features.js'; + +const MODULE_ID = 'daggerheart-voidborne'; + +console.log(`${MODULE_ID} | Module JS Loaded`); + +Hooks.once('init', () => { + console.log(`${MODULE_ID} | Initializing The Void (Unofficial)`); + + // Expose the Void features globally + // This allows Void.ComboStrikes(), Void.NewFunction(), etc. + window.Void = window.Void || {}; + + // Assign all exported functions from features.js to window.Void + Object.assign(window.Void, VoidFeatures); + + console.log(`${MODULE_ID} | Void features registered:`, Object.keys(VoidFeatures)); +}); + +Hooks.on('ready', async () => { + // Only run if the system is Daggerheart + if (game.system.id !== 'daggerheart') return; + + // Register Blood and Dread domains in system settings + await registerVoidDomains(); +}); + +async function registerVoidDomains() { + // Access Daggerheart Homebrew Settings + // The system stores homebrew config in a setting named 'Homebrew' (case sensitive check needed) + + // Check if the setting exists + let homebrewSettings; + try { + homebrewSettings = game.settings.get('daggerheart', 'Homebrew'); + } catch (e) { + try { + homebrewSettings = game.settings.get('daggerheart', 'homebrew'); + } catch (e2) { + console.warn(`${MODULE_ID} | Could not find Daggerheart 'Homebrew' or 'homebrew' setting.`); + return; + } + } + + if (!homebrewSettings) return; + + const domainData = { + 'blood': { + id: 'blood', + label: 'Blood', + src: `modules/${MODULE_ID}/icons/svg/blood.svg`, + description: 'The Blood domain.' + }, + 'dread': { + id: 'dread', + label: 'Dread', + src: `modules/${MODULE_ID}/icons/svg/dread.svg`, + description: 'The Dread domain.' + } + }; + + let updates = false; + // user domains are in homebrewSettings.domains + const currentDomains = { ...(homebrewSettings.domains || {}) }; + + for (const [key, data] of Object.entries(domainData)) { + if (!currentDomains[key]) { + console.log(`${MODULE_ID} | Registering missing domain: ${data.label}`); + currentDomains[key] = data; + updates = true; + } + } + + if (updates) { + // Update the setting + try { + // We need to keep the structure of homebrewSettings intact + const newSettings = { + ...homebrewSettings, + domains: currentDomains + }; + + // We need to know the Key used to set it. + let key = 'Homebrew'; + if (game.settings.settings.has('daggerheart.homebrew')) key = 'homebrew'; + + await game.settings.set('daggerheart', key, newSettings); + + ui.notifications.info(`${MODULE_ID} | Registered missing domains (Blood/Dread) in Homebrew Settings.`); + } catch (err) { + console.error(`${MODULE_ID} | Failed to update settings:`, err); + } + } +}