diff --git a/module/applications/characterCreation/characterCreation.mjs b/module/applications/characterCreation/characterCreation.mjs index 936bb79d..82ca9ccb 100644 --- a/module/applications/characterCreation/characterCreation.mjs +++ b/module/applications/characterCreation/characterCreation.mjs @@ -439,10 +439,13 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl 'system.domain': { key: 'system.domain', value: this.setup.class?.system.domains ?? null } }; - if (type === 'subclasses') + if (type === 'subclasses') { + const classItem = this.setup.class; + const uuid = classItem?._stats.compendiumSource ?? classItem?.uuid; presets.filter = { - 'system.linkedClass.uuid': { key: 'system.linkedClass.uuid', value: this.setup.class?.uuid } + 'system.linkedClass': { key: 'system.linkedClass', value: uuid } }; + } if (equipment.includes(type)) presets.filter = { @@ -610,7 +613,8 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl [foundry.utils.randomID()]: {} }; } else if (item.type === 'subclass' && event.target.closest('.subclass-card')) { - if (this.setup.class.system.subclasses.every(subclass => subclass.uuid !== item.uuid)) { + const classSubclasses = await this.setup.class.system.fetchSubclasses(); + if (classSubclasses.every(subclass => subclass.uuid !== item.uuid)) { ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.subclassNotInClass')); return; } diff --git a/module/applications/sheets/items/subclass.mjs b/module/applications/sheets/items/subclass.mjs index 6daf4a89..e9d8370e 100644 --- a/module/applications/sheets/items/subclass.mjs +++ b/module/applications/sheets/items/subclass.mjs @@ -62,6 +62,10 @@ export default class SubclassSheet extends DHBaseItemSheet { const uuid = item._stats.compendiumSource ?? item.uuid; if (this.document.system.linkedClass !== uuid) { await this.document.update({ 'system.linkedClass': uuid }); + // Re-render all class sheets for instant feedback + for (const app of foundry.applications.instances.values()) { + if (app.document?.type === 'class') app.render(); + } } return; } diff --git a/module/data/item/base.mjs b/module/data/item/base.mjs index aebf33bf..ba114fda 100644 --- a/module/data/item/base.mjs +++ b/module/data/item/base.mjs @@ -200,7 +200,7 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel { const features = []; for (let f of this.features) { const fBase = f.item ?? f; - const feature = fBase.system ? fBase : await foundry.utils.fromUuid(fBase.uuid); + const feature = fBase.pack ? await foundry.utils.fromUuid(fBase.uuid) : fBase; features.push( foundry.utils.mergeObject( feature.toObject(), diff --git a/module/data/item/subclass.mjs b/module/data/item/subclass.mjs index 865ac085..12d85c1e 100644 --- a/module/data/item/subclass.mjs +++ b/module/data/item/subclass.mjs @@ -83,7 +83,8 @@ export default class DHSubclass extends BaseDataItem { ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.missingClass')); return false; } - if (actorClass.system.subclasses.every(x => x.uuid !== dataUuid)) { + + if ((await actorClass.system.fetchSubclasses()).every(x => x.uuid !== dataUuid)) { ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.subclassNotInClass')); return false; }