107 lines
2 KiB
JavaScript
107 lines
2 KiB
JavaScript
import { FatePath } from "../../gameTerms.mjs";
|
|
|
|
const { fields } = foundry.data;
|
|
|
|
export class HeroData extends foundry.abstract.TypeDataModel {
|
|
static defineSchema() {
|
|
return {
|
|
ability: new fields.SchemaField({
|
|
grit: new fields.NumberField({
|
|
min: 0,
|
|
initial: 1,
|
|
integer: true,
|
|
required: true,
|
|
nullable: false,
|
|
}),
|
|
gait: new fields.NumberField({
|
|
min: 0,
|
|
initial: 1,
|
|
integer: true,
|
|
required: true,
|
|
nullable: false,
|
|
}),
|
|
grip: new fields.NumberField({
|
|
min: 0,
|
|
initial: 1,
|
|
integer: true,
|
|
required: true,
|
|
nullable: false,
|
|
}),
|
|
glim: new fields.NumberField({
|
|
min: 0,
|
|
initial: 1,
|
|
integer: true,
|
|
required: true,
|
|
nullable: false,
|
|
}),
|
|
}),
|
|
coin: new fields.SchemaField({
|
|
gold: new fields.NumberField({
|
|
initial: 5,
|
|
integer: true,
|
|
required: true,
|
|
nullable: false,
|
|
}),
|
|
silver: new fields.NumberField({
|
|
initial: 0,
|
|
integer: true,
|
|
required: true,
|
|
nullable: false,
|
|
}),
|
|
copper: new fields.NumberField({
|
|
initial: 0,
|
|
integer: true,
|
|
required: true,
|
|
nullable: false,
|
|
}),
|
|
}),
|
|
fate: new fields.StringField({
|
|
initial: ``,
|
|
blank: true,
|
|
trim: true,
|
|
nullable: false,
|
|
choices: () => {
|
|
return Object.values(FatePath).concat(``);
|
|
},
|
|
}),
|
|
level: new fields.SchemaField({
|
|
glory: new fields.NumberField({
|
|
min: 0,
|
|
initial: 0,
|
|
integer: true,
|
|
required: true,
|
|
nullable: false,
|
|
}),
|
|
rank: new fields.NumberField({
|
|
min: 0,
|
|
initial: 0,
|
|
max: 3,
|
|
integer: true,
|
|
required: true,
|
|
nullable: false,
|
|
}),
|
|
}),
|
|
};
|
|
};
|
|
|
|
prepareBaseData() {
|
|
super.prepareBaseData();
|
|
|
|
// The limitations imposed on things like inventory spaces and equipped
|
|
// weapon count
|
|
this.limit = {
|
|
weapons: 4,
|
|
equipment: 12,
|
|
};
|
|
};
|
|
|
|
prepareDerivedData() {
|
|
super.prepareDerivedData();
|
|
|
|
// Movement speeds
|
|
this.speed = {
|
|
move: this.ability.gait + 3,
|
|
run: (this.ability.gait + 3) * 2,
|
|
};
|
|
};
|
|
};
|