This commit is contained in:
WBHarry 2026-07-06 23:12:47 +02:00
parent da44ff2510
commit 5d78ffb3f1
9 changed files with 67 additions and 18 deletions

View file

@ -390,7 +390,7 @@ const updateActorsRangeDependentEffects = async token => {
).rangeMeasurement; ).rangeMeasurement;
for (let effect of token.actor?.allApplicableEffects() ?? []) { 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; const { target, range, type } = effect.system.rangeDependence;
// If there are no targets, assume false. Otherwise, start with the effect enabled. // If there are no targets, assume false. Otherwise, start with the effect enabled.

View file

@ -233,7 +233,6 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac
const systemData = { const systemData = {
rangeDependence: event.target.checked rangeDependence: event.target.checked
? { ? {
enabled: true, // Temporary while the onMove handling is still in
type: rangeFields.type.initial, type: rangeFields.type.initial,
target: rangeFields.target.initial, target: rangeFields.target.initial,
range: rangeFields.range.initial range: rangeFields.range.initial

View file

@ -791,13 +791,21 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.description',
img: 'icons/skills/melee/sword-shield-stylized-white.webp', img: 'icons/skills/melee/sword-shield-stylized-white.webp',
changes: [ system: {
{ changes: [
key: 'system.bonuses.damage.primaryWeapon.bonus', {
mode: 2, key: 'system.bonuses.damage.primaryWeapon.bonus',
value: '1' mode: 2,
value: '1'
}
],
rangeDependence: {
enabled: true,
range: 'melee',
target: 'hostile',
type: 'withinRange'
} }
] }
}, },
{ {
name: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.name',
@ -1095,13 +1103,21 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.paired.effects.paired.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.paired.effects.paired.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.paired.effects.paired.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.paired.effects.paired.description',
img: 'icons/skills/melee/weapons-crossed-swords-yellow-teal.webp', img: 'icons/skills/melee/weapons-crossed-swords-yellow-teal.webp',
changes: [ system: {
{ changes: [
key: 'system.bonuses.damage.primaryWeapon.bonus', {
mode: 2, key: 'system.bonuses.damage.primaryWeapon.bonus',
value: 'ITEM.@system.tier + 1' mode: 2,
value: 'ITEM.@system.tier + 1'
}
],
rangeDependence: {
enabled: true,
range: 'melee',
target: 'hostile',
type: 'withinRange'
} }
] }
} }
] ]
}, },

View file

@ -57,10 +57,6 @@ export default class BaseEffect extends foundry.data.ActiveEffectTypeDataModel {
description: new fields.HTMLField({ label: 'DAGGERHEART.GENERAL.description' }) description: new fields.HTMLField({ label: 'DAGGERHEART.GENERAL.description' })
}), }),
rangeDependence: new fields.SchemaField({ rangeDependence: new fields.SchemaField({
enabled: new fields.BooleanField({ // Temporary for the remaining onMove logic
initial: false,
label: 'DAGGERHEART.GENERAL.enabled'
}),
type: new fields.StringField({ type: new fields.StringField({
required: true, required: true,
choices: CONFIG.DH.GENERAL.rangeInclusion, choices: CONFIG.DH.GENERAL.rangeInclusion,
@ -176,4 +172,12 @@ export default class BaseEffect extends foundry.data.ActiveEffectTypeDataModel {
if (this.parent.actor && options.scrollingTextData) if (this.parent.actor && options.scrollingTextData)
this.parent.actor.queueScrollText(options.scrollingTextData); this.parent.actor.queueScrollText(options.scrollingTextData);
} }
static migrateData(source) {
if (source.rangeDependence?.enabled === false) {
source.rangeDependence = null;
}
return super.migrateData(source);
}
} }

View file

@ -114,6 +114,12 @@
"description": "Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range", "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", "img": "icons/skills/melee/weapons-crossed-swords-yellow-teal.webp",
"system": { "system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
},
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.primaryWeapon.bonus", "key": "system.bonuses.damage.primaryWeapon.bonus",

View file

@ -114,6 +114,12 @@
"description": "Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range", "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", "img": "icons/skills/melee/weapons-crossed-swords-yellow-teal.webp",
"system": { "system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
},
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.primaryWeapon.bonus", "key": "system.bonuses.damage.primaryWeapon.bonus",

View file

@ -114,6 +114,12 @@
"description": "Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range", "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", "img": "icons/skills/melee/weapons-crossed-swords-yellow-teal.webp",
"system": { "system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
},
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.primaryWeapon.bonus", "key": "system.bonuses.damage.primaryWeapon.bonus",

View file

@ -114,6 +114,12 @@
"description": "<p>Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range</p>", "description": "<p>Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range</p>",
"img": "icons/skills/melee/weapons-crossed-swords-yellow-teal.webp", "img": "icons/skills/melee/weapons-crossed-swords-yellow-teal.webp",
"system": { "system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
},
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.primaryWeapon.bonus", "key": "system.bonuses.damage.primaryWeapon.bonus",

View file

@ -114,6 +114,12 @@
"description": "+1 to Armor Score; +1 to primary weapon damage within Melee range", "description": "+1 to Armor Score; +1 to primary weapon damage within Melee range",
"img": "icons/skills/melee/sword-shield-stylized-white.webp", "img": "icons/skills/melee/sword-shield-stylized-white.webp",
"system": { "system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
},
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.primaryWeapon.bonus", "key": "system.bonuses.damage.primaryWeapon.bonus",