Creating a shared method called isItemAvailable and using it in downtime

This commit is contained in:
nsalyzyn 2025-12-19 10:15:53 -07:00
parent 12d6b7fa4c
commit 459f87f24c
4 changed files with 46 additions and 40 deletions

View file

@ -194,29 +194,12 @@ export default class DhActiveEffect extends foundry.documents.ActiveEffect {
}
prepareDerivedData() {
/* Preventing subclass features from transferring to actor if they do not have the right subclass advancement */
if (this.parent?.type === 'feature') {
// TODO(nsalyzyn): Reuse this code for elsewhere
const origSubclassParent = this.parent.system.originItemType === 'subclass';
if (origSubclassParent) {
const subclass = this.parent.parent.items.find(
x =>
x.type === 'subclass' &&
x.system.isMulticlass === (this.parent.system.identifier === 'multiclass')
);
if (subclass) {
const featureState = subclass.system.featureState;
if (
(this.parent.system.identifier === CONFIG.DH.ITEM.featureSubTypes.specialization &&
featureState < 2) ||
(this.parent.system.identifier === CONFIG.DH.ITEM.featureSubTypes.mastery && featureState < 3)
) {
this.transfer = false;
}
}
/* Check for item availability such as in the case of subclass advancement. */
if (this.parent?.parent?.system?.isItemAvailable) {
if (!this.parent.parent.system.isItemAvailable(this.parent)) {
this.transfer = false
}
}
return;
}
}