From e8dd38fbfa4330c18062ef771a313d58c2f89c8d Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Mon, 22 Dec 2025 07:48:03 -0500 Subject: [PATCH] [PR] [Feature] Refresh actors when a homebrew setting is changed (#1382) * Refresh actors when a homebrew setting is changed * Newline at end of file * Close open prosemirror documents during reset --- module/systemRegistration/settings.mjs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/module/systemRegistration/settings.mjs b/module/systemRegistration/settings.mjs index d08d65d1..46aa2a84 100644 --- a/module/systemRegistration/settings.mjs +++ b/module/systemRegistration/settings.mjs @@ -46,6 +46,9 @@ const registerMenuSettings = () => { if (value.maxFear) { if (ui.resources) ui.resources.render({ force: true }); } + + // Some homebrew settings may change sheets in various ways, so trigger a re-render + resetActors(); } }); @@ -140,3 +143,25 @@ const registerNonConfigSettings = () => { type: DhTagTeamRoll }); }; + +/** + * Triggers a reset and non-forced re-render on all given actors (if given) + * or all world actors and actors in all scenes to show immediate results for a changed setting. + */ +function resetActors(actors) { + actors ??= [ + game.actors.contents, + game.scenes.contents.flatMap(s => s.tokens.contents).flatMap(t => t.actor ?? []) + ].flat(); + actors = new Set(actors); + for (const actor of actors) { + for (const app of Object.values(actor.apps)) { + for (const element of app.element?.querySelectorAll('prose-mirror.active')) { + element.open = false; // This triggers a save + } + } + + actor.reset(); + actor.render(); + } +}