Revert "Fixed multiclass"

This reverts commit 2d20fb0df4.
This commit is contained in:
WBHarry 2025-08-23 13:20:02 +02:00
parent 2d20fb0df4
commit f76515eac1
5 changed files with 15 additions and 8 deletions

View file

@ -317,7 +317,7 @@ export default class DhCharacter extends BaseDataActor {
} }
get multiclass() { get multiclass() {
const value = this.parent.items.find(x => x.type === 'class' && x.system.isMulticlass); const value = this.parent.items.find(x => x.type === 'Class' && x.system.isMulticlass);
const subclass = this.parent.items.find(x => x.type === 'subclass' && x.system.isMulticlass); const subclass = this.parent.items.find(x => x.type === 'subclass' && x.system.isMulticlass);
return { return {
@ -443,8 +443,7 @@ export default class DhCharacter extends BaseDataActor {
classFeatures.push(item); classFeatures.push(item);
} else if (item.system.originItemType === CONFIG.DH.ITEM.featureTypes.subclass.id) { } else if (item.system.originItemType === CONFIG.DH.ITEM.featureTypes.subclass.id) {
if (this.class.subclass) { if (this.class.subclass) {
const prop = item.system.multiclassOrigin ? 'multiclass' : 'class'; const subclassState = this.class.subclass.system.featureState;
const subclassState = this[prop].subclass.system.featureState;
if ( if (
item.system.identifier === CONFIG.DH.ITEM.featureSubTypes.foundation || item.system.identifier === CONFIG.DH.ITEM.featureSubTypes.foundation ||

View file

@ -148,6 +148,7 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel {
for (let f of this.features) { for (let f of this.features) {
const fBase = f.item ?? f; const fBase = f.item ?? f;
const feature = fBase.system ? fBase : await foundry.utils.fromUuid(fBase.uuid); const feature = fBase.system ? fBase : await foundry.utils.fromUuid(fBase.uuid);
const multiclass = this.isMulticlass ? 'multiclass' : null;
features.push( features.push(
foundry.utils.mergeObject( foundry.utils.mergeObject(
feature.toObject(), feature.toObject(),
@ -155,8 +156,7 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel {
_stats: { compendiumSource: fBase.uuid }, _stats: { compendiumSource: fBase.uuid },
system: { system: {
originItemType: this.parent.type, originItemType: this.parent.type,
identifier: f.item ? f.type : null, identifier: multiclass ?? (f.item ? f.type : null)
multiclassOrigin: this.isMulticlass
} }
}, },
{ inplace: false } { inplace: false }

View file

@ -102,6 +102,15 @@ export default class DHClass extends BaseDataItem {
if (allowed === false) return; if (allowed === false) return;
} }
_onDelete(options, userId) {
super._onDelete(options, userId);
if (options.parent?.type === 'character') {
const path = `system.${this.isMulticlass ? 'multiclass' : 'class'}`;
foundry.utils.getProperty(options.parent, `${path}.subclass`)?.delete();
}
}
async _preUpdate(changed, options, userId) { async _preUpdate(changed, options, userId) {
const allowed = await super._preUpdate(changed, options, userId); const allowed = await super._preUpdate(changed, options, userId);
if (allowed === false) return false; if (allowed === false) return false;

View file

@ -29,7 +29,6 @@ export default class DHFeature extends BaseDataItem {
nullable: true, nullable: true,
initial: null initial: null
}), }),
multiclassOrigin: new fields.BooleanField({ initial: false }),
identifier: new fields.StringField() identifier: new fields.StringField()
}; };
} }

View file

@ -164,10 +164,10 @@ export default class DhpActor extends Actor {
if (multiclass) { if (multiclass) {
const multiclassItem = this.items.find(x => x.uuid === multiclass.itemUuid); const multiclassItem = this.items.find(x => x.uuid === multiclass.itemUuid);
const multiclassFeatures = this.items.filter( const multiclassFeatures = this.items.filter(
x => x.system.originItemType === 'class' && x.system.multiclassOrigin x => x.system.originItemType === 'class' && x.system.identifier === 'multiclass'
); );
const subclassFeatures = this.items.filter( const subclassFeatures = this.items.filter(
x => x.system.originItemType === 'subclass' && x.system.multiclassOrigin x => x.system.originItemType === 'subclass' && x.system.identifier === 'multiclass'
); );
this.deleteEmbeddedDocuments( this.deleteEmbeddedDocuments(