foundry-dsa41-game/src/module/data/character.mjs

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);
}
}