add very basic implementation of Zauber that just posts its beschreibung to chat

This commit is contained in:
Sven Balzer 2025-05-16 08:18:30 +02:00
parent 96851a7100
commit aaa01834a8
7 changed files with 283 additions and 2 deletions

View File

@ -483,6 +483,29 @@
{{/each}}
</div>
<div class="list Zauber">
<div class="list-header ">
<div>{{localize "DSA41.kampf.zauber"}}</div>
<div class="center"></div>
</div>
{{#unless (ne actor.itemTypes.Zauber.length 0)}}
<div class="list-item">{{localize "DSA41.list_empty"}}</div>
{{/unless}}
{{#each actor.itemTypes.Zauber}}
<div class="list-item" data-item-id="{{_id}}">
<div class="row" data-action="item-open" data-tooltip="{{system.beschreibung}}">
<img class="item-image" src="{{img}}" title="{{name}}">
<div class="col">
<span>{{name}}</span>
</div>
</div>
<button class="right" data-action="post-zauber">Post to Chat</button>
</div>
{{/each}}
</div>
<div class="list Ruestung">
<div class="list-header rowspan2">
<div class="rowspan2">{{localize "DSA41.kampf.ruestungen"}}</div>

7
src/Assets/plus.svg Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<g id="plus">
<rect style="fill:#a59481" id="rect1" width="62" height="8" x="1" y="28" />
<rect style="fill:#a59481" id="rect2" width="8" height="62" x="28" y="1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 328 B

32
src/ItemSheets/Zauber.hbs Normal file
View File

@ -0,0 +1,32 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off">
<div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col">
<div class="grid3 gap">
{{DSA41_input "name"}}
{{DSA41_input "system.repraesentation" subtitle="DSA41.zauber.repraesentation.label"}}
{{DSA41_input "system.komplexitaet" subtitle="DSA41.zauber.label_komplexitaet"}}
</div>
<div class="grid3 gap">
{{DSA41_input "system.attribute1"}}
{{DSA41_input "system.attribute2"}}
{{DSA41_input "system.attribute3"}}
</div>
</div>
</div>
<div class="tab active">
<span>{{localize "DSA41.zauber.label_zauberdauer"}}</span>
{{DSA41_input "system.zauberdauer"}}
<span>{{localize "DSA41.zauber.label_wirkungsdauer"}}</span>
{{DSA41_input "system.wirkungsdauer"}}
<span>{{localize "DSA41.zauber.merkmale.label"}}</span>
{{DSA41_input "system.merkmale"}}
</div>
<div>
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
</div>
</div>

View File

@ -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 / Tyakraman)",
"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)"
}
}
}
}

View File

@ -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;

View File

@ -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 = {

View File

@ -13,6 +13,7 @@
"Gegenstand": {},
"Ruestung": {},
"Bewaffnung": {},
"Zauber": {},
"Talent": {},
"Kampftalent": {},