Compare commits

...

21 commits
0.1.0 ... main

Author SHA1 Message Date
33f967309d fixed spellcast modifier for Theurgy Summoner 2026-07-11 20:38:21 +02:00
611dfeb925 updated Blood Hunter starting HP and Evasion 2026-07-10 19:10:53 +02:00
4d21972cd8 fixed blood hunter domains, added AoU Adversaries 2026-07-10 05:09:46 +02:00
8597c9061e resolved an issue with the starting HP for the summoner class 2026-07-10 02:28:41 +02:00
0fa8b36a8c add missing witch features, update blood hunter class and subclasses, resolved issue with favor cap for warlock 2026-07-10 02:02:24 +02:00
8941cbed05 update readme and version bump 2026-07-10 01:05:54 +02:00
117d8a6112 added summoner class 2026-07-10 01:04:22 +02:00
635c4ff8c3 added Summoner Class and Blood Domain updates 2026-07-10 01:04:22 +02:00
74720d5412 remove unused action field in module.json (foundry bug) 2026-04-20 16:48:50 +02:00
04447d3ab5 Update README.md 2026-04-15 22:51:11 +02:00
a5d61cf589 bumped version number 2026-04-15 22:49:55 +02:00
034d163235 added missing classes & subclasses 2026-04-15 22:48:56 +02:00
a796212445 replace PNG domain icons with SVG versions and update script references 2026-04-15 18:24:42 +02:00
a8b2db4ef7 added witch class, subclasses, and dread domain 2026-04-15 18:22:15 +02:00
56f2281835 Added domain registration and global features 2026-04-15 15:38:36 +02:00
e2dd2eff07 Merge remote-tracking branch 'origin/main' 2026-04-15 15:24:11 +02:00
6cc2da47e0 added Ancestries, Communities, Transformations 2026-04-15 15:19:41 +02:00
2e33e3e38e updated readme 2026-04-07 10:09:04 +02:00
442b36e806 update readme 2026-04-07 10:08:03 +02:00
3b5b103c06 added readme 2026-04-07 09:54:40 +02:00
1cbb7ac40a added readme 2026-04-07 09:53:57 +02:00
56 changed files with 784 additions and 33 deletions

57
README.md Executable file
View file

@ -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 Daggerhearts 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.

136
icons/svg/blood.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5 MiB

144
icons/svg/blood_domain.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5 MiB

138
icons/svg/dread.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5 MiB

146
icons/svg/dread_domain.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5 MiB

18
module.json Normal file → Executable file
View file

@ -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": "<p>Unofficial Daggerheart Playtest content for FoundryVTT</p>",
"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": {}
}
]
}
}
},
"esmodules": [
"scripts/voidborne.js"
]
}

0
packs/Voidborne/000004.log Normal file → Executable file
View file

0
packs/Voidborne/000005.ldb Normal file → Executable file
View file

0
packs/Voidborne/CURRENT Normal file → Executable file
View file

0
packs/Voidborne/LOCK Normal file → Executable file
View file

0
packs/Voidborne/LOG Normal file → Executable file
View file

0
packs/Voidborne/MANIFEST-000002 Normal file → Executable file
View file

View file

@ -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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

View file

@ -1 +1 @@
MANIFEST-000010
MANIFEST-000213

0
packs/voidborne-actors/LOCK Normal file → Executable file
View file

View file

@ -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

View file

@ -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)

Binary file not shown.

View file

@ -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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1 +1 @@
MANIFEST-000010
MANIFEST-000221

0
packs/voidborne-items/LOCK Normal file → Executable file
View file

View file

@ -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

View file

@ -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)

Binary file not shown.

View file

Binary file not shown.

View file

@ -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

Binary file not shown.

Binary file not shown.

BIN
packs/voidborne-macros/000020.ldb Executable file

Binary file not shown.

View file

View file

@ -1 +1 @@
MANIFEST-000002
MANIFEST-000201

0
packs/voidborne-macros/LOCK Normal file → Executable file
View file

View file

@ -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

View file

@ -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)

Binary file not shown.

14
scripts/features.js Executable file
View file

@ -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
}

95
scripts/voidborne.js Executable file
View file

@ -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);
}
}
}