From 110b54e3281aa7bc208ffdc23b51418c8ec94478 Mon Sep 17 00:00:00 2001 From: Jendrik Date: Wed, 24 Sep 2025 18:03:01 +0200 Subject: [PATCH 1/2] Added a Character-Data-Model that i can fill later --- main.mjs | 12 + module/Actors/dsa-actor.mjs | 3 + module/character/character.mjs | 68 +++ module/character/example-character.xml | 566 +++++++++++++++++++++++++ system.json | 3 + 5 files changed, 652 insertions(+) create mode 100644 module/Actors/dsa-actor.mjs create mode 100644 module/character/character.mjs create mode 100644 module/character/example-character.xml 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", From 3ca40b96046e15a04cf3603bf58a36152a446a8c Mon Sep 17 00:00:00 2001 From: Jendrik Date: Thu, 25 Sep 2025 18:40:27 +0200 Subject: [PATCH 2/2] merged main in branch --- src/main.mjs | 11 +++++++++++ {module => src/module}/Actors/dsa-actor.mjs | 0 {module => src/module}/character/character.mjs | 0 .../module}/character/example-character.xml | 0 4 files changed, 11 insertions(+) rename {module => src/module}/Actors/dsa-actor.mjs (100%) rename {module => src/module}/character/character.mjs (100%) rename {module => src/module}/character/example-character.xml (100%) diff --git a/src/main.mjs b/src/main.mjs index da320d2e..6cdd43a4 100644 --- a/src/main.mjs +++ b/src/main.mjs @@ -1,3 +1,14 @@ +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, + }; + console.log("DSA 4.1 is ready for development!") }) \ No newline at end of file diff --git a/module/Actors/dsa-actor.mjs b/src/module/Actors/dsa-actor.mjs similarity index 100% rename from module/Actors/dsa-actor.mjs rename to src/module/Actors/dsa-actor.mjs diff --git a/module/character/character.mjs b/src/module/character/character.mjs similarity index 100% rename from module/character/character.mjs rename to src/module/character/character.mjs diff --git a/module/character/example-character.xml b/src/module/character/example-character.xml similarity index 100% rename from module/character/example-character.xml rename to src/module/character/example-character.xml