mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-18 16:09:03 +01:00
Added migration for existing actor features
This commit is contained in:
parent
9b332c3681
commit
672a7dd999
3 changed files with 35 additions and 3 deletions
|
|
@ -444,7 +444,8 @@ export default class DhCharacter extends BaseDataActor {
|
|||
} else if (item.system.originItemType === CONFIG.DH.ITEM.featureTypes.subclass.id) {
|
||||
if (this.class.subclass) {
|
||||
const prop = item.system.multiclassOrigin ? 'multiclass' : 'class';
|
||||
const subclassState = this[prop].subclass.system.featureState;
|
||||
const subclassState = this[prop].subclass?.system?.featureState;
|
||||
if (!subclassState) continue;
|
||||
|
||||
if (
|
||||
item.system.identifier === CONFIG.DH.ITEM.featureSubTypes.foundation ||
|
||||
|
|
|
|||
|
|
@ -102,6 +102,15 @@ export default class DHClass extends BaseDataItem {
|
|||
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) {
|
||||
const allowed = await super._preUpdate(changed, options, userId);
|
||||
if (allowed === false) return false;
|
||||
|
|
|
|||
|
|
@ -37,14 +37,36 @@ export async function runMigrations() {
|
|||
|
||||
if (foundry.utils.isNewerVersion('1.1.1', lastMigrationVersion)) {
|
||||
const compendiumClasses = [];
|
||||
const compendiumActors = [];
|
||||
for (let pack of game.packs) {
|
||||
const documents = await pack.getDocuments();
|
||||
compendiumClasses.push(...documents.filter(x => x.type === 'class'));
|
||||
compendiumActors.push(...documents.filter(x => x.type === 'character'));
|
||||
}
|
||||
|
||||
for (let classVal of [...compendiumClasses, ...game.items]) {
|
||||
if (classVal.type !== 'class') continue;
|
||||
[...compendiumActors, ...game.actors.filter(x => x.type === 'character')].forEach(char => {
|
||||
const multiclass = char.items.find(x => x.type === 'class' && x.system.isMulticlass);
|
||||
const multiclassSubclass = multiclass.system.subclasses.length > 0 ? multiclass.system.subclasses[0] : null;
|
||||
char.items.forEach(item => {
|
||||
if (item.type === 'feature' && item.system.identifier === 'multiclass') {
|
||||
const base = item.system.originItemType === 'class' ? multiclass : multiclassSubclass;
|
||||
if (base) {
|
||||
const baseFeature = base.system.features.find(x => x.item.name === item.name);
|
||||
if (baseFeature) {
|
||||
item.update({
|
||||
system: {
|
||||
multiclassOrigin: true,
|
||||
identifier: baseFeature.type
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const worldClasses = game.items.filter(x => x.type === 'class');
|
||||
for (let classVal of [...compendiumClasses, ...worldClasses]) {
|
||||
for (let subclass of classVal.system.subclasses) {
|
||||
await subclass.update({ 'system.linkedClass': classVal.uuid });
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue