diff --git a/daggerheart.mjs b/daggerheart.mjs index 4f9c4a44..a2f41735 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -259,7 +259,10 @@ Hooks.on('moveToken', async (movedToken, data) => { const rangeDependantEffects = movedToken.actor.effects.filter(effect => effect.system.rangeDependence?.enabled); const updateEffects = async (disposition, token, effects, effectUpdates) => { - const rangeMeasurement = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.RangeMeasurement); + const rangeMeasurement = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.variantRules + ).rangeMeasurement; for (let effect of effects.filter(x => x.system.rangeDependence?.enabled)) { const { target, range, type } = effect.system.rangeDependence; diff --git a/lang/en.json b/lang/en.json index 927953ac..5bcc3dd4 100755 --- a/lang/en.json +++ b/lang/en.json @@ -2210,10 +2210,6 @@ "actionTokens": { "enabled": { "label": "Enabled" }, "tokens": { "label": "Tokens" } - }, - "useCoins": { - "label": "Use Coins", - "hint": "test" } } }, diff --git a/module/applications/settings/_module.mjs b/module/applications/settings/_module.mjs index de11242e..b565777c 100644 --- a/module/applications/settings/_module.mjs +++ b/module/applications/settings/_module.mjs @@ -1,5 +1,4 @@ export { default as DhAppearanceSettings } from './appearanceSettings.mjs'; export { default as DhAutomationSettings } from './automationSettings.mjs'; export { default as DhHomebrewSettings } from './homebrewSettings.mjs'; -export { default as DhRangeMeasurementSettings } from './rangeMeasurementSettings.mjs'; export { default as DhVariantRuleSettings } from './variantRuleSettings.mjs'; diff --git a/module/applications/settings/rangeMeasurementSettings.mjs b/module/applications/settings/rangeMeasurementSettings.mjs deleted file mode 100644 index 410b2cbe..00000000 --- a/module/applications/settings/rangeMeasurementSettings.mjs +++ /dev/null @@ -1,66 +0,0 @@ -import { DhRangeMeasurement } from '../../data/settings/_module.mjs'; - -const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; - -export default class DhRangeMeasurementSettings extends HandlebarsApplicationMixin(ApplicationV2) { - constructor() { - super({}); - - this.settings = new DhRangeMeasurement( - game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.RangeMeasurement).toObject() - ); - } - - get title() { - return game.i18n.localize('DAGGERHEART.SETTINGS.Menu.title'); - } - - static DEFAULT_OPTIONS = { - tag: 'form', - id: 'daggerheart-automation-settings', - classes: ['daggerheart', 'dialog', 'dh-style', 'setting'], - position: { width: '600', height: 'auto' }, - window: { - icon: 'fa-solid fa-gears' - }, - actions: { - reset: this.reset, - save: this.save - }, - form: { handler: this.updateData, submitOnChange: true } - }; - - static PARTS = { - main: { - template: 'systems/daggerheart/templates/settings/range-measurement-settings.hbs' - } - }; - - async _prepareContext(_options) { - const context = await super._prepareContext(_options); - context.settingFields = this.settings; - - return context; - } - - static async updateData(event, element, formData) { - const updatedSettings = foundry.utils.expandObject(formData.object); - - await this.settings.updateSource(updatedSettings); - this.render(); - } - - static async reset() { - this.settings = new DhRangeMeasurement(); - this.render(); - } - - static async save() { - await game.settings.set( - CONFIG.DH.id, - CONFIG.DH.SETTINGS.gameSettings.RangeMeasurement, - this.settings.toObject() - ); - this.close(); - } -} diff --git a/module/canvas/placeables/measuredTemplate.mjs b/module/canvas/placeables/measuredTemplate.mjs index 42601d6c..c9950650 100644 --- a/module/canvas/placeables/measuredTemplate.mjs +++ b/module/canvas/placeables/measuredTemplate.mjs @@ -4,8 +4,8 @@ export default class DhMeasuredTemplate extends foundry.canvas.placeables.Measur const rangeMeasurementSettings = game.settings.get( CONFIG.DH.id, - CONFIG.DH.SETTINGS.gameSettings.RangeMeasurement - ); + CONFIG.DH.SETTINGS.gameSettings.variantRules + ).rangeMeasurement; if (rangeMeasurementSettings.enabled) { const splitRulerText = this.ruler.text.split(' '); if (splitRulerText.length > 0) { @@ -29,7 +29,7 @@ export default class DhMeasuredTemplate extends foundry.canvas.placeables.Measur if (distance <= settings.far) { return game.i18n.localize('DAGGERHEART.CONFIG.Range.far.name'); } - if (distance <= settings.veryFar) { + if (distance > settings.far) { return game.i18n.localize('DAGGERHEART.CONFIG.Range.veryFar.name'); } diff --git a/module/canvas/placeables/ruler.mjs b/module/canvas/placeables/ruler.mjs index 498ee3df..6585a1cd 100644 --- a/module/canvas/placeables/ruler.mjs +++ b/module/canvas/placeables/ruler.mjs @@ -5,7 +5,7 @@ export default class DhpRuler extends foundry.canvas.interaction.Ruler { const context = super._getWaypointLabelContext(waypoint, state); if (!context) return; - const range = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.RangeMeasurement); + const range = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement; if (range.enabled) { const distance = DhMeasuredTemplate.getDistanceLabel(waypoint.measurement.distance.toNearest(0.01), range); diff --git a/module/canvas/placeables/tokenRuler.mjs b/module/canvas/placeables/tokenRuler.mjs index ea30ca95..ff8fc0d5 100644 --- a/module/canvas/placeables/tokenRuler.mjs +++ b/module/canvas/placeables/tokenRuler.mjs @@ -5,7 +5,7 @@ export default class DhpTokenRuler extends foundry.canvas.placeables.tokens.Toke const context = super._getWaypointLabelContext(waypoint, state); if (!context) return; - const range = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.RangeMeasurement); + const range = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement; if (range.enabled) { const distance = DhMeasuredTemplate.getDistanceLabel(waypoint.measurement.distance.toNearest(0.01), range); diff --git a/module/config/generalConfig.mjs b/module/config/generalConfig.mjs index 0968c0c1..7785b6a6 100644 --- a/module/config/generalConfig.mjs +++ b/module/config/generalConfig.mjs @@ -21,7 +21,7 @@ export const ruleChoice = { } }; -export const range = { +export const templateRanges = { self: { id: 'self', short: 's', @@ -56,7 +56,11 @@ export const range = { label: 'DAGGERHEART.CONFIG.Range.far.name', description: 'DAGGERHEART.CONFIG.Range.far.description', distance: 20 - }, + } +}; + +export const range = { + ...templateRanges, veryFar: { id: 'veryFar', short: 'vf', diff --git a/module/config/settingsConfig.mjs b/module/config/settingsConfig.mjs index df3cb619..dd8aeffe 100644 --- a/module/config/settingsConfig.mjs +++ b/module/config/settingsConfig.mjs @@ -20,7 +20,6 @@ export const menu = { export const gameSettings = { Automation: 'Automation', Homebrew: 'Homebrew', - RangeMeasurement: 'RangeMeasurement', appearance: 'Appearance', variantRules: 'VariantRules', Resources: { diff --git a/module/data/settings/RangeMeasurement.mjs b/module/data/settings/RangeMeasurement.mjs deleted file mode 100644 index 552963f0..00000000 --- a/module/data/settings/RangeMeasurement.mjs +++ /dev/null @@ -1,25 +0,0 @@ -export default class DhRangeMeasurement extends foundry.abstract.DataModel { - static defineSchema() { - const fields = foundry.data.fields; - return { - enabled: new fields.BooleanField({ required: true, initial: true, label: 'DAGGERHEART.GENERAL.enabled' }), - melee: new fields.NumberField({ required: true, initial: 5, label: 'DAGGERHEART.CONFIG.Range.melee.name' }), - veryClose: new fields.NumberField({ - required: true, - initial: 15, - label: 'DAGGERHEART.CONFIG.Range.veryClose.name' - }), - close: new fields.NumberField({ - required: true, - initial: 30, - label: 'DAGGERHEART.CONFIG.Range.close.name' - }), - far: new fields.NumberField({ required: true, initial: 60, label: 'DAGGERHEART.CONFIG.Range.far.name' }), - veryFar: new fields.NumberField({ - required: true, - initial: 120, - label: 'DAGGERHEART.CONFIG.Range.veryFar.name' - }) - }; - } -} diff --git a/module/data/settings/VariantRules.mjs b/module/data/settings/VariantRules.mjs index 4428ae75..ad7d707a 100644 --- a/module/data/settings/VariantRules.mjs +++ b/module/data/settings/VariantRules.mjs @@ -17,9 +17,28 @@ export default class DhVariantRules extends foundry.abstract.DataModel { label: 'DAGGERHEART.SETTINGS.VariantRules.FIELDS.actionTokens.tokens.label' }) }), - useCoins: new fields.BooleanField({ - initial: false, - label: 'DAGGERHEART.SETTINGS.VariantRules.FIELDS.useCoins.label' + rangeMeasurement: new fields.SchemaField({ + enabled: new fields.BooleanField({ + required: true, + initial: true, + label: 'DAGGERHEART.GENERAL.enabled' + }), + melee: new fields.NumberField({ + required: true, + initial: 5, + label: 'DAGGERHEART.CONFIG.Range.melee.name' + }), + veryClose: new fields.NumberField({ + required: true, + initial: 15, + label: 'DAGGERHEART.CONFIG.Range.veryClose.name' + }), + close: new fields.NumberField({ + required: true, + initial: 30, + label: 'DAGGERHEART.CONFIG.Range.close.name' + }), + far: new fields.NumberField({ required: true, initial: 60, label: 'DAGGERHEART.CONFIG.Range.far.name' }) }) }; } diff --git a/module/data/settings/_module.mjs b/module/data/settings/_module.mjs index 032974a9..db1fbfec 100644 --- a/module/data/settings/_module.mjs +++ b/module/data/settings/_module.mjs @@ -1,5 +1,4 @@ export { default as DhAppearance } from './Appearance.mjs'; export { default as DhAutomation } from './Automation.mjs'; export { default as DhHomebrew } from './Homebrew.mjs'; -export { default as DhRangeMeasurement } from './RangeMeasurement.mjs'; export { default as DhVariantRules } from './VariantRules.mjs'; diff --git a/module/enrichers/TemplateEnricher.mjs b/module/enrichers/TemplateEnricher.mjs index 7f45b266..93dd6b96 100644 --- a/module/enrichers/TemplateEnricher.mjs +++ b/module/enrichers/TemplateEnricher.mjs @@ -1,5 +1,3 @@ -import { range as configRange } from '../config/generalConfig.mjs'; - export default function DhTemplateEnricher(match, _options) { const parts = match[1].split('|').map(x => x.trim()); @@ -17,7 +15,7 @@ export default function DhTemplateEnricher(match, _options) { type = matchedType; break; case 'range': - const matchedRange = Object.values(configRange).find( + const matchedRange = Object.values(CONFIG.DH.GENERAL.templateRanges).find( x => x.id.toLowerCase() === split[1] || x.short === split[1] ); range = matchedRange?.id; @@ -55,7 +53,9 @@ export const renderMeasuredTemplate = async event => { ? '180' : undefined; - const baseDistance = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.RangeMeasurement)[range]; + const baseDistance = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement[ + range + ]; const distance = type === CONFIG.DH.GENERAL.templateTypes.EMANATION ? baseDistance + 2.5 : baseDistance; const { width, height } = game.canvas.scene.dimensions; diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 89088dad..7b588fc7 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -313,8 +313,10 @@ export const itemAbleRollParse = (value, actor, item) => { const isItemTarget = value.toLowerCase().includes('item.@'); const slicedValue = isItemTarget ? value.replaceAll(/item\.@/gi, '@') : value; + const model = isItemTarget ? item : actor; + try { - return Roll.replaceFormulaData(slicedValue, isItemTarget ? item : actor); + return Roll.replaceFormulaData(slicedValue, model?.getRollData?.() ?? model); } catch (_) { return ''; } diff --git a/module/systemRegistration/settings.mjs b/module/systemRegistration/settings.mjs index fea12acd..d100bcc0 100644 --- a/module/systemRegistration/settings.mjs +++ b/module/systemRegistration/settings.mjs @@ -1,17 +1,10 @@ import { defaultLevelTiers, DhLevelTiers } from '../data/levelTier.mjs'; import DhCountdowns from '../data/countdowns.mjs'; -import { - DhAppearance, - DhAutomation, - DhHomebrew, - DhRangeMeasurement, - DhVariantRules -} from '../data/settings/_module.mjs'; +import { DhAppearance, DhAutomation, DhHomebrew, DhVariantRules } from '../data/settings/_module.mjs'; import { DhAppearanceSettings, DhAutomationSettings, DhHomebrewSettings, - DhRangeMeasurementSettings, DhVariantRuleSettings } from '../applications/settings/_module.mjs'; @@ -58,12 +51,6 @@ const registerMenuSettings = () => { } } }); - - game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.RangeMeasurement, { - scope: 'world', - config: false, - type: DhRangeMeasurement - }); }; const registerMenus = () => { @@ -83,14 +70,6 @@ const registerMenus = () => { type: DhHomebrewSettings, restricted: true }); - game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.menu.Range.Name, { - name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.range.name'), - label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.range.label'), - hint: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.range.hint'), - icon: CONFIG.DH.SETTINGS.menu.Range.Icon, - type: DhRangeMeasurementSettings, - restricted: true - }); game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance, { name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.appearance.title'), diff --git a/templates/settings/range-measurement-settings.hbs b/templates/settings/range-measurement-settings.hbs deleted file mode 100644 index 617d1899..00000000 --- a/templates/settings/range-measurement-settings.hbs +++ /dev/null @@ -1,25 +0,0 @@ -
-
-

{{localize 'DAGGERHEART.SETTINGS.Menu.range.name'}}

-
-
- {{formGroup settingFields.schema.fields.enabled value=settingFields._source.enabled localize=true}} - {{formGroup settingFields.schema.fields.melee value=settingFields._source.melee localize=true}} - {{formGroup settingFields.schema.fields.veryClose value=settingFields._source.veryClose localize=true}} - {{formGroup settingFields.schema.fields.close value=settingFields._source.close localize=true}} - {{formGroup settingFields.schema.fields.far value=settingFields._source.far localize=true}} - {{formGroup settingFields.schema.fields.veryFar value=settingFields._source.veryFar localize=true}} -
- - -
- \ No newline at end of file diff --git a/templates/settings/variant-rules.hbs b/templates/settings/variant-rules.hbs index 75a5534b..03027f69 100644 --- a/templates/settings/variant-rules.hbs +++ b/templates/settings/variant-rules.hbs @@ -3,6 +3,17 @@

{{localize 'DAGGERHEART.SETTINGS.Menu.variantRules.name'}}

+
+ {{localize 'DAGGERHEART.SETTINGS.Menu.range.name'}} + + {{formGroup settingFields.schema.fields.rangeMeasurement.fields.enabled value=settingFields._source.rangeMeasurement.enabled localize=true}} + {{formGroup settingFields.schema.fields.rangeMeasurement.fields.melee value=settingFields._source.rangeMeasurement.melee localize=true}} + {{formGroup settingFields.schema.fields.rangeMeasurement.fields.veryClose value=settingFields._source.rangeMeasurement.veryClose localize=true}} + {{formGroup settingFields.schema.fields.rangeMeasurement.fields.close value=settingFields._source.rangeMeasurement.close localize=true}} + {{formGroup settingFields.schema.fields.rangeMeasurement.fields.far value=settingFields._source.rangeMeasurement.far localize=true}} + {{formGroup settingFields.schema.fields.rangeMeasurement.fields.veryFar value=settingFields._source.rangeMeasurement.veryFar localize=true}} +
+
@@ -12,8 +23,6 @@
- {{formGroup settingFields.schema.fields.useCoins value=settingFields._source.useCoins localize=true }} -