Compare commits

...

6 commits

Author SHA1 Message Date
Carlos Fernandez
fe17efe919 Merge branch 'main' into gm-notes 2026-07-13 16:30:18 -04:00
WBHarry
81e264a477 Raised version
Some checks are pending
Project CI / build (24.x) (push) Waiting to run
2026-07-13 17:04:27 +02:00
WBHarry
d3d9ddfb41 Fixed an issue with the 2.5.2 migration 2026-07-13 17:02:26 +02:00
WBHarry
7b35feb36d
Corrected translation for damageReductionOnlyMagical (#2084) 2026-07-13 15:01:03 +02:00
Carlos Fernandez
6e0d0b4e2c
Adjust styling of secret blocks (#2080)
* Adjust styling of secret blocks

* Only show button when hovering over the secret section
2026-07-13 14:57:55 +02:00
Carlos Fernandez
3de9c2f909
Remove duplicate action descriptions in environments (#2083) 2026-07-13 14:56:49 +02:00
16 changed files with 94 additions and 64 deletions

View file

@ -2245,7 +2245,7 @@
"hint": "A used armor slot normally reduces damage by one step. This value increases the number of steps damage is reduced by."
},
"magical": {
"label": "Daamge Reduction: Only Magical",
"label": "Damage Reduction: Only Magical",
"hint": "Armor can only be used to reduce magical damage"
},
"maxArmorMarkedBonus": "Max Armor Used",

View file

@ -15,7 +15,7 @@ export class Migration_2_5_2 extends MigrationHandlerBase {
const srdEffect = srdItem?.effects.find(x => x.name === effectSource.name);
if (change.type === 'custom') {
const srdChange = srdEffect ? srdEffect.system.changes[i] : null;
if (
if (srdChange &&
change.key === srdChange.key &&
change.value === srdChange.value &&
change.type !== srdChange.type

View file

@ -391,7 +391,7 @@
"type": "effect",
"_id": "p6V4k4yMwJ1UPZMz",
"systemPath": "actions",
"description": "<p><strong>Spend a Fear</strong> to summon a @UUID[Compendium.daggerheart.adversaries.Actor.sRn4bqerfARvhgSV]{Minor Chaos Elemental} drawn to the echoes of violence and discord. They appear within Far range of a chosen PC and immediately take the spotlight.</p><section id=\"secret-iCbXJnMeqDXXOc8n\" class=\"secret\"><p><em>What color does the grass turn as the elemental appears? How does the chaos warp insects and small wildlife within the grove?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [],

View file

@ -35,12 +35,9 @@
"src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5,
"anchorY": 0.5,
"offsetX": 0,
"offsetY": 0,
"fit": "contain",
"scaleX": 1,
"scaleY": 1,
"rotation": 0,
"tint": "#ffffff",
"alphaThreshold": 0.75
},
@ -91,7 +88,7 @@
"saturation": 0,
"contrast": 0
},
"detectionModes": [],
"detectionModes": {},
"occludable": {
"radius": 0
},
@ -117,7 +114,8 @@
"flags": {},
"randomImg": false,
"appendNumber": false,
"prependAdjective": false
"prependAdjective": false,
"depth": 1
},
"items": [
{
@ -156,7 +154,7 @@
"type": "effect",
"_id": "6DKa1Pm605HpChPd",
"systemPath": "actions",
"description": "<p>When a PC starts the ambush on unsuspecting adversaries, you lose 2 Fear and the first attack roll a PC makes has advantage.</p><section class=\"secret\" id=\"secret-WV3oLdq2IoLoSZqe\"><p><em>What are the adversaries in the middle of doing when the ambush starts? How does this impact their approach to the fight?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [

View file

@ -330,7 +330,7 @@
"type": "attack",
"_id": "r5JN5oFYL5DC6Qqw",
"systemPath": "actions",
"description": "<p>When an adversary is defeated, you can <strong>spend a Fear</strong> to have a stray attack from a siege weapon hit a point on the battlefield. All targets within Very Close range of that point must make an Agility Reaction Roll.</p><ul><li><p>Targets who fail take <strong>3d8+3</strong> physical or magic damage and must mark a Stress.</p></li><li><p>Targets who succeed must mark a Stress.</p></li></ul><section id=\"secret-qe1DM7HUSefRAplk\" class=\"secret\"><p><em>What debris is scattered by the attack? What is broken by the strike that cant be easily mended?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [],

View file

@ -45,12 +45,9 @@
"src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5,
"anchorY": 0.5,
"offsetX": 0,
"offsetY": 0,
"fit": "contain",
"scaleX": 1,
"scaleY": 1,
"rotation": 0,
"tint": "#ffffff",
"alphaThreshold": 0.75
},
@ -101,7 +98,7 @@
"saturation": 0,
"contrast": 0
},
"detectionModes": [],
"detectionModes": {},
"occludable": {
"radius": 0
},
@ -127,7 +124,8 @@
"flags": {},
"randomImg": false,
"appendNumber": false,
"prependAdjective": false
"prependAdjective": false,
"depth": 1
},
"items": [
{
@ -204,7 +202,7 @@
"type": "damage",
"_id": "p1UiGEiGyl6r7PrA",
"systemPath": "actions",
"description": "<p>Previous climbers left behind large metal rods that climbers can use to aid their ascent. If a PC using the pitons fails an action roll to climb, they can <strong>mark a Stress</strong> instead of ticking the countdown up.</p><section class=\"secret\" id=\"secret-fWHkzBQAxCLDmV6H\"><p><em>What do the shape and material of these pitons tell you about the previous climbers? How far apart are they from one another?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [],
@ -435,7 +433,7 @@
"type": "effect",
"_id": "M8MfD2qBfYCwNKvH",
"systemPath": "actions",
"description": "<p>Spend a Fear to have a PCs handhold fail, plummeting them toward the ground. If they arent saved on the next action, they hit the ground and tick up the countdown by 2. The PC takes <strong>1d12</strong> physical damage if the countdown is between 8 and 12, <strong>2d12</strong> between 4 and 7, and <strong>3d12</strong> at 3 or lower.</p><section class=\"secret\" id=\"secret-ufZ6ifPWxU4MkKow\"><p><em>How can you tell many others have fallen here before? What lives in these walls that might try to scare adventurers into falling for an easy meal?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [

View file

@ -45,12 +45,9 @@
"src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5,
"anchorY": 0.5,
"offsetX": 0,
"offsetY": 0,
"fit": "contain",
"scaleX": 1,
"scaleY": 1,
"rotation": 0,
"tint": "#ffffff",
"alphaThreshold": 0.75
},
@ -101,7 +98,7 @@
"saturation": 0,
"contrast": 0
},
"detectionModes": [],
"detectionModes": {},
"occludable": {
"radius": 0
},
@ -127,7 +124,8 @@
"flags": {},
"randomImg": false,
"appendNumber": false,
"prependAdjective": false
"prependAdjective": false,
"depth": 1
},
"items": [
{
@ -236,7 +234,7 @@
"type": "effect",
"_id": "EATw4ZkcuGeDfgLZ",
"systemPath": "actions",
"description": "<p>A portion of the rituals power is diverted into a cult member to fight off interlopers. Choose one adversary to become Imbued with terrible magic until the scene ends or theyre defeated. An Imbued adversary immediately takes the spotlight and gains one of the following benefits, or all three if you <strong>spend a Fear</strong>:</p><ul><li><p>They gain advantage on all attacks.</p></li><li><p>They deal an extra <strong>1d10</strong> damage on a successful attack.</p></li><li><p>They gain the following feature: <strong>Relentless (2) - Passive</strong>. This adversary can be spotlighted up to two times per GM turn. Spend Fear as usual to spotlight them.</p></li></ul><section class=\"secret\" id=\"secret-5wFIFufzFAPrIDaq\"><p><em>How does the enemy change in appearance? What fears do their blows bring to the surface?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [],
@ -283,13 +281,10 @@
},
"disabled": false,
"duration": {
"startTime": null,
"combat": null,
"seconds": null,
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
"value": null,
"units": "seconds",
"expiry": null,
"expired": false
},
"description": "<p>An Imbued adversary immediately takes the spotlight and gains one of the following benefits, or all three if you <strong>spend a Fear</strong>:</p><ul><li><p>They gain advantage on all attacks.</p></li><li><p>They deal an extra <strong>1d10</strong> damage on a successful attack.</p></li><li><p>They gain the following feature: <strong>Relentless (2) - Passive</strong>. This adversary can be spotlighted up to two times per GM turn. Spend Fear as usual to spotlight them.</p></li></ul><section class=\"secret\" id=\"secret-YOHA68Na64uXDAxu\"><p><em>How does the enemy change in appearance? What fears do their blows bring to the surface?</em></p></section>",
"tint": "#ffffff",
@ -299,6 +294,9 @@
"_stats": {
"compendiumSource": null
},
"start": null,
"showIcon": 1,
"folder": null,
"_key": "!actors.items.effects!QAXXiOKBDmCTauHD.0Rgqw1kUPeJ11ldd.dYQBQq1xIysM0qLo"
},
{
@ -326,13 +324,10 @@
},
"disabled": true,
"duration": {
"startTime": null,
"combat": null,
"seconds": null,
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
"value": null,
"units": "seconds",
"expiry": null,
"expired": false
},
"description": "",
"tint": "#ffffff",
@ -342,6 +337,9 @@
"_stats": {
"compendiumSource": null
},
"start": null,
"showIcon": 1,
"folder": null,
"_key": "!actors.items.effects!QAXXiOKBDmCTauHD.0Rgqw1kUPeJ11ldd.Hxw5lXE77bGzuaOu"
}
],

View file

@ -44,12 +44,9 @@
"src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5,
"anchorY": 0.5,
"offsetX": 0,
"offsetY": 0,
"fit": "contain",
"scaleX": 1,
"scaleY": 1,
"rotation": 0,
"tint": "#ffffff",
"alphaThreshold": 0.75
},
@ -100,7 +97,7 @@
"saturation": 0,
"contrast": 0
},
"detectionModes": [],
"detectionModes": {},
"occludable": {
"radius": 0
},
@ -126,7 +123,8 @@
"flags": {},
"randomImg": false,
"appendNumber": false,
"prependAdjective": false
"prependAdjective": false,
"depth": 1
},
"items": [
{
@ -140,7 +138,7 @@
"type": "healing",
"_id": "uLCoTKa7Jn2HaRqR",
"systemPath": "actions",
"description": "<p>A PC who takes a rest in the Hallowed Temple automatically clears all HP.</p><section class=\"secret\" id=\"secret-vN4UFTYIQW8nd2mC\"><p><em>What does the incense smell like? What kinds of songs do the acolytes sing?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [],
@ -337,7 +335,7 @@
"type": "effect",
"_id": "pJVipg7CbA9CB0Um",
"systemPath": "actions",
"description": "<p>When the PCs have trespassed, blasphemed, or offended the clergy, you can <strong>spend a Fear</strong> to summon a @UUID[Compendium.daggerheart.adversaries.Actor.r1mbfSSwKWdcFdAU]{High Seraph} and [[/r 1d4]] @UUID[Compendium.daggerheart.adversaries.Actor.B4LZcGuBAHzyVdzy]{Bladed Guard} within Close range of the senior priest to reinforce their will.</p><section class=\"secret\" id=\"secret-tG902NbtYpyK0NFi\"><p><em>What symbols or icons do they bear that signal they are anointed agents of the divinity? Who leads the group and what led them to this calling?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [

View file

@ -44,12 +44,9 @@
"src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5,
"anchorY": 0.5,
"offsetX": 0,
"offsetY": 0,
"fit": "contain",
"scaleX": 1,
"scaleY": 1,
"rotation": 0,
"tint": "#ffffff",
"alphaThreshold": 0.75
},
@ -100,7 +97,7 @@
"saturation": 0,
"contrast": 0
},
"detectionModes": [],
"detectionModes": {},
"occludable": {
"radius": 0
},
@ -126,7 +123,8 @@
"flags": {},
"randomImg": false,
"appendNumber": false,
"prependAdjective": false
"prependAdjective": false,
"depth": 1
},
"items": [
{
@ -282,7 +280,7 @@
"type": "countdown",
"_id": "VhqZKDA4032i8zY3",
"systemPath": "actions",
"description": "<p><strong>Spend a Fear</strong> to manifest the echo of a past disaster that ravaged the city. Activate a <em>Progress Countdown (5)</em> as the disaster replays around the PCs. To complete the countdown and escape the catastrophe, the PCs must overcome threats such as rampaging fires, stampeding civilians, collapsing buildings, or crumbling streets, while recalling history and finding clues to escape the inevitable.</p><section class=\"secret\" id=\"secret-2Ou4kbqfCwCgsG5X\"><p><em>Is this the disaster that led the city to be abandoned? What is known about this disaster and how could that help the PCs escape?</em></p></section>",
"description": "",
"chatDisplay": true,
"originItem": {
"type": "itemCollection"

View file

@ -46,12 +46,9 @@
"src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5,
"anchorY": 0.5,
"offsetX": 0,
"offsetY": 0,
"fit": "contain",
"scaleX": 1,
"scaleY": 1,
"rotation": 0,
"tint": "#ffffff",
"alphaThreshold": 0.75
},
@ -102,7 +99,7 @@
"saturation": 0,
"contrast": 0
},
"detectionModes": [],
"detectionModes": {},
"occludable": {
"radius": 0
},
@ -128,7 +125,8 @@
"flags": {},
"randomImg": false,
"appendNumber": false,
"prependAdjective": false
"prependAdjective": false,
"depth": 1
},
"items": [
{
@ -297,7 +295,7 @@
"type": "attack",
"_id": "9ipckCFMz9DVw8ab",
"systemPath": "actions",
"description": "<p><strong>Spend a Fear</strong> to tick down a long-term countdown related to the empires agenda by [[/r 1d4]]. If this triggers the countdown, a proclamation related to the agenda is announced at court as the plan is executed.</p><section class=\"secret\" id=\"secret-ThoGDjazxfPoUvJS\"><p><em>What display of power or transfer of wealth was needed to expedite this plan? Whose lives were disrupted or upended to make this happen?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [],

View file

@ -137,7 +137,7 @@
"type": "damage",
"_id": "jVY198vniaTSlgsX",
"systemPath": "actions",
"description": "<p>A feature or action that clears HP requires spending a Hope to use. If it already costs Hope, a PC must spend an additional Hope.</p><section class=\"secret\" id=\"secret-Ls4rMO6N9zzuR2Ib\"><p><em>What does it feel like to try to heal in a place so antithetical to life?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [],
@ -240,7 +240,7 @@
"type": "attack",
"_id": "M1mOwi4Limw2hRwL",
"systemPath": "actions",
"description": "<p>All targets within Close range of a point you choose in this environment must succeed on an Agility Reaction Roll or take <strong>4d8+8</strong> physical damage from skeletal shrapnel as part of the ossuary detonates around them.</p><section id=\"secret-xjKFOtdFFWAgx2Cv\" class=\"secret\"><p><em>What ancient skeletal architecture is destroyed? What bones stick in your armor?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [],
@ -421,7 +421,7 @@
"type": "effect",
"_id": "hFeTdiHWeCYkb8Hg",
"systemPath": "actions",
"description": "<p><strong>Spend a Fear</strong> to summon [[/r 1d6]] @UUID[Compendium.daggerheart.adversaries.Actor.gP3fWTLzSFnpA8EJ]{Rotted Zombie}, two @UUID[Compendium.daggerheart.adversaries.Actor.CP6iRfHdyFWniTHY]{Perfected Zombie}, or a @UUID[Compendium.daggerheart.adversaries.Actor.YhJrP7rTBiRdX5Fp]{Zombie Legion}, who appear at Close range of a chosen PC.</p><section class=\"secret\" id=\"secret-Du2785Ih29RVrHpG\"><p><em>Who were these people before they became the necromancers pawns? What vestiges of those lives remain for the heroes to see?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [

View file

@ -199,7 +199,7 @@
"type": "attack",
"_id": "1giAFbu3tGqXwi8g",
"systemPath": "actions",
"description": "<p><strong>Spend a Fear</strong> as a mage from one side uses large-scale destructive magic. Pick a point on the battlefield within Very Far range of the mage. All targets within Close range of that point must make an Agility Reaction Roll. Targets who fail take <strong>3d12+8</strong> magic damage and must mark a Stress.</p><section id=\"secret-jbI9lwrzP59CTRUt\" class=\"secret\"><p><em>What form does the attack take—fireball raining acid a storm of blades? What tactical objective is this attack meant to accomplish and what comes next?</em></p></section>",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [

View file

@ -627,6 +627,44 @@
font-size: var(--font-size-11);
text-transform: uppercase;
}
secret-block {
position: relative;
section.secret {
background-color: @red-10;
padding: 0;
margin-top: 0.375rem;
&.revealed {
background-color: @green-10;
}
p {
margin: 0.5rem 0;
}
}
button.reveal {
--button-size: 0.875rem;
position: absolute;
margin: auto;
left: 0;
right: 0;
width: min-content;
padding: 1px 8px 0 8px;
bottom: calc(100% - 0.4375rem - 2px);
background-color: var(--dh-window-button-color-bg); // todo: find a better var name
border-color: var(--color-secret-border);
color: var(--dh-window-button-color-text);
font-size: var(--font-size-10);
user-select: none;
text-transform: uppercase;
visibility: hidden;
}
&:hover button.reveal {
visibility: visible;
}
}
}
.system-daggerheart {

View file

@ -36,8 +36,8 @@ body.game:is(.performance-low, .noblur) {
}
button {
background: light-dark(#e8e6e3, @deep-black);
color: light-dark(@dark-blue, @beige);
background: var(--dh-window-button-color-bg);
color: var(--dh-window-button-color-text);
border: 1px solid light-dark(@dark-blue, transparent);
padding: 0;

View file

@ -107,6 +107,8 @@
--dh-input-color-text: @dark;
--dh-trait-color-bg: #b1afb6;
--dh-trait-color-border: #8e8d96;
--dh-window-button-color-bg: #e8e6e3;
--dh-window-button-color-text: @dark-blue;
}
}
@scope (.theme-dark) to (.themed) {
@ -124,6 +126,8 @@
--dh-input-color-text: @beige;
--dh-trait-color-bg: #50433F;
--dh-trait-color-border: #927952;
--dh-window-button-color-bg: @deep-black;
--dh-window-button-color-text: @beige;
}
}

View file

@ -2,7 +2,7 @@
"id": "daggerheart",
"title": "Daggerheart",
"description": "An unofficial implementation of the Daggerheart system",
"version": "2.5.2",
"version": "2.5.3",
"compatibility": {
"minimum": "14.364",
"verified": "14.364",
@ -10,7 +10,7 @@
},
"url": "https://github.com/Foundryborne/daggerheart",
"manifest": "https://raw.githubusercontent.com/Foundryborne/daggerheart/v14/system.json",
"download": "https://github.com/Foundryborne/daggerheart/releases/download/2.5.2/system.zip",
"download": "https://github.com/Foundryborne/daggerheart/releases/download/2.5.3/system.zip",
"authors": [
{
"name": "WBHarry"