11 Commits

Author SHA1 Message Date
Sven Balzer b6b0411473 add anzahl to Gegenstaende 2025-11-09 12:44:37 +01:00
Sven Balzer bf5a3fa06b invert modifikator for talente 2025-10-24 00:39:32 +02:00
Sven Balzer f1fff6b6ba fix BE of some Talente 2025-10-18 20:11:44 +02:00
Sven Balzer 716d5b0413 add Anmerkung field to Attacke and Parade dialogs 2025-10-06 08:35:50 +02:00
Sven Balzer e320c2f9ac fix for zauber that do not take magieresistenz into account 2025-10-05 19:17:33 +02:00
Sven Balzer 80e6e1ad43 layout simplification 2025-09-23 00:18:08 +02:00
Sven Balzer 8c4dca3eed add slight color change for every other list item 2025-09-11 13:49:08 +02:00
Sven Balzer aa3a3e633d add different hover background color for list items 2025-09-11 13:24:54 +02:00
Sven Balzer e14506998f add display for Magische Sonderfertigkeiten 2025-09-11 13:16:48 +02:00
Sven Balzer e4067d46a3 Fix Singen talent in compendium 2025-09-09 13:01:27 +02:00
Sven Balzer 39c3f90240 fix broken sorting for talente 2025-09-07 08:29:44 +02:00
21 changed files with 256 additions and 175 deletions
+47 -17
View File
@@ -357,6 +357,7 @@
<div>{{localize "DSA41.inventar.bewaffnung"}}</div> <div>{{localize "DSA41.inventar.bewaffnung"}}</div>
<div></div> <div></div>
<div></div> <div></div>
<div></div>
<div class="center">{{localize "DSA41.weight.label"}}</div> <div class="center">{{localize "DSA41.weight.label"}}</div>
<div></div> <div></div>
</div> </div>
@@ -380,6 +381,7 @@
</div> </div>
</div> </div>
<div></div> <div></div>
<div></div>
<div class="center fas fa-sword" data-action="toggle_equipped" data-equipped="{{system.angelegt}}"></div> <div class="center fas fa-sword" data-action="toggle_equipped" data-equipped="{{system.angelegt}}"></div>
<div class="center">{{this.system.gewicht.value}} {{localize (concat "DSA41.weight." this.system.gewicht.unit)}}</div> <div class="center">{{this.system.gewicht.value}} {{localize (concat "DSA41.weight." this.system.gewicht.unit)}}</div>
<div class="center fas fa-trash" data-action="item-delete"></div> <div class="center fas fa-trash" data-action="item-delete"></div>
@@ -392,7 +394,9 @@
<div class="row">{{localize "DSA41.inventar.ruestungen"}}</div> <div class="row">{{localize "DSA41.inventar.ruestungen"}}</div>
<div></div> <div></div>
<div></div> <div></div>
<div></div>
<div class="center">{{localize "DSA41.weight.label"}}</div> <div class="center">{{localize "DSA41.weight.label"}}</div>
<div></div>
</div> </div>
{{#unless (ne actor.itemTypes.Ruestung.length 0)}} {{#unless (ne actor.itemTypes.Ruestung.length 0)}}
@@ -406,6 +410,7 @@
<span class="center">{{this.name}}</span> <span class="center">{{this.name}}</span>
</div> </div>
<div></div> <div></div>
<div></div>
<div class="center fas fa-shield-halved" data-action="toggle_equipped" data-equipped="{{system.angelegt}}"></div> <div class="center fas fa-shield-halved" data-action="toggle_equipped" data-equipped="{{system.angelegt}}"></div>
<div class="center">{{this.system.gewicht.value}} {{localize (concat "DSA41.weight." this.system.gewicht.unit)}}</div> <div class="center">{{this.system.gewicht.value}} {{localize (concat "DSA41.weight." this.system.gewicht.unit)}}</div>
<div class="center fas fa-trash" data-action="item-delete"></div> <div class="center fas fa-trash" data-action="item-delete"></div>
@@ -417,8 +422,10 @@
<div class="list-header"> <div class="list-header">
<div>{{localize "DSA41.inventar.gegenstaende"}}</div> <div>{{localize "DSA41.inventar.gegenstaende"}}</div>
<div></div> <div></div>
<div class="center">{{localize "DSA41.inventar.anzahl"}}</div>
<div></div> <div></div>
<div class="center">{{localize "DSA41.weight.label"}}</div> <div class="center">{{localize "DSA41.weight.label"}}</div>
<div></div>
</div> </div>
{{#unless (ne actor.itemTypes.Gegenstand.length 0)}} {{#unless (ne actor.itemTypes.Gegenstand.length 0)}}
@@ -432,8 +439,9 @@
<span class="center">{{this.name}}</span> <span class="center">{{this.name}}</span>
</div> </div>
<div></div> <div></div>
<div class="center anzahl">{{>editable-input type="number" size=(string-length system.anzahl) data-name="system.anzahl" value=system.anzahl}}</div>
<div></div> <div></div>
<div class="center">{{this.system.gewicht.value}} {{localize (concat "DSA41.weight." this.system.gewicht.unit)}}</div> <div class="center">{{mul this.system.gewicht.value this.system.anzahl}} {{localize (concat "DSA41.weight." this.system.gewicht.unit)}}</div>
<div class="center fas fa-trash" data-action="item-delete"></div> <div class="center fas fa-trash" data-action="item-delete"></div>
</div> </div>
{{/each}} {{/each}}
@@ -580,25 +588,25 @@
</div> </div>
<div class="list Sonderfertigkeiten"> <div class="list Sonderfertigkeiten">
<div class="list-header"> <div class="list-header">
<div>{{localize (concat "DSA41.sonderfertigkeiten.label_kampf")}}</div> <div>{{localize (concat "DSA41.sonderfertigkeiten.label_kampf")}}</div>
</div> </div>
{{#unless (ne actor.system.computed.num_kampf_sonderfertigkeiten 0)}} {{#unless (ne actor.system.computed.num_kampf_sonderfertigkeiten 0)}}
<div class="list-item">{{localize "DSA41.list_empty"}}</div> <div class="list-item">{{localize "DSA41.list_empty"}}</div>
{{/unless}} {{/unless}}
{{#each actor.itemTypes.Sonderfertigkeit}} {{#each actor.itemTypes.Sonderfertigkeit}}
{{#if (eq this.system.kategorie "kampf")}} {{#if (eq this.system.kategorie "kampf")}}
<div class="list-item" data-item-id="{{_id}}"> <div class="list-item" data-item-id="{{_id}}">
<div> <div>
<div class="fit-content" data-action="item-open" data-tooltip="{{this.system.beschreibung}}">{{maybeLocalize name prefix=(concat "DSA41.sonderfertigkeiten." system.kategorie ".name")}}</div> <div class="fit-content" data-action="item-open" data-tooltip="{{this.system.beschreibung}}">{{maybeLocalize name prefix=(concat "DSA41.sonderfertigkeiten." system.kategorie ".name")}}</div>
</div>
<div></div>
<div class="center fas fa-trash" data-action="item-delete"></div>
</div> </div>
{{/if}} <div></div>
{{/each}} <div class="center fas fa-trash" data-action="item-delete"></div>
</div>
{{/if}}
{{/each}}
</div> </div>
</div> </div>
@@ -637,6 +645,28 @@
</div> </div>
{{/each}} {{/each}}
</div> </div>
<div class="list Sonderfertigkeiten">
<div class="list-header">
<div>{{localize (concat "DSA41.sonderfertigkeiten.label_magisch")}}</div>
</div>
{{#unless (ne actor.system.computed.num_magische_sonderfertigkeiten 0)}}
<div class="list-item">{{localize "DSA41.list_empty"}}</div>
{{/unless}}
{{#each actor.itemTypes.Sonderfertigkeit}}
{{#if (eq this.system.kategorie "magisch")}}
<div class="list-item" data-item-id="{{_id}}">
<div>
<div class="fit-content" data-action="item-open" data-tooltip="{{this.system.beschreibung}}">{{maybeLocalize name prefix=(concat "DSA41.sonderfertigkeiten." system.kategorie ".name")}}</div>
</div>
<div></div>
<div class="center fas fa-trash" data-action="item-delete"></div>
</div>
{{/if}}
{{/each}}
</div>
</div> </div>
</div> </div>
</div> </div>
+3
View File
@@ -2,6 +2,9 @@
<span class="colspan2">{{localize "DSA41.kampf.modifikator"}}</span> <span class="colspan2">{{localize "DSA41.kampf.modifikator"}}</span>
<input class="colspan2" type="number" name="modifikator" value="{{lookup formData "modifikator"}}"> <input class="colspan2" type="number" name="modifikator" value="{{lookup formData "modifikator"}}">
<span class="colspan2">{{localize "DSA41.kampf.anmerkung"}}</span>
<input class="colspan2" type="text" name="anmerkung" value="{{lookup formData "anmerkung"}}">
<div class="dsa41-calculation colspan4 center"> <div class="dsa41-calculation colspan4 center">
<ruby>{{options.item.basis_attacke}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby> <ruby>{{options.item.basis_attacke}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby>
+3
View File
@@ -5,6 +5,9 @@
<span>{{localize "DSA41.kampf.crit"}}</span> <span>{{localize "DSA41.kampf.crit"}}</span>
<input class="center" type="checkbox" name="crit" {{checked (lookup formData "crit")}}> <input class="center" type="checkbox" name="crit" {{checked (lookup formData "crit")}}>
<span>{{localize "DSA41.kampf.anmerkung"}}</span>
<input type="text" name="anmerkung" value="{{lookup formData "anmerkung"}}">
<div class="dsa41-calculation colspan4 center"> <div class="dsa41-calculation colspan4 center">
{{#if formData.crit}}({{/if}} {{#if formData.crit}}({{/if}}
<ruby>{{options.item.basis_parade}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby> <ruby>{{options.item.basis_parade}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby>
+1 -1
View File
@@ -2,7 +2,7 @@
{{#if (eq type "checkbox")}} {{#if (eq type "checkbox")}}
<input type="checkbox" name="{{name}}" {{#if data-name}}data-name="{{data-name}}"{{/if}} {{checked value}}> <input type="checkbox" name="{{name}}" {{#if data-name}}data-name="{{data-name}}"{{/if}} {{checked value}}>
{{else}} {{else}}
<input type="{{type}}" name="{{name}}" {{#if data-name}}data-name="{{data-name}}"{{/if}} value="{{value}}" placeholder="{{placeholder}}"> <input type="{{type}}" name="{{name}}" {{#if data-name}}data-name="{{data-name}}"{{/if}} {{#if size}}size="{{size}}"{{/if}} value="{{value}}" placeholder="{{placeholder}}">
{{/if}} {{/if}}
{{#if placeholder}} {{#if placeholder}}
+97 -97
View File
@@ -1,4 +1,4 @@
<div class="Bewaffnung {{ cssClass }}"> <div>
<div class="row"> <div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img"> <img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col"> <div class="col">
@@ -28,103 +28,103 @@
</div> </div>
</nav> </nav>
<div class="tab {{#if (eq tabGroups.primary 'tab1')}}active{{/if}}" data-group="primary" data-tab="tab1">
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.trefferpunkte"}}</span>
<div class="grid3 center">
{{DSA41_input "system.nahkampfwaffe.basis" subtitle="DSA41.bewaffnung.nahkampfwaffe.basis"}}
{{DSA41_input "system.nahkampfwaffe.schwellenwert" subtitle="DSA41.bewaffnung.nahkampfwaffe.schwellenwert"}}
{{DSA41_input "system.nahkampfwaffe.schadensschritte" subtitle="DSA41.bewaffnung.nahkampfwaffe.schadensschritte"}}
</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.modifikator"}}</span>
<div class="grid2">
{{DSA41_input "system.nahkampfwaffe.modifikator_attacke" subtitle="DSA41.bewaffnung.nahkampfwaffe.attacke"}}
{{DSA41_input "system.nahkampfwaffe.modifikator_parade" subtitle="DSA41.bewaffnung.nahkampfwaffe.parade"}}
</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.initiative"}}</span>
<div>{{DSA41_input "system.nahkampfwaffe.initiative"}}</div>
<span>{{localize "DSA41.bewaffnung.bruchfaktor"}}</span>
<div>{{DSA41_input "system.nahkampfwaffe.bruchfaktor"}}</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.distanzklasse"}}</span>
<div>{{DSA41_input "system.nahkampfwaffe.distanzklasse"}}</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.kampftalente"}}</span>
<div>{{DSA41_input "system.nahkampfwaffe.kampftalente"}}</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.laenge"}}</span>
<div>{{DSA41_input "system.nahkampfwaffe.laenge"}}</div>
<div class="colspan2"></div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.zweihaendig"}}</span>
<div>{{DSA41_input "system.nahkampfwaffe.zweihaendig"}}</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.werfbar"}}</span>
<div>{{DSA41_input "system.nahkampfwaffe.werfbar"}}</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.improvisiert"}}</span>
<div>{{DSA41_input "system.nahkampfwaffe.improvisiert"}}</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.priviligiert"}}</span>
<div>{{DSA41_input "system.nahkampfwaffe.priviligiert"}}</div>
</div>
<div class="tab {{#if (eq tabGroups.primary 'tab2')}}active{{/if}}" data-group="primary" data-tab="tab2">
<span>{{localize "DSA41.bewaffnung.parierwaffe.initiative"}}</span>
<div>{{DSA41_input "system.parierwaffe.initiative"}}</div>
<span>{{localize "DSA41.bewaffnung.parierwaffe.modifikator"}}</span>
<div class="grid2">
{{DSA41_input "system.parierwaffe.modifikator_attacke" subtitle="DSA41.bewaffnung.parierwaffe.attacke"}}
{{DSA41_input "system.parierwaffe.modifikator_parade" subtitle="DSA41.bewaffnung.parierwaffe.parade"}}
</div>
<span>{{localize "DSA41.bewaffnung.bruchfaktor"}}</span>
<div>{{DSA41_input "system.parierwaffe.bruchfaktor"}}</div>
</div>
<div class="tab {{#if (eq tabGroups.primary 'tab3')}}active{{/if}}" data-group="primary" data-tab="tab3">
<span>{{localize "DSA41.bewaffnung.schild.groesse.label"}}</span>
{{DSA41_input "system.schild.groesse"}}
<span>{{localize "DSA41.bewaffnung.schild.modifikator"}}</span>
<div class="grid2">
{{DSA41_input "system.schild.modifikator_attacke" subtitle="DSA41.bewaffnung.schild.attacke"}}
{{DSA41_input "system.schild.modifikator_parade" subtitle="DSA41.bewaffnung.schild.parade"}}
</div>
<span>{{localize "DSA41.bewaffnung.schild.initiative"}}</span>
<div>{{DSA41_input "system.schild.initiative"}}</div>
<span>{{localize "DSA41.bewaffnung.bruchfaktor"}}</span>
<div>{{DSA41_input "system.schild.bruchfaktor"}}</div>
</div>
<div class="tab {{#if (eq tabGroups.primary 'tab4')}}active{{/if}}" data-group="primary" data-tab="tab4">
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.trefferpunkte"}}</span>
<div class="center">{{DSA41_input "system.fernkampfwaffe.basis"}}</div>
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.laden"}}</span>
<div>{{DSA41_input "system.fernkampfwaffe.laden"}}</div>
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.munitionskosten"}}</span>
<div>{{DSA41_input "system.fernkampfwaffe.munitionskosten"}}</div>
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.munitionsgewicht"}}</span>
<div>{{DSA41_input "system.fernkampfwaffe.munitionsgewicht"}}</div>
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.reichweiten"}}</span>
<div class="colspan3 grid5">
{{DSA41_input "system.fernkampfwaffe.reichweite1"}}
{{DSA41_input "system.fernkampfwaffe.reichweite2"}}
{{DSA41_input "system.fernkampfwaffe.reichweite3"}}
{{DSA41_input "system.fernkampfwaffe.reichweite4"}}
{{DSA41_input "system.fernkampfwaffe.reichweite5"}}
</div>
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.modifikator"}}</span>
<div class="row colspan3 grid5">
{{DSA41_input "system.fernkampfwaffe.modifikator1"}}
{{DSA41_input "system.fernkampfwaffe.modifikator2"}}
{{DSA41_input "system.fernkampfwaffe.modifikator3"}}
{{DSA41_input "system.fernkampfwaffe.modifikator4"}}
{{DSA41_input "system.fernkampfwaffe.modifikator5"}}
</div>
</div>
<div> <div>
<div class="tab {{#if (eq tabGroups.primary 'tab1')}}active{{/if}}" data-group="primary" data-tab="tab1">
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.trefferpunkte"}}</span>
<div class="grid3 center">
{{DSA41_input "system.nahkampfwaffe.basis" subtitle="DSA41.bewaffnung.nahkampfwaffe.basis"}}
{{DSA41_input "system.nahkampfwaffe.schwellenwert" subtitle="DSA41.bewaffnung.nahkampfwaffe.schwellenwert"}}
{{DSA41_input "system.nahkampfwaffe.schadensschritte" subtitle="DSA41.bewaffnung.nahkampfwaffe.schadensschritte"}}
</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.modifikator"}}</span>
<div class="grid2">
{{DSA41_input "system.nahkampfwaffe.modifikator_attacke" subtitle="DSA41.bewaffnung.nahkampfwaffe.attacke"}}
{{DSA41_input "system.nahkampfwaffe.modifikator_parade" subtitle="DSA41.bewaffnung.nahkampfwaffe.parade"}}
</div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.initiative"}}</span>
{{DSA41_input "system.nahkampfwaffe.initiative"}}
<span>{{localize "DSA41.bewaffnung.bruchfaktor"}}</span>
{{DSA41_input "system.nahkampfwaffe.bruchfaktor"}}
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.distanzklasse"}}</span>
{{DSA41_input "system.nahkampfwaffe.distanzklasse"}}
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.kampftalente"}}</span>
{{DSA41_input "system.nahkampfwaffe.kampftalente"}}
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.laenge"}}</span>
{{DSA41_input "system.nahkampfwaffe.laenge"}}
<div class="colspan2"></div>
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.zweihaendig"}}</span>
{{DSA41_input "system.nahkampfwaffe.zweihaendig"}}
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.werfbar"}}</span>
{{DSA41_input "system.nahkampfwaffe.werfbar"}}
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.improvisiert"}}</span>
{{DSA41_input "system.nahkampfwaffe.improvisiert"}}
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.priviligiert"}}</span>
{{DSA41_input "system.nahkampfwaffe.priviligiert"}}
</div>
<div class="tab {{#if (eq tabGroups.primary 'tab2')}}active{{/if}}" data-group="primary" data-tab="tab2">
<span>{{localize "DSA41.bewaffnung.parierwaffe.initiative"}}</span>
{{DSA41_input "system.parierwaffe.initiative"}}
<span>{{localize "DSA41.bewaffnung.parierwaffe.modifikator"}}</span>
<div class="grid2">
{{DSA41_input "system.parierwaffe.modifikator_attacke" subtitle="DSA41.bewaffnung.parierwaffe.attacke"}}
{{DSA41_input "system.parierwaffe.modifikator_parade" subtitle="DSA41.bewaffnung.parierwaffe.parade"}}
</div>
<span>{{localize "DSA41.bewaffnung.bruchfaktor"}}</span>
{{DSA41_input "system.parierwaffe.bruchfaktor"}}
</div>
<div class="tab {{#if (eq tabGroups.primary 'tab3')}}active{{/if}}" data-group="primary" data-tab="tab3">
<span>{{localize "DSA41.bewaffnung.schild.groesse.label"}}</span>
{{DSA41_input "system.schild.groesse"}}
<span>{{localize "DSA41.bewaffnung.schild.modifikator"}}</span>
<div class="grid2">
{{DSA41_input "system.schild.modifikator_attacke" subtitle="DSA41.bewaffnung.schild.attacke"}}
{{DSA41_input "system.schild.modifikator_parade" subtitle="DSA41.bewaffnung.schild.parade"}}
</div>
<span>{{localize "DSA41.bewaffnung.schild.initiative"}}</span>
{{DSA41_input "system.schild.initiative"}}
<span>{{localize "DSA41.bewaffnung.bruchfaktor"}}</span>
{{DSA41_input "system.schild.bruchfaktor"}}
</div>
<div class="tab {{#if (eq tabGroups.primary 'tab4')}}active{{/if}}" data-group="primary" data-tab="tab4">
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.trefferpunkte"}}</span>
<div class="center">{{DSA41_input "system.fernkampfwaffe.basis"}}</div>
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.laden"}}</span>
{{DSA41_input "system.fernkampfwaffe.laden"}}
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.munitionskosten"}}</span>
{{DSA41_input "system.fernkampfwaffe.munitionskosten"}}
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.munitionsgewicht"}}</span>
{{DSA41_input "system.fernkampfwaffe.munitionsgewicht"}}
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.reichweiten"}}</span>
<div class="colspan3 grid5">
{{DSA41_input "system.fernkampfwaffe.reichweite1"}}
{{DSA41_input "system.fernkampfwaffe.reichweite2"}}
{{DSA41_input "system.fernkampfwaffe.reichweite3"}}
{{DSA41_input "system.fernkampfwaffe.reichweite4"}}
{{DSA41_input "system.fernkampfwaffe.reichweite5"}}
</div>
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.modifikator"}}</span>
<div class="row colspan3 grid5">
{{DSA41_input "system.fernkampfwaffe.modifikator1"}}
{{DSA41_input "system.fernkampfwaffe.modifikator2"}}
{{DSA41_input "system.fernkampfwaffe.modifikator3"}}
{{DSA41_input "system.fernkampfwaffe.modifikator4"}}
{{DSA41_input "system.fernkampfwaffe.modifikator5"}}
</div>
</div>
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}} {{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
</div> </div>
</div> </div>
+2 -5
View File
@@ -1,4 +1,4 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off"> <div>
<div class="row"> <div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img"> <img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col"> <div class="col">
@@ -9,8 +9,5 @@
</div> </div>
</div> </div>
</div> </div>
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
<div>
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
</div>
</div> </div>
+2 -4
View File
@@ -1,4 +1,4 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off"> <div>
<div class="row"> <div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img"> <img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col"> <div class="col">
@@ -12,7 +12,5 @@
</div> </div>
</div> </div>
</div> </div>
<div> {{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
</div>
</div> </div>
+12 -14
View File
@@ -1,4 +1,4 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off"> <div>
<div class="row"> <div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img"> <img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col"> <div class="col">
@@ -12,32 +12,30 @@
<div class="tab active"> <div class="tab active">
<span>{{localize "DSA41.ruestungen.kopf"}}</span> <span>{{localize "DSA41.ruestungen.kopf"}}</span>
<div>{{DSA41_input "system.kopf"}}</div> {{DSA41_input "system.kopf"}}
<span>{{localize "DSA41.ruestungen.brust"}}</span> <span>{{localize "DSA41.ruestungen.brust"}}</span>
<div>{{DSA41_input "system.brust"}}</div> {{DSA41_input "system.brust"}}
<span>{{localize "DSA41.ruestungen.ruecken"}}</span> <span>{{localize "DSA41.ruestungen.ruecken"}}</span>
<div>{{DSA41_input "system.ruecken"}}</div> {{DSA41_input "system.ruecken"}}
<span>{{localize "DSA41.ruestungen.bauch"}}</span> <span>{{localize "DSA41.ruestungen.bauch"}}</span>
<div>{{DSA41_input "system.bauch"}}</div> {{DSA41_input "system.bauch"}}
<span>{{localize "DSA41.ruestungen.linker_arm"}}</span> <span>{{localize "DSA41.ruestungen.linker_arm"}}</span>
<div>{{DSA41_input "system.linker_arm"}}</div> {{DSA41_input "system.linker_arm"}}
<span>{{localize "DSA41.ruestungen.rechter_arm"}}</span> <span>{{localize "DSA41.ruestungen.rechter_arm"}}</span>
<div>{{DSA41_input "system.rechter_arm"}}</div> {{DSA41_input "system.rechter_arm"}}
<span>{{localize "DSA41.ruestungen.linkes_bein"}}</span> <span>{{localize "DSA41.ruestungen.linkes_bein"}}</span>
<div>{{DSA41_input "system.linkes_bein"}}</div> {{DSA41_input "system.linkes_bein"}}
<span>{{localize "DSA41.ruestungen.rechtes_bein"}}</span> <span>{{localize "DSA41.ruestungen.rechtes_bein"}}</span>
<div>{{DSA41_input "system.rechtes_bein"}}</div> {{DSA41_input "system.rechtes_bein"}}
<span>{{localize "DSA41.ruestungen.gesamt_ruestungsschutz"}}</span> <span>{{localize "DSA41.ruestungen.gesamt_ruestungsschutz"}}</span>
<div>{{DSA41_input "system.gesamt_ruestungsschutz"}}</div> {{DSA41_input "system.gesamt_ruestungsschutz"}}
<span>{{localize "DSA41.ruestungen.gesamt_behinderung"}}</span> <span>{{localize "DSA41.ruestungen.gesamt_behinderung"}}</span>
<div>{{DSA41_input "system.gesamt_behinderung"}}</div> {{DSA41_input "system.gesamt_behinderung"}}
</div>
<div> {{DSA41_input "system.beschreibung" elementType="prose-mirror" classes="colspan-all"}}
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
</div> </div>
</div> </div>
+2 -4
View File
@@ -1,4 +1,4 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off"> <div>
<div class="row"> <div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img"> <img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col"> <div class="col">
@@ -12,7 +12,5 @@
</div> </div>
</div> </div>
</div> </div>
<div> {{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
</div>
</div> </div>
+2 -4
View File
@@ -1,4 +1,4 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off"> <div>
<div class="row"> <div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img"> <img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col"> <div class="col">
@@ -14,7 +14,5 @@
</div> </div>
</div> </div>
</div> </div>
<div> {{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
</div>
</div> </div>
+2 -4
View File
@@ -1,4 +1,4 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off"> <div>
<div class="row"> <div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img"> <img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col"> <div class="col">
@@ -11,7 +11,5 @@
</div> </div>
</div> </div>
</div> </div>
<div> {{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
</div>
</div> </div>
+2 -5
View File
@@ -1,4 +1,4 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off"> <div>
<div class="row"> <div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img"> <img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col"> <div class="col">
@@ -28,8 +28,5 @@
<span>{{localize "DSA41.zauber.label_magieresistenz"}}</span> <span>{{localize "DSA41.zauber.label_magieresistenz"}}</span>
{{DSA41_input "system.magieresistenz"}} {{DSA41_input "system.magieresistenz"}}
</div> </div>
{{DSA41_input "system.beschreibung" elementType="prose-mirror" classes="colspan-all"}}
<div>
{{DSA41_input "system.beschreibung" elementType="prose-mirror"}}
</div>
</div> </div>
+3 -1
View File
@@ -479,7 +479,8 @@
"inventar": { "inventar": {
"bewaffnung": "Bewaffnung", "bewaffnung": "Bewaffnung",
"ruestungen": "Rüstungen", "ruestungen": "Rüstungen",
"gegenstaende": "Gegenstände" "gegenstaende": "Gegenstände",
"anzahl": "Anzahl"
}, },
"kampf": { "kampf": {
@@ -491,6 +492,7 @@
"modifikator": "Modifikator", "modifikator": "Modifikator",
"crit": "Glückliche Attacke", "crit": "Glückliche Attacke",
"zauber": "Zauber", "zauber": "Zauber",
"anmerkung": "Anmerkung",
"zielgroesse": { "zielgroesse": {
"label": "Zielgröße", "label": "Zielgröße",
+18 -1
View File
@@ -424,6 +424,14 @@ html {
border: none; border: none;
border-radius: 0px 0px 5px 5px; border-radius: 0px 0px 5px 5px;
} }
&:nth-child(odd) {
background: #272b33;
}
&:hover {
background: #3b404d;
}
} }
&.Dialog > .window-content { &.Dialog > .window-content {
@@ -580,7 +588,7 @@ html {
} }
&[data-tab="inventar"] { &[data-tab="inventar"] {
grid-template-columns: minmax(min-content, max-content) auto min-content minmax(min-content, max-content) min-content; grid-template-columns: minmax(min-content, max-content) auto max-content min-content minmax(min-content, max-content) min-content;
& > * { & > * {
grid-column: 1 / -1; grid-column: 1 / -1;
@@ -589,6 +597,11 @@ html {
& [data-equipped="false"] { & [data-equipped="false"] {
color: #464c5f; color: #464c5f;
} }
& .anzahl input {
background: transparent;
field-sizing: content;
}
} }
&[data-tab="kampf"] { &[data-tab="kampf"] {
@@ -648,6 +661,10 @@ html {
& > * { & > * {
grid-column: 1 / -1; grid-column: 1 / -1;
} }
& .Sonderfertigkeiten {
grid-template-columns: minmax(min-content, max-content) auto min-content;
}
} }
} }
} }
+42 -13
View File
@@ -80,6 +80,18 @@ Hooks.once("init", async function() {
] ]
}); });
Handlebars.registerHelper({
"string-length": (value, options) => {
return value.toString().length;
}
});
Handlebars.registerHelper({
"mul": (a, b, options) => {
return a * b;
}
});
Handlebars.registerHelper({ Handlebars.registerHelper({
maybeLocalize: (value, options) => { maybeLocalize: (value, options) => {
const prefix = options.hash.prefix ? options.hash.prefix.string : null; const prefix = options.hash.prefix ? options.hash.prefix.string : null;
@@ -151,6 +163,10 @@ Hooks.once("init", async function() {
}); });
}); });
function string_compare(a, b) {
return a > b ? 1 : a < b ? -1 : 0;
}
function get_targeted_actors() { function get_targeted_actors() {
const targets = []; const targets = [];
@@ -622,6 +638,7 @@ class DSA41_CharacterData extends TypeDataModel {
num_nachteile: 0, num_nachteile: 0,
num_allgemeine_sonderfertigkeiten: 0, num_allgemeine_sonderfertigkeiten: 0,
num_kampf_sonderfertigkeiten: 0, num_kampf_sonderfertigkeiten: 0,
num_magische_sonderfertigkeiten: 0,
num_waffen: 0, num_waffen: 0,
num_fernkampf_waffen: 0, num_fernkampf_waffen: 0,
@@ -792,7 +809,7 @@ class DSA41_CharacterData extends TypeDataModel {
this.computed.parade.wert = this.computed.parade.basiswert + this.modifikator_parade + this.computed.wunden_modifiers.parade; this.computed.parade.wert = this.computed.parade.basiswert + this.modifikator_parade + this.computed.wunden_modifiers.parade;
this.computed.fernkampf.wert = this.computed.fernkampf.basiswert + this.modifikator_fernkampf; this.computed.fernkampf.wert = this.computed.fernkampf.basiswert + this.modifikator_fernkampf;
this.kampftalente = this.parent.items.filter((x) => x.type === "Kampftalent").sort((a, b) => a.name > b.name); this.kampftalente = this.parent.items.filter((x) => x.type === "Kampftalent").sort((a, b) => string_compare(a.name, b.name));
for(const talent of this.kampftalente) { for(const talent of this.kampftalente) {
this.computed.kampf.talente[talent.name] = {}; this.computed.kampf.talente[talent.name] = {};
this.computed.kampf.talente[talent.name].attacke = (talent.system.kategorie === "fernkampf" ? this.computed.fernkampf.wert : this.computed.attacke.wert) + talent.system.attacke; this.computed.kampf.talente[talent.name].attacke = (talent.system.kategorie === "fernkampf" ? this.computed.fernkampf.wert : this.computed.attacke.wert) + talent.system.attacke;
@@ -900,7 +917,7 @@ class DSA41_CharacterData extends TypeDataModel {
computed.trefferpunkte_display = computed.trefferpunkte.replace(/[\+\-]/, (op) => "<br>" + op); computed.trefferpunkte_display = computed.trefferpunkte.replace(/[\+\-]/, (op) => "<br>" + op);
} }
const talente = this.parent.items.filter((x) => x.type === "Talent").sort((a, b) => a.name > b.name); const talente = this.parent.items.filter((x) => x.type === "Talent").sort((a, b) => string_compare(a.name, b.name));
this.talente = { this.talente = {
koerperliche: talente.filter((x) => x.system.kategorie === "koerperliche"), koerperliche: talente.filter((x) => x.system.kategorie === "koerperliche"),
gesellschaftliche: talente.filter((x) => x.system.kategorie === "gesellschaftliche"), gesellschaftliche: talente.filter((x) => x.system.kategorie === "gesellschaftliche"),
@@ -909,10 +926,11 @@ class DSA41_CharacterData extends TypeDataModel {
handwerks: talente.filter((x) => x.system.kategorie === "handwerks"), handwerks: talente.filter((x) => x.system.kategorie === "handwerks"),
}; };
this.computed.num_allgemeine_sonderfertigkeiten = this.parent.items.filter((x) => x.type === "Sonderfertigkeit" && x.system.kategorie === "allgemein").length; this.computed.num_allgemeine_sonderfertigkeiten = this.parent.items.filter((x) => x.type === "Sonderfertigkeit" && x.system.kategorie === "allgemein").length;
this.computed.num_kampf_sonderfertigkeiten = this.parent.items.filter((x) => x.type === "Sonderfertigkeit" && x.system.kategorie === "kampf").length; this.computed.num_kampf_sonderfertigkeiten = this.parent.items.filter((x) => x.type === "Sonderfertigkeit" && x.system.kategorie === "kampf").length;
this.computed.num_vorteile = this.parent.items.filter((x) => x.type === "VorNachteil" && x.system.kategorie === "vorteil").length; this.computed.num_magische_sonderfertigkeiten = this.parent.items.filter((x) => x.type === "Sonderfertigkeit" && x.system.kategorie === "magisch").length;
this.computed.num_nachteile = this.parent.items.filter((x) => x.type === "VorNachteil" && x.system.kategorie === "nachteil").length; this.computed.num_vorteile = this.parent.items.filter((x) => x.type === "VorNachteil" && x.system.kategorie === "vorteil").length;
this.computed.num_nachteile = this.parent.items.filter((x) => x.type === "VorNachteil" && x.system.kategorie === "nachteil").length;
} }
} }
@@ -921,6 +939,7 @@ class DSA41_GegenstandData extends TypeDataModel {
return { return {
gewicht: new GewichtField(), gewicht: new GewichtField(),
preis: new PreisField(), preis: new PreisField(),
anzahl: new NumberField({ integer: true, initial: 1, min: 0 }),
beschreibung: new StringField({ initial: "" }), beschreibung: new StringField({ initial: "" }),
}; };
@@ -1275,10 +1294,12 @@ class DSA41_Dialog extends DSA41_ApplicationMixin(ApplicationV2) {
}; };
get formData() { get formData() {
const inputs = this.element.querySelector("[data-application-part]")?.querySelectorAll("input") ?? [];
const types = Object.fromEntries(Array.from(inputs, x => [x.name, x.type]));
const data = Object.fromEntries( const data = Object.fromEntries(
new FormData(this.element).entries().map(([key, value])=>{ new FormData(this.element).entries().map(([key, value])=>{
if (typeof value != "string") return [key, value]; if (types[key] == "number") return [key, Number(value)];
return isNaN(value) ? [key, value] : [key, Number(value)]; return [key, value];
}) })
); );
@@ -1377,9 +1398,9 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
const data = await DSA41_Dialog.wait("Talent", { window: {title: title}, item: item }); const data = await DSA41_Dialog.wait("Talent", { window: {title: title}, item: item });
const eBE = (await new Roll(item.system.behinderung || "0", { BE: this.document.system.computed.kampf.ruestungen_gesamt.gesamt_behinderung }).evaluate()).total; const eBE = (await new Roll(item.system.behinderung || "0", { BE: this.document.system.computed.kampf.ruestungen_gesamt.gesamt_behinderung }).evaluate()).total;
data.modifikator += eBE; data.modifikator -= eBE;
const talentwert = item.system.talentwert - data.modifikator; const talentwert = item.system.talentwert + data.modifikator;
const roll_modifier = talentwert < 0 ? -talentwert: 0; const roll_modifier = talentwert < 0 ? -talentwert: 0;
if (hp_roll_modifier !== 0) if (hp_roll_modifier !== 0)
@@ -1401,7 +1422,7 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
const context = { const context = {
talent: item, talent: item,
modifikator: -data.modifikator, modifikator: data.modifikator,
attribute1: { type: item.system.attribute1, value: attribute1 }, attribute1: { type: item.system.attribute1, value: attribute1 },
attribute2: { type: item.system.attribute2, value: attribute2 }, attribute2: { type: item.system.attribute2, value: attribute2 },
@@ -1439,6 +1460,10 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
flavor += " <= " + (Number(success_value) + data.modifikator); flavor += " <= " + (Number(success_value) + data.modifikator);
} }
if (data.anmerkung) {
flavor += "<br>" + data.anmerkung;
}
if (hp_roll_modifier !== 0) if (hp_roll_modifier !== 0)
roll_formula = roll_formula + " + " + hp_roll_modifier; roll_formula = roll_formula + " + " + hp_roll_modifier;
@@ -1465,6 +1490,10 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
let flavor = game.i18n.localize("DSA41.roll_types." + roll_type); let flavor = game.i18n.localize("DSA41.roll_types." + roll_type);
flavor += " <= " + (Number((data.crit == "on") ? item.parade_crit : item.parade) + data.modifikator); flavor += " <= " + (Number((data.crit == "on") ? item.parade_crit : item.parade) + data.modifikator);
if (data.anmerkung) {
flavor += "<br>" + data.anmerkung;
}
if (hp_roll_modifier !== 0) if (hp_roll_modifier !== 0)
roll_formula = roll_formula + " + " + hp_roll_modifier; roll_formula = roll_formula + " + " + hp_roll_modifier;
@@ -1559,7 +1588,7 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
const title = game.i18n.localize("DSA41.roll_types." + roll_type) + ": " + item.name; const title = game.i18n.localize("DSA41.roll_types." + roll_type) + ": " + item.name;
const data = await DSA41_Dialog.wait("Zauber", { window: {title: title}, item: item }); const data = await DSA41_Dialog.wait("Zauber", { window: {title: title}, item: item });
const zauberfertigkeitswert = item.system.zauberfertigkeitswert - data.modifikator - data.magieresistenz; const zauberfertigkeitswert = item.system.zauberfertigkeitswert - data.modifikator - (data.magieresistenz ?? null);
const roll_modifier = zauberfertigkeitswert < 0 ? -zauberfertigkeitswert: 0; const roll_modifier = zauberfertigkeitswert < 0 ? -zauberfertigkeitswert: 0;
if (hp_roll_modifier !== 0) if (hp_roll_modifier !== 0)
@@ -1583,7 +1612,7 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
zauber: item, zauber: item,
modifikator: -data.modifikator, modifikator: -data.modifikator,
magieresistenz: -data.magieresistenz, magieresistenz: -(data.magieresistenz ?? 0),
attribute1: { type: item.system.attribute1, value: attribute1 }, attribute1: { type: item.system.attribute1, value: attribute1 },
attribute2: { type: item.system.attribute2, value: attribute2 }, attribute2: { type: item.system.attribute2, value: attribute2 },
+1 -1
View File
@@ -3,7 +3,7 @@
.name = "Betören", .name = "Betören",
.system = .{ .system = .{
.kategorie = .gesellschaftliche, .kategorie = .gesellschaftliche,
.behinderung = "BE - 2", .behinderung = "@BE - 2",
.attribute1 = .IN, .attribute1 = .IN,
.attribute2 = .CH, .attribute2 = .CH,
.attribute3 = .CH, .attribute3 = .CH,
+1 -1
View File
@@ -3,7 +3,7 @@
.name = "Etikette", .name = "Etikette",
.system = .{ .system = .{
.kategorie = .gesellschaftliche, .kategorie = .gesellschaftliche,
.behinderung = "BE - 2", .behinderung = "@BE - 2",
.attribute1 = .KL, .attribute1 = .KL,
.attribute2 = .IN, .attribute2 = .IN,
.attribute3 = .CH, .attribute3 = .CH,
+1 -1
View File
@@ -3,7 +3,7 @@
.name = "Gassenwissen", .name = "Gassenwissen",
.system = .{ .system = .{
.kategorie = .gesellschaftliche, .kategorie = .gesellschaftliche,
.behinderung = "BE - 4", .behinderung = "@BE - 4",
.attribute1 = .KL, .attribute1 = .KL,
.attribute2 = .IN, .attribute2 = .IN,
.attribute3 = .CH, .attribute3 = .CH,
+13
View File
@@ -0,0 +1,13 @@
.{
.Talent = .{
.name = "Singen",
.system = .{
.kategorie = .koerperliche,
.behinderung = "@BE - 3",
.attribute1 = .IN,
.attribute2 = .CH,
.attribute3 = .CH,
}
}
}
+2 -2
View File
@@ -17,8 +17,8 @@ const talente: system.ItemCompendium = .{ .entries = &.{
@import("Items/Talente/Schwimmen.zon"), @import("Items/Talente/Schwimmen.zon"),
@import("Items/Talente/Selbstbeherrschung.zon"), @import("Items/Talente/Selbstbeherrschung.zon"),
@import("Items/Talente/Sich_Verstecken.zon"), @import("Items/Talente/Sich_Verstecken.zon"),
@import("Items/Talente/Singen.zon"), @import("Items/Talente/Singen1.zon"),
@import("Items/Talente/Singen.zon"), @import("Items/Talente/Singen2.zon"),
@import("Items/Talente/Sinnenschaerfe1.zon"), @import("Items/Talente/Sinnenschaerfe1.zon"),
@import("Items/Talente/Sinnenschaerfe2.zon"), @import("Items/Talente/Sinnenschaerfe2.zon"),
@import("Items/Talente/Skifahren.zon"), @import("Items/Talente/Skifahren.zon"),