From 9aba4dc66dbf5b4213803db3189064b30f3eac86 Mon Sep 17 00:00:00 2001 From: WBHarry <89362246+WBHarry@users.noreply.github.com> Date: Tue, 26 Aug 2025 01:17:58 +0200 Subject: [PATCH 01/10] Corrected pendant name (#1085) --- ...n => loot_Strange_Dirty_Pendant_LriTeh9hkwzEaCr1.json} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename src/packs/classes/{loot_Strange_Dirty_Penant_LriTeh9hkwzEaCr1.json => loot_Strange_Dirty_Pendant_LriTeh9hkwzEaCr1.json} (80%) diff --git a/src/packs/classes/loot_Strange_Dirty_Penant_LriTeh9hkwzEaCr1.json b/src/packs/classes/loot_Strange_Dirty_Pendant_LriTeh9hkwzEaCr1.json similarity index 80% rename from src/packs/classes/loot_Strange_Dirty_Penant_LriTeh9hkwzEaCr1.json rename to src/packs/classes/loot_Strange_Dirty_Pendant_LriTeh9hkwzEaCr1.json index ba307e05..3ca7b938 100644 --- a/src/packs/classes/loot_Strange_Dirty_Penant_LriTeh9hkwzEaCr1.json +++ b/src/packs/classes/loot_Strange_Dirty_Pendant_LriTeh9hkwzEaCr1.json @@ -1,6 +1,6 @@ { "folder": "1gQpPaxdgvCxYlLs", - "name": "Strange Dirty Penant", + "name": "Strange Dirty Pendant", "type": "loot", "_id": "LriTeh9hkwzEaCr1", "img": "icons/equipment/neck/necklace-carved-stone-spiral.webp", @@ -20,12 +20,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754222150005, - "modifiedTime": 1754246254311, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1756136989085, + "lastModifiedBy": "HKcDBUU22bYKtQmH" }, "_key": "!items!LriTeh9hkwzEaCr1" } From 2aeb25503360f2371fd323be7cd9a48a2b648cde Mon Sep 17 00:00:00 2001 From: WBHarry <89362246+WBHarry@users.noreply.github.com> Date: Tue, 26 Aug 2025 01:27:38 +0200 Subject: [PATCH 02/10] Corrected so secondary weapons will show that they are secondary in the tooltip (#1082) --- templates/ui/tooltip/weapon.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/ui/tooltip/weapon.hbs b/templates/ui/tooltip/weapon.hbs index bf414e5c..582bfc50 100644 --- a/templates/ui/tooltip/weapon.hbs +++ b/templates/ui/tooltip/weapon.hbs @@ -6,7 +6,7 @@
-
{{#if item.system.secondaryWeapon}}{{localize "DAGGERHEART.ITEMS.Weapon.secondaryWeapon"}}{{else}}{{localize "DAGGERHEART.ITEMS.Weapon.primaryWeapon"}}{{/if}}
+
{{#if item.system.secondary}}{{localize "DAGGERHEART.ITEMS.Weapon.secondaryWeapon"}}{{else}}{{localize "DAGGERHEART.ITEMS.Weapon.primaryWeapon"}}{{/if}}
From 0a5828c8fac09947b6f9f48bffb999c1880fed72 Mon Sep 17 00:00:00 2001 From: WBHarry <89362246+WBHarry@users.noreply.github.com> Date: Tue, 26 Aug 2025 01:54:07 +0200 Subject: [PATCH 03/10] [Fix] Character Sheet Subclass Compendium Preset (#1083) * Added the preset for the subclass Compendium Browser from character sheet * Raised version --- module/applications/sheets/actors/character.mjs | 9 +++++++++ system.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index 4f7d947b..c860e9e9 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -607,6 +607,15 @@ export default class CharacterSheet extends DHBaseActorSheet { const presets = { compendium: 'daggerheart', folder: key, + filter: + key === 'subclasses' + ? { + 'system.linkedClass.uuid': { + key: 'system.linkedClass.uuid', + value: this.document.system.class.value._stats.compendiumSource + } + } + : undefined, render: { noFolder: true } diff --git a/system.json b/system.json index 31130bb8..8e5a7610 100644 --- a/system.json +++ b/system.json @@ -2,7 +2,7 @@ "id": "daggerheart", "title": "Daggerheart", "description": "An unofficial implementation of the Daggerheart system", - "version": "1.1.1", + "version": "1.1.2", "compatibility": { "minimum": "13", "verified": "13.347", From ff65a85458f3aaf7d7bf56525dba762357ed0435 Mon Sep 17 00:00:00 2001 From: WBHarry <89362246+WBHarry@users.noreply.github.com> Date: Tue, 26 Aug 2025 02:04:22 +0200 Subject: [PATCH 04/10] [Fix] 1086 - Enrichment Buttons (#1087) * Fixed so enriched buttons are button type * Fixed DamageEnrihed button --- module/enrichers/DamageEnricher.mjs | 7 ++++++- module/enrichers/DualityRollEnricher.mjs | 2 +- module/enrichers/TemplateEnricher.mjs | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/module/enrichers/DamageEnricher.mjs b/module/enrichers/DamageEnricher.mjs index a859be9f..a52c4b31 100644 --- a/module/enrichers/DamageEnricher.mjs +++ b/module/enrichers/DamageEnricher.mjs @@ -44,7 +44,7 @@ function getDamageMessage(damage, type, inline, defaultElement) { const dualityElement = document.createElement('span'); dualityElement.innerHTML = ` - `; From 76d753cd880b0bcb037b777a56be22541b67e0db Mon Sep 17 00:00:00 2001 From: WBHarry <89362246+WBHarry@users.noreply.github.com> Date: Tue, 26 Aug 2025 02:14:09 +0200 Subject: [PATCH 05/10] Fixed so subclasses can be dragged to the sheet when they're stored in a folder (#1081) --- module/data/item/subclass.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/module/data/item/subclass.mjs b/module/data/item/subclass.mjs index e16a15f7..375588fb 100644 --- a/module/data/item/subclass.mjs +++ b/module/data/item/subclass.mjs @@ -52,8 +52,7 @@ export default class DHSubclass extends BaseDataItem { async _preCreate(data, options, user) { if (this.actor?.type === 'character') { - const dataUuid = - data.uuid ?? (data.folder ? `Compendium.daggerheart.subclasses.Item.${data._id}` : `Item.${data._id}`); + const dataUuid = data.uuid ?? data._stats.compendiumSource ?? `Item.${data._id}`; if (this.actor.system.class.subclass) { if (this.actor.system.multiclass.subclass) { ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.subclassesAlreadyPresent')); From ff396cd2f0f44c7a8a458a52cce2560c3bb42cab Mon Sep 17 00:00:00 2001 From: CPTN_Cosmo Date: Tue, 26 Aug 2025 14:42:07 +0200 Subject: [PATCH 06/10] added note to translations (#1093) * added note to translations * clarified note --- CONTRIBUTING.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b6f4097e..80c01bce 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,6 +17,10 @@ We welcome contributions of all kinds: Please be respectful and collaborative — we’re all here to build something great together. +### Community Translations + +Please note that we are not accepting community translations in the main project. Instead, community translations should be published as a module. + --- ## 🧭 General Guidelines From dc54fdc096bd08d2176fc1cd9c48309386dce281 Mon Sep 17 00:00:00 2001 From: WBHarry <89362246+WBHarry@users.noreply.github.com> Date: Tue, 26 Aug 2025 20:30:27 +0200 Subject: [PATCH 07/10] [Fix] 1091 - Improve Homebrew Domain Container (#1095) * Simple fix for now * Corrected to 2 rows of height * Corrected scrollbar --- styles/less/ui/settings/homebrew-settings/domains.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/styles/less/ui/settings/homebrew-settings/domains.less b/styles/less/ui/settings/homebrew-settings/domains.less index e0e0dcd7..893f58be 100644 --- a/styles/less/ui/settings/homebrew-settings/domains.less +++ b/styles/less/ui/settings/homebrew-settings/domains.less @@ -54,6 +54,10 @@ display: grid; grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; gap: 8px; + max-height: 184px; + overflow: auto; + scrollbar-width: thin; + scrollbar-color: light-dark(#18162e, #f3c267) transparent; .domain-container { position: relative; From 18687b61313531d6001c7d15c33ad5c90c220c23 Mon Sep 17 00:00:00 2001 From: Chris Ryan <73275196+chrisryan10@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:01:15 +1000 Subject: [PATCH 08/10] Fix Avalanche typo (#1098) Co-authored-by: Chris Ryan --- .../adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json | 8 ++++---- .../adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json | 8 ++++---- .../environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json b/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json index 760e1c74..0d5bd5eb 100644 --- a/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json +++ b/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json @@ -427,7 +427,7 @@ "_key": "!actors.items!3aAS2Qm3R6cgaYfE.tQgxiSS48TJ3X1Dl" }, { - "name": "Avalance Roar", + "name": "Avalanche Roar", "type": "feature", "system": { "description": "

Spend a Fear to roar while within a cave and cause a cave-in. All targets within Close range must succeed on an Agility Reaction Roll (14) or take 2d10 physical damage. The rubble can be cleared with a Progress Countdown (8).

@Template[type:emanation|range:c]

", @@ -532,12 +532,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754085059319, - "modifiedTime": 1754143365810, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756256613353, + "lastModifiedBy": "CEZZA7TXd7uT8O2c" }, "_key": "!actors.items!3aAS2Qm3R6cgaYfE.9Z0i0uURfBMVIapJ" }, diff --git a/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json b/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json index 48b1cd14..251a1ab7 100644 --- a/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json +++ b/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json @@ -548,7 +548,7 @@ "_key": "!actors.items!UGPiPLJsPvMTSKEF.QV2ytK4b1VWF71OS" }, { - "name": "Avalance", + "name": "Avalanche", "type": "feature", "system": { "description": "

Spend a Fear to have the Dragon unleash a huge downfall of snow and ice, covering all other creatures within Far range. All targets within this area must succeed on an Instinct Reaction Roll or be buried in snow and rocks, becoming Vulnerable until they dig themselves out from the debris. For each PC that fails the reaction roll, you gain a Fear.

@Template[type:emanation|range:f]

", @@ -678,12 +678,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754131703390, - "modifiedTime": 1754131790034, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756256581072, + "lastModifiedBy": "CEZZA7TXd7uT8O2c" }, "_key": "!actors.items!UGPiPLJsPvMTSKEF.CcRTxCDCJskiu3fI" }, diff --git a/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json b/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json index e2a31c41..8b962e9f 100644 --- a/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json +++ b/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json @@ -177,7 +177,7 @@ "_key": "!actors.items!acMu9wJrMZZzLSTJ.cIAMenvMXHPTpOFn" }, { - "name": "Avalance", + "name": "Avalanche", "type": "feature", "system": { "description": "

Spend a Fear to carve the mountain with an icy torrent, causing an avalanche. All PCs in its path must succeed on an Agility or Strength Reaction Roll or be bowled over and carried down the mountain. A PC using rope, pitons, or other climbing gear gains advantage on this roll. Targets who fail are knocked down the mountain to Far range, take 2d20 physical damage, and must mark a Stress. Targets who succeed must mark a Stress.

How do the PCs try to weather the avalanche? What approach do the characters take to fi nd one another when their companions go hurtling down the mountainside?

", @@ -252,12 +252,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754217019442, - "modifiedTime": 1754217102897, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756256534443, + "lastModifiedBy": "CEZZA7TXd7uT8O2c" }, "_key": "!actors.items!acMu9wJrMZZzLSTJ.jkm03DXYYajsRk2j" }, From 9f2c2f1bedaa8bc957d37ae8262405f9eefd2fc2 Mon Sep 17 00:00:00 2001 From: WBHarry <89362246+WBHarry@users.noreply.github.com> Date: Wed, 27 Aug 2025 15:22:29 +0200 Subject: [PATCH 09/10] Changed so the default domaincard view is list (#1102) --- module/applications/sheets/actors/character.mjs | 6 +++--- module/config/flagsConfig.mjs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index c860e9e9..a140a7c9 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -210,7 +210,7 @@ export default class CharacterSheet extends DHBaseActorSheet { * @protected */ async _prepareLoadoutContext(context, _options) { - context.cardView = !game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsList); + context.cardView = game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsCard); } /** @@ -718,8 +718,8 @@ export default class CharacterSheet extends DHBaseActorSheet { * @type {ApplicationClickAction} */ static async #toggleLoadoutView(_, button) { - const newAbilityView = button.dataset.value !== 'true'; - await game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsList, newAbilityView); + const newAbilityView = button.dataset.value === 'true'; + await game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsCard, newAbilityView); this.render(); } diff --git a/module/config/flagsConfig.mjs b/module/config/flagsConfig.mjs index 91712288..c2a6dff2 100644 --- a/module/config/flagsConfig.mjs +++ b/module/config/flagsConfig.mjs @@ -1,4 +1,4 @@ -export const displayDomainCardsAsList = 'displayDomainCardsAsList'; +export const displayDomainCardsAsCard = 'displayDomainCardsAsCard'; export const narrativeCountdown = { simple: 'countdown-narrative-simple', position: 'countdown-narrative-position' From 3f1e7f4f4ab5af28e1e6c9eca2c5b71c15213b1c Mon Sep 17 00:00:00 2001 From: Chris Ryan <73275196+chrisryan10@users.noreply.github.com> Date: Fri, 29 Aug 2025 23:49:33 +1000 Subject: [PATCH 10/10] Added some protection for no data supplied (#1115) Co-authored-by: Chris Ryan --- module/enrichers/DualityRollEnricher.mjs | 30 ++++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/module/enrichers/DualityRollEnricher.mjs b/module/enrichers/DualityRollEnricher.mjs index 73d4f25a..1d6404ff 100644 --- a/module/enrichers/DualityRollEnricher.mjs +++ b/module/enrichers/DualityRollEnricher.mjs @@ -9,12 +9,12 @@ export default function DhDualityRollEnricher(match, _options) { } function getDualityMessage(roll, flavor) { - const trait = roll.trait && abilities[roll.trait] ? game.i18n.localize(abilities[roll.trait].label) : null; + const trait = roll?.trait && abilities[roll.trait] ? game.i18n.localize(abilities[roll.trait].label) : null; const label = flavor ?? - (roll.trait + (roll?.trait ? game.i18n.format('DAGGERHEART.GENERAL.rollWith', { roll: trait }) - : roll.reaction + : roll?.reaction ? game.i18n.localize('DAGGERHEART.GENERAL.reactionRoll') : game.i18n.localize('DAGGERHEART.GENERAL.duality')); @@ -22,9 +22,9 @@ function getDualityMessage(roll, flavor) { ? game.i18n.localize(abilities[roll.trait].label) : game.i18n.localize('DAGGERHEART.GENERAL.duality'); - const advantage = roll.advantage + const advantage = roll?.advantage ? CONFIG.DH.ACTIONS.advantageState.advantage.value - : roll.disadvantage + : roll?.disadvantage ? CONFIG.DH.ACTIONS.advantageState.disadvantage.value : undefined; const advantageLabel = @@ -36,21 +36,21 @@ function getDualityMessage(roll, flavor) { const dualityElement = document.createElement('span'); dualityElement.innerHTML = ` - `;