diff --git a/module/applications/sheets-configs/activeEffectConfig.mjs b/module/applications/sheets-configs/activeEffectConfig.mjs index aa6d9d54..d6dcd499 100644 --- a/module/applications/sheets-configs/activeEffectConfig.mjs +++ b/module/applications/sheets-configs/activeEffectConfig.mjs @@ -151,12 +151,15 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac index, defaultPriority ) ?? - renderTemplate('systems/daggerheart/templates/sheets/activeEffect/change.hbs', { - change, - index, - defaultPriority, - fields - }) + foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/sheets/activeEffect/change.hbs', + { + change, + index, + defaultPriority, + fields + } + ) ); } } diff --git a/module/applications/ui/effectsDisplay.mjs b/module/applications/ui/effectsDisplay.mjs index 8c0c939c..3bc5e716 100644 --- a/module/applications/ui/effectsDisplay.mjs +++ b/module/applications/ui/effectsDisplay.mjs @@ -1,3 +1,4 @@ +import { getIconVisibleActiveEffects } from '../../helpers/utils.mjs'; import { RefreshType } from '../../systemRegistration/socket.mjs'; const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; @@ -72,7 +73,7 @@ export default class DhEffectsDisplay extends HandlebarsApplicationMixin(Applica ? game.user.character : null : canvas.tokens.controlled[0].actor; - return actor?.getActiveEffects() ?? []; + return getIconVisibleActiveEffects(actor?.getActiveEffects() ?? []); }; toggleHidden(token, focused) { diff --git a/module/canvas/placeables/token.mjs b/module/canvas/placeables/token.mjs index 7bd92226..05140d76 100644 --- a/module/canvas/placeables/token.mjs +++ b/module/canvas/placeables/token.mjs @@ -1,3 +1,4 @@ +import { getIconVisibleActiveEffects } from '../../helpers/utils.mjs'; import DhMeasuredTemplate from './measuredTemplate.mjs'; export default class DhTokenPlaceable extends foundry.canvas.placeables.Token { @@ -20,7 +21,7 @@ export default class DhTokenPlaceable extends foundry.canvas.placeables.Token { this.effects.overlay = null; // Categorize effects - const activeEffects = this.actor?.getActiveEffects() ?? []; + const activeEffects = getIconVisibleActiveEffects(Array.from(this.actor?.allApplicableEffects() ?? [])); const overlayEffect = activeEffects.findLast(e => e.img && e.getFlag?.('core', 'overlay')); // Draw effects diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 7ca2c41c..980349ba 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -500,3 +500,12 @@ export function htmlToText(html) { return tempDivElement.textContent || tempDivElement.innerText || ''; } + +export function getIconVisibleActiveEffects(effects) { + return effects.filter(effect => { + const alwaysShown = effect.showIcon === CONST.ACTIVE_EFFECT_SHOW_ICON.ALWAYS; + const conditionalShown = effect.showIcon === CONST.ACTIVE_EFFECT_SHOW_ICON.CONDITIONAL && !effect.transfer; // TODO: system specific logic + + return !effect.disabled && (alwaysShown || conditionalShown); + }); +} diff --git a/styles/less/sheets/activeEffects/activeEffects.less b/styles/less/sheets/activeEffects/activeEffects.less new file mode 100644 index 00000000..f1879463 --- /dev/null +++ b/styles/less/sheets/activeEffects/activeEffects.less @@ -0,0 +1,11 @@ +.application.sheet.daggerheart.dh-style.active-effect-config { + .tab.changes { + gap: 0; + + header { + div { + text-align: center; + } + } + } +} diff --git a/styles/less/sheets/index.less b/styles/less/sheets/index.less index 1bdb451a..e5ffbf3e 100644 --- a/styles/less/sheets/index.less +++ b/styles/less/sheets/index.less @@ -42,3 +42,5 @@ @import './rollTables/sheet.less'; @import './actions/actions.less'; + +@import './activeEffects/activeEffects.less'; diff --git a/templates/sheets/activeEffect/change.hbs b/templates/sheets/activeEffect/change.hbs index 60cb0d85..30f643b8 100644 --- a/templates/sheets/activeEffect/change.hbs +++ b/templates/sheets/activeEffect/change.hbs @@ -1,6 +1,6 @@
  • - {{formInput fields.key name=change.keyPath value=change.key}} +
    {{formInput fields.type name=change.typePath value=change.type localize=true}} @@ -12,6 +12,6 @@ {{formInput fields.priority name=change.priorityPath value=change.priority placeholder=defaultPriority}}
    - +
  • diff --git a/templates/sheets/activeEffect/changes.hbs b/templates/sheets/activeEffect/changes.hbs index 8604daf6..026ffd90 100644 --- a/templates/sheets/activeEffect/changes.hbs +++ b/templates/sheets/activeEffect/changes.hbs @@ -5,7 +5,7 @@
    {{localize "EFFECT.FIELDS.changes.element.value.label"}}
    {{localize "EFFECT.FIELDS.changes.element.priority.label"}}
    - +
      diff --git a/templates/sheets/activeEffect/details.hbs b/templates/sheets/activeEffect/details.hbs index 72e77d5e..f7e465bd 100644 --- a/templates/sheets/activeEffect/details.hbs +++ b/templates/sheets/activeEffect/details.hbs @@ -4,7 +4,12 @@ {{formGroup fields.disabled value=source.disabled rootId=rootId}} {{#if isActorEffect}} - {{formGroup fields.origin value=source.origin rootId=rootId disabled=true}} +
      + +
      + +
      +
      {{/if}} {{#if isItemEffect}}