This package contains art, text, or software code produced using generative AI.
π¨ Daggerheart: Art Mapper
Bring your own artwork to the Daggerheart system. Drop image files into the module's folders, click one button, and the module matches them to compendium entries by name β adversaries, environments, classes, subclasses, ancestries, communities, domain cards, druid beastforms, and compendiums from any other module you choose.
The module ships no artwork. It is a mapper, not an art pack. The folders arrive empty and you fill them with the images you own or have made.

β¨ Features
- Compendium Art Mapping
Scans your image folders and applies the art to the matching compendium entries. Matching is by document name, so there is no ID list to maintain. - Beastform Art
Gives druid wild shapes a gallery to choose from at transformation time. Works for players even though they cannot browse the server's filesystem, and it never modifies the Daggerheart system compendium. - Actor Image Sync
Compendium art does not reach items already sitting on an actor. This scans world actors and updates only those items whose image is still the system default. - Custom Compendiums
Extends everything above to Actor or Item compendiums shipped by other modules β homebrew adversary packs, extra domain cards, and so on. - Native Foundry integration
Registers through Foundry's own Compendium Art system, so the core Compendium Art screen controls it: per-category toggles and priority against other art modules.
π Requirements
| Foundry VTT | v14 |
| Daggerheart system | 2.2.6 or newer |
π Quick Start
- Enable the module. On first load it creates the folder structure and asks you to reload.
- Put your images into the folders (see below). Filenames must start with the entry's name.
- Open Game Settings β Configure Settings β Daggerheart: Art Mapper and click Regenerate Art Mappings.
- Reload when prompted. Your art is now on the compendium entries.
Repeat steps 2β4 whenever you add or rename images.
ποΈ How to Organize Your Assets
1. Put images in the matching folder. See the structure below.
2. Name your images after the entry. The filename must start with the document's name. All of these match an adversary called Dread Knight:
dread-knight.webp dread_knight.webp Dread Knight.webp
dread-knight-1.webp Dread-Knight2.webp dread knight 03.webp
Matching is lenient β spaces, hyphens and underscores all work, and capitalisation is ignored. The bundled art follows one convention, and copying it is the safest choice:
Dread-Knight_1.webp β hyphens between words, "_" before the number
β οΈ Why the separator before the number matters. "Merchant" and "Merchant Baron" are both adversaries, and so are "Tangle Bramble" and "Tangle Bramble Swarm". When one entry's name starts another's, a number placed straight after the name makes the shorter entry's wildcard swallow the longer entry's images β
Merchant*also matchesMerchant-Baron1.webp. Keeping the number on a separator that never appears between words fixes it:Merchant_1.webp Merchant_2.webp β "Merchant_*" stops here Merchant-Baron_1.webp β never reached by "Merchant_*"Name a prefix pair so it shares a plain prefix and the module refuses to guess: the shorter entry drops to a single fixed image, and a warning naming both entries appears in the console (F12). Only prefix pairs can actually break, but using
_everywhere means never having to check which entry names are prefixes of which.
3. Supported formats. Every image format Foundry supports β PNG, JPG, WebP, and so on.
4. Multiple images per entry. In token/ folders, add more than one file for the same entry (dread-knight_1.webp, dread-knight_2.webp) and the module builds a wildcard path with Foundry's native Randomize Wildcard Images flag on that entry's prototype token. This is Foundry's own feature, not custom logic: each time you drop the actor on a scene, Foundry picks one of the matching images for that token.

Keep capitalisation consistent inside one entry's set.
Zumbi_1.pngandzumbi_2.pngare matched to the same entry, but Foundry's server resolves the wildcard case-sensitively, so no single pattern covers both. The module falls back to one fixed image and says so in the console. Pick one casing per entry and stick to it.
5. Regenerate. Click Regenerate Art Mappings to apply changes.
π Your files are safe. Everything inside
storage/β your images and the module's generated files β is preserved across module updates. The module never deletes or rewrites images you added.
π Folder Structure
storage/
βββ assets/
β βββ adversary/
β β βββ portrait/ β daggerheart.adversaries (actor portraits)
β β βββ token/ β daggerheart.adversaries (token images)
β βββ ancestry/ β daggerheart.ancestries (item art)
β βββ class/ β daggerheart.classes (item art)
β βββ community/ β daggerheart.communities (item art)
β βββ domain-card/ β daggerheart.domains (item art)
β βββ environment/
β β βββ portrait/ β daggerheart.environments (actor portraits)
β β βββ token/ β daggerheart.environments (token images)
β βββ subclass/ β daggerheart.subclasses (item art)
β βββ druid-transformation/ β beastform galleries, by tier
β βββ tier1/
β β βββ agile-scout/ βββ tier3/
β β βββ aquatic-scout/ β βββ aquatic-predator/
β β βββ household-friend/ β βββ great-predator/
β β βββ nimble-grazer/ β βββ great-winged-beast/
β β βββ pack-predator/ β βββ legendary-beast/
β β βββ stalking-arachnid/ β βββ legendary-hybrid/
β βββ tier2/ β βββ mighty-lizard/
β β βββ armored-sentry/ βββ tier4/
β β βββ mighty-strider/ βββ epic-aquatic-beast/
β β βββ pouncing-predator/ βββ massive-behemoth/
β β βββ powerful-beast/ βββ mythic-aerial-hunter/
β β βββ striking-serpent/ βββ mythic-beast/
β β βββ winged-beast/ βββ mythic-hybrid/
β β βββ terrible-lizard/
βββ custom/ β folders for compendiums from other modules
Every folder is kebab-case. Beastform folders are the form's name lowercased with spaces turned into hyphens β "Agile Scout" β agile-scout, "Great Winged Beast" β great-winged-beast.
πΊ Beastform Art
π What it does
Each beastform gets its own folder. Put any number of images in it, and when a druid transforms into that form the module shows Daggerheart's image picker filled with your gallery, letting the player choose which one their token becomes.

π οΈ How to use it
- Drop images into the folder for each form β e.g.
druid-transformation/tier1/agile-scout/. - As GM, click Regenerate Art Mappings.
- Done. Players pick from the gallery on their next transformation; no reload needed on their side beyond the usual one.
π§© Notable behaviour
- Empty folders are left alone. A form with no images keeps Daggerheart's own artwork and transforms exactly as it does without this module. You can fill in as few or as many forms as you like.
- Players do not need extra permissions. Listing server files requires the Browse File Explorer permission, which players do not have by default. The GM does the scanning once and the result is published as a small file every client can simply read, so nothing is asked of players.
- The system compendium is never modified. The gallery is supplied at transformation time. If you uninstall this module, every beastform reverts to its stock artwork with nothing left behind and no broken image paths β in this world or any other world on your server.
- Evolved and hybrid forms are supported exactly like the normal ones, each with its own folder.
π¦ Custom Compendiums (Other Modules)
π What it does
The standard folders cover the Daggerheart system's own compendiums. Custom Compendiums extends the same "drop an image, the name matches, the art is applied" workflow to Actor or Item compendiums from any other active module.
π οΈ How to use it
- Open Manage Custom Compendiums in the module settings.
- Every active Actor or Item compendium not already built in is listed, unchecked.
- Check the ones you want and click Save. The subfolders are created under
storage/custom/, and the dialog shows the exact folder name.
The folder name is generated by the module and cannot be renamed. This keeps names short and guarantees two compendiums never point at the same folder by mistake.
- Add images, following the same naming rule as everywhere else.
- Click Regenerate Art Mappings.
π Folder shape
- Actor compendiums get
portrait/andtoken/subfolders, like Adversaries and Environments. - Item compendiums get one flat folder. This works even when a pack mixes several item subtypes β matching is by document name, not by subtype, so nothing extra needs configuring.
ποΈ Removing a compendium
Unchecking a compendium only stops the module from scanning it. It never deletes the folder or your images. If the source module is later disabled, its entry stays listed as Unavailable rather than vanishing, so you keep the configuration and can remove it deliberately.
π Actor Image Sync
π What it does
Compendium art applies to compendium entries. Items already on an actor keep the image they had when they were added. Sync Actor Images closes that gap: it scans every world actor and updates only the img field of eligible embedded items. No other field is ever touched.
π‘οΈ What it protects
Only images that are still the system default are replaced. Anything you or a player set deliberately is left alone. Running it repeatedly is safe β once everything is current, nothing changes.
π Covered item types
Classes, Subclasses, Ancestries, Communities and Domain Cards out of the box, plus any item type found in a custom Item compendium you added. Items with no compendium counterpart are untouched.
βΆοΈ Running it
Click Sync Now in the module settings. GM only. Generate the art mappings first if you have just added images.
βοΈ Settings Reference
Found under Game Settings β Configure Settings β Daggerheart: Art Mapper.
| Setting | What it does |
|---|---|
| Open Instructions | In-app version of this guide, with the folder list. |
| Manage Custom Compendiums | Pick compendiums from other modules to include. |
| Regenerate Art Mappings | Rescans every folder and rebuilds the mapping. Run after adding images. |
| Sync Now | Applies module art to items already on world actors. |
| Include Adversaries | When off, adversary portraits and tokens are skipped on the next regeneration. |
| Include Environments | When off, environment portraits and tokens are skipped on the next regeneration. |
The two Include toggles take effect the next time you regenerate β they do not retroactively change an existing mapping.
ποΈ Compendium Art Priority
This module registers through Foundry's native compendium art system, so it appears on the core Compendium Art screen (Configure Settings β Core, palette icon) alongside any other art module you have installed. There you can:
- toggle Portraits, Tokens and Items independently for each source;
- reorder sources, deciding who wins when two modules provide art for the same entry.
The module only appears on that screen once a mapping has been generated.
π» Console / Macro Commands
Run from a script macro or the browser console (F12 β Console). Also reachable as game.modules.get("dh-assets").api.
// Apply module art to items on world actors. GM only.
// Returns { actorsAffected, itemsUpdated }.
await dhAssets.syncActorImages();
// Rescan the beastform folders and republish the galleries. GM only.
await dhAssets.generateBeastformArt();
// Re-read the published galleries on this client, without reloading.
await dhAssets.loadBeastformArt();
// Inspect what this client currently has: Map of "tier1/agile-scout" β [file paths].
dhAssets.getBeastformArt();
β Troubleshooting
My art did not appear.
Click Regenerate Art Mappings and reload. If a specific entry is missing, check that the filename starts with that entry's exact name.
One entry always shows the same token instead of a random one.
Open the console (F12) β the warning says which of the two causes applies. Either its name starts another entry's name and the files share a plain prefix, or the files for that entry disagree on capitalisation. Both are covered under How to Organize Your Assets, step 2.
A druid transformation shows no gallery.
That form's folder is empty, or the GM has not regenerated since the images were added. Ask the GM to click Regenerate Art Mappings; players can then run dhAssets.loadBeastformArt() to pick it up without reloading.
Art from another module is winning over mine (or vice versa).
Adjust the order on the core Compendium Art screen β see Compendium Art Priority.
π§° My Daggerheart Modules
| Module | Description |
|---|---|
| π Adversary Manager | Scale adversaries instantly and build balanced encounters. |
| πΌοΈ Art Mapper | Automatically assigns artwork to system compendiums, actors, tokens, and custom module content β keeping your visuals organized and up to date. |
| π Colossus | Manage massive multi-part boss encounters with independent HP per part and a single shared stress pool. |
| π¦ Containers | Group inventory items into collapsible containers β pouches, chests, backpacks β to declutter character sheets. |
| π₯ Critical | Animated criticals. |
| π Custom Stat Tracker | Add custom trackers to actors. |
| β οΈ Death Moves | Enhances the Death Move moment with a dramatic interface and full automation. |
| π Distances | Visualizes combat ranges with customizable rings and hover calculations. |
| π¦ Extra Content | Homebrew content pack. |
| π± Fear Tracker | Adds an animated slider bar with configurable fear tokens to the UI. |
| π§ Horde | Explode single horde tokens into dozens of individual tokens and manage their movement and stats automatically. |
| π Mystery Box | Introduces mystery box mechanics for random loot and surprises. |
| β‘ Quick Actions | Quick access to common mechanics like Falling Damage, Downtime, etc. |
| π Quick Rules | Fast and accessible reference guide for the core rules. |
| π€ Resource Macros | Automatically executes macros when the Fear or Hope resources change. |
| π² Stats | Tracks dice rolls from GM and Players. |
| π§ Stats Toolbox | Import actors using a statblock. |
| π Store | A dynamic, interactive, and fully configurable in-game store. |
| π Unidentified | Obfuscates item names and descriptions until they are identified by the players. |
| π Void | Unofficial module that brings The Void playtesting content β experimental classes, subclasses, ancestries, communities, adversaries, loot, weapons, and more. |
πΊοΈ Adventures
| Adventure | Description |
|---|---|
| β¨ I Wish | A wealthy merchant is cursed; one final expedition may be the only hope. |
| π£ Suicide Squad | Criminals forced to serve a ruthless master in a land on the brink of war. |