mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-12 03:31:07 +01:00
* Initial datamodel * Fixed attack * Temp * Fixed normal levelup * Fixed showing summary of new experiences * Touchups * level sync fixes * Reworked Action storage * Companions now take stress when damaged * Fixed Feature flow * Removed retroactive companion levelup * Restored delevel on partner removal * PR fixes * Added a check for card duplicates on character
61 lines
3.1 KiB
JavaScript
61 lines
3.1 KiB
JavaScript
import { LevelOptionType } from './levelTier.mjs';
|
|
|
|
export default class DhLevelData extends foundry.abstract.DataModel {
|
|
static defineSchema() {
|
|
const fields = foundry.data.fields;
|
|
|
|
return {
|
|
level: new fields.SchemaField({
|
|
current: new fields.NumberField({ required: true, integer: true, initial: 1 }),
|
|
changed: new fields.NumberField({ required: true, integer: true, initial: 1 }),
|
|
bonuses: new fields.TypedObjectField(new fields.NumberField({ integer: true, nullable: false }))
|
|
}),
|
|
levelups: new fields.TypedObjectField(
|
|
new fields.SchemaField({
|
|
achievements: new fields.SchemaField(
|
|
{
|
|
experiences: new fields.TypedObjectField(
|
|
new fields.SchemaField({
|
|
name: new fields.StringField({ required: true }),
|
|
modifier: new fields.NumberField({ required: true, integer: true })
|
|
})
|
|
),
|
|
domainCards: new fields.ArrayField(
|
|
new fields.SchemaField({
|
|
uuid: new fields.StringField({ required: true }),
|
|
itemUuid: new fields.StringField({ required: true })
|
|
})
|
|
),
|
|
proficiency: new fields.NumberField({ integer: true })
|
|
},
|
|
{ nullable: true, initial: null }
|
|
),
|
|
selections: new fields.ArrayField(
|
|
new fields.SchemaField({
|
|
tier: new fields.NumberField({ required: true, integer: true }),
|
|
level: new fields.NumberField({ required: true, integer: true }),
|
|
optionKey: new fields.StringField({ required: true }),
|
|
type: new fields.StringField({ required: true, choices: LevelOptionType }),
|
|
checkboxNr: new fields.NumberField({ required: true, integer: true }),
|
|
value: new fields.NumberField({ integer: true }),
|
|
minCost: new fields.NumberField({ integer: true }),
|
|
amount: new fields.NumberField({ integer: true }),
|
|
data: new fields.ArrayField(new fields.StringField({ required: true })),
|
|
secondaryData: new fields.TypedObjectField(new fields.StringField({ required: true })),
|
|
itemUuid: new fields.DocumentUUIDField({ required: true }),
|
|
featureIds: new fields.ArrayField(new fields.StringField())
|
|
})
|
|
)
|
|
})
|
|
)
|
|
};
|
|
}
|
|
|
|
get actions() {
|
|
return Object.values(this.levelups).flatMap(level => level.selections.flatMap(s => s.actions));
|
|
}
|
|
|
|
get canLevelUp() {
|
|
return this.level.current < this.level.changed;
|
|
}
|
|
}
|