From e19d97db688ebf64e830ac889730dc6b64880d01 Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Wed, 5 Nov 2025 23:38:33 -0500 Subject: [PATCH] Re-render party when members update --- module/data/actor/party.mjs | 21 +++++++++++++++++++++ module/documents/actor.mjs | 16 ++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/module/data/actor/party.mjs b/module/data/actor/party.mjs index 3078bedd..e9199c45 100644 --- a/module/data/actor/party.mjs +++ b/module/data/actor/party.mjs @@ -24,4 +24,25 @@ export default class DhParty extends BaseDataActor { static DEFAULT_ICON = 'systems/daggerheart/assets/icons/documents/actors/dark-squad.svg'; /* -------------------------------------------- */ + + prepareBaseData() { + super.prepareBaseData(); + this.partyMembers = this.partyMembers.filter((p) => !!p); + + // Register this party to all members + if (fromUuidSync(this.parent.uuid) === this.parent) { + for (const member of this.partyMembers) { + member.parties?.add(this.parent); + } + } + } + + _onDelete(options, userId) { + super._onDelete(options, userId); + + // Clear this party from all members that aren't deleted + for (const member of this.partyMembers) { + member.parties?.delete(this.parent); + } + } } diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index b3505447..efca9f40 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -5,6 +5,8 @@ import { createScrollText, damageKeyToNumber } from '../helpers/utils.mjs'; import DhCompanionLevelUp from '../applications/levelup/companionLevelup.mjs'; export default class DhpActor extends Actor { + parties = new Set(); + #scrollTextQueue = []; #scrollTextInterval; @@ -83,6 +85,20 @@ export default class DhpActor extends Actor { this.updateSource({ prototypeToken }); } + _onUpdate(changes, options, userId) { + super._onUpdate(changes, options, userId); + for (const party of this.parties) { + party.render(); + } + } + + _onDelete(options, userId) { + super._onDelete(options, userId); + for (const party of this.parties) { + party.render(); + } + } + async updateLevel(newLevel) { if (!['character', 'companion'].includes(this.type) || newLevel === this.system.levelData.level.changed) return;