diff --git a/src/main.mjs b/src/main.mjs
index 49557c2a..6cdd43a4 100644
--- a/src/main.mjs
+++ b/src/main.mjs
@@ -11,16 +11,4 @@ Hooks.once("init", () => {
};
console.log("DSA 4.1 is ready for development!")
-})
-
-Hooks.on("getActorContextOptions", (application, menuItems) => {
- menuItems.push({
- name: "Import from XML",
- icon: '',
- callback: (li) => {
- const actorId = li.getAttribute("data-entry-id")
- const actor = game.actors.get(actorId)
- actor.import()
- }
- })
})
\ No newline at end of file
diff --git a/src/module/character/character.mjs b/src/module/character/character.mjs
index 8436c4de..5d4370bb 100644
--- a/src/module/character/character.mjs
+++ b/src/module/character/character.mjs
@@ -104,7 +104,7 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
}),
vornachteile: new ArrayField(new SchemaField({
name: new StringField(),
- value: new NumberField(),
+ wert: new NumberField({ required: false, integer: true }),
})),
sonderfertigkeiten: new ArrayField(new SchemaField({
name: new StringField(),
@@ -114,7 +114,7 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
name: new StringField(),
taw: new NumberField({required: true, integer: true }),
probe: new StringField(),
- be: new NumberField({required: false, integer: true }),
+ be: new StringField({required: false }),
komplexitaet: new NumberField({required: false, integer: true }),
})),
zauber: new ArrayField(new SchemaField({
@@ -123,7 +123,7 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
hauszauber: new BooleanField(),
zfw: new NumberField({ required: true, integer: true }),
anmerkungen: new StringField(),
- komplexitaet: new NumberField({required: true, integer: true }),
+ komplexitaet: new StringField({required: true }),
})),
liturgien: new ArrayField(new SchemaField({
name: new StringField(),
diff --git a/src/module/xml-import/xml-import.mjs b/src/module/xml-import/xml-import.mjs
index b150bcb1..71b31be7 100644
--- a/src/module/xml-import/xml-import.mjs
+++ b/src/module/xml-import/xml-import.mjs
@@ -123,21 +123,21 @@ function mapRawJson(rawJson) {
let professionString = profession.string
professions.push(professionString)
}
- json.meta.profession = professions
- json.geschlecht = held.basis.geschlecht.name
- json.haarfarbe = held.basis.rasse.aussehen.haarfarbe
- json.groesse = held.basis.rasse.groesse.value
- json.augenfarbe = held.basis.rasse.aussehen.augenfarbe
- json.geburtstag = calculateBirthdate(held.basis.rasse.aussehen)
- json.alter = held.basis.rasse.aussehen.alter
- json.gewicht = held.basis.rasse.groesse.gewicht
- json.aussehen = [
+ json.meta.professions = professions
+ json.meta.geschlecht = held.basis.geschlecht.name
+ json.meta.haarfarbe = held.basis.rasse.aussehen.haarfarbe
+ json.meta.groesse = held.basis.rasse.groesse.value
+ json.meta.augenfarbe = held.basis.rasse.aussehen.augenfarbe
+ json.meta.geburtstag = calculateBirthdate(held.basis.rasse.aussehen)
+ json.meta.alter = held.basis.rasse.aussehen.alter
+ json.meta.gewicht = held.basis.rasse.groesse.gewicht
+ json.meta.aussehen = [
held.basis.rasse.aussehen.aussehentext0,
held.basis.rasse.aussehen.aussehentext1,
held.basis.rasse.aussehen.aussehentext2,
held.basis.rasse.aussehen.aussehentext3,
]
- json.familie = [
+ json.meta.familie = [
held.basis.rasse.aussehen.familietext0,
held.basis.rasse.aussehen.familietext1,
held.basis.rasse.aussehen.familietext2,
@@ -145,10 +145,13 @@ function mapRawJson(rawJson) {
held.basis.rasse.aussehen.familietext4,
held.basis.rasse.aussehen.familietext5,
]
- json.titel = held.basis.rasse.aussehen.titel
- json.stand = held.basis.rasse.aussehen.stand
+ json.meta.titel = held.basis.rasse.aussehen.titel
+ json.meta.stand = held.basis.rasse.aussehen.stand
let attributes = held.eigenschaften.eigenschaft
json.attribute = {}
+ if (held.basis.gilde) {
+ json.attribute.gilde = held.basis.gilde.name
+ }
json.attribute.mu = getAttributeJson(attributes, "Mut")
json.attribute.kl = getAttributeJson(attributes, "Klugheit")
json.attribute.in = getAttributeJson(attributes, "Intuition")
@@ -198,6 +201,18 @@ function mapRawJson(rawJson) {
aktuell: attribute.value
}
json.attribute.so = getAttributeJson(attributes, "Sozialstatus")
+ let benefits = []
+ for (let benefit in held.vt.vorteil) {
+ benefit = held.vt.vorteil[benefit]
+ let benefitJson = {
+ name: benefit.name,
+ }
+ if (benefit.value !== undefined) {
+ benefitJson.wert = benefit.value
+ }
+ benefits.push(benefitJson)
+ }
+ json.vornachteile = benefits
let specialAbilities = []
let liturgies = []
for (let specialAbility in held.sf.sonderfertigkeit) {
@@ -236,13 +251,18 @@ function mapRawJson(rawJson) {
let talents = []
for (let talent in held.talentliste.talent) {
talent = held.talentliste.talent[talent]
- talents.push({
+ let talentJson = {
name: talent.name,
taw: talent.value,
probe: talent.probe.trim(),
- be: talent.be,
- komplexitaet: talent.k,
- })
+ }
+ if (talent.be !== undefined) {
+ talentJson.be = talent.be
+ }
+ if (talent.k !== undefined) {
+ talentJson.komplexitaet = parseInt(talent.k)
+ }
+ talents.push(talentJson)
}
json.talente = talents
let spells = []
@@ -280,7 +300,10 @@ function mapRawJson(rawJson) {
}
json.notizen = notes
- return json
+ return {
+ name: held.name,
+ system: json,
+ }
}
/**
@@ -305,5 +328,17 @@ function getAttributeJson(attributes, name) {
* @returns {{}} the json of the desired attribute
*/
function filterAttribute(attributes, name) {
- return attributes.filter(attribute => attribute.name === name)
-}
\ No newline at end of file
+ return attributes.filter(attribute => attribute.name === name)[0]
+}
+
+Hooks.on("getActorContextOptions", (application, menuItems) => {
+ menuItems.push({
+ name: "Import from XML",
+ icon: '',
+ callback: (li) => {
+ const actorId = li.getAttribute("data-entry-id")
+ const actor = game.actors.get(actorId)
+ actor.import()
+ }
+ })
+})
\ No newline at end of file