diff --git a/src/assets/character.svg b/src/assets/character.svg index ba098a65..cd425510 100644 --- a/src/assets/character.svg +++ b/src/assets/character.svg @@ -2,10 +2,14 @@ - + width="280" + height="530" + viewBox="0 0 70 140" + version="1.1" + id="svg1" + xmlns="http://www.w3.org/2000/svg"> + diff --git a/src/assets/quiver.svg b/src/assets/quiver.svg new file mode 100644 index 00000000..d9796253 --- /dev/null +++ b/src/assets/quiver.svg @@ -0,0 +1,28 @@ + + + + diff --git a/src/lang/de.json b/src/lang/de.json index 98a53114..c49e41c0 100644 --- a/src/lang/de.json +++ b/src/lang/de.json @@ -28,6 +28,22 @@ "damage": "Mit {weapon} schaden machen", "initiative": "Initiative würfeln" }, + "EQUIPMENT": { + "SLOTS": { + "links": "Waffe (Links)", + "rechts": "Waffe (Rechts)", + "brust": "Brust", + "ruecken": "Rücken", + "kopf": "Kopf", + "fernkampf": "Waffe (Fernkampf)", + "munition": "Fernkampfmunition", + "armlinks": "Rüstungsteil (Linker Arm)", + "armrechts": "Rüstungsteil (Rechter Arm)", + "bauch": "Bauch", + "beinlinks": "Rüstungsteil (Linkes Bein)", + "beinrechts": "Rüstungsteil (Rechtes Bein)" + } + }, "COMBAT_DIALOG": { "notReadyReason": { "title": "Angriff kann aus folgenden Gründen nicht ausgeführt werden:", diff --git a/src/lang/en.json b/src/lang/en.json index 4236611f..47aca2ed 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -28,6 +28,22 @@ "damage": "Deal damage with {weapon}", "initiative": "Roll initiative" }, + "EQUIPMENT": { + "SLOTS": { + "links": "Weapon (Worn Left)", + "rechts": "Weapon (Worn Right)", + "brust": "Chest", + "ruecken": "Back", + "kopf": "head", + "fernkampf": "Weapon (Ranged)", + "munition": "Ammunition", + "armlinks": "Bracers (Left)", + "armrechts": "Bracers (Right)", + "bauch": "Belly", + "beinlinks": "Greaves (Left)", + "beinrechts": "Greaves (Right)" + } + }, "COMBAT_DIALOG": { "notReadyReason": { "title": "Attack can't be executed due to:", @@ -44,7 +60,30 @@ "bonusDamage": "Additional damage formula:", "buttonText": "Roll Dice" }, + "SPELL_DIALOG": { + "notReadyReason": { + "title": "Spell can't be cast due to:", + "noRepresentation": "No representation selected", + "tooManySpoMods": "Too many spontaneous modifications selected", + "noZFPDataAvailable": "Cast Check wasn't performed yet", + "overspentZFP": "ZfP were overspent" + } + }, "ITEM_BROWSER": { "progress": "{current}/{max}: imported from {compendium}" + }, + "RESOURCE_DIALOG": { + "Lep": { + "title": "Adjust Life Points" + }, + "Aup": { + "title": "Adjust Stamina Points" + }, + "Asp": { + "title": "Adjust Astral Points" + }, + "Kap": { + "title": "Adjust Karmic Points" + } } } diff --git a/src/module/sheets/character/equipment.mjs b/src/module/sheets/character/equipment.mjs index 9b851d5e..3f6eca43 100644 --- a/src/module/sheets/character/equipment.mjs +++ b/src/module/sheets/character/equipment.mjs @@ -60,73 +60,85 @@ export default { target: "links", id: actorData.system.heldenausruestung[setIndex]?.links, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.links)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.links)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.links)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.links") }, { target: "rechts", id: actorData.system.heldenausruestung[setIndex]?.rechts, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.rechts)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.rechts)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.rechts)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.rechts") }, { target: "brust", id: actorData.system.heldenausruestung[setIndex]?.brust, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.brust)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.brust)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.brust)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.brust") }, { target: "ruecken", id: actorData.system.heldenausruestung[setIndex]?.ruecken, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.ruecken)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.ruecken)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.ruecken)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.ruecken") }, { target: "kopf", id: actorData.system.heldenausruestung[setIndex]?.kopf, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.kopf)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.kopf)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.kopf)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.kopf") }, { target: "fernkampf", id: actorData.system.heldenausruestung[setIndex]?.fernkampf, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.fernkampf)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.fernkampf)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.fernkampf)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.fernkampf") }, { target: "munition", id: actorData.system.heldenausruestung[setIndex]?.munition, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.munition)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.munition)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.munition)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.munition") }, { target: "armlinks", id: actorData.system.heldenausruestung[setIndex]?.armlinks, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.armlinks)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.armlinks)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.armlinks)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.armlinks") }, { target: "armrechts", id: actorData.system.heldenausruestung[setIndex]?.armrechts, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.armrechts)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.armrechts)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.armrechts)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.armrechts") }, { target: "bauch", id: actorData.system.heldenausruestung[setIndex]?.bauch, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.bauch)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.bauch)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.bauch)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.bauch") }, { target: "beinlinks", id: actorData.system.heldenausruestung[setIndex]?.beinlinks, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.beinlinks)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.beinlinks)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.beinlinks)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.beinlinks") }, { target: "beinrechts", id: actorData.system.heldenausruestung[setIndex]?.beinrechts, name: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.beinrechts)?.name, - icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.beinrechts)?.img + icon: actorData.items.get(actorData.system.heldenausruestung[setIndex]?.beinrechts)?.img, + tooltip: game.i18n.localize("EQUIPMENT.SLOTS.beinrechts") } ] }) diff --git a/src/style/molecules/_equipment.scss b/src/style/molecules/_equipment.scss index 3a0902fb..8cdaab3f 100644 --- a/src/style/molecules/_equipment.scss +++ b/src/style/molecules/_equipment.scss @@ -11,7 +11,13 @@ margin: 4px 0 0 4px; gap: 8px; scale: 0.98; - background: assets.$tab-pane-background; + + @if $darkmode { + background: rgba(255, 255, 255, 0.1); + } @else { + background: assets.$tab-pane-background; + } + .icon { object-fit: cover; @@ -49,8 +55,13 @@ @include colour.highlight; } - border: 1px solid #ccc; - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.5); + @if $darkmode { + border: 1px solid rgba(255, 255, 255, 0.2); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.5); + } @else { + border: 1px solid #ccc; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.5); + } scale: 1; z-index: 2; } diff --git a/src/style/molecules/_paperdoll.scss b/src/style/molecules/_paperdoll.scss index 28315811..1c73e312 100644 --- a/src/style/molecules/_paperdoll.scss +++ b/src/style/molecules/_paperdoll.scss @@ -1,3 +1,46 @@ +.theme-dark { + .paperdoll { + .paperdoll-image { + fill: rgba(255, 255, 255, 0.05); + stroke: rgba(255, 255, 255, 0.2); + } + .equipped { + + background-color: rgba(255, 255, 255, 0.1); + border-radius: 4px; + border-color: rgba(255, 255, 255, 0.2); + + &.munition::before { + position: absolute; + display: block; + width: 34px; + height: 34px; + left: 0; + bottom: 0; + content: ''; + background-color: rgba(255, 255, 255, 0.2); + -webkit-mask-image: url('/systems/DSA_4-1/assets/quiver.svg'); + mask-image: url('/systems/DSA_4-1/assets/quiver.svg'); + } + + &.munition::after { + content: ""; + position: relative; + display: block; + border: 5px solid rgba(255, 255, 255, 0.4); + border-left: 8px solid transparent; + border-top: 8px solid transparent; + border-right: 8px solid transparent; + height: 4px; + background-color: transparent; + top: -20px; + width: 16px; + left: 8px; + } + } + } +} + .paperdoll { grid-area: equipment; @@ -73,9 +116,37 @@ } &.munition { - top: 80px; + top: 90px; left: 240px; } + + &.munition::before { + position: absolute; + display: block; + width: 34px; + height: 34px; + left: 0; + bottom: 0; + content: ''; + background-color: rgba(0, 0, 0, 0.2); + -webkit-mask-image: url('/systems/DSA_4-1/assets/quiver.svg'); + mask-image: url('/systems/DSA_4-1/assets/quiver.svg'); + } + + &.munition::after { + content: ""; + position: relative; + display: block; + border: 5px solid rgba(0, 0, 0, 0.4); + border-left: 8px solid transparent; + border-top: 8px solid transparent; + border-right: 8px solid transparent; + height: 4px; + background-color: transparent; + top: -20px; + width: 16px; + left: 8px; + } } } diff --git a/src/system.json b/src/system.json index 21ec658b..21932c0f 100644 --- a/src/system.json +++ b/src/system.json @@ -2,7 +2,7 @@ "id": "DSA_4-1", "title": "Das Schwarze Auge 4.1", "description": "Noch ein Spielsystem für Das Schwarze Auge 4.1", - "version": "0.11.3", + "version": "0.0.1", "compatibility": { "minimum": 12, "verified": 13 @@ -364,5 +364,5 @@ "primaryTokenAttribute": "lep.aktuell", "url": "https://git.macniel.online/macniel/foundry-dsa41-game", "manifest": "https://git.macniel.online/macniel/foundry-dsa41-game/raw/branch/main/src/system.json", - "download": "https://git.macniel.online/macniel/foundry-dsa41-game/releases/download/0.11.3/release.zip" + "download": "https://git.macniel.online/macniel/foundry-dsa41-game/releases/download/0.0.1/release.zip" } diff --git a/src/templates/actor/character/standalone/health.hbs b/src/templates/actor/character/standalone/health.hbs index e259fc5f..6e729f25 100644 --- a/src/templates/actor/character/standalone/health.hbs +++ b/src/templates/actor/character/standalone/health.hbs @@ -105,8 +105,10 @@ height="530" viewBox="0 0 70 140" xmlns="http://www.w3.org/2000/svg"> - + {{#if trefferzonen}} {{derived.wunden.kopf}} @@ -119,14 +121,14 @@ {{derived.wunden.beinrechts}} {{/if}} {{#if zonenruestung}} - {{derived.rs.kopf}} - {{derived.rs.brust}} - {{derived.rs.armlinks}} - {{derived.rs.armrechts}} - {{derived.rs.ruecken}} - {{derived.rs.bauch}} - {{derived.rs.beinlinks}} - {{derived.rs.beinrechts}} + {{derived.rs.kopf}} + {{derived.rs.brust}} + {{derived.rs.armlinks}} + {{derived.rs.armrechts}} + {{derived.rs.ruecken}} + {{derived.rs.bauch}} + {{derived.rs.beinlinks}} + {{derived.rs.beinrechts}} {{/if}} diff --git a/src/templates/actor/character/tab-health.hbs b/src/templates/actor/character/tab-health.hbs index dab36be2..b5a4a0f7 100644 --- a/src/templates/actor/character/tab-health.hbs +++ b/src/templates/actor/character/tab-health.hbs @@ -103,8 +103,10 @@ height="530" viewBox="0 0 70 140" xmlns="http://www.w3.org/2000/svg"> - + {{#if trefferzonen}} {{derived.wunden.kopf}} @@ -117,14 +119,14 @@ {{derived.wunden.beinrechts}} {{/if}} {{#if zonenruestung}} - {{derived.rs.kopf}} - {{derived.rs.brust}} - {{derived.rs.armlinks}} - {{derived.rs.armrechts}} - {{derived.rs.ruecken}} - {{derived.rs.bauch}} - {{derived.rs.beinlinks}} - {{derived.rs.beinrechts}} + {{derived.rs.kopf}} + {{derived.rs.brust}} + {{derived.rs.armlinks}} + {{derived.rs.armrechts}} + {{derived.rs.ruecken}} + {{derived.rs.bauch}} + {{derived.rs.beinlinks}} + {{derived.rs.beinrechts}} {{/if}} diff --git a/src/templates/actor/character/tab-set.hbs b/src/templates/actor/character/tab-set.hbs index e383d2b6..4a84c257 100644 --- a/src/templates/actor/character/tab-set.hbs +++ b/src/templates/actor/character/tab-set.hbs @@ -4,12 +4,14 @@ height="530" viewBox="0 0 70 140" xmlns="http://www.w3.org/2000/svg"> - + {{#each this.slots}} -
{{/each}} diff --git a/src/templates/actor/character/tab-set2.hbs b/src/templates/actor/character/tab-set2.hbs index d5f0b1f5..9d99e8aa 100644 --- a/src/templates/actor/character/tab-set2.hbs +++ b/src/templates/actor/character/tab-set2.hbs @@ -9,13 +9,15 @@ height="530" viewBox="0 0 70 140" xmlns="http://www.w3.org/2000/svg"> - + {{#each this.slots}}
{{/each}} {{#if (eq ../actor.system.setEquipped @index)}} diff --git a/src/templates/actor/character/tab-set3.hbs b/src/templates/actor/character/tab-set3.hbs index a274668b..bb88419c 100644 --- a/src/templates/actor/character/tab-set3.hbs +++ b/src/templates/actor/character/tab-set3.hbs @@ -9,8 +9,10 @@ height="530" viewBox="0 0 70 140" xmlns="http://www.w3.org/2000/svg"> - + {{#each this.slots}}