From 5d78ffb3f188bd23e076503fa9ace0ddaa60b51b Mon Sep 17 00:00:00 2001 From: WBHarry Date: Mon, 6 Jul 2026 23:12:47 +0200 Subject: [PATCH] . --- daggerheart.mjs | 2 +- .../sheets-configs/activeEffectConfig.mjs | 1 - module/config/itemConfig.mjs | 40 +++++++++++++------ module/data/activeEffect/baseEffect.mjs | 12 ++++-- ..._Advanced_Shortsword_p3nz5CaGUoyuGVg0.json | 6 +++ ..._Improved_Shortsword_rSyBNRwemBVuTo3H.json | 6 +++ ...Legendary_Shortsword_dEumq3BIZBk5xYTk.json | 6 +++ .../weapon_Shortsword_cjGZpXCoshEqi1FI.json | 6 +++ ...weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json | 6 +++ 9 files changed, 67 insertions(+), 18 deletions(-) diff --git a/daggerheart.mjs b/daggerheart.mjs index 4cf4bc3f..63127aa4 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -390,7 +390,7 @@ const updateActorsRangeDependentEffects = async token => { ).rangeMeasurement; for (let effect of token.actor?.allApplicableEffects() ?? []) { - if (!effect.system.rangeDependence || effect.system.rangeDependence.enabled === false) continue; + if (!effect.system.rangeDependence) continue; const { target, range, type } = effect.system.rangeDependence; // If there are no targets, assume false. Otherwise, start with the effect enabled. diff --git a/module/applications/sheets-configs/activeEffectConfig.mjs b/module/applications/sheets-configs/activeEffectConfig.mjs index 1f18a61e..01fc447a 100644 --- a/module/applications/sheets-configs/activeEffectConfig.mjs +++ b/module/applications/sheets-configs/activeEffectConfig.mjs @@ -233,7 +233,6 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac const systemData = { rangeDependence: event.target.checked ? { - enabled: true, // Temporary while the onMove handling is still in type: rangeFields.type.initial, target: rangeFields.target.initial, range: rangeFields.range.initial diff --git a/module/config/itemConfig.mjs b/module/config/itemConfig.mjs index 7f690b1c..9ebfd1e2 100644 --- a/module/config/itemConfig.mjs +++ b/module/config/itemConfig.mjs @@ -791,13 +791,21 @@ export const weaponFeatures = { name: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.name', description: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.description', img: 'icons/skills/melee/sword-shield-stylized-white.webp', - changes: [ - { - key: 'system.bonuses.damage.primaryWeapon.bonus', - mode: 2, - value: '1' + system: { + changes: [ + { + key: 'system.bonuses.damage.primaryWeapon.bonus', + mode: 2, + value: '1' + } + ], + rangeDependence: { + enabled: true, + range: 'melee', + target: 'hostile', + type: 'withinRange' } - ] + } }, { name: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.name', @@ -1095,13 +1103,21 @@ export const weaponFeatures = { name: 'DAGGERHEART.CONFIG.WeaponFeature.paired.effects.paired.name', description: 'DAGGERHEART.CONFIG.WeaponFeature.paired.effects.paired.description', img: 'icons/skills/melee/weapons-crossed-swords-yellow-teal.webp', - changes: [ - { - key: 'system.bonuses.damage.primaryWeapon.bonus', - mode: 2, - value: 'ITEM.@system.tier + 1' + system: { + changes: [ + { + key: 'system.bonuses.damage.primaryWeapon.bonus', + mode: 2, + value: 'ITEM.@system.tier + 1' + } + ], + rangeDependence: { + enabled: true, + range: 'melee', + target: 'hostile', + type: 'withinRange' } - ] + } } ] }, diff --git a/module/data/activeEffect/baseEffect.mjs b/module/data/activeEffect/baseEffect.mjs index 34ebe9d4..2bdff755 100644 --- a/module/data/activeEffect/baseEffect.mjs +++ b/module/data/activeEffect/baseEffect.mjs @@ -57,10 +57,6 @@ export default class BaseEffect extends foundry.data.ActiveEffectTypeDataModel { description: new fields.HTMLField({ label: 'DAGGERHEART.GENERAL.description' }) }), rangeDependence: new fields.SchemaField({ - enabled: new fields.BooleanField({ // Temporary for the remaining onMove logic - initial: false, - label: 'DAGGERHEART.GENERAL.enabled' - }), type: new fields.StringField({ required: true, choices: CONFIG.DH.GENERAL.rangeInclusion, @@ -176,4 +172,12 @@ export default class BaseEffect extends foundry.data.ActiveEffectTypeDataModel { if (this.parent.actor && options.scrollingTextData) this.parent.actor.queueScrollText(options.scrollingTextData); } + + static migrateData(source) { + if (source.rangeDependence?.enabled === false) { + source.rangeDependence = null; + } + + return super.migrateData(source); + } } diff --git a/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json b/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json index 32a43284..64337b2b 100644 --- a/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json +++ b/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json @@ -114,6 +114,12 @@ "description": "Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range", "img": "icons/skills/melee/weapons-crossed-swords-yellow-teal.webp", "system": { + "rangeDependence": { + "enabled": true, + "range": "melee", + "target": "hostile", + "type": "withinRange" + }, "changes": [ { "key": "system.bonuses.damage.primaryWeapon.bonus", diff --git a/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json b/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json index 8cfab37b..070e2374 100644 --- a/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json +++ b/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json @@ -114,6 +114,12 @@ "description": "Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range", "img": "icons/skills/melee/weapons-crossed-swords-yellow-teal.webp", "system": { + "rangeDependence": { + "enabled": true, + "range": "melee", + "target": "hostile", + "type": "withinRange" + }, "changes": [ { "key": "system.bonuses.damage.primaryWeapon.bonus", diff --git a/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json b/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json index 51a98b40..cfc648de 100644 --- a/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json +++ b/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json @@ -114,6 +114,12 @@ "description": "Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range", "img": "icons/skills/melee/weapons-crossed-swords-yellow-teal.webp", "system": { + "rangeDependence": { + "enabled": true, + "range": "melee", + "target": "hostile", + "type": "withinRange" + }, "changes": [ { "key": "system.bonuses.damage.primaryWeapon.bonus", diff --git a/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json b/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json index 8daacafc..61f91b58 100644 --- a/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json +++ b/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json @@ -114,6 +114,12 @@ "description": "

Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range

", "img": "icons/skills/melee/weapons-crossed-swords-yellow-teal.webp", "system": { + "rangeDependence": { + "enabled": true, + "range": "melee", + "target": "hostile", + "type": "withinRange" + }, "changes": [ { "key": "system.bonuses.damage.primaryWeapon.bonus", diff --git a/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json b/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json index a2e4f759..39c18b08 100644 --- a/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json +++ b/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json @@ -114,6 +114,12 @@ "description": "+1 to Armor Score; +1 to primary weapon damage within Melee range", "img": "icons/skills/melee/sword-shield-stylized-white.webp", "system": { + "rangeDependence": { + "enabled": true, + "range": "melee", + "target": "hostile", + "type": "withinRange" + }, "changes": [ { "key": "system.bonuses.damage.primaryWeapon.bonus",