Check item validity when creating on an actor

This commit is contained in:
Carlos Fernandez 2025-12-02 05:16:56 -05:00
parent 11fbb4cce8
commit 4aca29d6c2
5 changed files with 23 additions and 0 deletions

View file

@ -141,6 +141,10 @@ export default class DhpAdversary extends BaseDataActor {
return this.parent.items.filter(x => x.type === 'feature');
}
isItemValid(source) {
return source.type === "feature";
}
async _preUpdate(changes, options, user) {
const allowed = await super._preUpdate(changes, options, user);
if (allowed === false) return false;

View file

@ -108,6 +108,10 @@ export default class DhCompanion extends BaseDataActor {
get proficiency() {
return this.partner?.system?.proficiency ?? 1;
}
isItemValid() {
return false;
}
prepareBaseData() {
this.attack.roll.bonus = this.partner?.system?.spellcastModifier ?? 0;

View file

@ -51,4 +51,8 @@ export default class DhEnvironment extends BaseDataActor {
get features() {
return this.parent.items.filter(x => x.type === 'feature');
}
isItemValid(source) {
return source.type === "feature";
}
}

View file

@ -25,6 +25,10 @@ export default class DhParty extends BaseDataActor {
/* -------------------------------------------- */
isItemValid(source) {
return ["weapon", "armor", "consumable", "loot"].includes(source.type);
}
prepareBaseData() {
super.prepareBaseData();

View file

@ -28,6 +28,13 @@ export default class DHItem extends foundry.documents.Item {
return doc;
}
static async createDocuments(sources, operation) {
// Ensure that items being created are valid to the actor its being added to
const actor = operation.parent;
sources = actor?.system?.isItemValid ? sources.filter((s) => actor.system.isItemValid(s)) : sources;
return super.createDocuments(sources, operation);
}
/* -------------------------------------------- */
/** @inheritDoc */