Register

Daggerheart: Art Mapper

An Add-on Module for Foundry Virtual Tabletop

Author: Mestre Digital Project: Source Foundry Version 14 (Verified 14) Last Updated 4Β days, 13Β hours ago

🎨 Daggerheart: Art Mapper

Daggerheart: Art Mapper puts your own images on the Daggerheart compendiums. You drop image files named after the entries into Data/dh-assets/, click Regenerate Art Mappings, and the matching adversaries, environments, classes, subclasses, ancestries, communities and domain cards show your art. Druid beastforms get a gallery the player picks from when transforming, and compendiums from other modules can be included too.

The module ships no artwork. The folders start empty and you fill them with images you own or made.

Domain card compendium entries picking up custom artwork after the mapping is regenerated

Buy Me a Coffee More Modules

What it does

  • Scans your image folders and applies the art to the matching compendium entries. Matching is by the entry's name, so there is no ID list to maintain.
  • Gives druid beastforms a gallery to choose from at transformation time. It works for players even though they cannot browse the server's files, and it never modifies the Daggerheart system compendium.
  • Updates items already sitting on world actors, which compendium art does not reach. Only items whose image is still the system default are changed.
  • Does all of the above for Actor or Item compendiums shipped by other modules, such as homebrew adversary packs or extra domain cards.
  • 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.

Quick start

  1. Enable the module. On first load it creates Data/dh-assets/ and asks you to reload.
  2. Put your images into the folders (see below). Filenames must start with the entry's name.
  3. Open Game Settings β†’ Configure Settings β†’ Daggerheart: Art Mapper and click Regenerate Art Mappings.
  4. Reload when prompted. Your art is now on the compendium entries.

Repeat steps 2 to 4 whenever you add or rename images.

Naming and organizing your images

Put each image in the folder for its category. The folder structure is in the next section.

The filename must start with the entry'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 safest choice is the recommended convention:

Dread-Knight_1.webp    ← hyphens between words, "_" before the number
Β 

Use the English names, even when the Daggerheart system runs in another language. Translation modules rename the compendium entries on screen, but the module matches files against the original names, so the same files work in every language.

The _ before the number matters when one entry's name is the start of another's. "Merchant" and "Merchant Baron" are both adversaries, and so are "Tangle Bramble" and "Tangle Bramble Swarm". A number placed straight after the name makes the shorter entry's wildcard also take the longer entry's images, because Merchant* also matches Merchant-Baron1.webp. 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_*"
Β 

If two such entries share a plain prefix anyway, the module does not guess: the shorter entry gets a single fixed image, and a warning naming both entries appears in the console (F12). Only these prefix pairs can break, but using _ everywhere means you never have to check which names start others.

Every image format Foundry supports works: PNG, JPG, WebP and so on.

In token/ folders you can add more than one file for the same entry (dread-knight_1.webp, dread-knight_2.webp). The module then builds a wildcard path and turns on Foundry's own Randomize Wildcard Images option on that entry's prototype token. Each time you drop the actor on a scene, Foundry picks one of the matching images for that token.

The same adversary dropped onto a scene several times, each token taking a different image from the entry's set

Keep capitalisation the same inside one entry's set. Zumbi_1.png and zumbi_2.png are 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.

Click Regenerate Art Mappings to apply any change.

Your files are safe. Everything lives in Data/dh-assets/, a folder that belongs to no module. Updating, reinstalling or uninstalling Daggerheart: Art Mapper never touches it, and the module never deletes or rewrites images you added.

Folder structure

Everything sits in your Foundry Data folder, the one holding worlds/, modules/ and systems/, in a folder named dh-assets:

Data/dh-assets/
β”œβ”€β”€ core-mapping.json          ← generated by the module, do not edit
β”œβ”€β”€ beastform-art.json         ← generated by the module, do not edit
β”œβ”€β”€ 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 English name lowercased with spaces turned into hyphens: "Agile Scout" becomes agile-scout, "Great Winged Beast" becomes great-winged-beast.

Beastform art

Each beastform has 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 with your images, so the player chooses which one their token becomes.

A druid transforming, with the image picker showing the gallery of images placed in that beastform's folder

  1. Drop images into the folder for each form, for example druid-transformation/tier1/agile-scout/.
  2. As GM, click Regenerate Art Mappings.
  3. Accept the reload prompt. It reloads every connected client, so players get the new galleries on their next transformation.

Some details:

  • A form with an empty folder 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 saved as a small file every client can read.
  • The system compendium is never modified. The gallery is supplied at transformation time. If you uninstall this module, every beastform goes back 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 work the same way as the normal ones, each with its own folder.

Custom compendiums from other modules

The standard folders cover the Daggerheart system's own compendiums. Manage Custom Compendiums applies the same workflow (drop an image, the name matches, the art is applied) to Actor or Item compendiums from any other active module.

  1. Open Manage Custom Compendiums in the module settings.
  2. Every active Actor or Item compendium not already built in is listed, unchecked.
  3. Check the ones you want and click Save. The subfolders are created under Data/dh-assets/custom/, and the dialog shows the exact folder name. The module generates that name and it cannot be renamed. This keeps names short and makes sure two compendiums never point at the same folder by mistake.
  4. Add images, following the same naming rule as everywhere else.
  5. Click Regenerate Art Mappings.

Actor compendiums get portrait/ and token/ subfolders, like Adversaries and Environments. Item compendiums get one flat folder. This works even when a pack mixes several item subtypes, because matching is by name, not by subtype, so nothing extra needs configuring.

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 instead of disappearing, so you keep the configuration and can remove it deliberately.

Actor image sync

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.

Only images that are still the system default are replaced. Anything you or a player set deliberately is left alone. Running it again is safe: once everything is current, nothing changes.

It covers Classes, Subclasses, Ancestries, Communities and Domain Cards, plus any item type found in a custom Item compendium you added. Items with no compendium counterpart are untouched.

Click Sync Now in the module settings. GM only. Generate the art mappings first if you have just added images.

Settings

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 options take effect the next time you regenerate. They do not change an existing mapping.

Compendium art priority

This module registers through Foundry's own compendium art system, so it appears on the core Compendium Art screen (Configure Settings β†’ Core, palette icon) next to any other art module you have installed. There you can:

  • turn Portraits, Tokens and Items on or off for each source;
  • reorder sources, deciding which module wins when two provide art for the same entry.

The module only appears on that screen once a mapping has been generated.

Console and macro commands

Run these from a script macro or the browser console (F12, Console tab). They are 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 English 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 is the start of another entry's name and the files share a plain prefix, or the files for that entry disagree on capitalisation. Both are covered in Naming and organizing your images.

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 wins over mine, or the other way around. Change the order on the core Compendium Art screen, described in 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.



Supported Game Systems

  1. Daggerheart

    Latest Version: Version 2.10.13 Last Updated 5Β days, 11Β hours ago

Categories

Available Versions

  1. Version 0.0.4

    4Β days, 13Β hours ago
    Foundry Version 14 - 14 (Verified 14) Manifest URL Read Notes
  2. Version 0.0.3

    2Β months, 2Β weeks ago
    Foundry Version 14 - 14 (Verified 14) Manifest URL Read Notes
  3. Version 0.0.2

    2Β months, 2Β weeks ago
    Foundry Version 14 - 14 (Verified 14) Manifest URL