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