[BUG] Feature Actions/Effects Lost On Creation (#457)

* Fixed so that features get their actions and effects

* .

* Refactor features creations

---------

Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com>
This commit is contained in:
WBHarry 2025-07-30 15:55:06 +02:00 committed by GitHub
parent 2c4d3bd4a3
commit 18fac18df3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 27 deletions

View file

@ -397,14 +397,16 @@ export default class DhCharacter extends BaseDataActor {
} else if (item.system.originItemType === CONFIG.DH.ITEM.featureTypes.class.id) { } else if (item.system.originItemType === CONFIG.DH.ITEM.featureTypes.class.id) {
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) {
const subclassState = this.class.subclass.system.featureState; if (this.class.subclass) {
const subType = item.system.subType; const subclassState = this.class.subclass.system.featureState;
if ( const subType = item.system.subType;
subType === CONFIG.DH.ITEM.featureSubTypes.foundation || if (
(subType === CONFIG.DH.ITEM.featureSubTypes.specialization && subclassState >= 2) || subType === CONFIG.DH.ITEM.featureSubTypes.foundation ||
(subType === CONFIG.DH.ITEM.featureSubTypes.mastery && subclassState >= 3) (subType === CONFIG.DH.ITEM.featureSubTypes.specialization && subclassState >= 2) ||
) { (subType === CONFIG.DH.ITEM.featureSubTypes.mastery && subclassState >= 3)
subclassFeatures.push(item); ) {
subclassFeatures.push(item);
}
} }
} else if (item.system.originItemType === CONFIG.DH.ITEM.featureTypes.companion.id) { } else if (item.system.originItemType === CONFIG.DH.ITEM.featureTypes.companion.id) {
companionFeatures.push(item); companionFeatures.push(item);

View file

@ -123,26 +123,21 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel {
this.updateSource({ actions: [action] }); this.updateSource({ actions: [action] });
} }
}
_onCreate(data, _, userId) { if (this.actor && this.actor.type === 'character' && this.features) {
if (userId !== game.user.id) return; for (let f of this.features) {
const feature = f.item ?? f;
if (!this.actor || this.actor.type !== 'character' || !this.features) return; const createData = foundry.utils.mergeObject(feature.toObject(), {
system: {
this.actor.createEmbeddedDocuments( originItemType: this.parent.type,
'Item', originId: data._id,
this.features.map(feature => ({ identifier: feature.identifier,
...(feature.item ?? feature), subType: feature.item ? feature.type : undefined
system: { }
...(feature.item?.system ?? feature.system), }, { inplace: false });
originItemType: this.parent.type, await this.actor.createEmbeddedDocuments('Item', [createData]);
originId: data._id, }
identifier: feature.identifier, }
subType: feature.item ? feature.type : undefined
}
}))
);
} }
async _preDelete() { async _preDelete() {