diff --git a/module/canvas/placeables/measuredTemplate.mjs b/module/canvas/placeables/measuredTemplate.mjs index e1ea79f5..e439dadc 100644 --- a/module/canvas/placeables/measuredTemplate.mjs +++ b/module/canvas/placeables/measuredTemplate.mjs @@ -18,7 +18,7 @@ export default class DhMeasuredTemplate extends foundry.canvas.placeables.Measur static getRangeLabels(distanceValue, settings) { let result = { distance: distanceValue, units: '' }; - if (!settings.enabled) return result; + if (!settings.enabled || !canvas.scene) return result; const sceneRangeMeasurement = canvas.scene.flags.daggerheart?.rangeMeasurement; const { disable, custom } = CONFIG.DH.GENERAL.sceneRangeMeasurementSetting; diff --git a/module/enrichers/TemplateEnricher.mjs b/module/enrichers/TemplateEnricher.mjs index 4bc8fdeb..74462e00 100644 --- a/module/enrichers/TemplateEnricher.mjs +++ b/module/enrichers/TemplateEnricher.mjs @@ -65,13 +65,7 @@ export const renderMeasuredTemplate = async event => { ? '180' : undefined; - let baseDistance = range; - if (Number.isNaN(Number(range))) { - 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 distance = getTemplateDistance(range, type); const { width, height } = game.canvas.scene.dimensions; const data = { @@ -86,3 +80,23 @@ export const renderMeasuredTemplate = async event => { CONFIG.ux.TemplateManager.createPreview(data); }; + +const getTemplateDistance = (range, type) => { + const rangeNumber = Number(range); + if (!Number.isNaN(rangeNumber)) return rangeNumber; + + const { custom } = CONFIG.DH.GENERAL.sceneRangeMeasurementSetting; + const sceneMeasurements = canvas.scene?.flags.daggerheart?.rangeMeasurement; + const globalMeasurements = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.variantRules + ).rangeMeasurement; + + const settings = sceneMeasurements?.setting === custom.id ? sceneMeasurements : globalMeasurements; + const baseDistance = settings[range]; + + if (type !== CONFIG.DH.GENERAL.templateTypes.EMANATION) return baseDistance; + + const emanationAddDistance = settings.melee / 2; + return baseDistance + emanationAddDistance; +};