From 192c739a583b6951cec309dc1cb1f4615d96fef5 Mon Sep 17 00:00:00 2001 From: Dapoolp Date: Thu, 24 Jul 2025 23:48:05 +0200 Subject: [PATCH] Fixes --- module/data/action/baseAction.mjs | 2 +- module/data/action/damageAction.mjs | 2 +- module/data/actor/companion.mjs | 4 ++-- module/data/fields/action/rangeField.mjs | 4 +++- module/data/fields/action/targetField.mjs | 3 ++- module/data/item/armor.mjs | 6 +++--- module/data/item/base.mjs | 5 +++++ module/data/item/consumable.mjs | 6 +++--- module/data/item/domainCard.mjs | 6 +++--- module/data/item/feature.mjs | 6 +++--- module/data/item/miscellaneous.mjs | 7 +++---- module/data/item/weapon.mjs | 9 ++++----- module/documents/item.mjs | 4 ++-- 13 files changed, 35 insertions(+), 29 deletions(-) diff --git a/module/data/action/baseAction.mjs b/module/data/action/baseAction.mjs index 86f8cef2..7300d4ef 100644 --- a/module/data/action/baseAction.mjs +++ b/module/data/action/baseAction.mjs @@ -171,7 +171,7 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel hasEffect: !!this.effects?.length, hasSave: this.hasSave, selectedRollMode: game.settings.get('core', 'rollMode'), - isFastForward: event.shiftKey || (!this.hasRoll && !this.hasSave), + isFastForward: event.shiftKey, data: this.getRollData() }; } diff --git a/module/data/action/damageAction.mjs b/module/data/action/damageAction.mjs index 422745ec..cb813114 100644 --- a/module/data/action/damageAction.mjs +++ b/module/data/action/damageAction.mjs @@ -49,7 +49,7 @@ export default class DHDamageAction extends DHBaseAction { const config = { title: game.i18n.format('DAGGERHEART.UI.Chat.damageRoll.title', { damage: game.i18n.localize(this.name) }), roll: formulas, - targets: systemData.targets.filter(t => t.hit) ?? data.targets, + targets: systemData.targets?.filter(t => t.hit) ?? data.targets, hasSave: this.hasSave, isCritical: systemData.roll?.isCritical ?? false, source: systemData.source, diff --git a/module/data/actor/companion.mjs b/module/data/actor/companion.mjs index 8b197b11..9dfc029b 100644 --- a/module/data/actor/companion.mjs +++ b/module/data/actor/companion.mjs @@ -1,7 +1,7 @@ import BaseDataActor from './base.mjs'; import DhLevelData from '../levelData.mjs'; import ForeignDocumentUUIDField from '../fields/foreignDocumentUUIDField.mjs'; -import { ActionField } from '../fields/actionField.mjs'; +import { ActionField, ActionsField } from '../fields/actionField.mjs'; import { adjustDice, adjustRange } from '../../helpers/utils.mjs'; import DHCompanionSettings from '../../applications/sheets-configs/companion-settings.mjs'; import { resourceField, bonusField } from '../fields/actorField.mjs'; @@ -76,7 +76,7 @@ export default class DhCompanion extends BaseDataActor { } } }), - actions: new fields.ArrayField(new ActionField()), + actions: new ActionsField(), levelData: new fields.EmbeddedDataField(DhLevelData), bonuses: new fields.SchemaField({ damage: new fields.SchemaField({ diff --git a/module/data/fields/action/rangeField.mjs b/module/data/fields/action/rangeField.mjs index 111b6da0..30469efa 100644 --- a/module/data/fields/action/rangeField.mjs +++ b/module/data/fields/action/rangeField.mjs @@ -10,5 +10,7 @@ export default class RangeField extends fields.StringField { super(options, context); } - static prepareConfig(config) {} + static prepareConfig(config) { + return true; + } } \ No newline at end of file diff --git a/module/data/fields/action/targetField.mjs b/module/data/fields/action/targetField.mjs index 18876c54..647cf51c 100644 --- a/module/data/fields/action/targetField.mjs +++ b/module/data/fields/action/targetField.mjs @@ -32,7 +32,8 @@ export default class TargetField extends fields.SchemaField { } static checkTargets(amount, targets) { - return !amount || (targets.length > amount); + return true + // return !amount || (targets.length > amount); } static isTargetFriendly(target) { diff --git a/module/data/item/armor.mjs b/module/data/item/armor.mjs index 625e3e1b..2639ae1e 100644 --- a/module/data/item/armor.mjs +++ b/module/data/item/armor.mjs @@ -9,7 +9,8 @@ export default class DHArmor extends AttachableItem { label: 'TYPES.Item.armor', type: 'armor', hasDescription: true, - isInventoryItem: true + isInventoryItem: true, + hasActions: true }); } @@ -38,8 +39,7 @@ export default class DHArmor extends AttachableItem { baseThresholds: new fields.SchemaField({ major: new fields.NumberField({ integer: true, initial: 0 }), severe: new fields.NumberField({ integer: true, initial: 0 }) - }), - actions: new ActionsField() + }) }; } diff --git a/module/data/item/base.mjs b/module/data/item/base.mjs index 24e5e0cc..ae26f0ab 100644 --- a/module/data/item/base.mjs +++ b/module/data/item/base.mjs @@ -8,6 +8,8 @@ * @property {boolean} isInventoryItem- Indicates whether items of this type is a Inventory Item */ +import { ActionsField } from "../fields/actionField.mjs"; + const fields = foundry.data.fields; export default class BaseDataItem extends foundry.abstract.TypeDataModel { @@ -69,6 +71,9 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel { if (this.metadata.isQuantifiable) schema.quantity = new fields.NumberField({ integer: true, initial: 1, min: 0, required: true }); + if (this.metadata.hasActions) + schema.actions = new ActionsField() + return schema; } diff --git a/module/data/item/consumable.mjs b/module/data/item/consumable.mjs index 8c3c0dae..cd192dfe 100644 --- a/module/data/item/consumable.mjs +++ b/module/data/item/consumable.mjs @@ -9,7 +9,8 @@ export default class DHConsumable extends BaseDataItem { type: 'consumable', hasDescription: true, isQuantifiable: true, - isInventoryItem: true + isInventoryItem: true, + hasActions: true }); } @@ -18,8 +19,7 @@ export default class DHConsumable extends BaseDataItem { const fields = foundry.data.fields; return { ...super.defineSchema(), - consumeOnUse: new fields.BooleanField({ initial: false }), - actions: new fields.ArrayField(new ActionField()) + consumeOnUse: new fields.BooleanField({ initial: false }) }; } } diff --git a/module/data/item/domainCard.mjs b/module/data/item/domainCard.mjs index 1ecc167f..d366b7a0 100644 --- a/module/data/item/domainCard.mjs +++ b/module/data/item/domainCard.mjs @@ -8,7 +8,8 @@ export default class DHDomainCard extends BaseDataItem { label: 'TYPES.Item.domainCard', type: 'domainCard', hasDescription: true, - hasResource: true + hasResource: true, + hasActions: true }); } @@ -29,8 +30,7 @@ export default class DHDomainCard extends BaseDataItem { required: true, initial: CONFIG.DH.DOMAIN.cardTypes.ability.id }), - inVault: new fields.BooleanField({ initial: false }), - actions: new fields.ArrayField(new ActionField()) + inVault: new fields.BooleanField({ initial: false }) }; } diff --git a/module/data/item/feature.mjs b/module/data/item/feature.mjs index 9507282a..93a2c0bd 100644 --- a/module/data/item/feature.mjs +++ b/module/data/item/feature.mjs @@ -8,7 +8,8 @@ export default class DHFeature extends BaseDataItem { label: 'TYPES.Item.feature', type: 'feature', hasDescription: true, - hasResource: true + hasResource: true, + hasActions: true }); } @@ -24,8 +25,7 @@ export default class DHFeature extends BaseDataItem { }), subType: new fields.StringField({ choices: CONFIG.DH.ITEM.featureSubTypes, nullable: true, initial: null }), originId: new fields.StringField({ nullable: true, initial: null }), - identifier: new fields.StringField(), - actions: new ActionsField() + identifier: new fields.StringField() }; } diff --git a/module/data/item/miscellaneous.mjs b/module/data/item/miscellaneous.mjs index bdf608c6..c40ac60b 100644 --- a/module/data/item/miscellaneous.mjs +++ b/module/data/item/miscellaneous.mjs @@ -9,16 +9,15 @@ export default class DHMiscellaneous extends BaseDataItem { type: 'miscellaneous', hasDescription: true, isQuantifiable: true, - isInventoryItem: true + isInventoryItem: true, + hasActions: true }); } /** @inheritDoc */ static defineSchema() { - const fields = foundry.data.fields; return { - ...super.defineSchema(), - actions: new fields.ArrayField(new ActionField()) + ...super.defineSchema() }; } } diff --git a/module/data/item/weapon.mjs b/module/data/item/weapon.mjs index f9e2ae1a..71d1e08d 100644 --- a/module/data/item/weapon.mjs +++ b/module/data/item/weapon.mjs @@ -8,8 +8,8 @@ export default class DHWeapon extends AttachableItem { label: 'TYPES.Item.weapon', type: 'weapon', hasDescription: true, - isInventoryItem: true - // hasInitialAction: true + isInventoryItem: true, + hasActions: true }); } @@ -63,13 +63,12 @@ export default class DHWeapon extends AttachableItem { ] } } - }), - actions: new ActionsField() + }) }; } get actionsList() { - return new Set([this.attack, ...this.actions]); + return [this.attack, ...this.actions]; } get customActions() { diff --git a/module/documents/item.mjs b/module/documents/item.mjs index a3cf8116..4bad4fdc 100644 --- a/module/documents/item.mjs +++ b/module/documents/item.mjs @@ -123,9 +123,9 @@ export default class DHItem extends foundry.documents.Item { } async use(event) { - const actions = this.system.actionsList; + const actions = new Set(this.system.actionsList); if (actions?.size) { - let action = actions.first(0); + let action = actions.first(); if (actions.size > 1 && !event?.shiftKey) { // Actions Choice Dialog action = await this.selectActionDialog(event);