207 lines
9.1 KiB
JavaScript
207 lines
9.1 KiB
JavaScript
import {Equipment} from "../documents/equipment.mjs";
|
|
|
|
const {
|
|
SchemaField,
|
|
NumberField,
|
|
StringField,
|
|
HTMLField,
|
|
DocumentIdField,
|
|
ArrayField,
|
|
} = 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 StringField(),
|
|
augenfarbe: new StringField(),
|
|
geburtstag: new StringField(),
|
|
alter: new StringField(),
|
|
gewicht: new StringField(),
|
|
aussehen: new HTMLField(),
|
|
familie: new HTMLField(),
|
|
titel: new StringField(),
|
|
stand: new StringField(),
|
|
verbindungen: new HTMLField(),
|
|
notizen: new HTMLField(),
|
|
}),
|
|
setEquipped: new NumberField({required: true, initial: 0, max: 3, integer: true}),
|
|
ini: new SchemaField({
|
|
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
|
mod: new NumberField({required: true, integer: true, initial: 0}),
|
|
wuerfel: new NumberField({required: true, integer: true, initial: 1}),
|
|
}),
|
|
lep: new SchemaField({
|
|
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
|
mod: new NumberField({required: true, integer: true}),
|
|
}),
|
|
mr: new SchemaField({
|
|
mod: new NumberField({required: true, integer: true}),
|
|
}),
|
|
aup: new SchemaField({
|
|
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
|
mod: new NumberField({required: true, integer: true}),
|
|
}),
|
|
asp: new SchemaField({
|
|
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
|
mod: new NumberField({required: true, integer: true}),
|
|
}),
|
|
kap: new SchemaField({
|
|
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
|
mod: new NumberField({required: true, integer: true}),
|
|
}),
|
|
gs: new SchemaField({
|
|
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
|
mod: new NumberField({required: true, integer: true}),
|
|
}),
|
|
ws: new NumberField({required: true, integer: true, initial: 0}),
|
|
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}),
|
|
}),
|
|
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}),
|
|
}),
|
|
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(),
|
|
}),
|
|
|
|
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(),
|
|
})),
|
|
wunden: new SchemaField({
|
|
aktuell: new NumberField({required: true, integer: true}), // only with DSA_4-1.optional_trefferzonen = false
|
|
max: new NumberField({required: true, integer: true}), // only with DSA_4-1.optional_trefferzonen = false
|
|
mod: new NumberField({required: true, integer: true}), // only with DSA_4-1.optional_trefferzonen = false
|
|
armlinks: new NumberField({required: true, integer: true, initial: 0}),
|
|
armrechts: new NumberField({required: true, integer: true, initial: 0}),
|
|
beinlinks: new NumberField({required: true, integer: true, initial: 0}),
|
|
beinrechts: new NumberField({required: true, integer: true, initial: 0}),
|
|
bauch: new NumberField({required: true, integer: true, initial: 0}),
|
|
brust: new NumberField({required: true, integer: true, initial: 0}),
|
|
kopf: new NumberField({required: true, integer: true, initial: 0}),
|
|
}),
|
|
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
|
|
}
|
|
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",
|
|
|
|
]
|
|
}
|
|
|
|
}
|