101 lines
4.0 KiB
JavaScript
101 lines
4.0 KiB
JavaScript
import {SkillDataModel} from "./skill.mjs";
|
|
import {SpellDataModel} from "./spell.mjs";
|
|
|
|
const {
|
|
SchemaField, NumberField, StringField, ArrayField, BooleanField, 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(),
|
|
profession: 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 }),
|
|
}),
|
|
attribute: new SchemaField({
|
|
mu: new NumberField({ required: true, integer: true }),
|
|
kl: new NumberField({ required: true, integer: true }),
|
|
in: new NumberField({ required: true, integer: true }),
|
|
ch: new NumberField({ required: true, integer: true }),
|
|
ff: new NumberField({ required: true, integer: true }),
|
|
ge: new NumberField({ required: true, integer: true }),
|
|
ko: new NumberField({ required: true, integer: true }),
|
|
kk: new NumberField({ required: true, integer: true }),
|
|
mr: new NumberField({ required: true, integer: true }),
|
|
lep: new NumberField({ required: true, integer: true }),
|
|
aup: new NumberField({ required: true, integer: true }),
|
|
asp: new NumberField({ required: false, integer: true }),
|
|
kap: new NumberField({ required: false, integer: true }),
|
|
at: new NumberField({ required: true, integer: true }),
|
|
pa: new NumberField({ required: true, integer: true }),
|
|
fk: new NumberField({ required: true, integer: true }),
|
|
ini: new NumberField({ required: true, integer: true }),
|
|
so: new NumberField({ required: true, integer: true }),
|
|
gilde: new StringField(),
|
|
}),
|
|
talente: new ArrayField ( new SchemaField(
|
|
{taw: new NumberField(), talent: new ForeignDocumentField(Item) })),
|
|
zauber: new ArrayField ( new ForeignDocumentField(Item) ),
|
|
}
|
|
}
|
|
|
|
_initialize(options) {
|
|
super._initialize(options);
|
|
}
|
|
|
|
_onCreate(data, options, userId) {
|
|
// prepare base talents
|
|
const talentsByName = [
|
|
"Athletik", "Klettern", "Körperbeherrschung", "Schleichen", "Schwimmen", "Selbstbeherrschung", "Sich Verstecken", "Singen", "Sinnenschärfe", "Tanzen", "Zechen",
|
|
"Menschenkenntnis", "Überreden",
|
|
"Fährtensuchen", "Orientierung", "Wildnisleben",
|
|
"Götter/Kulte", "Rechnen", "Sagen/Legenden",
|
|
"Heilkunde: Wunden", "Holzbearbeitung", "Kochen", "Lederverarbeitung", "Malen/Zeichnen", "Schneidern"
|
|
]
|
|
|
|
const talente = []
|
|
|
|
talentsByName.forEach( talentName => {
|
|
const talent = game.items.getName(talentName);
|
|
console.log(talent);
|
|
if (talent) {
|
|
talente.push({
|
|
taw: 0,
|
|
talent
|
|
})
|
|
} else {
|
|
console.error(`${talentName} not found in items`)
|
|
}
|
|
})
|
|
|
|
// push base talents
|
|
game.actors.getName(data.name).update({system: {talente}})
|
|
|
|
const startEigenschaften = {
|
|
"mu": 10,
|
|
"kl": 10,
|
|
"in": 10,
|
|
"ch": 10,
|
|
"ff": 10,
|
|
"ge": 10,
|
|
"ko": 10,
|
|
"kk": 10,
|
|
}
|
|
|
|
game.actors.getName(data.name).update({system: {attribute: startEigenschaften}})
|
|
super._onCreate(data, options, userId);
|
|
|
|
|
|
}
|
|
|
|
} |