diff --git a/main.mjs b/main.mjs index e69de29b..f19fd6a2 100644 --- a/main.mjs +++ b/main.mjs @@ -0,0 +1,12 @@ +import {PlayerCharacterDataModel} from "./module/character/character.mjs"; +import {DsaActor} from "./module/Actors/dsa-actor.mjs"; + +Hooks.once("init", () => { + // Configure custom Document implementations. + CONFIG.Actor.documentClass = DsaActor; + + // Configure System Data Models. + CONFIG.Actor.dataModels = { + character: PlayerCharacterDataModel, + }; +}) \ No newline at end of file diff --git a/module/Actors/dsa-actor.mjs b/module/Actors/dsa-actor.mjs new file mode 100644 index 00000000..da6bcce9 --- /dev/null +++ b/module/Actors/dsa-actor.mjs @@ -0,0 +1,3 @@ +export class DsaActor extends Actor { + +} \ No newline at end of file diff --git a/module/character/character.mjs b/module/character/character.mjs new file mode 100644 index 00000000..a483d6d7 --- /dev/null +++ b/module/character/character.mjs @@ -0,0 +1,68 @@ +const { + SchemaField, NumberField, StringField, ArrayField, BooleanField, +} = 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({ + name: new StringField(), + taw: new NumberField({required: true, integer: true }), + kategorie: new StringField(), + probe: new StringField(), + })), + zauber: new ArrayField(new SchemaField({ + name: new StringField(), + rep: new StringField(), + merkmale: new ArrayField(new StringField()), + hauszauber: new BooleanField(), + zfw: new NumberField({ required: true, integer: true }), + quelle: new StringField(), + })), + 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 }), + })), + } + } + +} \ No newline at end of file diff --git a/module/character/example-character.xml b/module/character/example-character.xml new file mode 100644 index 00000000..01738fc7 --- /dev/null +++ b/module/character/example-character.xml @@ -0,0 +1,566 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D/lXw741ikWhJ+dIE/eCcUgT5vw= + + + Yo5RyWxO8N8Z0ReQlPhESaEjbpFUFTANob25mAXlFTH0eCBano63WQ== + + + +

/KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64B81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9 + xD7nN1kuFw== +

+ li7dzDacuo67Jg7mtqEm2TRuOMU= + Z4Rxsnqc9E7pGknFFH2xqaryRPBaQ01khpMdLRQnG541Awtx/XPaF5Bpsy4pNWMOHCBiNU0Nogps + QW5QvnlMpA== + + uVrvWkzIbUdL7E80AiD0PJDX3Ck0beY5StXp1wDAA1/ePpemd6rTBNd8YoCzOovNrX016YMcTSiO + iExM4RWtJA== + +
+
+
+
+
\ No newline at end of file diff --git a/system.json b/system.json index ea9ded42..c45461cc 100644 --- a/system.json +++ b/system.json @@ -39,6 +39,9 @@ "path": "lang/de.json" }], "documentTypes": { + "Actor": { + "character": {} + } }, "socket": false, "initiative": "1d6",