207 lines
8.3 KiB
JavaScript
207 lines
8.3 KiB
JavaScript
import {Skill} from "../documents/skill.mjs";
|
|
import {SkillDataModel} from "./skill.mjs";
|
|
|
|
const {
|
|
SchemaField, NumberField, StringField, EmbeddedDocumentField, DocumentIdField, ArrayField, ForeignDocumentField
|
|
} = foundry.data.fields;
|
|
|
|
export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
|
|
|
|
static defineSchema() {
|
|
return {
|
|
name: new StringField(),
|
|
meta: new SchemaField({
|
|
spezies: new StringField(),
|
|
kultur: new StringField(),
|
|
professions: new ArrayField(new StringField()),
|
|
geschlecht: new StringField(),
|
|
haarfarbe: new StringField(),
|
|
groesse: new NumberField({ required: true, integer: false }),
|
|
augenfarbe: new StringField(),
|
|
geburtstag: new StringField(),
|
|
alter: new NumberField({ required: true, integer: true }),
|
|
gewicht: new NumberField({ required: true, integer: true }),
|
|
aussehen: new ArrayField(new StringField()),
|
|
familie: new ArrayField(new StringField()),
|
|
titel: new StringField(),
|
|
stand: new StringField(),
|
|
}),
|
|
attribute: new SchemaField({
|
|
mu: new SchemaField({
|
|
start: new NumberField({ required: true, integer: true }),
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
kl: new SchemaField({
|
|
start: new NumberField({ required: true, integer: true }),
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
in: new SchemaField({
|
|
start: new NumberField({ required: true, integer: true }),
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
ch: new SchemaField({
|
|
start: new NumberField({ required: true, integer: true }),
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
ff: new SchemaField({
|
|
start: new NumberField({ required: true, integer: true }),
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
ge: new SchemaField({
|
|
start: new NumberField({ required: true, integer: true }),
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
ko: new SchemaField({
|
|
start: new NumberField({ required: true, integer: true }),
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
kk: new SchemaField({
|
|
start: new NumberField({ required: true, integer: true }),
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
mr: new SchemaField({
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
lep: new SchemaField({
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
aup: new SchemaField({
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
asp: new SchemaField({
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
kap: new SchemaField({
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
at: new SchemaField({
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
pa: new SchemaField({
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
fk: new SchemaField({
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
ini: new SchemaField({
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
so: new SchemaField({
|
|
start: new NumberField({ required: true, integer: true }),
|
|
aktuell: new NumberField({ required: true, integer: true }),
|
|
mod: new NumberField({ required: true, integer: true }),
|
|
}),
|
|
gilde: new StringField(),
|
|
}),
|
|
vornachteile: new ArrayField(new SchemaField({
|
|
vornachteil: new DocumentIdField(Item),
|
|
wert: new NumberField({ required: false, integer: true }),
|
|
})),
|
|
sonderfertigkeiten: new ArrayField(new SchemaField({
|
|
name: new StringField(),
|
|
auswahlen: new ArrayField(new StringField()),
|
|
})),
|
|
|
|
talente: new ArrayField(new DocumentIdField(Item)),
|
|
zauber: new ArrayField(new SchemaField({
|
|
talent: new DocumentIdField(),
|
|
zfw: new NumberField({integer: true, required: true}),
|
|
})),
|
|
liturgien: new ArrayField(new SchemaField({
|
|
name: new StringField(),
|
|
})),
|
|
kampfwerte: new ArrayField(new SchemaField({
|
|
name: new StringField(),
|
|
at: new NumberField({ required: true, integer: true }),
|
|
pa: new NumberField({ required: true, integer: true }),
|
|
})),
|
|
notizen: new ArrayField(new SchemaField({
|
|
key: new StringField(),
|
|
notiz: new StringField(),
|
|
})),
|
|
|
|
heldenausruestung: new ArrayField(
|
|
new SchemaField({
|
|
links: new DocumentIdField(),
|
|
rechts: new DocumentIdField(),
|
|
brust: new DocumentIdField(),
|
|
ruecken: new DocumentIdField(),
|
|
kopf: new DocumentIdField(),
|
|
fernkampf: new DocumentIdField(),
|
|
munition: new DocumentIdField(),
|
|
armlinks: new DocumentIdField(),
|
|
armrechts: new DocumentIdField(),
|
|
bauch: new DocumentIdField(),
|
|
beinlinks: new DocumentIdField(),
|
|
beinrechts: new DocumentIdField(),
|
|
}), {min: 0, max: 3}
|
|
)
|
|
}
|
|
}
|
|
|
|
_initialize(options) {
|
|
super._initialize(options);
|
|
}
|
|
|
|
_initializeSource(data, options) {
|
|
|
|
|
|
|
|
if (data.heldenausruestung.length === 0) {
|
|
let sets = [];
|
|
|
|
for (let i = 0; i < 3; i++) {
|
|
|
|
const preppedSet = {}
|
|
|
|
PlayerCharacterDataModel.getSlots().forEach(slot => {
|
|
preppedSet[slot] = null;
|
|
})
|
|
|
|
sets.push(preppedSet);
|
|
|
|
}
|
|
data.heldenausruestung = sets
|
|
|
|
}
|
|
|
|
console.log(data)
|
|
return super._initializeSource(data, options);
|
|
}
|
|
|
|
async _onCreate(data, options, userId) {
|
|
|
|
}
|
|
|
|
static getSlots() {
|
|
return [
|
|
"links",
|
|
"rechts",
|
|
"brust",
|
|
"ruecken",
|
|
"kopf",
|
|
"fernkampf",
|
|
"munition",
|
|
"armlinks",
|
|
"armrechts",
|
|
"bauch",
|
|
"beinlinks",
|
|
"beinrechts",
|
|
|
|
]
|
|
}
|
|
|
|
}
|