[Feature] 1383 - Companion Bonus Levelups (#1565)

* Fixed so that companions can get bonus levelupchoices from their partner

* Fixed collection prep order

* Added ActiveEffects to Beastbound features

* Corrected styling

* Added migration for overleveled companions

* Raised version

* Moved migration to 1.6.0. Sillyness
This commit is contained in:
WBHarry 2026-01-25 15:21:06 +01:00 committed by GitHub
parent c42f876d4f
commit ce96ffa0a3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 551 additions and 18 deletions

View file

@ -108,7 +108,11 @@ export default class DhCompanion extends BaseDataActor {
get proficiency() {
return this.partner?.system?.proficiency ?? 1;
}
get canLevelUp() {
return this.levelupChoicesLeft > 0;
}
isItemValid() {
return false;
}
@ -147,6 +151,17 @@ export default class DhCompanion extends BaseDataActor {
}
}
prepareDerivedData() {
/* Partner Related Setup */
if (this.partner) {
this.levelData.level.changed = this.partner.system.levelData.level.current;
this.levelupChoicesLeft = Object.values(this.levelData.levelups).reduce((acc, curr) => {
acc = Math.max(acc - curr.selections.length, 0);
return acc;
}, this.partner.system.companionData.levelupChoices);
}
}
async _preUpdate(changes, options, userId) {
const allowed = await super._preUpdate(changes, options, userId);
if (allowed === false) return;
@ -162,6 +177,16 @@ export default class DhCompanion extends BaseDataActor {
changes.system.experiences[experience].core = true;
}
}
/* Force partner data prep */
if (this.partner) {
if (
changes.system?.levelData?.level?.current !== undefined &&
changes.system.levelData.level.current !== this._source.levelData.level.current
) {
this.partner.update(this.partner.toObject(), { diff: false, recursive: false });
}
}
}
async _preDelete() {