diff --git a/src/ActorSheet.hbs b/src/ActorSheet.hbs index 9991b81..1ed7d63 100644 --- a/src/ActorSheet.hbs +++ b/src/ActorSheet.hbs @@ -483,6 +483,29 @@ {{/each}} +
+
+
{{localize "DSA41.kampf.zauber"}}
+
+
+ + {{#unless (ne actor.itemTypes.Zauber.length 0)}} +
{{localize "DSA41.list_empty"}}
+ {{/unless}} + + {{#each actor.itemTypes.Zauber}} +
+
+ +
+ {{name}} +
+
+ +
+ {{/each}} +
+
{{localize "DSA41.kampf.ruestungen"}}
diff --git a/src/Assets/plus.svg b/src/Assets/plus.svg new file mode 100644 index 0000000..51b4c7f --- /dev/null +++ b/src/Assets/plus.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/ItemSheets/Zauber.hbs b/src/ItemSheets/Zauber.hbs new file mode 100644 index 0000000..0267edb --- /dev/null +++ b/src/ItemSheets/Zauber.hbs @@ -0,0 +1,32 @@ +
+
+ +
+
+ {{DSA41_input "name"}} + {{DSA41_input "system.repraesentation" subtitle="DSA41.zauber.repraesentation.label"}} + {{DSA41_input "system.komplexitaet" subtitle="DSA41.zauber.label_komplexitaet"}} +
+
+ {{DSA41_input "system.attribute1"}} + {{DSA41_input "system.attribute2"}} + {{DSA41_input "system.attribute3"}} +
+
+
+ +
+ {{localize "DSA41.zauber.label_zauberdauer"}} + {{DSA41_input "system.zauberdauer"}} + + {{localize "DSA41.zauber.label_wirkungsdauer"}} + {{DSA41_input "system.wirkungsdauer"}} + + {{localize "DSA41.zauber.merkmale.label"}} + {{DSA41_input "system.merkmale"}} +
+ +
+ {{DSA41_input "system.beschreibung" elementType="prose-mirror"}} +
+
diff --git a/src/lang/de.json b/src/lang/de.json index 6fd7c2a..0db58cf 100644 --- a/src/lang/de.json +++ b/src/lang/de.json @@ -11,7 +11,8 @@ "Talent": "Talent", "Kampftalent": "Kampftalent", "Sonderfertigkeit": "Sonderfertigkeit", - "VorNachteil": "Vor-/Nachteil" + "VorNachteil": "Vor-/Nachteil", + "Zauber": "Zauber" } }, @@ -474,6 +475,7 @@ "ruestungen": "Rüstungen", "modifikator": "Modifikator", "crit": "Glückliche Attacke", + "zauber": "Zauber", "zielgroesse": { "label": "Zielgröße", @@ -521,6 +523,83 @@ "seitenwind": "Böiger Seitenwind", "starker_seitenwind": "Starker Seitenwind" } + }, + + "zauber": { + "label_komplexitaet": "Komplexität", + "label_zauberdauer": "Zauberdauer", + "label_wirkungsdauer": "Wirkungsdauer", + + "merkmale": { + "label": "Merkmale", + + "anitmagie": "Antimagie", + "beschwoerung": "Beschwörung", + "daemonisch_allgemein": "Dämonisch (Allgemein)", + "daemonisch_agrimoth_widharcal": "Dämonisch (Agrimoth / Widharcal)", + "daemonisch_amazeroth_iribaar": "Dämonisch (Amazeroth / Iribaar)", + "daemonisch_asfaloth_calijnaar": "Dämonisch (Asfaloth / Calijnaar)", + "daemonisch_belhalhar_xarfai": "Dämonisch (Belhalhar / Xarfai)", + "daemonisch_blakharaz_tyakraman": "Dämonisch (Blakharaz / Tyakra’man)", + "daemonisch_lolgramoth_thezzphai": "Dämonisch (Lolgramoth / Thezzphai)", + "daemonisch_belzhorash_mishkara": "Dämonisch (Belzhorash / Mishkara)", + "daemonisch_thargunitoth_tijakool": "Dämonisch (Thargunitoth / Tijakool)", + "eigenschaften": "Eigenschaften", + "einfluss": "Einfluss", + "elementar_allgemein": "Elementar (Allgemein)", + "elementar_eis": "Elementar (Eis)", + "elementar_erz": "Elementar (Erz)", + "elementar_feuer": "Elementar (Feuer)", + "elementar_humus": "Elementar (Humus)", + "elementar_luft": "Elementar (Luft)", + "elementar_wasser": "Elementar (Wasser)", + "form": "Form", + "geisterwesen": "Geisterwesen", + "heilung": "Heilung", + "hellsicht": "Hellsicht", + "herbeirufung": "Herbeirufung", + "herrschaft": "Herrschaft", + "illusion": "Illusion", + "kraft": "Kraft", + "limbus": "Limbus", + "metamagie": "Metamagie", + "objekt": "Objekt", + "schaden": "Schaden", + "telekinese": "Telekinese", + "temporal": "Temporal", + "umwelt": "Umwelt", + "verständigung": "Verständigung" + }, + + "repraesentation": { + "label": "Repräsentation", + + "borbaradianisch": "Borbaradianisch", + "druidisch": "Druidisch", + "elfisch": "Elfisch", + "geodisch": "Geodisch", + "satuarisch": "Satuarisch", + "kristallomantisch": "Kristallomantisch", + "gildenmagisch": "Gildenmagisch", + "scharlatanisch": "Scharlatanisch", + "schelmisch": "Schelmisch" + }, + + "modifikationen": { + "zauberdauer": "Zauberdauer", + "erzwingen": "Erzwingen", + "kosten": "Kosten", + "mehrere_ziele": "Mehrere Ziele", + "mehrere_ziele_freiwillig": "Mehrere Ziele (Freiwillig)", + "reichweite": "Reichweite", + "reichweite_beruehrung": "Reichweite (Berührung)", + "reichweite_selbst": "Reichweite (Selbst)", + "wirkungsdauer": "Wirkungsdauer", + "ziel_objekt_einzeln": "Zielobjekt (Einzeln)", + "ziel_objekt_freiwillig": "Zielobjekt (Freiwillig)", + "ziel_objekt_unfreiwillig": "Zielobjekt (Unfreiwillig)", + "ziel_objekt_mehrere": "Zielobjekt (Mehrere)" + } } } } diff --git a/src/main.css b/src/main.css index aebd3e7..9f9bdf1 100644 --- a/src/main.css +++ b/src/main.css @@ -434,6 +434,33 @@ html { } } + & [data-application-part="Zauber"] { + & .tab { + grid-template-columns: minmax(0, max-content) minmax(0, 1fr) minmax(0, max-content) minmax(0, 1fr); + align-items: center; + + border-top: 1px solid; + margin-top: 0.5em; + padding-top: 0.5em; + + & multi-select { + display: grid; + grid-template-columns: 1fr min-content; + align-items: right; + + & select { + grid-column: 2; + appearance: none; + + background-position: center; + background-size: contain; + background-repeat: no-repeat; + background-image: url("/systems/dsa-4th-edition/src/Assets/plus.svg"); + } + } + } + } + & [data-application-part="ActorSheet"] { & .tab { &[data-tab="tab1"] { @@ -505,6 +532,10 @@ html { } } + & .Zauber { + grid-template-columns: minmax(0, max-content) minmax(0, auto); + } + & .Ruestung { grid-template-columns: 2fr repeat(8, 1fr) repeat(2, 1.5fr); text-align: center; diff --git a/src/main.mjs b/src/main.mjs index 3f1faaf..fbe05f9 100644 --- a/src/main.mjs +++ b/src/main.mjs @@ -4,7 +4,7 @@ const { DocumentSheetConfig } = foundry.applicat const { loadTemplates, renderTemplate } = foundry.applications.handlebars; const { ActorSheetV2, ItemSheetV2 } = foundry.applications.sheets; const { Notifications } = foundry.applications.ui; -const { SchemaField, NumberField, StringField, BooleanField } = foundry.data.fields; +const { SetField, SchemaField, NumberField, StringField, BooleanField } = foundry.data.fields; const { Roll } = foundry.dice; const { OperatorTerm, NumericTerm } = foundry.dice.terms; const { ChatMessage } = foundry.documents; @@ -55,6 +55,7 @@ Hooks.once("init", async function() { CONFIG.Item.dataModels.Kampftalent = DSA41_KampftalentData; CONFIG.Item.dataModels.Sonderfertigkeit = DSA41_SonderfertigkeitData; CONFIG.Item.dataModels.VorNachteil = DSA41_VorNachteilData; + CONFIG.Item.dataModels.Zauber = DSA41_ZauberData; CONFIG.statusEffects = []; @@ -75,6 +76,7 @@ Hooks.once("init", async function() { "Kampftalent", "Sonderfertigkeit", "VorNachteil", + "Zauber", ] }); @@ -986,6 +988,99 @@ class DSA41_VorNachteilData extends TypeDataModel { } } +class DSA41_ZauberData extends TypeDataModel { + static defineSchema() { + return { + attribute1: new AttributeChoiceField(), + attribute2: new AttributeChoiceField(), + attribute3: new AttributeChoiceField(), + + zauberdauer: new StringField(), + wirkungsdauer: new StringField(), + + kosten: new StringField(), + komplexitaet: new SteigerungsKategorieField(), + + repraesentation: new StringField({ + required: true, + choices: { + "borbaradianisch": "DSA41.zauber.repraesentation.borbaradianisch", + "druidisch": "DSA41.zauber.repraesentation.druidisch", + "elfisch": "DSA41.zauber.repraesentation.elfisch", + "geodisch": "DSA41.zauber.repraesentation.geodisch", + "satuarisch": "DSA41.zauber.repraesentation.satuarisch", + "kristallomantisch": "DSA41.zauber.repraesentation.kristallomantisch", + "gildenmagisch": "DSA41.zauber.repraesentation.gildenmagisch", + "scharlatanisch": "DSA41.zauber.repraesentation.scharlatanisch", + "schelmisch": "DSA41.zauber.repraesentation.schelmisch", + }, + initial: "borbaradianisch", + }), + + merkmale: new SetField(new StringField({ + choices: { + "anitmagie": "DSA41.zauber.merkmale.anitmagie", + "beschwoerung": "DSA41.zauber.merkmale.beschwoerung", + "daemonisch_allgemein": "DSA41.zauber.merkmale.daemonisch_allgemein", + "daemonisch_agrimoth_widharcal": "DSA41.zauber.merkmale.daemonisch_agrimoth_widharcal", + "daemonisch_amazeroth_iribaar": "DSA41.zauber.merkmale.daemonisch_amazeroth_iribaar", + "daemonisch_asfaloth_calijnaar": "DSA41.zauber.merkmale.daemonisch_asfaloth_calijnaar", + "daemonisch_belhalhar_xarfai": "DSA41.zauber.merkmale.daemonisch_belhalhar_xarfai", + "daemonisch_blakharaz_tyakraman": "DSA41.zauber.merkmale.daemonisch_blakharaz_tyakraman", + "daemonisch_lolgramoth_thezzphai": "DSA41.zauber.merkmale.daemonisch_lolgramoth_thezzphai", + "daemonisch_belzhorash_mishkara": "DSA41.zauber.merkmale.daemonisch_belzhorash_mishkara", + "daemonisch_thargunitoth_tijakool": "DSA41.zauber.merkmale.daemonisch_thargunitoth_tijakool", + "eigenschaften": "DSA41.zauber.merkmale.eigenschaften", + "einfluss": "DSA41.zauber.merkmale.einfluss", + "elementar_allgemein": "DSA41.zauber.merkmale.elementar_allgemein", + "elementar_eis": "DSA41.zauber.merkmale.elementar_eis", + "elementar_erz": "DSA41.zauber.merkmale.elementar_erz", + "elementar_feuer": "DSA41.zauber.merkmale.elementar_feuer", + "elementar_humus": "DSA41.zauber.merkmale.elementar_humus", + "elementar_luft": "DSA41.zauber.merkmale.elementar_luft", + "elementar_wasser": "DSA41.zauber.merkmale.elementar_wasser", + "form": "DSA41.zauber.merkmale.form", + "geisterwesen": "DSA41.zauber.merkmale.geisterwesen", + "heilung": "DSA41.zauber.merkmale.heilung", + "hellsicht": "DSA41.zauber.merkmale.hellsicht", + "herbeirufung": "DSA41.zauber.merkmale.herbeirufung", + "herrschaft": "DSA41.zauber.merkmale.herrschaft", + "illusion": "DSA41.zauber.merkmale.illusion", + "kraft": "DSA41.zauber.merkmale.kraft", + "limbus": "DSA41.zauber.merkmale.limbus", + "metamagie": "DSA41.zauber.merkmale.metamagie", + "objekt": "DSA41.zauber.merkmale.objekt", + "schaden": "DSA41.zauber.merkmale.schaden", + "telekinese": "DSA41.zauber.merkmale.telekinese", + "temporal": "DSA41.zauber.merkmale.temporal", + "umwelt": "DSA41.zauber.merkmale.umwelt", + "verständigung": "DSA41.zauber.merkmale.verständigung", + }, + })), + + modifikationen: new SetField(new StringField({ + choices: { + "zauberdauer": "DSA41.zauber.modifikationen.zauberdauer", + "erzwingen": "DSA41.zauber.modifikationen.erzwingen", + "kosten": "DSA41.zauber.modifikationen.kosten", + "mehrere_ziele": "DSA41.zauber.modifikationen.mehrere_ziele", + "mehrere_ziele_freiwillig": "DSA41.zauber.modifikationen.mehrere_ziele_freiwillig", + "reichweite": "DSA41.zauber.modifikationen.reichweite", + "reichweite_beruehrung": "DSA41.zauber.modifikationen.reichweite_beruehrung", + "reichweite_selbst": "DSA41.zauber.modifikationen.reichweite_selbst", + "wirkungsdauer": "DSA41.zauber.modifikationen.wirkungsdauer", + "ziel_objekt": "DSA41.zauber.modifikationen.ziel_objekt", + }, + })), + + haus: new BooleanField({ initial: false }), + zauberfertigkeitswert: new NumberField({ integer: true, initial: 0 }), + + beschreibung: new StringField({ initial: "" }), + }; + } +} + function DSA41_ApplicationMixin(BaseApplication) { class DSA41_Application extends HandlebarsApplicationMixin(BaseApplication) { static DEFAULT_OPTIONS= { @@ -1329,6 +1424,18 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) { const item = this.document.items.get(item_id); item.update({ "system.angelegt": !item.system.angelegt }); }, + + "post-zauber": async function(event, target) { + const item_id = event.target.closest("[data-item-id]").dataset.itemId; + const item = this.document.items.get(item_id); + + ChatMessage.create({ + speaker: ChatMessage.getSpeaker({ actor: this.document }), + author: game.user.id, + sound: CONFIG.sounds.dice, + content: item.system.beschreibung, + }); + }, }, }; @@ -1356,6 +1463,7 @@ class DSA41_ItemSheetV2 extends DSA41_ApplicationMixin(ItemSheetV2) { Kampftalent: { template: "systems/dsa-4th-edition/src/ItemSheets/Kampftalent.hbs" }, Sonderfertigkeit: { template: "systems/dsa-4th-edition/src/ItemSheets/Sonderfertigkeit.hbs" }, VorNachteil: { template: "systems/dsa-4th-edition/src/ItemSheets/VorNachteil.hbs" }, + Zauber: { template: "systems/dsa-4th-edition/src/ItemSheets/Zauber.hbs" }, }; static DEFAULT_OPTIONS = { diff --git a/system.json b/system.json index 514129a..5c2c07d 100644 --- a/system.json +++ b/system.json @@ -13,6 +13,7 @@ "Gegenstand": {}, "Ruestung": {}, "Bewaffnung": {}, + "Zauber": {}, "Talent": {}, "Kampftalent": {},