47 lines
1.8 KiB
JavaScript
47 lines
1.8 KiB
JavaScript
export default class NpcDataModel extends foundry.abstract.TypeDataModel {
|
|
static defineSchema() {
|
|
const { fields } = foundry.data
|
|
const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })
|
|
const stringField = (initial = "") => new fields.StringField({ required: true, nullable: false, initial })
|
|
const boolField = (initial = false) => new fields.BooleanField({ required: true, initial })
|
|
const htmlField = (initial = "") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })
|
|
|
|
const aptitudeField = () =>
|
|
new fields.SchemaField({
|
|
value: numberField(0, { min: 0 }),
|
|
speciality: stringField(""),
|
|
})
|
|
|
|
const trackedField = () =>
|
|
new fields.SchemaField({
|
|
value: numberField(0, { min: 0 }),
|
|
calcul: numberField(0, { min: 0 }),
|
|
note: stringField(""),
|
|
})
|
|
|
|
return {
|
|
type: stringField(""),
|
|
threat: numberField(0, { min: 0, max: 4 }), // profane(0) | apprentice(1) | initiate(2) | accomplished(3) | renowned(4)
|
|
nuisance: numberField(0, { min: 0, max: 5 }), // figurant(0) | minion(1) | adversary(2) | ally(3) | boss(4) | divinity(5)
|
|
initiative: numberField(1, { min: 0 }),
|
|
anti_initiative: numberField(24, { min: 0 }),
|
|
aptitudes: new fields.SchemaField({
|
|
physical: aptitudeField(),
|
|
martial: aptitudeField(),
|
|
mental: aptitudeField(),
|
|
social: aptitudeField(),
|
|
spiritual: aptitudeField(),
|
|
}),
|
|
vitality: trackedField(),
|
|
hei: trackedField(),
|
|
description: htmlField(""),
|
|
prefs: new fields.SchemaField({
|
|
typeofthrow: new fields.SchemaField({
|
|
check: boolField(false),
|
|
choice: stringField("0"),
|
|
}),
|
|
}),
|
|
}
|
|
}
|
|
}
|