mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-18 16:09:03 +01:00
Fixed up dice
This commit is contained in:
parent
e37fc83c59
commit
132d9ee6c8
20 changed files with 417 additions and 68 deletions
|
|
@ -39,6 +39,10 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel {
|
|||
if (this.metadata.hasResource) {
|
||||
schema.resource = new fields.SchemaField(
|
||||
{
|
||||
type: new fields.StringField({
|
||||
choices: CONFIG.DH.ITEM.itemResourceTypes,
|
||||
initial: CONFIG.DH.ITEM.itemResourceTypes.simple
|
||||
}),
|
||||
value: new fields.NumberField({ integer: true, min: 0, initial: 0 }),
|
||||
max: new fields.NumberField({ nullable: true, initial: null }),
|
||||
icon: new fields.StringField(),
|
||||
|
|
@ -46,7 +50,14 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel {
|
|||
choices: CONFIG.DH.GENERAL.refreshTypes,
|
||||
initial: null,
|
||||
nullable: true
|
||||
})
|
||||
}),
|
||||
diceStates: new fields.TypedObjectField(
|
||||
new fields.SchemaField({
|
||||
value: new fields.NumberField({ integer: true, nullable: true, initial: null }),
|
||||
used: new fields.BooleanField({ initial: false })
|
||||
})
|
||||
),
|
||||
dieFaces: new fields.StringField({ initial: '4' })
|
||||
},
|
||||
{ nullable: true, initial: null }
|
||||
);
|
||||
|
|
@ -81,7 +92,6 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel {
|
|||
return data;
|
||||
}
|
||||
|
||||
/**@inheritdoc */
|
||||
async _preCreate(data, options, user) {
|
||||
// Skip if no initial action is required or actions already exist
|
||||
if (!this.metadata.hasInitialAction || !foundry.utils.isEmpty(this.actions)) return;
|
||||
|
|
@ -122,6 +132,23 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel {
|
|||
);
|
||||
}
|
||||
|
||||
async _preUpdate(data) {
|
||||
if (data.system?.resource?.max) {
|
||||
const diceStatesKeys = Object.keys(this.resource.diceStates);
|
||||
const resourceDiff = Math.abs(data.system.resource.max - diceStatesKeys.length);
|
||||
if (!resourceDiff) return;
|
||||
|
||||
const diceStates = {};
|
||||
const deleting = data.system.resource.max < diceStatesKeys.length;
|
||||
[...Array(resourceDiff).keys()].forEach(nr => {
|
||||
const key = deleting ? diceStatesKeys.length - 1 - nr : diceStatesKeys.length + nr;
|
||||
diceStates[`${deleting ? '-=' : ''}${key}`] = deleting ? null : { value: null };
|
||||
});
|
||||
|
||||
foundry.utils.setProperty(data, 'system.resource.diceStates', diceStates);
|
||||
}
|
||||
}
|
||||
|
||||
async _preDelete() {
|
||||
if (!this.actor || this.actor.type !== 'character') return;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue