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Β hours, 4Β minutes ago

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.

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


✨ Features


πŸ“‹ Requirements

Foundry VTT v14
Daggerheart system 2.2.6 or newer

πŸš€ Quick Start

  1. Enable the module. On first load it creates the folder structure 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–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 matches Merchant-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.

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

Keep capitalisation consistent 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 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.

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

πŸ› οΈ How to use it

  1. Drop images into the folder for each form β€” e.g. druid-transformation/tier1/agile-scout/.
  2. As GM, click Regenerate Art Mappings.
  3. Done. Players pick from the gallery on their next transformation; no reload needed on their side beyond the usual one.

🧩 Notable behaviour


πŸ“¦ 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

  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 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.
  4. Add images, following the same naming rule as everywhere else.
  5. Click Regenerate Art Mappings.

πŸ“ Folder shape

πŸ—‘οΈ 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:

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.

Supported Game Systems

  1. Daggerheart

    Latest Version: Version 2.6.3 Last Updated 5Β hours, 15Β minutes ago

Categories

Available Versions

  1. Version 0.0.2

    4Β hours, 4Β minutes ago
    Foundry Version 14 - 14 (Verified 14) Manifest URL