| Latest version | 0.0.6 |
|---|---|
| Minimum Core | 14 |
| Compatible Core | 14 |
| Last updated | 16 hours ago |
| Created | 3 weeks ago |
| Authors | |
| Languages |
English |
| Systems | All systems |
| Project source | Project URL |
Your characters carry torches, candles and lanterns. This module makes them actually light the way — in any system.
Turn any item in a character's backpack into a real light source. One click on the token, and the darkness pulls back.
The party walks into a pitch-black crypt. Someone says "I light my torch."
And then the table stops. The GM alt-tabs to the token settings, types a dim radius, types a bright radius, picks a color, picks an animation, closes the window... and by the time the light finally shows up on the map, the moment is gone. Later, nobody remembers to cross the torch off the character sheet, and nobody remembers when it should burn out.
Light Sources fixes that. The torch is already in the character's inventory, so lighting it is a single click on the token — the light appears instantly, the item is spent from the sheet, and the flame burns out on its own when its time is up. Darkness stops being paperwork and goes back to being a resource your players have to manage.
Open Game Settings → Configure Settings → Light Sources → Configure System Compatibility. Enable the item types that count as light sources, the actor types allowed to use Free-for-All sources (actors carrying the item can always light it, no matter their type), and enter the item quantity path (where your system stores an item's quantity, e.g. system.quantity). On Daggerheart this is already filled in for you.
Open Configure Light Sources and drag any item of an enabled type from a compendium or the sidebar into the window to register it — or click Add by Name to register a source with just a name, no item required (handy for Free-for-All grants, or for sources you want to set up before the item exists).
Click the ✏️ pencil on any entry to shape it:
Patterns — add one or more light patterns for the same item (different radii, colors, animations). A lone pattern needs no name; add a second and each gets its own label in the HUD.
Consumption — whether lighting it uses one up, how many minutes it burns before dying out (0 = burns forever until put out by hand), and whether that countdown runs on the in-game clock or on real time.
Optional per-source toggles on the config window:
There is also one world setting under Game Settings → Configure Settings → Light Sources:
Tip: select a token on the canvas while you edit — you'll watch the light change on the map in real time.
Any light already placed on your scene can be made interactive. Open it on the Lighting layer to bring up Foundry's own light configuration, and tick Players Can Switch at the bottom of the Basic tab.
From then on a small control appears over that light for everyone who can see it. A player has to walk a token onto the light — or onto a square beside it — before the control responds, so putting out the torch at the end of the hall means walking down the hall. This is what makes it a stealth decision rather than a free action.
A light that is switched off uses Foundry's native hidden state, so you'll see it dashed on the Lighting layer while it's out, and you can always flip it back yourself. Lights the players drop on the ground get this treatment automatically — those are theirs, and need no tick from you.
While something is burning, the flame button glows. Hover it to check what's lit and how many minutes it has left.
To put it out, open the same menu and click Extinguish Light. If it burns out on its own first, everyone sees it happen in chat.
Drop a light: once a light is burning, a Drop button appears next to it in the flame menu. Click it to put that light on the ground as an Ambient Light — useful for torches left behind in a hallway or campfires. Your token goes dark and the light stays where you dropped it. Nothing extra is consumed: you're putting down the light you already lit, not spending a second torch.
Pick a light back up: walk back to a torch you left on the floor and select your token. If it's standing on the light — or on any of the squares around it — Pick Up Light appears at the top of the flame menu. Click it and the flame comes back to your token with the time it has left on it. Like dropping, this costs nothing: you're picking up the torch you put down, not spending a new one.
Do come back for it, though. A torch on the floor is still burning, and if you leave it too long you'll return to find it has gone out.
Switch a light on or off: some lights on the map can be worked directly — any torch you dropped yourself, plus any scenery light your GM has opened up. Those show a small light control on the map. Move your token onto the light or next to it and click the control to snuff it or light it again. From further away the control stays faded and clicking it just tells you to get closer: you can only put out a light you've actually reached.
If you maintain a game system or a companion module and want to ship pre-configured light sources, you can use the Register Sources API to add them with code — no GM setup needed.
👉 Read the full API documentation
Quick taste:
Hooks.once("ready", async () => {
await game.lightSources?.registerSources([
{
uuid: "Compendium.my-system.equipment.Item.torch01",
patterns: [
{ name: "Standard", light: { dim: 40, bright: 20, color: "#ff8800", animation: { type: "torch", speed: 5, intensity: 5 } } }
],
consume: true,
durationMode: "world",
durationMinutes: 60
}
], { managedBy: "my-system" });
});
Registered sources appear in the Token HUD and in the GM's configuration window with a badge showing which module manages them.
Registered values are defaults, not locks: once the GM edits one of these sources it stops being overwritten, and a Restore Module Default control puts it back — either for the whole source, or for a single light pattern. See the Register Sources API docs for the full contract.
To install this package, open your Foundry Setup screen and navigate to your Module tab and click the Install Module button.
From there, you can either search for the package unique name: light-sources or copy its manifest URL:
And paste it to the input box at the bottom of your window.

You can install this package directly to your Forge account.