diff --git a/src/module/actor/familiar/document.ts b/src/module/actor/familiar/document.ts index 98a09e221af..6f5eba29692 100644 --- a/src/module/actor/familiar/document.ts +++ b/src/module/actor/familiar/document.ts @@ -100,6 +100,7 @@ class FamiliarPF2e[] { return this.items.contents .filter((item) => !item.isOfType("physical")) @@ -105,7 +105,6 @@ class PartyPF2e fromUuidSync(m.uuid)) .filter((a): a is CreaturePF2e => a instanceof ActorPF2e && a.isOfType("creature")) .sort((a, b) => a.name.localeCompare(b.name, game.i18n.lang)); - for (const member of this.members) { member?.parties.add(this); } @@ -167,6 +166,8 @@ class PartyPF2e m.attributes.speed.total)); this.attributes.speed = { total: travelSpeed }; diff --git a/src/scripts/hooks/ready.ts b/src/scripts/hooks/ready.ts index 89ad26ef793..caec43b532c 100644 --- a/src/scripts/hooks/ready.ts +++ b/src/scripts/hooks/ready.ts @@ -127,16 +127,16 @@ export const Ready = { }); // Now that all game data is available, Determine what actors we need to reprepare. - // Add actors currently in an encounter, a party, and all familiars (last) + // Add actors currently in an encounter, then in a party, then all familiars, then parties + const parties = game.actors.filter((a): a is PartyPF2e => a.isOfType("party")); const actorsToReprepare = R.compact([ ...game.combats.contents.flatMap((e) => e.combatants.contents).map((c) => c.actor), - ...game.actors - .filter((a): a is PartyPF2e => a.isOfType("party")) - .flatMap((p) => p.members) - .filter((a) => !a.isOfType("familiar")), + ...parties.flatMap((p) => p.members).filter((a) => !a.isOfType("familiar")), ...game.actors.filter((a) => a.type === "familiar"), + ...parties, ]); resetActors(new Set(actorsToReprepare), { sheets: false }); + ui.actors.render(); // Show the GM the Remaster changes journal entry if they haven't seen it already. if (game.user.isGM && !game.settings.get("pf2e", "seenRemasterJournalEntry")) {