adds import of equipment

pull/61/head
macniel 2025-10-21 12:38:04 +02:00
parent b49f945a74
commit c4863b4493
2 changed files with 53 additions and 4 deletions

View File

@ -126,8 +126,12 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
* @param {MouseEvent} event
*/
static #openEmbeddedDocument(event) {
const dataset = event.target.dataset
let dataset = event.target.dataset
if (!dataset.itemId || !dataset.id) {
dataset = event.target.parentElement.dataset
}
const id = dataset.itemId ?? dataset.id
this.document.items.get(id).sheet.render(true)
}

View File

@ -4,6 +4,7 @@ import {Profession} from "../documents/profession.mjs";
import {Culture} from "../documents/culture.mjs";
import {Species} from "../documents/species.mjs";
import {SpecialAbility} from "../documents/specialAbility.mjs";
import {Equipment} from "../documents/equipment.mjs";
export class XmlImport {
#months = [
@ -199,9 +200,10 @@ export class XmlImport {
json.meta.titel = held.basis.rasse.aussehen.titel
json.meta.stand = held.basis.rasse.aussehen.stand
}
let attributes = held.eigenschaften.eigenschaft
json.attribute = {}
if (!options.skipAttributes) {
let attributes = held.eigenschaften.eigenschaft
json.attribute = {}
if (held.basis.gilde) {
json.attribute.gilde = held.basis.gilde.name
}
@ -235,7 +237,6 @@ export class XmlImport {
}
json.attribute.so = this.#getAttributeJson(attributes, "Sozialstatus")
}
if (!options.skipAdvantages) this.#mapAdvantages(actor, held)
let specialAbilities = []
let liturgies = []
@ -291,6 +292,7 @@ export class XmlImport {
if (!options.skipSkills) this.#mapSkills(actor, held, combatValues)
if (!options.skipSpells) this.#mapSpells(actor, held)
if (!options.skipLiturgies) this.#mapLiturgies(actor, liturgies)
if (!options.skipEquipment) this.#mapEquipment(actor, held)
let notes = []
for (let note in held.kommentare) {
@ -487,6 +489,49 @@ export class XmlImport {
}
}
#mapEquipment(actor, held) {
if (actor.itemTypes["Equipment"].length > 0) {
actor.itemTypes["Equipment"].forEach(e => {
actor.items.get(e._id).delete()
})
}
held.gegenstände.gegenstand.forEach(e => {
const compendiumOfArmor = game.packs.get('DSA_4-1.Armor');
const compendiumOfWeapons = game.packs.get('DSA_4-1.Weapons');
const compendiumOfAmmunition = game.packs.get('DSA_4-1.Ammunition');
let eId = null
let compendium = null
if (compendiumOfArmor?.index.find(p => p.name === e.name)) {
eId = compendiumOfArmor?.index.find(p => p.name === e.name)
compendium = compendiumOfArmor
}
if (compendiumOfWeapons?.index.find(p => p.name === e.name)) {
eId = compendiumOfWeapons?.index.find(p => p.name === e.name)
compendium = compendiumOfWeapons
}
if (compendiumOfAmmunition?.index.find(p => p.name === e.name)) {
eId = compendiumOfAmmunition?.index.find(p => p.name === e.name)
compendium = compendiumOfAmmunition
}
if (eId && compendium) {
compendium.getDocument(eId._id).then(sf => actor.createEmbeddedDocuments('Item', [sf]))
} else {
actor.createEmbeddedDocuments('Item', [new Equipment(
{
name: e.modallgemein?.name?.value ?? e.name,
type: "Equipment",
system: {
quantity: e.anzahl,
price: e.modallgemein?.preis.value,
weight: e.modallgemein?.gewicht.value,
}
})])
}
})
}
async #mapProfessions(actor, professions) {
if (actor.itemTypes["Profession"].length > 0) {
actor.itemTypes["Profession"].forEach(p => {