From 1017437480914fa67ee194a1477400b05d73453f Mon Sep 17 00:00:00 2001 From: WBHarry Date: Tue, 23 Jun 2026 22:59:16 +0200 Subject: [PATCH] Restored the data model, config and settings html --- lang/en.json | 5 ++++ .../sheets-configs/activeEffectConfig.mjs | 18 +++++++++++++++ module/config/generalConfig.mjs | 23 +++++++++++++++---- module/data/activeEffect/baseEffect.mjs | 20 ++++++++++++++++ templates/sheets/activeEffect/settings.hbs | 13 +++++++++++ 5 files changed, 75 insertions(+), 4 deletions(-) diff --git a/lang/en.json b/lang/en.json index 5751fc40..f2b39165 100755 --- a/lang/en.json +++ b/lang/en.json @@ -165,9 +165,14 @@ }, "ACTIVEEFFECT": { "Config": { + "rangeDependence": { "title": "Range Dependence" }, "stacking": { "title": "Stacking" }, "targetDispositions": "Affected Dispositions" }, + "RangeDependance": { + "hint": "Settings for an optional distance at which this effect should activate", + "title": "Range Dependant" + }, "immuneStatusText": "Immunity: {status}" }, "ACTORS": { diff --git a/module/applications/sheets-configs/activeEffectConfig.mjs b/module/applications/sheets-configs/activeEffectConfig.mjs index 2d9eafc3..01fc447a 100644 --- a/module/applications/sheets-configs/activeEffectConfig.mjs +++ b/module/applications/sheets-configs/activeEffectConfig.mjs @@ -155,6 +155,10 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac .querySelector('.stacking-change-checkbox') ?.addEventListener('change', this.stackingChangeToggle.bind(this)); + htmlElement + .querySelector('.range-dependence-change-checkbox') + ?.addEventListener('change', this.rangeDependenceChangeToggle.bind(this)); + htmlElement .querySelector('.armor-change-checkbox') ?.addEventListener('change', this.armorChangeToggle.bind(this)); @@ -224,6 +228,20 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac return this.submit({ updateData: { system: systemData } }); } + rangeDependenceChangeToggle(event) { + const rangeFields = this.document.system.schema.fields.rangeDependence.fields; + const systemData = { + rangeDependence: event.target.checked + ? { + type: rangeFields.type.initial, + target: rangeFields.target.initial, + range: rangeFields.range.initial + } + : null + }; + return this.submit({ updateData: { system: systemData } }); + } + armorChangeToggle(event) { if (event.target.checked) { this.addArmorChange(); diff --git a/module/config/generalConfig.mjs b/module/config/generalConfig.mjs index 59fb3062..73267977 100644 --- a/module/config/generalConfig.mjs +++ b/module/config/generalConfig.mjs @@ -106,11 +106,18 @@ export const templateTypes = { } }; -export const targetTypes = { - self: { - id: 'self', - label: 'DAGGERHEART.CONFIG.TargetTypes.self' +export const rangeInclusion = { + withinRange: { + id: 'withinRange', + label: 'DAGGERHEART.CONFIG.RangeInclusion.withinRange' }, + outsideRange: { + id: 'outsideRange', + label: 'DAGGERHEART.CONFIG.RangeInclusion.outsideRange' + } +}; + +export const otherTargetTypes = { friendly: { id: 'friendly', label: 'DAGGERHEART.CONFIG.TargetTypes.friendly' @@ -123,6 +130,14 @@ export const targetTypes = { id: 'any', label: 'DAGGERHEART.CONFIG.TargetTypes.any' } +} + +export const targetTypes = { + self: { + id: 'self', + label: 'DAGGERHEART.CONFIG.TargetTypes.self' + }, + ...otherTargetTypes }; export const burden = { diff --git a/module/data/activeEffect/baseEffect.mjs b/module/data/activeEffect/baseEffect.mjs index 3ff8ce93..1c69d926 100644 --- a/module/data/activeEffect/baseEffect.mjs +++ b/module/data/activeEffect/baseEffect.mjs @@ -56,6 +56,26 @@ export default class BaseEffect extends foundry.data.ActiveEffectTypeDataModel { }), description: new fields.HTMLField({ label: 'DAGGERHEART.GENERAL.description' }) }), + rangeDependence: new fields.SchemaField({ + type: new fields.StringField({ + required: true, + choices: CONFIG.DH.GENERAL.rangeInclusion, + initial: CONFIG.DH.GENERAL.rangeInclusion.withinRange.id, + label: 'DAGGERHEART.GENERAL.type' + }), + target: new fields.StringField({ + required: true, + choices: CONFIG.DH.GENERAL.otherTargetTypes, + initial: CONFIG.DH.GENERAL.otherTargetTypes.hostile.id, + label: 'DAGGERHEART.GENERAL.Target.single' + }), + range: new fields.StringField({ + required: true, + choices: CONFIG.DH.GENERAL.range, + initial: CONFIG.DH.GENERAL.range.melee.id, + label: 'DAGGERHEART.GENERAL.range' + }) + }, { nullable: true, initial: null }), stacking: new fields.SchemaField( { value: new fields.NumberField({ diff --git a/templates/sheets/activeEffect/settings.hbs b/templates/sheets/activeEffect/settings.hbs index 46a739a9..d3bfc7e8 100644 --- a/templates/sheets/activeEffect/settings.hbs +++ b/templates/sheets/activeEffect/settings.hbs @@ -13,6 +13,19 @@ {{/if}} +
+ + {{localize "DAGGERHEART.ACTIVEEFFECT.Config.rangeDependence.title"}} + + + + {{#if source.system.rangeDependence}} + {{formGroup systemFields.rangeDependence.fields.type value=source.system.rangeDependence.type localize=true }} + {{formGroup systemFields.rangeDependence.fields.target value=source.system.rangeDependence.target localize=true }} + {{formGroup systemFields.rangeDependence.fields.range value=source.system.rangeDependence.range localize=true }} + {{/if}} +
+
{{localize "EFFECT.DURATION.Label"}}