Add class adancement
This commit is contained in:
@@ -68,6 +68,41 @@ export default class PrismRPGClass extends foundry.abstract.TypeDataModel {
|
||||
level10: new fields.HTMLField({ initial: "" })
|
||||
})
|
||||
|
||||
// Advancements (list of advancements per level with icon, name and description)
|
||||
const advancementSchema = () => new fields.ArrayField(
|
||||
new fields.SchemaField({
|
||||
icon: new fields.StringField({
|
||||
required: true,
|
||||
initial: "",
|
||||
label: "Icon"
|
||||
}),
|
||||
name: new fields.StringField({
|
||||
required: true,
|
||||
initial: "",
|
||||
label: "Name"
|
||||
}),
|
||||
description: new fields.HTMLField({
|
||||
required: true,
|
||||
initial: "",
|
||||
label: "Description"
|
||||
})
|
||||
}),
|
||||
{ initial: [] }
|
||||
)
|
||||
|
||||
schema.advancements = new fields.SchemaField({
|
||||
level1: advancementSchema(),
|
||||
level2: advancementSchema(),
|
||||
level3: advancementSchema(),
|
||||
level4: advancementSchema(),
|
||||
level5: advancementSchema(),
|
||||
level6: advancementSchema(),
|
||||
level7: advancementSchema(),
|
||||
level8: advancementSchema(),
|
||||
level9: advancementSchema(),
|
||||
level10: advancementSchema()
|
||||
})
|
||||
|
||||
// Proficiencies granted by this class
|
||||
schema.weaponProficiencies = new fields.StringField({
|
||||
required: true,
|
||||
@@ -156,4 +191,36 @@ export default class PrismRPGClass extends foundry.abstract.TypeDataModel {
|
||||
}
|
||||
return features
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current level's advancements
|
||||
*/
|
||||
get currentLevelAdvancements() {
|
||||
return this.advancements[`level${this.level}`] || []
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all advancements up to current level
|
||||
*/
|
||||
get allAdvancementsUpToLevel() {
|
||||
const advancements = []
|
||||
for (let i = 1; i <= this.level; i++) {
|
||||
const levelAdvancements = this.advancements[`level${i}`]
|
||||
if (levelAdvancements && levelAdvancements.length > 0) {
|
||||
advancements.push({
|
||||
level: i,
|
||||
advancements: levelAdvancements
|
||||
})
|
||||
}
|
||||
}
|
||||
return advancements
|
||||
}
|
||||
|
||||
/**
|
||||
* Get advancements for a specific level
|
||||
*/
|
||||
getAdvancementsForLevel(level) {
|
||||
if (level < 1 || level > 10) return []
|
||||
return this.advancements[`level${level}`] || []
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user