From d433e6a51dfb4c180018071ead6671972a516981 Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Tue, 30 Apr 2024 20:00:05 -0600 Subject: [PATCH] Prevent specific data fields from being modifiable via AEs --- module/config.mjs | 6 ++++++ module/documents/ActiveEffect/GenericActiveEffect.mjs | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/module/config.mjs b/module/config.mjs index 56a0fb4..d1fa118 100644 --- a/module/config.mjs +++ b/module/config.mjs @@ -68,6 +68,11 @@ export const itemFilters = [ `service`, ]; +export const invalidActiveEffectTargets = new Set([ + `system.uses_inventory_slot`, + `system.quantity_affects_used_capacity`, +]); + export default { stats, statDice, @@ -86,4 +91,5 @@ export default { syncDice, localizerConfig, itemFilters, + invalidActiveEffectTargets, }; diff --git a/module/documents/ActiveEffect/GenericActiveEffect.mjs b/module/documents/ActiveEffect/GenericActiveEffect.mjs index 7b3a036..47f10d3 100644 --- a/module/documents/ActiveEffect/GenericActiveEffect.mjs +++ b/module/documents/ActiveEffect/GenericActiveEffect.mjs @@ -1,3 +1,5 @@ +import { invalidActiveEffectTargets } from "../../config.mjs"; + export class DotDungeonActiveEffect extends ActiveEffect { // Invert the logic of the disabled property so it's easier to modify via @@ -6,6 +8,8 @@ export class DotDungeonActiveEffect extends ActiveEffect { set enabled(newValue) { this.disabled = !newValue }; apply(object, change) { + if (invalidActiveEffectTargets.has(change.key)) return; + change.value = change.value.replace( /@(?[\w\.]+)/gi, (...args) => {