export class DhLevelTiers extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; return { tiers: new fields.TypedObjectField(new fields.EmbeddedDataField(DhLevelTier)) }; } } class DhLevelTier extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; return { tier: new fields.NumberField({ required: true, integer: true }), name: new fields.StringField({ required: true }), levels: new fields.SchemaField({ start: new fields.NumberField({ required: true, integer: true }), end: new fields.NumberField({ required: true, integer: true }) }), initialAchievements: new fields.SchemaField({ experience: new fields.SchemaField({ nr: new fields.NumberField({ required: true, initial: 1 }), modifier: new fields.NumberField({ required: true, initial: 2 }) }), proficiency: new fields.NumberField({ integer: true, initial: 1 }) }), availableOptions: new fields.NumberField({ required: true, initial: 2 }), domainCardByLevel: new fields.NumberField({ initial: 1 }), options: new fields.TypedObjectField(new fields.EmbeddedDataField(DhLevelOption)) }; } } class DhLevelOption extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; return { label: new fields.StringField({ required: true }), checkboxQuantity: new fields.NumberField({ required: true, integer: true, initial: 1 }), minCost: new fields.NumberField({ required: true, integer: true, initial: 1 }), type: new fields.StringField({ required: true, choices: LevelOptionType }), value: new fields.NumberField({ integer: true }), amount: new fields.NumberField({ integer: true }) }; } } export const LevelOptionType = { trait: { id: 'trait', label: 'Character Trait' }, hitPoint: { id: 'hitPoint', label: 'Hit Points' }, stress: { id: 'stress', label: 'Stress' }, evasion: { id: 'evasion', label: 'Evasion' }, proficiency: { id: 'proficiency', label: 'Proficiency' }, experience: { id: 'experience', label: 'Experience' }, domainCard: { id: 'domainCard', label: 'Domain Card' }, subclass: { id: 'subclass', label: 'Subclass' }, multiclass: { id: 'multiclass', label: 'Multiclass' } }; export const defaultLevelTiers = { tiers: { 2: { tier: 2, name: 'Tier 2', levels: { start: 2, end: 4 }, initialAchievements: { experience: { nr: 2, modifier: 1 }, proficiency: 1 }, availableOptions: 2, domainCardByLevel: 1, options: { trait: { label: 'DAGGERHEART.LevelUp.Options.trait', checkboxQuantity: 3, minCost: 1, type: LevelOptionType.trait.id, amount: 2 }, hitPoint: { label: 'DAGGERHEART.LevelUp.Options.hitPoint', checkboxQuantity: 2, minCost: 1, type: LevelOptionType.hitPoint.id, value: 1, value: 1 }, stress: { label: 'DAGGERHEART.LevelUp.Options.stress', checkboxQuantity: 2, minCost: 1, type: LevelOptionType.stress.id, value: 1 }, experience: { label: 'DAGGERHEART.LevelUp.Options.experience', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.experience.id, value: 1, amount: 2 }, domainCard: { label: 'DAGGERHEART.LevelUp.Options.domainCard', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.domainCard.id, amount: 1 }, evasion: { label: 'DAGGERHEART.LevelUp.Options.evasion', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.evasion.id, value: 1 } } }, 3: { tier: 3, name: 'Tier 3', levels: { start: 5, end: 7 }, initialAchievements: { experience: { nr: 2, modifier: 1 }, proficiency: 1 }, availableOptions: 2, domainCardByLevel: 1, options: { trait: { label: 'DAGGERHEART.LevelUp.Options.trait', checkboxQuantity: 3, minCost: 1, type: LevelOptionType.trait.id, amount: 2 }, hitPoint: { label: 'DAGGERHEART.LevelUp.Options.hitPoint', checkboxQuantity: 2, minCost: 1, type: LevelOptionType.hitPoint.id, value: 1 }, stress: { label: 'DAGGERHEART.LevelUp.Options.stress', checkboxQuantity: 2, minCost: 1, type: LevelOptionType.stress.id, value: 1 }, experience: { label: 'DAGGERHEART.LevelUp.Options.experience', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.experience.id, value: 1, amount: 2 }, domainCard: { label: 'DAGGERHEART.LevelUp.Options.domainCard', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.domainCard.id, amount: 1 }, evasion: { label: 'DAGGERHEART.LevelUp.Options.evasion', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.evasion.id, value: 1 }, subclass: { label: 'DAGGERHEART.LevelUp.Options.subclass', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.subclass.id }, proficiency: { label: 'DAGGERHEART.LevelUp.Options.proficiency', checkboxQuantity: 2, minCost: 2, type: LevelOptionType.proficiency.id, value: 1 }, multiclass: { label: 'DAGGERHEART.LevelUp.Options.multiclass', checkboxQuantity: 2, minCost: 2, type: LevelOptionType.multiclass.id } } }, 4: { tier: 4, name: 'Tier 4', levels: { start: 8, end: 10 }, initialAchievements: { experience: { nr: 2, modifier: 1 }, proficiency: 1 }, availableOptions: 2, domainCardByLevel: 1, options: { trait: { label: 'DAGGERHEART.LevelUp.Options.trait', checkboxQuantity: 3, minCost: 1, type: LevelOptionType.trait.id, amount: 2 }, hitPoint: { label: 'DAGGERHEART.LevelUp.Options.hitPoint', checkboxQuantity: 2, minCost: 1, type: LevelOptionType.hitPoint.id, value: 1 }, stress: { label: 'DAGGERHEART.LevelUp.Options.stress', checkboxQuantity: 2, minCost: 1, type: LevelOptionType.stress.id, value: 1 }, experience: { label: 'DAGGERHEART.LevelUp.Options.experience', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.experience.id, value: 1, amount: 2 }, domainCard: { label: 'DAGGERHEART.LevelUp.Options.domainCard', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.domainCard.id, amount: 1 }, evasion: { label: 'DAGGERHEART.LevelUp.Options.evasion', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.evasion.id, value: 1 }, subclass: { label: 'DAGGERHEART.LevelUp.Options.subclass', checkboxQuantity: 1, minCost: 1, type: LevelOptionType.subclass.id }, proficiency: { label: 'DAGGERHEART.LevelUp.Options.proficiency', checkboxQuantity: 2, minCost: 2, type: LevelOptionType.proficiency.id, value: 1 }, multiclass: { label: 'DAGGERHEART.LevelUp.Options.multiclass', checkboxQuantity: 2, minCost: 2, type: LevelOptionType.multiclass.id } } } } };