[Fix] Levelup/Delevel fixes (#1342)

* .

* .
This commit is contained in:
WBHarry 2025-11-26 02:42:42 +01:00 committed by GitHub
parent 44b805d0df
commit cd5b8e9c75
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 9 deletions

View file

@ -58,7 +58,7 @@ export default class DaggerheartMenu extends HandlebarsApplicationMixin(Abstract
if (['character', 'adversary'].includes(actor.type) && actor.prototypeToken.actorLink) { if (['character', 'adversary'].includes(actor.type) && actor.prototypeToken.actorLink) {
const updates = {}; const updates = {};
for (let item of actor.items) { for (let item of actor.items) {
if (item.system.metadata.hasResource && types.includes(item.system.resource?.recovery)) { if (item.system.metadata?.hasResource && types.includes(item.system.resource?.recovery)) {
if (!refreshedActors[actor.id]) if (!refreshedActors[actor.id])
refreshedActors[actor.id] = { name: actor.name, img: actor.img, refreshed: new Set() }; refreshedActors[actor.id] = { name: actor.name, img: actor.img, refreshed: new Set() };
refreshedActors[actor.id].refreshed.add( refreshedActors[actor.id].refreshed.add(
@ -76,7 +76,7 @@ export default class DaggerheartMenu extends HandlebarsApplicationMixin(Abstract
: Roll.replaceFormulaData(item.system.resource.max, actor.getRollData()) : Roll.replaceFormulaData(item.system.resource.max, actor.getRollData())
}; };
} }
if (item.system.metadata.hasActions) { if (item.system.metadata?.hasActions) {
const refreshTypes = new Set(); const refreshTypes = new Set();
const actions = item.system.actions.filter(action => { const actions = item.system.actions.filter(action => {
if (types.includes(action.uses.recovery)) { if (types.includes(action.uses.recovery)) {

View file

@ -204,7 +204,7 @@ export default class DhpActor extends Actor {
for (let domainCard of domainCards) { for (let domainCard of domainCards) {
const itemCard = this.items.find(x => x.uuid === domainCard); const itemCard = this.items.find(x => x.uuid === domainCard);
itemCard.delete(); itemCard?.delete();
} }
} }
@ -337,6 +337,8 @@ export default class DhpActor extends Actor {
const embeddedItem = await this.createEmbeddedDocuments('Item', [ const embeddedItem = await this.createEmbeddedDocuments('Item', [
{ {
...multiclassData, ...multiclassData,
uuid: multiclassItem.uuid,
_stats: multiclassItem._stats,
system: { system: {
...multiclassData.system, ...multiclassData.system,
features: multiclassData.system.features.filter(x => x.type !== 'hope'), features: multiclassData.system.features.filter(x => x.type !== 'hope'),
@ -349,6 +351,8 @@ export default class DhpActor extends Actor {
await this.createEmbeddedDocuments('Item', [ await this.createEmbeddedDocuments('Item', [
{ {
...subclassData, ...subclassData,
uuid: subclassItem.uuid,
_stats: subclassItem._stats,
system: { system: {
...subclassData.system, ...subclassData.system,
isMulticlass: true isMulticlass: true
@ -363,12 +367,15 @@ export default class DhpActor extends Actor {
for (var domainCard of domainCards) { for (var domainCard of domainCards) {
if (levelupAuto) { if (levelupAuto) {
const itemData = (await foundry.utils.fromUuid(domainCard.data[0])).toObject(); const cardItem = await foundry.utils.fromUuid(domainCard.data[0]);
const cardData = cardItem.toObject();
const embeddedItem = await this.createEmbeddedDocuments('Item', [ const embeddedItem = await this.createEmbeddedDocuments('Item', [
{ {
...itemData, ...cardData,
uuid: cardItem.uuid,
_stats: cardItem._stats,
system: { system: {
...itemData.system, ...cardData.system,
inVault: true inVault: true
} }
} }
@ -382,12 +389,15 @@ export default class DhpActor extends Actor {
const achievementDomainCards = []; const achievementDomainCards = [];
if (levelupAuto) { if (levelupAuto) {
for (var card of Object.values(level.achievements.domainCards)) { for (var card of Object.values(level.achievements.domainCards)) {
const itemData = (await foundry.utils.fromUuid(card.uuid)).toObject(); const cardItem = await foundry.utils.fromUuid(card.uuid);
const cardData = cardItem.toObject();
const embeddedItem = await this.createEmbeddedDocuments('Item', [ const embeddedItem = await this.createEmbeddedDocuments('Item', [
{ {
...itemData, ...cardData,
uuid: cardItem.uuid,
_stats: cardItem._stats,
system: { system: {
...itemData.system, ...cardData.system,
inVault: true inVault: true
} }
} }