diff --git a/CHANGELOG.md b/CHANGELOG.md index 215dfbb..232d228 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changes by version number +### 0.11.5 + +Fixes + +- Addressed an incompatibility with a recent version of the module "Dynamic effects using Active Effects (DAE)" + ### 0.11.4 Fixes diff --git a/module.json b/module.json index 89718f6..81195a4 100644 --- a/module.json +++ b/module.json @@ -7,7 +7,7 @@ "name": "Tero Parvinen (tero.p)" } ], - "version": "0.11.4", + "version": "0.11.5", "compatibility": { "minimum": 11, "verified": 11 diff --git a/module/hooks.js b/module/hooks.js index 877bc00..b6052db 100644 --- a/module/hooks.js +++ b/module/hooks.js @@ -152,7 +152,7 @@ export function initHooks() { "flags.wire.isMasterEffect": true }); } - if (data.flags.wire?.rollEffects && !data.flags.wire?.changesRolled) { + if (data.flags?.wire?.rollEffects && !data.flags?.wire?.changesRolled) { const { changes, rolls } = rollChangeValues(substituteEffectConfig(effect.parent, null, null, copyEffectChanges(data)), effect.flags.wire?.rollEffects); effect.updateSource({ changes, @@ -162,6 +162,15 @@ export function initHooks() { } }); + Hooks.on("preUpdateActiveEffect", (effect, changes, options) => { + const conditions = changes.flags?.wire?.conditions; + if (conditions) { + foundry.utils.setProperty(changes, "flags.wire.conditions", Object.values(conditions)); + } else { + foundry.utils.setProperty(changes, "flags.wire.conditions", []); + } + }); + Hooks.on("createActiveEffect", async (effect, options, user) => { if (user === game.user.id && effect.flags.wire?.wasTransferred && isEffectEnabled(effect) && isActorEffect(effect) && getActorToken(effect.parent)) { await triggerTransferEffect(effect); diff --git a/module/injections/active-effect-sheet.js b/module/injections/active-effect-sheet.js index 6cbf803..c0a0853 100644 --- a/module/injections/active-effect-sheet.js +++ b/module/injections/active-effect-sheet.js @@ -94,32 +94,5 @@ export function initActiveEffectSheetHooks() { `; html.find('section[data-tab="duration"] .form-group').last().after(durationFields); }); -} -export function setupActiveEffectSheetWrappers() { - if (typeof DAE !== "undefined") { - libWrapper.register("wire", "DAE.DAEActiveEffectConfig.prototype._getSubmitData", onItemSubmit, "MIXED"); - } else { - libWrapper.register("wire", "ActiveEffectConfig.prototype._getSubmitData", onItemSubmit, "MIXED"); - } } - -function onItemSubmit(wrapped, updateData) { - const submitData = wrapped(updateData); - - // Create the expanded update data object - const fd = new FormDataExtended(this.form, {editors: this.editors}); - let data = fd.object; - if ( updateData ) data = mergeObject(data, updateData); - else data = expandObject(data); - - const conditions = data.flags?.wire?.conditions; - if (conditions) { - submitData['flags.wire.conditions'] = Object.values(conditions); - } else { - submitData['flags.wire.conditions'] = []; - } - - return submitData; -} - diff --git a/module/wire.js b/module/wire.js index ff43fd5..fcada17 100644 --- a/module/wire.js +++ b/module/wire.js @@ -7,7 +7,7 @@ import { DamageCard, declareDamage, declareHealing } from "./cards/damage-card.j import { initEffectFlagHooks, setupRollFlagWrappers } from "./game/effect-flags.js"; import { registerHandlebarsHelpers } from "./handlebars.js"; import { initHooks } from "./hooks.js"; -import { initActiveEffectSheetHooks, setupActiveEffectSheetWrappers } from "./injections/active-effect-sheet.js"; +import { initActiveEffectSheetHooks } from "./injections/active-effect-sheet.js"; import { readyCharacterSheetWrappers } from "./injections/character-sheet.js"; import { initItemSheetHooks, setupItemSheetWrappers } from "./injections/item-sheet.js"; import { setupKeybindings } from "./keybindings.js"; @@ -72,7 +72,6 @@ Hooks.once("init", () => { Hooks.once("setup", () => { setupWrappers(); setupItemSheetWrappers(); - setupActiveEffectSheetWrappers(); setupRollFlagWrappers(); setupTemplateWrappers(); setupSocket();