Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 98dcb0749d | |||
| 3946a8116c | |||
| 7384e6cdcf | |||
| 5179ecba91 | |||
| d9e1721459 | |||
| 998951bafc | |||
| 6aa65be7a0 | |||
| 2f9410180c | |||
| 307307d271 | |||
| a6ae10beba | |||
| 19297c4bd7 | |||
| 6e58e06058 | |||
| 172e98f663 | |||
| 00fb647f0f | |||
| e2ffb67d35 | |||
| 948dba6032 | |||
| 0df8a4e89d | |||
| 48e0c5db3c | |||
| d099e32fcc | |||
| 442cae2598 |
@@ -0,0 +1,297 @@
|
|||||||
|
{{#*inline "die-type"}}
|
||||||
|
<div class="center die die-{{type}}">{{localize (concat "DSA41.attributes.short." type)}}</div>
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
{{#*inline "die-value"}}
|
||||||
|
<div class="col noflex center">
|
||||||
|
{{#if header}}<div class="center">{{header}}</div>{{/if}}
|
||||||
|
<div class="die die-{{type}}" data-action="roll" data-roll-type="{{type}}" {{#if success-value}}data-success-value="{{success-value}}"{{/if}} {{#if data-roll}}data-roll="{{data-roll}}"{{/if}} {{#if data-tooltip}}data-tooltip='{{> (lookup . "data-tooltip")}}'{{/if}}>
|
||||||
|
<div><svg viewbox="0 0 64 64"><use href="/systems/dsa-4th-edition/src/Assets/d20.svg#d20"></use></svg></div>
|
||||||
|
<div>{{{value}}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
<div class="actor-sheet ActorSheet">
|
||||||
|
<div class="grid4 gap">
|
||||||
|
{{>editable-input type="text" name="name" value=actor.name placeholder=(localize "DSA41.name")}}
|
||||||
|
{{>editable-input type="text" name="system.race" value=actor.system.race placeholder=(localize "DSA41.race")}}
|
||||||
|
{{>editable-input type="text" name="system.culture" value=actor.system.culture placeholder=(localize "DSA41.culture")}}
|
||||||
|
{{>editable-input type="text" name="system.profession" value=actor.system.profession placeholder=(localize "DSA41.profession")}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<img class="character-image" src="{{ actor.img }}" title="{{ actor.name }}" {{#if editable}}data-edit="img"{{/if}}>
|
||||||
|
{{#each actor.system.attributes}}
|
||||||
|
{{>die-value type=@key header=(localize (concat "DSA41.attributes.short." @key)) value=(lookup @root.actor.system.computed.attributes @key) success-value=(lookup @root.actor.system.computed.attributes @key) data-roll="1d20" data-tooltip="attribute_tooltip"}}
|
||||||
|
{{/each}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="tabs">
|
||||||
|
<div class="row noflex {{#if (eq tabGroups.primary 'tab1')}}active{{/if}}" data-group="primary" data-tab="tab1">
|
||||||
|
<a data-group="primary" data-tab="tab1" data-action="tab">{{localize "DSA41.character.eigenschaften"}}</a>
|
||||||
|
</div>
|
||||||
|
<div class="row noflex {{#if (eq tabGroups.primary 'tab2')}}active{{/if}}" data-group="primary" data-tab="tab2">
|
||||||
|
<a data-group="primary" data-tab="tab2" data-action="tab">{{localize "DSA41.character.talente"}}</a>
|
||||||
|
</div>
|
||||||
|
<div class="row noflex {{#if (eq tabGroups.primary 'tab3')}}active{{/if}}" data-group="primary" data-tab="tab3">
|
||||||
|
<a data-group="primary" data-tab="tab3" data-action="tab">{{localize "DSA41.character.inventar"}}</a>
|
||||||
|
</div>
|
||||||
|
<div class="row noflex {{#if (eq tabGroups.primary 'tab4')}}active{{/if}}" data-group="primary" data-tab="tab4">
|
||||||
|
<a data-group="primary" data-tab="tab4" data-action="tab">{{localize "DSA41.character.kampf"}}</a>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="tab {{#if (eq tabGroups.primary 'tab1')}}active{{/if}}" data-group="primary" data-tab="tab1">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "DSA41.attributes.label"}}</legend>
|
||||||
|
<div class="Eigenschaften">
|
||||||
|
<span></span>
|
||||||
|
{{#each actor.system.attributes}}
|
||||||
|
<span class="center">{{localize (concat "DSA41.attributes.short." @key)}}</span>
|
||||||
|
{{/each}}
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.attributes.initial"}}</span>
|
||||||
|
{{#each actor.system.attributes}}
|
||||||
|
{{>editable-input type="number" name=(concat "system.attributes." @key ".initial") value=(lookup this "initial")}}
|
||||||
|
{{/each}}
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.attributes.advancement"}}</span>
|
||||||
|
{{#each actor.system.attributes}}
|
||||||
|
{{>editable-input type="number" name=(concat "system.attributes." @key ".advancement") value=(lookup this "advancement")}}
|
||||||
|
{{/each}}
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.attributes.modifier"}}</span>
|
||||||
|
{{#each actor.system.attributes}}
|
||||||
|
<span>{{>editable-input type="number" name=(concat "system.attributes." @key ".modifier") value=(lookup this "modifier")}}</span>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<div class="Basiswerte">
|
||||||
|
<span>Lebenspunkte</span>
|
||||||
|
<span>{{actor.system.computed.max_lebenspunkte}}</span>
|
||||||
|
<span>Ausdauer</span>
|
||||||
|
<span>{{actor.system.computed.max_ausdauer}}</span>
|
||||||
|
|
||||||
|
<span>Astralenergie</span>
|
||||||
|
<span>{{actor.system.computed.max_atralenergie}}</span>
|
||||||
|
<span>Magieresistenz</span>
|
||||||
|
<span>{{actor.system.computed.magieresistenz}}</span>
|
||||||
|
|
||||||
|
<span>INI-Basiswert</span>
|
||||||
|
<span>{{actor.system.computed.ini_basiswert}}</span>
|
||||||
|
<span>AT-Basiswert</span>
|
||||||
|
<span>{{actor.system.computed.at_basiswert}}</span>
|
||||||
|
|
||||||
|
<span>PA-Basiswert</span>
|
||||||
|
<span>{{actor.system.computed.pa_basiswert}}</span>
|
||||||
|
<span>FK-Basiswert</span>
|
||||||
|
<span>{{actor.system.computed.fk_basiswert}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tab {{#if (eq tabGroups.primary 'tab2')}}active{{/if}}" data-group="primary" data-tab="tab2">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "DSA41.talente.kampf.label"}}</legend>
|
||||||
|
<div class="Kampftalente">
|
||||||
|
<span class="center">{{localize "DSA41.talente.label"}}</span>
|
||||||
|
<span class="center">{{localize "DSA41.talente.label_talentwert"}}</span>
|
||||||
|
<span class="center">{{localize "DSA41.talente.kampf.label_attacke"}}</span>
|
||||||
|
<span class="center">{{localize "DSA41.talente.kampf.label_parade"}}</span>
|
||||||
|
<span class="center">{{localize "DSA41.talente.kampf.label_attacke_total"}}</span>
|
||||||
|
<span class="center">{{localize "DSA41.talente.kampf.label_parade_total"}}</span>
|
||||||
|
|
||||||
|
{{#each actor.system.kampf_talente}}
|
||||||
|
<span>{{localize (concat "DSA41.talente.kampf.name." @key)}}</span>
|
||||||
|
<span>{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".talentwert") value=(lookup this "talentwert")}}</span>
|
||||||
|
<span>{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".attacke") value=(lookup this "attacke")}}</span>
|
||||||
|
<span>{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".parade") value=(lookup this "parade")}}</span>
|
||||||
|
<span class="center">{{lookup (lookup @root.actor.system.computed.kampf.talente @key) "attacke"}}</span>
|
||||||
|
<span class="center">{{lookup (lookup @root.actor.system.computed.kampf.talente @key) "parade"}}</span>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
{{#each actor.system.talente}}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize (concat "DSA41.talente." @key ".label")}}</legend>
|
||||||
|
<div class="Talente">
|
||||||
|
<span class="center">{{localize "DSA41.talente.label"}}</span>
|
||||||
|
<span class="center">{{localize "DSA41.talente.label_eigenschaften"}}</span>
|
||||||
|
<span class="center">{{localize "DSA41.talente.label_talentwert"}}</span>
|
||||||
|
|
||||||
|
{{#each @this}}
|
||||||
|
<span>{{localize (concat "DSA41.talente." @../key ".name." @key)}}</span>
|
||||||
|
<span></span>
|
||||||
|
<span>{{>editable-input type="number" name=(concat "system.talente." @../key "." @key) value=@this}}</span>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tab {{#if (eq tabGroups.primary 'tab3')}}active{{/if}}" data-group="primary" data-tab="tab3">
|
||||||
|
<div class="list Bewaffnung subgrid-columns">
|
||||||
|
<div class="list-header">
|
||||||
|
<div>{{localize "DSA41.inventar.bewaffnung"}}</div>
|
||||||
|
<div></div>
|
||||||
|
<div class="center">{{localize "DSA41.weight"}}</div>
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
{{#each actor.itemTypes.Bewaffnung}}
|
||||||
|
<div class="list-item" data-item-id="{{this._id}}">
|
||||||
|
<div class="row" data-action="item-open">
|
||||||
|
<img class="item-image" src="{{this.img}}" title="{{this.name}}">
|
||||||
|
<div class="col">
|
||||||
|
<span>{{this.name}}</span>
|
||||||
|
<span class="small">
|
||||||
|
{{#if this.system.nahkampfwaffe.aktiv}} Nahkampfwaffe {{/if}}
|
||||||
|
{{#if this.system.parierwaffe.aktiv}} Parierwaffe {{/if}}
|
||||||
|
{{#if this.system.schild.aktiv}} Schild {{/if}}
|
||||||
|
{{#if this.system.fernkampfwaffe.aktiv}} Fernkampfwaffe {{/if}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div></div>
|
||||||
|
<div class="center">{{this.system.gewicht}}</div>
|
||||||
|
<div class="center fas fa-trash" data-action="item-delete"></div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="list Ruestung subgrid-columns">
|
||||||
|
<div class="list-header">
|
||||||
|
<div class="row">{{localize "DSA41.inventar.ruestungen"}}</div>
|
||||||
|
<div></div>
|
||||||
|
<div class="center">{{localize "DSA41.weight"}}</div>
|
||||||
|
</div>
|
||||||
|
{{#each actor.itemTypes.Ruestung}}
|
||||||
|
<div class="list-item" data-item-id="{{this._id}}">
|
||||||
|
<div class="row" data-action="item-open">
|
||||||
|
<img class="item-image" src="{{this.img}}" title="{{this.name}}">
|
||||||
|
<span class="center">{{this.name}}</span>
|
||||||
|
</div>
|
||||||
|
<div></div>
|
||||||
|
<div class="center">{{this.system.gewicht}}</div>
|
||||||
|
<div class="center fas fa-trash" data-action="item-delete"></div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="list Gegenstand subgrid-columns">
|
||||||
|
<div class="list-header">
|
||||||
|
<div>{{localize "DSA41.inventar.gegenstaende"}}</div>
|
||||||
|
<div></div>
|
||||||
|
<div class="center">{{localize "DSA41.weight"}}</div>
|
||||||
|
</div>
|
||||||
|
{{#each actor.itemTypes.Gegenstand}}
|
||||||
|
<div class="list-item" data-item-id="{{this._id}}">
|
||||||
|
<div class="row" data-action="item-open">
|
||||||
|
<img class="item-image" src="{{this.img}}" title="{{this.name}}">
|
||||||
|
<span class="center">{{this.name}}</span>
|
||||||
|
</div>
|
||||||
|
<div></div>
|
||||||
|
<div class="center">{{this.system.gewicht}}</div>
|
||||||
|
<div class="center fas fa-trash" data-action="item-delete"></div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tab Kampf {{#if (eq tabGroups.primary 'tab4')}}active{{/if}}" data-group="primary" data-tab="tab4">
|
||||||
|
<div class="list Bewaffnung">
|
||||||
|
<div class="list-header ">
|
||||||
|
<div>{{localize "DSA41.kampf.bewaffnung"}}</div>
|
||||||
|
<div class="center">{{localize "DSA41.kampf.attacke"}}</div>
|
||||||
|
<div class="center">{{localize "DSA41.kampf.parade"}}</div>
|
||||||
|
<div class="center">{{localize "DSA41.kampf.trefferpunkte"}}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{#each actor.system.computed.kampf.waffen}}
|
||||||
|
<div class="list-item" data-item-id="{{item._id}}">
|
||||||
|
<div class="row" data-action="item-open">
|
||||||
|
<img class="item-image" src="{{item.img}}" title="{{item.name}}">
|
||||||
|
<div class="col">
|
||||||
|
<span>{{item.name}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="center">{{>die-value type="attacke" data-roll="1d20" value=attacke success-value=attacke data-tooltip="attacke_tooltip"}}</div>
|
||||||
|
<div class="center">{{>die-value type="parade" data-roll="1d20" value=parade success-value=parade data-tooltip="parade_tooltip"}}</div>
|
||||||
|
<div class="center">{{>die-value type="trefferpunkte" data-roll=trefferpunkte value=trefferpunkte_display data-tooltip="trefferpunkte_tooltip"}}</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
{{#each actor.system.computed.kampf.fernkampf_waffen}}
|
||||||
|
<div class="list-item" data-item-id="{{item._id}}">
|
||||||
|
<div class="row" data-action="item-open">
|
||||||
|
<img class="item-image" src="{{item.img}}" title="{{item.name}}">
|
||||||
|
<div class="col">
|
||||||
|
<span>{{item.name}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="center">{{>die-value type="fernkampf-attacke" data-roll="1d20" value=attacke data-tooltip="fernkampf_attacke_tooltip"}}</div>
|
||||||
|
<div class="center"></div>
|
||||||
|
<div class="center">{{>die-value type="fernkampf-trefferpunkte" data-roll=trefferpunkte value=trefferpunkte_display data-tooltip="fernkampf_trefferpunkte_tooltip"}}</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="list Ruestung">
|
||||||
|
<div class="list-header rowspan2">
|
||||||
|
<div class="rowspan2">{{localize "DSA41.kampf.ruestungen"}}</div>
|
||||||
|
<div class="rowspan2">{{localize "DSA41.ruestungen.kopf"}}</div>
|
||||||
|
<div class="rowspan2">{{localize "DSA41.ruestungen.brust"}}</div>
|
||||||
|
<div class="rowspan2">{{localize "DSA41.ruestungen.ruecken"}}</div>
|
||||||
|
<div class="rowspan2">{{localize "DSA41.ruestungen.bauch"}}</div>
|
||||||
|
<div class="colspan2 rowspan2 subgrid">
|
||||||
|
<div class="colspan2">{{localize "DSA41.ruestungen.arm"}}</div>
|
||||||
|
<div>{{localize "DSA41.ruestungen.links"}}</div>
|
||||||
|
<div>{{localize "DSA41.ruestungen.rechts"}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="colspan2 rowspan2 subgrid">
|
||||||
|
<div class="colspan2">{{localize "DSA41.ruestungen.bein"}}</div>
|
||||||
|
<div>{{localize "DSA41.ruestungen.links"}}</div>
|
||||||
|
<div>{{localize "DSA41.ruestungen.rechts"}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="colspan2 rowspan2 subgrid">
|
||||||
|
<div class="colspan2">{{localize "DSA41.ruestungen.gesamt"}}</div>
|
||||||
|
<div>{{localize "DSA41.ruestungen.ruestungsschutz"}}</div>
|
||||||
|
<div>{{localize "DSA41.ruestungen.behinderung"}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{#each actor.system.computed.kampf.ruestungen}}
|
||||||
|
<div class="list-item" data-item-id="{{item._id}}">
|
||||||
|
<div class="row" data-action="item-open">
|
||||||
|
<img class="item-image" src="{{item.img}}" title="{{item.name}}">
|
||||||
|
<span class="center">{{item.name}}</span>
|
||||||
|
</div>
|
||||||
|
<div>{{item.system.kopf}}</div>
|
||||||
|
<div>{{item.system.brust}}</div>
|
||||||
|
<div>{{item.system.ruecken}}</div>
|
||||||
|
<div>{{item.system.bauch}}</div>
|
||||||
|
<div>{{item.system.linker_arm}}</div>
|
||||||
|
<div>{{item.system.rechter_arm}}</div>
|
||||||
|
<div>{{item.system.linkes_bein}}</div>
|
||||||
|
<div>{{item.system.rechtes_bein}}</div>
|
||||||
|
<div>{{item.system.gesamt_ruestungsschutz}}</div>
|
||||||
|
<div>{{item.system.gesamt_behinderung}}</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
|
||||||
|
<div class="list-item">
|
||||||
|
<div class="left">Total</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.kopf}}</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.brust}}</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.ruecken}}</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.bauch}}</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.linker_arm}}</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.rechter_arm}}</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.linkes_bein}}</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.rechtes_bein}}</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.gesamt_ruestungsschutz}}</div>
|
||||||
|
<div>{{actor.system.computed.kampf.ruestungen_gesamt.gesamt_behinderung}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
{{#*inline "editable-input"}}
|
|
||||||
<div class="editable-input editable-{{type}}">
|
|
||||||
{{#if @root.editable}}
|
|
||||||
<input type="{{type}}" name="{{name}}" value="{{value}}" placeholder="{{placeholder}}">
|
|
||||||
{{else}}
|
|
||||||
<div>
|
|
||||||
{{value}}
|
|
||||||
{{#unless value}}{{placeholder}}{{/unless}}
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if placeholder}}
|
|
||||||
<div class="placeholder">{{placeholder}}</div>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
{{/inline}}
|
|
||||||
|
|
||||||
{{#*inline "die-type"}}
|
|
||||||
<div class="center die die-{{type}}">{{localize (concat "DSA41.attributes.short." type)}}</div>
|
|
||||||
{{/inline}}
|
|
||||||
|
|
||||||
{{#*inline "die-value"}}
|
|
||||||
<div class="col">
|
|
||||||
<div class="center">{{localize (concat "DSA41.attributes.short." type)}}</div>
|
|
||||||
<div class="die die-{{type}}">{{lookup @root.actor.system.computed type}}</div>
|
|
||||||
</div>
|
|
||||||
{{/inline}}
|
|
||||||
|
|
||||||
<form class="actor-sheet {{ cssClass }}" autocomplete="off">
|
|
||||||
<div class="row">
|
|
||||||
{{>editable-input type="text" name="name" value=actor.name placeholder=(localize "DSA41.name")}}
|
|
||||||
{{>editable-input type="text" name="system.race" value=actor.system.race placeholder=(localize "DSA41.race")}}
|
|
||||||
{{>editable-input type="text" name="system.culture" value=actor.system.culture placeholder=(localize "DSA41.culture")}}
|
|
||||||
{{>editable-input type="text" name="system.profession" value=actor.system.profession placeholder=(localize "DSA41.profession")}}
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<img class="character-image" src="{{ actor.img }}" title="{{ actor.name }}" {{#if editable}}data-edit="img"{{/if}}>
|
|
||||||
{{#each actor.system.attributes}}
|
|
||||||
{{>die-value type=@key}}
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "DSA41.attributes.label"}}</legend>
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<th></th>
|
|
||||||
{{#each actor.system.attributes}}
|
|
||||||
<th>{{localize (concat "DSA41.attributes.short." @key)}}</th>
|
|
||||||
{{/each}}
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>{{localize "DSA41.attributes.initial"}}</td>
|
|
||||||
{{#each actor.system.attributes}}
|
|
||||||
<td>{{>editable-input type="number" name=(concat "system.attributes." @key ".initial") value=(lookup this "initial")}}</td>
|
|
||||||
{{/each}}
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>{{localize "DSA41.attributes.advancement"}}</td>
|
|
||||||
{{#each actor.system.attributes}}
|
|
||||||
<td>{{>editable-input type="number" name=(concat "system.attributes." @key ".advancement") value=(lookup this "advancement")}}</td>
|
|
||||||
{{/each}}
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>{{localize "DSA41.attributes.modifier"}}</td>
|
|
||||||
{{#each actor.system.attributes}}
|
|
||||||
<td>{{>editable-input type="number" name=(concat "system.attributes." @key ".modifier") value=(lookup this "modifier")}}</td>
|
|
||||||
{{/each}}
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
|
||||||
<g>
|
<g id="d20">
|
||||||
<path d="m11.906 20.4h40.188l-20.094 34.801z"/>
|
<path d="m11.906 20.4h40.188l-20.094 34.801z"/>
|
||||||
<path d="m52.635 21.059 6.5977 26.664-26.391 7.6172z"/>
|
<path d="m52.635 21.059 6.5977 26.664-26.391 7.6172z"/>
|
||||||
<path d="m32 .55664 19.791 19.043h-39.582z"/>
|
<path d="m32 .55664 19.791 19.043h-39.582z"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 696 B After Width: | Height: | Size: 705 B |
@@ -0,0 +1,28 @@
|
|||||||
|
<div class="parade_dialog">
|
||||||
|
<span class="colspan2">{{localize "DSA41.kampf.modifikator"}}</span>
|
||||||
|
{{>editable-input type="number" name="modifikator" class="colspan2" value=(lookup formData "modifikator") }}
|
||||||
|
|
||||||
|
<div class="dsa41-calculation colspan4 center">
|
||||||
|
<ruby>{{options.item.basis_attacke}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby>
|
||||||
|
|
||||||
|
+ <ruby>{{options.item.talent_attacke}}<rt>{{localize "DSA41.talente.label"}}</rt></ruby>
|
||||||
|
|
||||||
|
{{#if (ne options.item.modifikator_attacke 0)}}
|
||||||
|
+ <ruby>{{options.item.modifikator_attacke}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.modifikator"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (ne options.item.parierwaffe_attacke 0)}}
|
||||||
|
+ <ruby>{{options.item.parierwaffe_attacke}}<rt>{{localize "DSA41.bewaffnung.parierwaffe.label"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (ne options.item.schild_attacke 0)}}
|
||||||
|
+ <ruby>{{options.item.schild_attacke}}<rt>{{localize "DSA41.bewaffnung.schild.label"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (lt options.item.tp_kk 0)}}
|
||||||
|
+ <ruby>{{options.item.tp_kk}}<rt>{{localize "DSA41.attributes.long.strength"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
+ <ruby>{{formData.modifikator}}<rt>{{localize "DSA41.kampf.modifikator"}}</rt></ruby>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<div class="parade_dialog">
|
||||||
|
<span class="colspan2">{{localize "DSA41.kampf.modifikator"}}</span>
|
||||||
|
{{>editable-input type="number" name="modifikator" class="colspan2" value=(lookup formData "modifikator") }}
|
||||||
|
|
||||||
|
<div class="dsa41-calculation colspan4 center">
|
||||||
|
<ruby>{{options.attribute.initial}}<rt>{{localize "DSA41.attributes.initial"}}</rt></ruby>
|
||||||
|
{{#if (ne options.attribute.advancement 0)}}
|
||||||
|
+ <ruby>{{options.attribute.advancement}}<rt>{{localize "DSA41.attributes.advancement"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
{{#if (ne options.attribute.modifier 0)}}
|
||||||
|
+ <ruby>{{options.attribute.modifier}}<rt>{{localize "DSA41.attributes.modifier"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
+ <ruby>{{formData.modifikator}}<rt>{{localize "DSA41.kampf.modifikator"}}</rt></ruby>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
<div class="fernkampf_angriff_dialog">
|
||||||
|
<span>{{localize "DSA41.kampf.zielgroesse.label"}}</span>
|
||||||
|
<select name="ziel_groesse">
|
||||||
|
<option value="-2" {{#if (eq formData.ziel_groesse -2)}}selected{{/if}}>{{localize "DSA41.kampf.zielgroesse.sehr_gross"}}</option>
|
||||||
|
<option value="0" {{#if (eq formData.ziel_groesse 0)}}selected{{/if}}>{{localize "DSA41.kampf.zielgroesse.gross"}} </option>
|
||||||
|
<option value="2" {{#if (eq formData.ziel_groesse 2)}}selected{{/if}}>{{localize "DSA41.kampf.zielgroesse.mittel"}} </option>
|
||||||
|
<option value="4" {{#if (eq formData.ziel_groesse 4)}}selected{{/if}}>{{localize "DSA41.kampf.zielgroesse.klein"}} </option>
|
||||||
|
<option value="6" {{#if (eq formData.ziel_groesse 6)}}selected{{/if}}>{{localize "DSA41.kampf.zielgroesse.sehr_klein"}}</option>
|
||||||
|
<option value="8" {{#if (eq formData.ziel_groesse 8)}}selected{{/if}}>{{localize "DSA41.kampf.zielgroesse.winzig"}} </option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.kampf.deckung.label"}}</span>
|
||||||
|
<select name="deckung">
|
||||||
|
<option value="0" {{#if (eq formData.deckung 0)}}selected{{/if}}>{{localize "DSA41.kampf.deckung.keine"}} </option>
|
||||||
|
<option value="2" {{#if (eq formData.deckung 2)}}selected{{/if}}>{{localize "DSA41.kampf.deckung.halb"}} </option>
|
||||||
|
<option value="4" {{#if (eq formData.deckung 4)}}selected{{/if}}>{{localize "DSA41.kampf.deckung.drei_viertel"}}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.kampf.entfernung.label"}}</span>
|
||||||
|
<select name="entfernung">
|
||||||
|
<option value="-2" {{#if (eq formData.entfernung -2)}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.sehr_nah"}} </option>
|
||||||
|
<option value="0" {{#if (eq formData.entfernung 0)}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.nah"}} </option>
|
||||||
|
<option value="4" {{#if (eq formData.entfernung 4)}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.mittel"}} </option>
|
||||||
|
<option value="8" {{#if (eq formData.entfernung 8)}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.weit"}} </option>
|
||||||
|
<option value="12" {{#if (eq formData.entfernung 12)}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.extrem_weit"}}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.kampf.zielbewegung.label"}}</span>
|
||||||
|
<select name="ziel_bewegung">
|
||||||
|
<option value="-4" {{#if (eq formData.ziel_bewegung -4)}}selected{{/if}}>{{localize "DSA41.kampf.zielbewegung.unbeweglich"}} </option>
|
||||||
|
<option value="-2" {{#if (eq formData.ziel_bewegung -2)}}selected{{/if}}>{{localize "DSA41.kampf.zielbewegung.stillstehend"}}</option>
|
||||||
|
<option value="0" {{#if (eq formData.ziel_bewegung 0)}}selected{{/if}}>{{localize "DSA41.kampf.zielbewegung.leicht"}} </option>
|
||||||
|
<option value="2" {{#if (eq formData.ziel_bewegung 2)}}selected{{/if}}>{{localize "DSA41.kampf.zielbewegung.schnell"}} </option>
|
||||||
|
<option value="4" {{#if (eq formData.ziel_bewegung 4)}}selected{{/if}}>{{localize "DSA41.kampf.zielbewegung.sehr_schnell"}}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.kampf.wind.label"}}</span>
|
||||||
|
<select name="wind">
|
||||||
|
<option value="0" {{#if (eq formData.wind 0)}}selected{{/if}}>{{localize "DSA41.kampf.wind.still"}} </option>
|
||||||
|
<option value="4" {{#if (eq formData.wind 4)}}selected{{/if}}>{{localize "DSA41.kampf.wind.seitenwind"}} </option>
|
||||||
|
<option value="8" {{#if (eq formData.wind 8)}}selected{{/if}}>{{localize "DSA41.kampf.wind.starker_seitenwind"}}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.kampf.modifikator"}}</span>
|
||||||
|
{{>editable-input type="number" name="modifikator" value=(lookup formData "modifikator")}}
|
||||||
|
|
||||||
|
<div class="dsa41-calculation colspan4 center">
|
||||||
|
max(-2,
|
||||||
|
<ruby>{{formData.ziel_groesse}}<rt>{{localize "DSA41.kampf.zielgroesse.label"}}</rt></ruby>
|
||||||
|
+ <ruby>{{formData.deckung}}<rt>{{localize "DSA41.kampf.deckung.label"}}</rt></ruby>
|
||||||
|
+ <ruby>{{formData.ziel_bewegung}}<rt>{{localize "DSA41.kampf.zielbewegung.label"}}</rt></ruby>
|
||||||
|
)
|
||||||
|
|
||||||
|
+ <ruby>{{formData.entfernung}}<rt>{{localize "DSA41.kampf.entfernung.label"}}</rt></ruby>
|
||||||
|
+ <ruby>{{formData.wind}}<rt>{{localize "DSA41.kampf.wind.label"}}</rt></ruby>
|
||||||
|
|
||||||
|
+ <ruby>{{formData.modifikator}}<rt>{{localize "DSA41.kampf.modifikator"}}</rt></ruby>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<div class="fernkampf_trefferpunkte_dialog">
|
||||||
|
<span>{{localize "DSA41.kampf.entfernung.label"}}</span>
|
||||||
|
<select name="entfernung">
|
||||||
|
<option value="modifikator1" {{#if (eq formData.entfernung "modifikator1")}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.sehr_nah"}} </option>
|
||||||
|
<option value="modifikator2" {{#if (eq formData.entfernung "modifikator2")}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.nah"}} </option>
|
||||||
|
<option value="modifikator3" {{#if (eq formData.entfernung "modifikator3")}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.mittel"}} </option>
|
||||||
|
<option value="modifikator4" {{#if (eq formData.entfernung "modifikator4")}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.weit"}} </option>
|
||||||
|
<option value="modifikator5" {{#if (eq formData.entfernung "modifikator5")}}selected{{/if}}>{{localize "DSA41.kampf.entfernung.extrem_weit"}}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.kampf.modifikator"}}</span>
|
||||||
|
{{>editable-input type="number" name="modifikator" value=(lookup formData "modifikator") }}
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.kampf.crit"}}</span>
|
||||||
|
{{>editable-input type="checkbox" name="crit" class="center" value=(lookup formData "crit")}}
|
||||||
|
|
||||||
|
<div class="dsa41-calculation colspan4 center">
|
||||||
|
{{#if formData.crit}}<ruby>2 * <rt>{{localize "DSA41.kampf.crit"}}</rt></ruby>({{/if}}
|
||||||
|
<ruby>{{options.item.item.system.fernkampfwaffe.basis}}<rt>{{localize "DSA41.bewaffnung.fernkampfwaffe.basis"}}</rt></ruby>
|
||||||
|
{{#if formData.crit}}){{/if}}
|
||||||
|
+ <ruby>{{lookup options.item.item.system.fernkampfwaffe formData.entfernung}}<rt>{{localize "DSA41.kampf.entfernung.label"}}</rt></ruby>
|
||||||
|
+ <ruby>{{formData.modifikator}}<rt>{{localize "DSA41.kampf.modifikator"}}</rt></ruby>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<div class="parade_dialog">
|
||||||
|
<span>{{localize "DSA41.kampf.modifikator"}}</span>
|
||||||
|
{{>editable-input type="number" name="modifikator" value=(lookup formData "modifikator") }}
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.kampf.crit"}}</span>
|
||||||
|
{{>editable-input type="checkbox" name="crit" class="center" value=(lookup formData "crit")}}
|
||||||
|
|
||||||
|
<div class="dsa41-calculation colspan4 center">
|
||||||
|
{{#if formData.crit}}({{/if}}
|
||||||
|
<ruby>{{options.item.basis_parade}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby>
|
||||||
|
|
||||||
|
+ <ruby>{{options.item.talent_parade}}<rt>{{localize "DSA41.talente.label"}}</rt></ruby>
|
||||||
|
|
||||||
|
{{#if (ne options.item.modifikator_parade 0)}}
|
||||||
|
+ <ruby>{{options.item.modifikator_parade}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.modifikator"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (ne options.item.parierwaffe_parade 0)}}
|
||||||
|
+ <ruby>{{options.item.parierwaffe_parade}}<rt>{{localize "DSA41.bewaffnung.parierwaffe.label"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (ne options.item.schild_parade 0)}}
|
||||||
|
+ <ruby>{{options.item.schild_parade}}<rt>{{localize "DSA41.bewaffnung.schild.label"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (lt options.item.tp_kk 0)}}
|
||||||
|
+ <ruby>{{options.item.tp_kk}}<rt>{{localize "DSA41.attributes.long.strength"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if formData.crit}})<ruby> / 2<rt>{{localize "DSA41.kampf.crit"}}</rt></ruby>{{/if}}
|
||||||
|
|
||||||
|
+ <ruby>{{formData.modifikator}}<rt>{{localize "DSA41.kampf.modifikator"}}</rt></ruby>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<div class="trefferpunkte_dialog">
|
||||||
|
<span>{{localize "DSA41.kampf.modifikator"}}</span>
|
||||||
|
{{>editable-input type="number" name="modifikator" value=(lookup formData "modifikator") }}
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.kampf.crit"}}</span>
|
||||||
|
{{>editable-input type="checkbox" name="crit" class="center" value=(lookup formData "crit")}}
|
||||||
|
|
||||||
|
<div class="dsa41-calculation colspan4 center">
|
||||||
|
{{#if formData.crit}}<ruby>2 * <rt>{{localize "DSA41.kampf.crit"}}</rt></ruby>({{/if}}
|
||||||
|
<ruby>{{options.item.item.system.nahkampfwaffe.basis}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby>
|
||||||
|
{{#if formData.crit}}){{/if}}
|
||||||
|
|
||||||
|
{{#if (ne options.item.tp_kk 0)}}
|
||||||
|
+ <ruby>{{options.item.tp_kk}}<rt>{{localize "DSA41.attributes.long.strength"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
+ <ruby>{{formData.modifikator}}<rt>{{localize "DSA41.kampf.modifikator"}}</rt></ruby>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<div class="editable-input editable-{{type}} {{class}}">
|
||||||
|
{{#if (eq type "checkbox")}}
|
||||||
|
<input type="checkbox" name="{{name}}" {{checked value}}>
|
||||||
|
{{else}}
|
||||||
|
<input type="{{type}}" name="{{name}}" value="{{value}}" placeholder="{{placeholder}}">
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if placeholder}}
|
||||||
|
<div class="placeholder">{{placeholder}}</div>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<form class="item-sheet {{ cssClass }}" autocomplete="off">
|
|
||||||
<header>
|
|
||||||
{{#if editable}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}" data-edit="img">
|
|
||||||
<input name="name" type="text" value="{{ item.name }}" placeholder="Name">
|
|
||||||
{{else}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}">
|
|
||||||
<div>{{ item.name }}</div>
|
|
||||||
{{/if}}
|
|
||||||
</header>
|
|
||||||
</form>
|
|
||||||
@@ -0,0 +1,130 @@
|
|||||||
|
<div class="Bewaffnung {{ cssClass }}">
|
||||||
|
<div class="row">
|
||||||
|
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
|
||||||
|
<div class="col">
|
||||||
|
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
|
||||||
|
<div class="row gap">
|
||||||
|
{{>editable-input type="number" name="system.gewicht" value=item.system.gewicht placeholder=(localize "DSA41.weight")}}
|
||||||
|
{{>editable-input type="number" name="system.preis" value=item.system.preis placeholder=(localize "DSA41.price")}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<nav class="tabs">
|
||||||
|
<div class="row noflex {{#if (eq tabGroups.primary 'tab1')}}active{{/if}}" data-group="primary" data-tab="tab1">
|
||||||
|
<a data-group="primary" data-tab="tab1" data-action="tab">{{localize "DSA41.bewaffnung.nahkampfwaffe.label"}}</a>
|
||||||
|
{{>editable-input type="checkbox" name="system.nahkampfwaffe.aktiv" value=item.system.nahkampfwaffe.aktiv}}
|
||||||
|
</div>
|
||||||
|
<div class="row noflex {{#if (eq tabGroups.primary 'tab2')}}active{{/if}}" data-group="primary" data-tab="tab2">
|
||||||
|
<a data-group="primary" data-tab="tab2" data-action="tab">{{localize "DSA41.bewaffnung.parierwaffe.label"}}</a>
|
||||||
|
{{>editable-input type="checkbox" name="system.parierwaffe.aktiv" value=item.system.parierwaffe.aktiv}}
|
||||||
|
</div>
|
||||||
|
<div class="row noflex {{#if (eq tabGroups.primary 'tab3')}}active{{/if}}" data-group="primary" data-tab="tab3">
|
||||||
|
<a data-group="primary" data-tab="tab3" data-action="tab">{{localize "DSA41.bewaffnung.schild.label"}}</a>
|
||||||
|
{{>editable-input type="checkbox" name="system.schild.aktiv" value=item.system.schild.aktiv}}
|
||||||
|
</div>
|
||||||
|
<div class="row noflex {{#if (eq tabGroups.primary 'tab4')}}active{{/if}}" data-group="primary" data-tab="tab4">
|
||||||
|
<a data-group="primary" data-tab="tab4" data-action="tab">{{localize "DSA41.bewaffnung.fernkampfwaffe.label"}}</a>
|
||||||
|
{{>editable-input type="checkbox" name="system.fernkampfwaffe.aktiv" value=item.system.fernkampfwaffe.aktiv}}
|
||||||
|
</div>
|
||||||
|
</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">
|
||||||
|
{{>editable-input type="text" name="system.nahkampfwaffe.basis" value=item.system.nahkampfwaffe.basis placeholder=(localize "DSA41.bewaffnung.nahkampfwaffe.basis")}}
|
||||||
|
{{>editable-input type="number" name="system.nahkampfwaffe.schwellenwert" value=item.system.nahkampfwaffe.schwellenwert placeholder=(localize "DSA41.bewaffnung.nahkampfwaffe.schwellenwert")}}
|
||||||
|
{{>editable-input type="number" name="system.nahkampfwaffe.schadensschritte" value=item.system.nahkampfwaffe.schadensschritte placeholder=(localize "DSA41.bewaffnung.nahkampfwaffe.schadensschritte")}}
|
||||||
|
</div>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.modifikator"}}</span>
|
||||||
|
<div class="grid2">
|
||||||
|
{{>editable-input type="number" name="system.nahkampfwaffe.modifikator_attacke" value=item.system.nahkampfwaffe.modifikator_attacke placeholder=(localize "DSA41.bewaffnung.nahkampfwaffe.attacke")}}
|
||||||
|
{{>editable-input type="number" name="system.nahkampfwaffe.modifikator_parade" value=item.system.nahkampfwaffe.modifikator_parade placeholder=(localize "DSA41.bewaffnung.nahkampfwaffe.parade")}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.initiative"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.nahkampfwaffe.initiative" value=item.system.nahkampfwaffe.initiative}}</div>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.bruchfaktor"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.nahkampfwaffe.bruchfaktor" value=item.system.nahkampfwaffe.bruchfaktor}}</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.distanzklasse"}}</span>
|
||||||
|
<div>{{>editable-input type="text" name="system.nahkampfwaffe.distanzklasse" value=item.system.nahkampfwaffe.distanzklasse}}</div>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.kampftalente"}}</span>
|
||||||
|
<div>{{>editable-input type="text" name="system.nahkampfwaffe.kampftalente" value=item.system.nahkampfwaffe.kampftalente}}</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.laenge"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.nahkampfwaffe.laenge" value=item.system.nahkampfwaffe.laenge}}</div>
|
||||||
|
<div class="colspan2"></div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.zweihaendig"}}</span>
|
||||||
|
<div>{{>editable-input type="checkbox" name="system.nahkampfwaffe.zweihaendig" value=item.system.nahkampfwaffe.zweihaendig}}</div>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.werfbar"}}</span>
|
||||||
|
<div>{{>editable-input type="checkbox" name="system.nahkampfwaffe.werfbar" value=item.system.nahkampfwaffe.werfbar}}</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.improvisiert"}}</span>
|
||||||
|
<div>{{>editable-input type="checkbox" name="system.nahkampfwaffe.improvisiert" value=item.system.nahkampfwaffe.improvisiert}}</div>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.nahkampfwaffe.priviligiert"}}</span>
|
||||||
|
<div>{{>editable-input type="checkbox" name="system.nahkampfwaffe.priviligiert" value=item.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>{{>editable-input type="number" name="system.parierwaffe.initiative" value=item.system.parierwaffe.initiative}}</div>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.parierwaffe.modifikator"}}</span>
|
||||||
|
<div class="grid2">
|
||||||
|
{{>editable-input type="number" name="system.parierwaffe.modifikator_attacke" value=item.system.parierwaffe.modifikator_attacke placeholder=(localize "DSA41.bewaffnung.parierwaffe.attacke")}}
|
||||||
|
{{>editable-input type="number" name="system.parierwaffe.modifikator_parade" value=item.system.parierwaffe.modifikator_parade placeholder=(localize "DSA41.bewaffnung.parierwaffe.parade")}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.bruchfaktor"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.parierwaffe.bruchfaktor" value=item.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>
|
||||||
|
<select name="system.schild.groesse">
|
||||||
|
<option value="klein" {{#if (eq item.system.schild.groesse "klein")}} selected {{/if}}>{{localize "DSA41.bewaffnung.schild.groesse.klein"}}</option>
|
||||||
|
<option value="gross" {{#if (eq item.system.schild.groesse "gross")}} selected {{/if}}>{{localize "DSA41.bewaffnung.schild.groesse.gross"}}</option>
|
||||||
|
<option value="sehr_gross" {{#if (eq item.system.schild.groesse "sehr_gross")}} selected {{/if}}>{{localize "DSA41.bewaffnung.schild.groesse.sehr_gross"}}</option>
|
||||||
|
</select>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.schild.modifikator"}}</span>
|
||||||
|
<div class="grid2">
|
||||||
|
{{>editable-input type="number" name="system.schild.modifikator_attacke" value=item.system.schild.modifikator_attacke placeholder=(localize "DSA41.bewaffnung.schild.attacke")}}
|
||||||
|
{{>editable-input type="number" name="system.schild.modifikator_parade" value=item.system.schild.modifikator_parade placeholder=(localize "DSA41.bewaffnung.schild.parade")}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.schild.initiative"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.schild.initiative" value=item.system.schild.initiative}}</div>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.bruchfaktor"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.schild.bruchfaktor" value=item.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">{{>editable-input type="text" name="system.fernkampfwaffe.basis" value=item.system.fernkampfwaffe.basis}}</div>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.laden"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.fernkampfwaffe.laden" value=item.system.fernkampfwaffe.laden}}</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.munitionskosten"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.fernkampfwaffe.munitionskosten" value=item.system.fernkampfwaffe.munitionskosten}}</div>
|
||||||
|
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.munitionsgewicht"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.fernkampfwaffe.munitionsgewicht" value=item.system.fernkampfwaffe.munitionsgewicht}}</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.reichweiten"}}</span>
|
||||||
|
<div class="colspan3 grid5">
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.reichweite1" value=item.system.fernkampfwaffe.reichweite1}}
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.reichweite2" value=item.system.fernkampfwaffe.reichweite2}}
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.reichweite3" value=item.system.fernkampfwaffe.reichweite3}}
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.reichweite4" value=item.system.fernkampfwaffe.reichweite4}}
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.reichweite5" value=item.system.fernkampfwaffe.reichweite5}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.bewaffnung.fernkampfwaffe.modifikator"}}</span>
|
||||||
|
<div class="row colspan3 grid5">
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.modifikator1" value=item.system.fernkampfwaffe.modifikator1}}
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.modifikator2" value=item.system.fernkampfwaffe.modifikator2}}
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.modifikator3" value=item.system.fernkampfwaffe.modifikator3}}
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.modifikator4" value=item.system.fernkampfwaffe.modifikator4}}
|
||||||
|
{{>editable-input type="number" name="system.fernkampfwaffe.modifikator5" value=item.system.fernkampfwaffe.modifikator5}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<div class="item-sheet {{ cssClass }}" autocomplete="off">
|
||||||
|
<div class="row">
|
||||||
|
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
|
||||||
|
<div class="col">
|
||||||
|
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
|
||||||
|
<div class="row gap">
|
||||||
|
{{>editable-input type="number" name="system.gewicht" value=item.system.gewicht placeholder=(localize "DSA41.weight")}}
|
||||||
|
{{>editable-input type="number" name="system.preis" value=item.system.preis placeholder=(localize "DSA41.price")}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<form class="item-sheet {{ cssClass }}" autocomplete="off">
|
|
||||||
<header>
|
|
||||||
{{#if editable}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}" data-edit="img" >
|
|
||||||
<input name="name" type="text" value="{{ item.name }}" placeholder="Name">
|
|
||||||
{{else}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}">
|
|
||||||
<div>{{ item.name }}</div>
|
|
||||||
{{/if}}
|
|
||||||
</header>
|
|
||||||
</form>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<form class="item-sheet {{ cssClass }}" autocomplete="off">
|
|
||||||
<header>
|
|
||||||
{{#if editable}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}" data-edit="img" >
|
|
||||||
<input name="name" type="text" value="{{ item.name }}" placeholder="Name">
|
|
||||||
{{else}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}">
|
|
||||||
<div>{{ item.name }}</div>
|
|
||||||
{{/if}}
|
|
||||||
</header>
|
|
||||||
</form>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<form class="item-sheet {{ cssClass }}" autocomplete="off">
|
|
||||||
<header>
|
|
||||||
{{#if editable}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}" data-edit="img" >
|
|
||||||
<input name="name" type="text" value="{{ item.name }}" placeholder="Name">
|
|
||||||
{{else}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}">
|
|
||||||
<div>{{ item.name }}</div>
|
|
||||||
{{/if}}
|
|
||||||
</header>
|
|
||||||
</form>
|
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<div class="item-sheet {{ cssClass }}" autocomplete="off">
|
||||||
|
<div class="row">
|
||||||
|
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
|
||||||
|
<div class="col">
|
||||||
|
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
|
||||||
|
<div class="row gap">
|
||||||
|
{{>editable-input type="number" name="system.gewicht" value=item.system.gewicht placeholder=(localize "DSA41.weight")}}
|
||||||
|
{{>editable-input type="number" name="system.preis" value=item.system.preis placeholder=(localize "DSA41.price")}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tab active">
|
||||||
|
<span>{{localize "DSA41.ruestungen.kopf"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.kopf" value=item.system.kopf}}</div>
|
||||||
|
<span>{{localize "DSA41.ruestungen.brust"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.brust" value=item.system.brust}}</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.ruestungen.ruecken"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.ruecken" value=item.system.ruecken}}</div>
|
||||||
|
<span>{{localize "DSA41.ruestungen.bauch"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.bauch" value=item.system.bauch}}</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.ruestungen.linker_arm"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.linker_arm" value=item.system.linker_arm}}</div>
|
||||||
|
<span>{{localize "DSA41.ruestungen.rechter_arm"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.rechter_arm" value=item.system.rechter_arm}}</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.ruestungen.linkes_bein"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.linkes_bein" value=item.system.linkes_bein}}</div>
|
||||||
|
<span>{{localize "DSA41.ruestungen.rechtes_bein"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.rechtes_bein" value=item.system.rechtes_bein}}</div>
|
||||||
|
|
||||||
|
<span>{{localize "DSA41.ruestungen.gesamt_ruestungsschutz"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.gesamt_ruestungsschutz" value=item.system.gesamt_ruestungsschutz}}</div>
|
||||||
|
<span>{{localize "DSA41.ruestungen.gesamt_behinderung"}}</span>
|
||||||
|
<div>{{>editable-input type="number" name="system.gesamt_behinderung" value=item.system.gesamt_behinderung}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<form class="item-sheet {{ cssClass }}" autocomplete="off">
|
|
||||||
<header>
|
|
||||||
{{#if editable}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}" data-edit="img">
|
|
||||||
<input name="name" type="text" value="{{ item.name }}" placeholder="Name">
|
|
||||||
{{else}}
|
|
||||||
<img src="{{ item.img }}" title="{{ item.name }}">
|
|
||||||
<div>{{ item.name }}</div>
|
|
||||||
{{/if}}
|
|
||||||
</header>
|
|
||||||
</form>
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<div class="dsa41-tooltip">
|
||||||
|
<ruby>{{basis_attacke}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby>
|
||||||
|
|
||||||
|
+ <ruby>{{talent_attacke}}<rt>{{localize "DSA41.talente.label"}}</rt></ruby>
|
||||||
|
|
||||||
|
{{#if (ne modifikator_attacke 0)}}
|
||||||
|
+ <ruby>{{modifikator_attacke}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.modifikator"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (ne parierwaffe_attacke 0)}}
|
||||||
|
+ <ruby>{{parierwaffe_attacke}}<rt>{{localize "DSA41.bewaffnung.parierwaffe.label"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (ne schild_attacke 0)}}
|
||||||
|
+ <ruby>{{schild_attacke}}<rt>{{localize "DSA41.bewaffnung.schild.label"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (lt tp_kk 0)}}
|
||||||
|
+ <ruby>{{tp_kk}}<rt>{{localize "DSA41.attributes.long.strength"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<div class="dsa41-tooltip">
|
||||||
|
<ruby>{{initial}}<rt>{{localize "DSA41.attributes.initial"}}</rt></ruby>
|
||||||
|
{{#if (ne advancement 0)}}
|
||||||
|
+ <ruby>{{advancement}}<rt>{{localize "DSA41.attributes.advancement"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
{{#if (ne modifier 0)}}
|
||||||
|
+ <ruby>{{modifier}}<rt>{{localize "DSA41.attributes.modifier"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<div class="dsa41-tooltip">
|
||||||
|
<ruby>{{basis_attacke}}<rt>{{localize "DSA41.bewaffnung.fernkampfwaffe.basis"}}</rt></ruby>
|
||||||
|
+ <ruby>{{talent_attacke}}<rt>{{localize "DSA41.talente.label"}}</rt></ruby>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="dsa41-tooltip">
|
||||||
|
<ruby>{{item.system.fernkampfwaffe.basis}}<rt>{{localize "DSA41.bewaffnung.fernkampfwaffe.basis"}}</rt></ruby>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<div class="dsa41-tooltip">
|
||||||
|
<ruby>{{basis_parade}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby>
|
||||||
|
|
||||||
|
+ <ruby>{{talent_parade}}<rt>{{localize "DSA41.talente.label"}}</rt></ruby>
|
||||||
|
|
||||||
|
{{#if (ne modifikator_parade 0)}}
|
||||||
|
+ <ruby>{{modifikator_parade}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.modifikator"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (ne parierwaffe_parade 0)}}
|
||||||
|
+ <ruby>{{parierwaffe_parade}}<rt>{{localize "DSA41.bewaffnung.parierwaffe.label"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (ne schild_parade 0)}}
|
||||||
|
+ <ruby>{{schild_parade}}<rt>{{localize "DSA41.bewaffnung.schild.label"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (lt tp_kk 0)}}
|
||||||
|
+ <ruby>{{tp_kk}}<rt>{{localize "DSA41.attributes.long.strength"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<div class="dsa41-tooltip">
|
||||||
|
<ruby>{{item.system.nahkampfwaffe.basis}}<rt>{{localize "DSA41.bewaffnung.nahkampfwaffe.basis"}}</rt></ruby>
|
||||||
|
|
||||||
|
{{#if (ne tp_kk 0)}}
|
||||||
|
+ <ruby>{{tp_kk}}<rt>{{localize "DSA41.attributes.long.strength"}}</rt></ruby>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
@@ -1,9 +1,44 @@
|
|||||||
{
|
{
|
||||||
|
"TYPES": {
|
||||||
|
"Item": {
|
||||||
|
"Gegenstand": "Gegenstand",
|
||||||
|
"Ruestung": "Rüstung",
|
||||||
|
"Bewaffnung": "Bewaffnung"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
"DSA41": {
|
"DSA41": {
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"race": "Rasse",
|
"race": "Rasse",
|
||||||
"culture": "Kultur",
|
"culture": "Kultur",
|
||||||
"profession": "Profession",
|
"profession": "Profession",
|
||||||
|
"weight": "Gewicht",
|
||||||
|
"price": "Preis",
|
||||||
|
|
||||||
|
"roll_types": {
|
||||||
|
"courage": "Mut",
|
||||||
|
"cleverness": "Klugheit",
|
||||||
|
"intuition": "Intuition",
|
||||||
|
"charisma": "Charisma",
|
||||||
|
"dexterity": "Fingerfertigkeit",
|
||||||
|
"agility": "Gewandheit",
|
||||||
|
"constitution": "Konstitution",
|
||||||
|
"strength": "Körperkraft",
|
||||||
|
|
||||||
|
"attacke": "Attacke",
|
||||||
|
"parade": "Parade",
|
||||||
|
"trefferpunkte": "Trefferpunkte",
|
||||||
|
|
||||||
|
"fernkampf-attacke": "Attacke",
|
||||||
|
"fernkampf-trefferpunkte": "Trefferpunkte"
|
||||||
|
},
|
||||||
|
|
||||||
|
"character": {
|
||||||
|
"eigenschaften": "Eigenschaften",
|
||||||
|
"talente": "Talente",
|
||||||
|
"inventar": "Inventar",
|
||||||
|
"kampf": "Kampf"
|
||||||
|
},
|
||||||
|
|
||||||
"attributes": {
|
"attributes": {
|
||||||
"label": "Eigenschaften",
|
"label": "Eigenschaften",
|
||||||
@@ -32,6 +67,350 @@
|
|||||||
"constitution": "KO",
|
"constitution": "KO",
|
||||||
"strength": "KK"
|
"strength": "KK"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"talente":{
|
||||||
|
"label": "Talent",
|
||||||
|
"label_eigenschaften": "Eigenschaften",
|
||||||
|
"label_talentwert": "Talentwert",
|
||||||
|
|
||||||
|
"kampf": {
|
||||||
|
"label": "Kampf Talente",
|
||||||
|
"label_attacke": "Attacke",
|
||||||
|
"label_parade": "Parade",
|
||||||
|
"label_attacke_total": "Attacke",
|
||||||
|
"label_parade_total": "Parade",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"anderthalbhaender": "Anderthalbhänder",
|
||||||
|
"armbrust": "Armbrust",
|
||||||
|
"belagerungswaffen": "Belagerungswaffen",
|
||||||
|
"blasrohr": "Blasrohr",
|
||||||
|
"bogen": "Bogen",
|
||||||
|
"diskus": "Diskus",
|
||||||
|
"dolche": "Dolche",
|
||||||
|
"fechtwaffen": "Fechtwaffen",
|
||||||
|
"hiebwaffen": "Hiebwaffen",
|
||||||
|
"infanteriewaffen": "Infanteriewaffen",
|
||||||
|
"kettenstaebe": "Kettenstäbe",
|
||||||
|
"kettenwaffen": "Kettenwaffen",
|
||||||
|
"lanzenreiten": "Lanzenreiten",
|
||||||
|
"peitsche": "Peitsche",
|
||||||
|
"raufen": "Raufen",
|
||||||
|
"ringen": "Ringen",
|
||||||
|
"saebel": "Saebel",
|
||||||
|
"schleuder": "Schleuder",
|
||||||
|
"schwerter": "Schwerter",
|
||||||
|
"speere": "Speere",
|
||||||
|
"staebe": "Stäbe",
|
||||||
|
"wurfbeile": "Wurfbeile",
|
||||||
|
"wurfmesser": "Wurfmesser",
|
||||||
|
"wurfspeere": "Wurfspeere",
|
||||||
|
"zweihandflegel": "Zweihandflegel",
|
||||||
|
"zweihand_hiebwaffen": "Zweihand-Hiebwaffen",
|
||||||
|
"zweihandschwerter": "Zweihandschwerter/-säbel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"koerperliche": {
|
||||||
|
"label": "Körperliche Talente",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"akrobatik": "Akrobatik",
|
||||||
|
"athletik": "Athletik",
|
||||||
|
"fliegen": "Fliegen",
|
||||||
|
"gaukeleien": "Gaukeleien",
|
||||||
|
"klettern": "Klettern",
|
||||||
|
"koerperbeherrschung": "Körperbeherrschung",
|
||||||
|
"reiten": "Reiten",
|
||||||
|
"schleichen": "Schleichen",
|
||||||
|
"schwimmen": "Schwimmen",
|
||||||
|
"selbstbeherrschung": "Selbstbeherrschung",
|
||||||
|
"sich_verstecken": "Sich Verstecken",
|
||||||
|
"singen": "Singen",
|
||||||
|
"sinnenschärfe": "Sinnenschärfe",
|
||||||
|
"skifahren": "Skifahren",
|
||||||
|
"stimmen_imitieren": "Stimmen Imitieren",
|
||||||
|
"tanzen": "Tanzen",
|
||||||
|
"taschendiebstahl": "Taschendiebstahl",
|
||||||
|
"zechen": "Zechen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"gesellschaftliche": {
|
||||||
|
"label": "Gesellschaftliche Talente",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"betoeren": "Betören",
|
||||||
|
"etikette": "Etikette",
|
||||||
|
"gassenwissen": "Gassenwissen",
|
||||||
|
"lehren": "Lehren",
|
||||||
|
"menschenkenntnis": "Menschenkenntnis",
|
||||||
|
"schauspielerei": "Schauspielerei",
|
||||||
|
"schriftlicher_ausdruck": "Schriftlicher Ausdruck",
|
||||||
|
"sich_verkleiden": "Sich Verkleiden",
|
||||||
|
"ueberreden": "Überreden",
|
||||||
|
"ueberzeugen": "Überzeugen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"natur": {
|
||||||
|
"label": "Natur-Talente",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"faehrtensuchen": "Fährtensuchen",
|
||||||
|
"fallenstellen": "Fallenstellen",
|
||||||
|
"fesseln": "Fesseln/Entfesseln",
|
||||||
|
"fischen": "Fischen/Angeln",
|
||||||
|
"orientierung": "Orientierung",
|
||||||
|
"wettervorhersage": "Wettervorhersage",
|
||||||
|
"wildnisleben": "Wildnisleben"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"wissens": {
|
||||||
|
"label": "Wissenstalente",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"anatomie": "Anatomie",
|
||||||
|
"baukunst": "Baukunst",
|
||||||
|
"brett_kartenspiel": "Brett-/Kartenspiel",
|
||||||
|
"geographie": "Geographie",
|
||||||
|
"geschichtswissen": "Geschichtswissen",
|
||||||
|
"gesteinskunde": "Gesteinskunde",
|
||||||
|
"goetter_kulte": "Götter/Kulte",
|
||||||
|
"heraldik": "Heraldik",
|
||||||
|
"huettenkunde": "Hüttenkunde",
|
||||||
|
"kriegskunst": "Kriegskunst",
|
||||||
|
"kryptographie": "Kryptographie",
|
||||||
|
"magiekunde": "Magiekunde",
|
||||||
|
"mechanik": "Mechanik",
|
||||||
|
"pflanzenkunde": "Pflanzenkunde",
|
||||||
|
"philosophie": "Philosophie",
|
||||||
|
"rechnen": "Rechnen",
|
||||||
|
"rechtskunde": "Rechtskunde",
|
||||||
|
"sagen_legenden": "Sagen/Legenden",
|
||||||
|
"schaetzen": "Schätzen",
|
||||||
|
"sprachenkunde": "Sprachenkunde",
|
||||||
|
"staatskunst": "Staatskunst",
|
||||||
|
"sternkunde": "Sternenkunde",
|
||||||
|
"tierkunde": "Tierkunde"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"sprachen": {
|
||||||
|
"label": "Sprachen und Schriften",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"lesen_schreiben": "Lesen/Schreiben [Schrift]",
|
||||||
|
"muttersprache": "Sprachen [Muttersprache]",
|
||||||
|
"fremdsprache": "Sprachen [Fremdsprache]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"handwerks": {
|
||||||
|
"label": "Handwerkstalente",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"abrichten": "Abrichten",
|
||||||
|
"ackerbau": "Ackerbau",
|
||||||
|
"alchimie": "Alchimie",
|
||||||
|
"bergbau": "Bergbau",
|
||||||
|
"bogenbau": "Bogenbau",
|
||||||
|
"boote_fahren": "Boote Fahren",
|
||||||
|
"brauer": "Brauer",
|
||||||
|
"drucker": "Drucker",
|
||||||
|
"fahrzeug_lenken": "Fahrzeug Lenken",
|
||||||
|
"falschspiel": "Falschspiel",
|
||||||
|
"feinmechanik": "Feinmechanik",
|
||||||
|
"feuersteinbearbeitung": "Feuersteinbearbeitung",
|
||||||
|
"fleischer": "Fleischer",
|
||||||
|
"gerber": "Gerber/Kürschner",
|
||||||
|
"glaskunst": "Glaskunst",
|
||||||
|
"grobschmied": "Grobschmied",
|
||||||
|
"handel": "Handel",
|
||||||
|
"hauswirtschaft": "Hauswirtschaft",
|
||||||
|
"heilkunde_gift": "Heilkunde Gift",
|
||||||
|
"heilkunde_krankheiten": "Heilkunde Krankheiten",
|
||||||
|
"heilkunde_seele": "Heilkunde Seele",
|
||||||
|
"heilkunde_wunden": "Heilkunde Wunden",
|
||||||
|
"holzbearbeitung": "Holzbearbeitung",
|
||||||
|
"instrumentenbauer": "Instrumentenbauer",
|
||||||
|
"kartographie": "Kartographie",
|
||||||
|
"kochen": "Kochen",
|
||||||
|
"kristallzucht": "Kristallzucht",
|
||||||
|
"lederarbeiten": "Lederarbeiten",
|
||||||
|
"malen_zeichnen": "Malen/Zeichnen",
|
||||||
|
"maurer": "Maurer",
|
||||||
|
"metallguss": "Metallguss",
|
||||||
|
"musizieren": "Musizieren",
|
||||||
|
"schloesser_knacken": "Schlösser Knacken",
|
||||||
|
"schnapps_brennen": "Schnapps Brennen",
|
||||||
|
"schneidern": "Schneidern",
|
||||||
|
"seefahrt": "Seefahrt",
|
||||||
|
"seiler": "Seiler",
|
||||||
|
"steinmetz": "Steinmetz",
|
||||||
|
"juwelier": "Steinschneider/Juwelier",
|
||||||
|
"stellmacher": "Stellmacher",
|
||||||
|
"stoffe_faerben": "Stoffe Faerben",
|
||||||
|
"taetowieren": "Tätowieren",
|
||||||
|
"toepfern": "Töpfern",
|
||||||
|
"viehzucht": "Viehzucht",
|
||||||
|
"webkunst": "Webkunst",
|
||||||
|
"winzer": "Winzer",
|
||||||
|
"zimmermann": "Zimmermann"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"ruestungen": {
|
||||||
|
"kopf": "Kopf",
|
||||||
|
"brust": "Brust",
|
||||||
|
"ruecken": "Rücken",
|
||||||
|
"bauch": "Bauch",
|
||||||
|
"linker_arm": "Linker Arm",
|
||||||
|
"rechter_arm": "Rechter Arm",
|
||||||
|
"linkes_bein": "Linkes Bein",
|
||||||
|
"rechtes_bein": "Rechtes Bein",
|
||||||
|
|
||||||
|
"gesamt_ruestungsschutz": "Gesamt Rüstungsschutz",
|
||||||
|
"gesamt_behinderung": "Gesamt Behinderung",
|
||||||
|
|
||||||
|
"arm": "Arm",
|
||||||
|
"bein": "Bein",
|
||||||
|
|
||||||
|
"ruestungsschutz": "Rüstungsschutz",
|
||||||
|
"behinderung": "Behinderung",
|
||||||
|
|
||||||
|
"gesamt": "Gesamt",
|
||||||
|
"links": "Links",
|
||||||
|
"rechts": "Rechts"
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
"bewaffnung": {
|
||||||
|
"bruchfaktor": "Bruchfaktor",
|
||||||
|
|
||||||
|
"nahkampfwaffe": {
|
||||||
|
"label": "Nahkampfwaffe",
|
||||||
|
|
||||||
|
"laenge": "Länge",
|
||||||
|
"trefferpunkte": "Trefferpunkte",
|
||||||
|
"basis": "Basis",
|
||||||
|
"schwellenwert": "Schwellenwert",
|
||||||
|
"schadensschritte": "Schadensschritte",
|
||||||
|
"initiative": "Initiative",
|
||||||
|
"modifikator": "Modifikator",
|
||||||
|
"attacke": "Attacke",
|
||||||
|
"parade": "Parade",
|
||||||
|
"distanzklasse": "Distanzklasse",
|
||||||
|
"zweihaendig": "Zweihändig",
|
||||||
|
"werfbar": "Werfbar",
|
||||||
|
"improvisiert": "Improvisiert",
|
||||||
|
"priviligiert": "Priviligiert",
|
||||||
|
"kampftalente": "Kampftalente"
|
||||||
|
},
|
||||||
|
|
||||||
|
"parierwaffe": {
|
||||||
|
"label": "Parierwaffe",
|
||||||
|
|
||||||
|
"modifikator": "Modifikator",
|
||||||
|
"attacke": "Attacke",
|
||||||
|
"parade": "Parade",
|
||||||
|
"initiative": "Initiative"
|
||||||
|
},
|
||||||
|
|
||||||
|
"schild": {
|
||||||
|
"label": "Schild",
|
||||||
|
|
||||||
|
"groesse": {
|
||||||
|
"label": "Größe",
|
||||||
|
|
||||||
|
"klein": "Klein",
|
||||||
|
"gross": "Groß",
|
||||||
|
"sehr_gross": "Sehr Groß"
|
||||||
|
},
|
||||||
|
|
||||||
|
"modifikator": "Modifikator",
|
||||||
|
"attacke": "Attacke",
|
||||||
|
"parade": "Parade",
|
||||||
|
"initiative": "Initiative"
|
||||||
|
},
|
||||||
|
|
||||||
|
"fernkampfwaffe": {
|
||||||
|
"label": "Fernkampfwaffe",
|
||||||
|
|
||||||
|
"trefferpunkte": "Trefferpunkte",
|
||||||
|
"basis": "Basis",
|
||||||
|
"reichweiten": "Reichweiten",
|
||||||
|
"modifikator": "Modifikator",
|
||||||
|
"laden": "Laden",
|
||||||
|
"munitionskosten": "Munitionskosten",
|
||||||
|
"munitionsgewicht": "Munitionsgewicht"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"inventar": {
|
||||||
|
"bewaffnung": "Bewaffnung",
|
||||||
|
"ruestungen": "Rüstungen",
|
||||||
|
"gegenstaende": "Gegenstände"
|
||||||
|
},
|
||||||
|
|
||||||
|
"kampf": {
|
||||||
|
"bewaffnung": "Bewaffnung",
|
||||||
|
"attacke": "Attacke",
|
||||||
|
"parade": "Parade",
|
||||||
|
"trefferpunkte": "Trefferpunkte",
|
||||||
|
"ruestungen": "Rüstungen",
|
||||||
|
"modifikator": "Modifikator",
|
||||||
|
"crit": "Glückliche Attacke",
|
||||||
|
|
||||||
|
"zielgroesse": {
|
||||||
|
"label": "Zielgröße",
|
||||||
|
|
||||||
|
"winzig": "Winzig",
|
||||||
|
"sehr_klein": "Sehr Klein",
|
||||||
|
"klein": "Klein",
|
||||||
|
"mittel": "Mittel",
|
||||||
|
"gross": "Groß",
|
||||||
|
"sehr_gross": "Sehr Groß"
|
||||||
|
},
|
||||||
|
|
||||||
|
"deckung": {
|
||||||
|
"label": "Deckung",
|
||||||
|
|
||||||
|
"keine": "Keine",
|
||||||
|
"halb": "Halb",
|
||||||
|
"drei_viertel": "Drei Viertel"
|
||||||
|
},
|
||||||
|
|
||||||
|
"entfernung": {
|
||||||
|
"label": "Entfernung",
|
||||||
|
|
||||||
|
"sehr_nah": "Sehr Nah",
|
||||||
|
"nah": "Nah",
|
||||||
|
"mittel": "Mittel",
|
||||||
|
"weit": "Weit",
|
||||||
|
"extrem_weit": "Extrem Weit"
|
||||||
|
},
|
||||||
|
|
||||||
|
"zielbewegung": {
|
||||||
|
"label": "Bewegung des Ziels",
|
||||||
|
|
||||||
|
"unbeweglich": "Unbeweglich",
|
||||||
|
"stillstehend": "Stillstehend",
|
||||||
|
"leicht": "Leicht",
|
||||||
|
"schnell": "Schnell",
|
||||||
|
"sehr_schnell": "Sehr Schnell"
|
||||||
|
},
|
||||||
|
|
||||||
|
"wind": {
|
||||||
|
"label": "Wind",
|
||||||
|
|
||||||
|
"still": "Still",
|
||||||
|
"seitenwind": "Böiger Seitenwind",
|
||||||
|
"starker_seitenwind": "Starker Seitenwind"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,19 @@
|
|||||||
{
|
{
|
||||||
|
"TYPES": {
|
||||||
|
"Item": {
|
||||||
|
"Gegenstand": "Generic",
|
||||||
|
"Ruestung": "Armor",
|
||||||
|
"Bewaffnung": "Weaponry"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
"DSA41": {
|
"DSA41": {
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"race": "Race",
|
"race": "Race",
|
||||||
"culture": "Culture",
|
"culture": "Culture",
|
||||||
"profession": "Profession",
|
"profession": "Profession",
|
||||||
|
"weight": "Weight",
|
||||||
|
"price": "Price",
|
||||||
|
|
||||||
"attributes": {
|
"attributes": {
|
||||||
"label": "Attributes",
|
"label": "Attributes",
|
||||||
@@ -32,6 +42,185 @@
|
|||||||
"constitution": "CN",
|
"constitution": "CN",
|
||||||
"strength": "ST"
|
"strength": "ST"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"talente": {
|
||||||
|
"label": "Talent",
|
||||||
|
"label_eigenschaften": "Attributes",
|
||||||
|
"label_talentwert": "Talent Prowess",
|
||||||
|
|
||||||
|
"kampf": {
|
||||||
|
"label": "Combat Talents",
|
||||||
|
"label_attacke": "!!TODO!!",
|
||||||
|
"label_parade": "!!TODO!!",
|
||||||
|
"label_attacke_total": "!!TODO!!",
|
||||||
|
"label_parade_total": "!!TODO!!",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"anderthalbhaender": "!!TODO!!",
|
||||||
|
"armbrust": "!!TODO!!"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"koerperliche": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"akrobatik": "!!TODO!!",
|
||||||
|
"athletik": "!!TODO!!",
|
||||||
|
"fliegen": "!!TODO!!",
|
||||||
|
"gaukeleien": "!!TODO!!",
|
||||||
|
"klettern": "!!TODO!!",
|
||||||
|
"koerperbeherrschung": "!!TODO!!",
|
||||||
|
"reiten": "!!TODO!!",
|
||||||
|
"schleichen": "!!TODO!!",
|
||||||
|
"schwimmen": "!!TODO!!",
|
||||||
|
"selbstbeherrschung": "!!TODO!!",
|
||||||
|
"sich_verstecken": "!!TODO!!",
|
||||||
|
"singen": "!!TODO!!",
|
||||||
|
"sinnenschärfe": "!!TODO!!",
|
||||||
|
"skifahren": "!!TODO!!",
|
||||||
|
"stimmen_imitieren": "!!TODO!!",
|
||||||
|
"tanzen": "!!TODO!!",
|
||||||
|
"taschendiebstahl": "!!TODO!!",
|
||||||
|
"zechen": "!!TODO!!"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"gesellschaftliche": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"betoeren": "!!TODO!!",
|
||||||
|
"etikette": "!!TODO!!",
|
||||||
|
"gassenwissen": "!!TODO!!",
|
||||||
|
"lehren": "!!TODO!!",
|
||||||
|
"menschenkenntnis": "!!TODO!!",
|
||||||
|
"schauspielerei": "!!TODO!!",
|
||||||
|
"schriftlicher_ausdruck": "!!TODO!!",
|
||||||
|
"sich_verkleiden": "!!TODO!!",
|
||||||
|
"ueberreden": "!!TODO!!",
|
||||||
|
"ueberzeugen": "!!TODO!!"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"natur": {
|
||||||
|
"label": "Nature Talents",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"faehrtensuchen": "Track",
|
||||||
|
"fallenstellen": "Traps",
|
||||||
|
"fesseln": "Bind/Escape",
|
||||||
|
"fischen": "Fish",
|
||||||
|
"orientierung": "Orientation",
|
||||||
|
"wettervorhersage": "Weather Sense",
|
||||||
|
"wildnisleben": "Survival"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"wissens": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"anatomie": "!!TODO!!",
|
||||||
|
"baukunst": "!!TODO!!"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"sprachen": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"lesen_schreiben": "!!TODO!!",
|
||||||
|
"muttersprache": "!!TODO!!",
|
||||||
|
"fremdsprache": "!!TODO!!"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"handwerks": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"name": {
|
||||||
|
"abrichten": "!!TODO!!",
|
||||||
|
"ackerbau": "!!TODO!!"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"ruestungen": {
|
||||||
|
"kopf": "!!TODO!!",
|
||||||
|
"brust": "!!TODO!!",
|
||||||
|
"ruecken": "!!TODO!!",
|
||||||
|
"bauch": "!!TODO!!",
|
||||||
|
"linker_arm": "!!TODO!!",
|
||||||
|
"rechter_arm": "!!TODO!!",
|
||||||
|
"linkes_bein": "!!TODO!!",
|
||||||
|
"rechtes_bein": "!!TODO!!",
|
||||||
|
|
||||||
|
"gesamt_ruestungsschutz": "!!TODO!!",
|
||||||
|
"gesamt_behinderung": "!!TODO!!"
|
||||||
|
},
|
||||||
|
|
||||||
|
"bewaffnung": {
|
||||||
|
"bruchfaktor": "!!TODO!!",
|
||||||
|
|
||||||
|
"nahkampfwaffe": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"laenge": "!!TODO!!",
|
||||||
|
"trefferpunkte": "!!TODO!!",
|
||||||
|
"basis": "!!TODO!!",
|
||||||
|
"schwellenwert": "!!TODO!!",
|
||||||
|
"schadensschritte": "!!TODO!!",
|
||||||
|
"initiative": "!!TODO!!",
|
||||||
|
"modifikator": "!!TODO!!",
|
||||||
|
"attacke": "!!TODO!!",
|
||||||
|
"parade": "!!TODO!!",
|
||||||
|
"distanzklasse": "!!TODO!!",
|
||||||
|
"zweihaendig": "!!TODO!!",
|
||||||
|
"werfbar": "!!TODO!!",
|
||||||
|
"improvisiert": "!!TODO!!",
|
||||||
|
"priviligiert": "!!TODO!!",
|
||||||
|
"kampftalente": "!!TODO!!"
|
||||||
|
},
|
||||||
|
|
||||||
|
"parierwaffe": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"modifikator": "!!TODO!!",
|
||||||
|
"attacke": "!!TODO!!",
|
||||||
|
"parade": "!!TODO!!",
|
||||||
|
"initiative": "!!TODO!!"
|
||||||
|
},
|
||||||
|
|
||||||
|
"schild": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"groesse": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"klein": "!!TODO!!",
|
||||||
|
"gross": "!!TODO!!",
|
||||||
|
"sehr_gross": "!!TODO!!"
|
||||||
|
},
|
||||||
|
|
||||||
|
"modifikator": "!!TODO!!",
|
||||||
|
"attacke": "!!TODO!!",
|
||||||
|
"parade": "!!TODO!!",
|
||||||
|
"initiative": "!!TODO!!"
|
||||||
|
},
|
||||||
|
|
||||||
|
"fernkampfwaffe": {
|
||||||
|
"label": "!!TODO!!",
|
||||||
|
|
||||||
|
"trefferpunkte": "!!TODO!!",
|
||||||
|
"basis": "!!TODO!!",
|
||||||
|
"reichweiten": "!!TODO!!",
|
||||||
|
"modifikator": "!!TODO!!",
|
||||||
|
"laden": "!!TODO!!",
|
||||||
|
"munitionskosten": "!!TODO!!",
|
||||||
|
"munitionsgewicht": "!!TODO!!"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+323
-97
@@ -1,98 +1,324 @@
|
|||||||
.row {
|
.DSA41 {
|
||||||
display: flex;
|
font-size: 14px;
|
||||||
flex-direction: row;
|
|
||||||
}
|
/* Change from FoundryVTT's default of 'none' to 'auto' to allow checkboxes in the nav bar */
|
||||||
|
& .tabs > [data-tab] > * {
|
||||||
.col {
|
pointer-events: auto;
|
||||||
display: flex;
|
}
|
||||||
flex-direction: column;
|
|
||||||
}
|
/* Allow application content to be scrolled */
|
||||||
|
& .window-content {
|
||||||
.wrap {
|
overflow-y: scroll;
|
||||||
flex-wrap: wrap;
|
}
|
||||||
}
|
|
||||||
|
& [data-action] {
|
||||||
.center {
|
cursor: pointer;
|
||||||
text-align: center;
|
|
||||||
}
|
&:not(button):hover {
|
||||||
|
transform: scale(1.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
.editable-input {
|
|
||||||
flex: 1;
|
& .small {
|
||||||
padding: 0px 3px;
|
font-size: 0.75em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.editable-input input {
|
& .left {
|
||||||
border: none;
|
text-align: left;
|
||||||
}
|
justify-content: left;
|
||||||
|
justify-self: left;
|
||||||
.editable-number {
|
}
|
||||||
text-align: center;
|
|
||||||
}
|
& .right {
|
||||||
|
text-align: right;
|
||||||
.placeholder {
|
justify-content: right;
|
||||||
font-size: 0.8em;
|
justify-self: right;
|
||||||
border-top: 1px solid;
|
}
|
||||||
}
|
|
||||||
|
& .center {
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
.character-image {
|
align-content: center;
|
||||||
width: 115px;
|
align-items: center;
|
||||||
height: 115px;
|
}
|
||||||
}
|
|
||||||
|
& .row {
|
||||||
.die {
|
display: flex;
|
||||||
width: 48px;
|
flex-direction: row;
|
||||||
height: 48px;
|
flex: 1;
|
||||||
line-height: 48px;
|
}
|
||||||
|
|
||||||
background-color: #000;
|
& .col {
|
||||||
mask-image: url("../src/Assets/d20.svg");
|
display: flex;
|
||||||
mask-size: contain;
|
flex-direction: column;
|
||||||
|
flex: 1;
|
||||||
text-align: center;
|
}
|
||||||
color: #fff;
|
|
||||||
}
|
& .noflex {
|
||||||
|
flex: 0;
|
||||||
.die-courage { background-color: #b22319; }
|
}
|
||||||
.die-cleverness { background-color: #8158a3; }
|
|
||||||
.die-intuition { background-color: #388834; }
|
& .gap {
|
||||||
.die-charisma { background-color: #0c0c0c; }
|
gap: 0.5rem;
|
||||||
.die-dexterity { background-color: #d4b366; }
|
}
|
||||||
.die-agility { background-color: #678ec3; }
|
|
||||||
.die-constitution { background-color: #a3a3a3; }
|
& .subgrid {
|
||||||
.die-strength { background-color: #d5a877; }
|
display: grid;
|
||||||
|
grid-template-rows: subgrid;
|
||||||
.actor-sheet fieldset {
|
grid-template-columns: subgrid;
|
||||||
width: 100%;
|
}
|
||||||
}
|
|
||||||
|
& .subgrid-columns {
|
||||||
.actor-sheet table {
|
display: grid;
|
||||||
border: none;
|
grid-template-columns: subgrid;
|
||||||
background: none;
|
}
|
||||||
table-layout: fixed;
|
|
||||||
}
|
& .subgrid-rows {
|
||||||
|
display: grid;
|
||||||
.item-sheet header {
|
grid-template-rows: subgrid;
|
||||||
display: flex;
|
}
|
||||||
flex-flow: row wrap;
|
|
||||||
justify-content: flex-start;
|
& .grid2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||||
align-items: center;
|
& .grid3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
||||||
}
|
& .grid4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
|
||||||
|
& .grid5 { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
|
||||||
.item-sheet header img {
|
& .grid6 { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); }
|
||||||
flex: 0 0 64px;
|
& .grid7 { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
|
||||||
height: 64px;
|
& .grid8 { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); }
|
||||||
margin-right: 6px;
|
& .grid9 { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); }
|
||||||
}
|
|
||||||
|
& .colspan2 { grid-column: span 2; }
|
||||||
.item-sheet header input,
|
& .colspan3 { grid-column: span 3; }
|
||||||
.item-sheet header div {
|
& .colspan4 { grid-column: span 4; }
|
||||||
flex: 1;
|
& .colspan5 { grid-column: span 5; }
|
||||||
height: 48px;
|
& .colspan6 { grid-column: span 6; }
|
||||||
line-height: 48px;
|
& .colspan7 { grid-column: span 7; }
|
||||||
margin: 8px;
|
& .colspan8 { grid-column: span 8; }
|
||||||
font-size: 2em;
|
& .colspan9 { grid-column: span 9; }
|
||||||
|
& .colspan-all { grid-column: 1 / -1; }
|
||||||
|
|
||||||
|
& .rowspan2 { grid-row: span 2; }
|
||||||
|
& .rowspan3 { grid-row: span 3; }
|
||||||
|
& .rowspan4 { grid-row: span 4; }
|
||||||
|
& .rowspan5 { grid-row: span 5; }
|
||||||
|
& .rowspan6 { grid-row: span 6; }
|
||||||
|
& .rowspan7 { grid-row: span 7; }
|
||||||
|
& .rowspan8 { grid-row: span 8; }
|
||||||
|
& .rowspan9 { grid-row: span 9; }
|
||||||
|
& .rowspan-all { grid-row: 1 / -1; }
|
||||||
|
|
||||||
|
& .editable-input {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
& input {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.editable-number {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .placeholder {
|
||||||
|
font-size: 0.8em;
|
||||||
|
border-top: 1px solid;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& .character-image {
|
||||||
|
width: 115px;
|
||||||
|
height: 115px;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .item-image {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .die {
|
||||||
|
display: inline-grid;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
align-items: center;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
width: 3.5em;
|
||||||
|
height: 3.5em;
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
grid-row: 1;
|
||||||
|
grid-column: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.die-courage { fill: #b22319; }
|
||||||
|
&.die-cleverness { fill: #8158a3; }
|
||||||
|
&.die-intuition { fill: #388834; }
|
||||||
|
&.die-charisma { fill: #0c0c0c; }
|
||||||
|
&.die-dexterity { fill: #d4b366; }
|
||||||
|
&.die-agility { fill: #678ec3; }
|
||||||
|
&.die-constitution { fill: #a3a3a3; }
|
||||||
|
&.die-strength { fill: #d5a877; }
|
||||||
|
|
||||||
|
&.die-attacke { fill: #b22319; }
|
||||||
|
&.die-parade { fill: #388834; }
|
||||||
|
&.die-trefferpunkte { fill: #0c0c0c; }
|
||||||
|
|
||||||
|
&.die-fernkampf-attacke { fill: #388834; }
|
||||||
|
&.die-fernkampf-trefferpunkte { fill: #0c0c0c; }
|
||||||
|
}
|
||||||
|
|
||||||
|
& .tabs {
|
||||||
|
padding: .5rem;
|
||||||
|
margin-top: .5rem;
|
||||||
|
margin-bottom: .5rem;
|
||||||
|
border-top: 1px solid;
|
||||||
|
border-bottom: 1px solid;
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .active {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& .tab.active {
|
||||||
|
display: grid;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .list {
|
||||||
|
display: grid;
|
||||||
|
|
||||||
|
background: #252830;
|
||||||
|
box-shadow: 0 0 6px rgba(0, 0, 0, 0.45);
|
||||||
|
|
||||||
|
& .item-image {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& .list-header {
|
||||||
|
display: grid;
|
||||||
|
grid-column: 1 / -1;
|
||||||
|
|
||||||
|
grid-template-rows: subgrid;
|
||||||
|
grid-template-columns: subgrid;
|
||||||
|
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
padding: 0.5rem;
|
||||||
|
border-radius: 5px 5px 0px 0px;
|
||||||
|
background: linear-gradient(90deg, rgb(36, 133, 44) 0%, rgb(0, 79, 7) 40%, rgb(0, 51, 5) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
& .list-item {
|
||||||
|
display: grid;
|
||||||
|
grid-column: 1 / -1;
|
||||||
|
|
||||||
|
grid-template-rows: subgrid;
|
||||||
|
grid-template-columns: subgrid;
|
||||||
|
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
padding: 0.25rem;
|
||||||
|
border-bottom: 1px dotted;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.Dialog > .window-content {
|
||||||
|
gap: 1rem;
|
||||||
|
|
||||||
|
& > :first-child {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(4, 1fr);
|
||||||
|
gap: 0.5rem;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& [data-application-part="Bewaffnung"] {
|
||||||
|
& .tab {
|
||||||
|
grid-template-columns: minmax(0, max-content) minmax(0, 1fr) minmax(0, max-content) minmax(0, 1fr);
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& [data-application-part="Ruestung"] {
|
||||||
|
& .tab {
|
||||||
|
grid-template-columns: minmax(0, max-content) minmax(0, 1fr) minmax(0, max-content) minmax(0, 1fr);
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& [data-application-part="ActorSheet"] {
|
||||||
|
& .tab {
|
||||||
|
&[data-tab="tab1"] {
|
||||||
|
& .Eigenschaften {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: minmax(0, max-content) repeat(8, minmax(0, 1fr));
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
& .Basiswerte {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&[data-tab="tab2"] {
|
||||||
|
& .Kampftalente {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: minmax(0, max-content) repeat(5, minmax(0, 1fr));
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .Talente {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: minmax(0, max-content) repeat(2, minmax(0, 1fr));
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&[data-tab="tab3"] {
|
||||||
|
grid-template-columns: minmax(min-content, max-content) auto minmax(min-content, max-content) min-content;
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
grid-column: 1 / -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&[data-tab="tab4"] {
|
||||||
|
& .Bewaffnung {
|
||||||
|
grid-template-columns: minmax(0, max-content) repeat(3, minmax(0, auto));
|
||||||
|
|
||||||
|
& .die {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& .Ruestung {
|
||||||
|
grid-template-columns: 2fr repeat(8, 1fr) repeat(2, 1.5fr);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& .dsa41-calculation {
|
||||||
|
font-size: 18px;
|
||||||
|
padding-top: 0.5rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+805
-25
@@ -1,9 +1,20 @@
|
|||||||
Hooks.once("init", function() {
|
const { TypeDataModel } = foundry.abstract;
|
||||||
console.log("INIT");
|
const { SchemaField, NumberField, StringField, BooleanField } = foundry.data.fields;
|
||||||
|
const { ActorSheetV2, ItemSheetV2 } = foundry.applications.sheets;
|
||||||
|
const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api;
|
||||||
|
const { OperatorTerm, NumericTerm } = foundry.dice.terms;
|
||||||
|
|
||||||
|
Hooks.once("init", async function() {
|
||||||
|
CONFIG.Combat.initiative.formula = "1d6 + @computed.ini_basiswert[INI-Basiswert]";
|
||||||
|
|
||||||
CONFIG.Actor.dataModels.Player = DSA41_CharacterData;
|
CONFIG.Actor.dataModels.Player = DSA41_CharacterData;
|
||||||
|
CONFIG.Actor.documentClass = DSA41_CharacterDocument;
|
||||||
|
|
||||||
//DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet);
|
CONFIG.Item.dataModels.Gegenstand = DSA41_GegenstandData;
|
||||||
|
CONFIG.Item.dataModels.Ruestung = DSA41_RuestungData;
|
||||||
|
CONFIG.Item.dataModels.Bewaffnung = DSA41_BewaffnungData;
|
||||||
|
|
||||||
|
DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet);
|
||||||
DocumentSheetConfig.registerSheet(Actor, "dsa41", DSA41_ActorSheet, {
|
DocumentSheetConfig.registerSheet(Actor, "dsa41", DSA41_ActorSheet, {
|
||||||
makeDefault: true,
|
makeDefault: true,
|
||||||
types: [
|
types: [
|
||||||
@@ -11,32 +22,108 @@ Hooks.once("init", function() {
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
//DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet);
|
DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet);
|
||||||
DocumentSheetConfig.registerSheet(Item, "dsa41", DSA41_ItemSheet, {
|
DocumentSheetConfig.registerSheet(Item, "dsa41", DSA41_ItemSheetV2, {
|
||||||
makeDefault: true,
|
makeDefault: true,
|
||||||
types: [
|
types: [
|
||||||
"Generic Item",
|
"Gegenstand",
|
||||||
"Melee Weapon",
|
"Ruestung",
|
||||||
"Ranged Weapon",
|
"Bewaffnung",
|
||||||
"Armor",
|
|
||||||
"Shield",
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await loadTemplates({
|
||||||
|
"editable-input": "systems/dsa-4th-edition/src/EditableInput.hbs",
|
||||||
|
|
||||||
|
"attribute_tooltip": "systems/dsa-4th-edition/src/Tooltips/Attribute.hbs",
|
||||||
|
|
||||||
|
"attacke_tooltip": "systems/dsa-4th-edition/src/Tooltips/Attacke.hbs",
|
||||||
|
"parade_tooltip": "systems/dsa-4th-edition/src/Tooltips/Parade.hbs",
|
||||||
|
"trefferpunkte_tooltip": "systems/dsa-4th-edition/src/Tooltips/Trefferpunkte.hbs",
|
||||||
|
|
||||||
|
"fernkampf_attacke_tooltip": "systems/dsa-4th-edition/src/Tooltips/FernkampfAttacke.hbs",
|
||||||
|
"fernkampf_trefferpunkte_tooltip": "systems/dsa-4th-edition/src/Tooltips/FernkampfTrefferpunkte.hbs",
|
||||||
|
|
||||||
|
"trefferpunkte_dialog": "systems/dsa-4th-edition/src/Dialog/Trefferpunkte.hbs",
|
||||||
|
|
||||||
|
"fernkampf_angriff_dialog": "systems/dsa-4th-edition/src/Dialogs/FernkampfAngriff.hbs",
|
||||||
|
"fernkampf_trefferpunkte_dialog": "systems/dsa-4th-edition/src/Dialogs/FernkampfTrefferpunkte.hbs",
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const { SchemaField, NumberField, StringField } = foundry.data.fields;
|
function get_minified_formula(formula, data) {
|
||||||
|
const terms = Roll.simplifyTerms(Roll.parse(formula, data));
|
||||||
|
let output = [];
|
||||||
|
|
||||||
class AttributeField extends foundry.data.fields.SchemaField {
|
let is_combinable = true;
|
||||||
|
for (let i = 0; i < terms.length; i++) {
|
||||||
|
const term = terms[i];
|
||||||
|
|
||||||
|
if (is_combinable && term instanceof NumericTerm) {
|
||||||
|
for (let j = i + 1; j < terms.length - 1; j += 2) {
|
||||||
|
let operator = terms[j];
|
||||||
|
let next = terms[j + 1];
|
||||||
|
|
||||||
|
if (!(operator instanceof OperatorTerm && next instanceof NumericTerm))
|
||||||
|
break;
|
||||||
|
|
||||||
|
switch (operator.operator) {
|
||||||
|
case "+": {
|
||||||
|
term.number += next.number;
|
||||||
|
i += 2;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case "-": {
|
||||||
|
term.number -= next.number;
|
||||||
|
i += 2;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
is_combinable = false;
|
||||||
|
} else {
|
||||||
|
if (term instanceof OperatorTerm && (term.operator == "+" || term.operator == "-")) {
|
||||||
|
is_combinable = true;
|
||||||
|
} else {
|
||||||
|
is_combinable = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output.push(term);
|
||||||
|
}
|
||||||
|
|
||||||
|
output = Roll.simplifyTerms(output);
|
||||||
|
return Roll.getFormula(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttributeField extends SchemaField {
|
||||||
constructor() {
|
constructor() {
|
||||||
return super({
|
return super({
|
||||||
initial: new NumberField({ integer: true, initial: 8, min: 8, max: 14, }),
|
initial: new NumberField({ integer: true, initial: 8, min: 0 }),
|
||||||
advancement: new NumberField({ integer: true, initial: 0, min: 0, max: 4, }),
|
advancement: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
modifier: new NumberField({ integer: true, initial: 0, min: 0, }),
|
modifier: new NumberField({ integer: true, initial: 0 }),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DSA41_CharacterData extends foundry.abstract.TypeDataModel {
|
class CombatTalentField extends SchemaField {
|
||||||
|
constructor() {
|
||||||
|
return super({
|
||||||
|
talentwert: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
attacke: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
parade: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DSA41_CharacterDocument extends Actor {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class DSA41_CharacterData extends TypeDataModel {
|
||||||
static defineSchema() {
|
static defineSchema() {
|
||||||
return {
|
return {
|
||||||
race: new StringField(),
|
race: new StringField(),
|
||||||
@@ -53,27 +140,720 @@ class DSA41_CharacterData extends foundry.abstract.TypeDataModel {
|
|||||||
constitution: new AttributeField(),
|
constitution: new AttributeField(),
|
||||||
strength: new AttributeField(),
|
strength: new AttributeField(),
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
kampf_talente: new SchemaField({
|
||||||
|
anderthalbhaender: new CombatTalentField(),
|
||||||
|
armbrust: new CombatTalentField(),
|
||||||
|
belagerungswaffen: new CombatTalentField(),
|
||||||
|
blasrohr: new CombatTalentField(),
|
||||||
|
bogen: new CombatTalentField(),
|
||||||
|
diskus: new CombatTalentField(),
|
||||||
|
dolche: new CombatTalentField(),
|
||||||
|
fechtwaffen: new CombatTalentField(),
|
||||||
|
hiebwaffen: new CombatTalentField(),
|
||||||
|
infanteriewaffen: new CombatTalentField(),
|
||||||
|
kettenstaebe: new CombatTalentField(),
|
||||||
|
kettenwaffen: new CombatTalentField(),
|
||||||
|
lanzenreiten: new CombatTalentField(),
|
||||||
|
peitsche: new CombatTalentField(),
|
||||||
|
raufen: new CombatTalentField(),
|
||||||
|
ringen: new CombatTalentField(),
|
||||||
|
saebel: new CombatTalentField(),
|
||||||
|
schleuder: new CombatTalentField(),
|
||||||
|
schwerter: new CombatTalentField(),
|
||||||
|
speere: new CombatTalentField(),
|
||||||
|
staebe: new CombatTalentField(),
|
||||||
|
wurfbeile: new CombatTalentField(),
|
||||||
|
wurfmesser: new CombatTalentField(),
|
||||||
|
wurfspeere: new CombatTalentField(),
|
||||||
|
zweihandflegel: new CombatTalentField(),
|
||||||
|
zweihand_hiebwaffen: new CombatTalentField(),
|
||||||
|
zweihandschwerter: new CombatTalentField(),
|
||||||
|
}),
|
||||||
|
|
||||||
|
talente: new SchemaField({
|
||||||
|
koerperliche: new SchemaField({
|
||||||
|
akrobatik: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
athletik: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
fliegen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
gaukeleien: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
klettern: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
koerperbeherrschung: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
reiten: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
schleichen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
schwimmen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
selbstbeherrschung: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
sich_verstecken: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
singen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
sinnenschärfe: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
skifahren: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
stimmen_imitieren: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
tanzen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
taschendiebstahl: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
zechen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
gesellschaftliche: new SchemaField({
|
||||||
|
betoeren: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
etikette: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
gassenwissen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
lehren: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
menschenkenntnis: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
schauspielerei: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
schriftlicher_ausdruck: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
sich_verkleiden: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
ueberreden: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
ueberzeugen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
natur: new SchemaField({
|
||||||
|
faehrtensuchen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
fallenstellen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
fesseln: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
fischen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
orientierung: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
wettervorhersage: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
wildnisleben: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
wissens: new SchemaField({
|
||||||
|
anatomie: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
baukunst: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
brett_kartenspiel: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
geographie: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
geschichtswissen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
gesteinskunde: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
goetter_kulte: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
heraldik: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
huettenkunde: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
kriegskunst: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
kryptographie: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
magiekunde: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
mechanik: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
pflanzenkunde: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
philosophie: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
rechnen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
rechtskunde: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
sagen_legenden: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
schaetzen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
sprachenkunde: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
staatskunst: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
sternkunde: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
tierkunde: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
sprachen: new SchemaField({
|
||||||
|
lesen_schreiben: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
muttersprache: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
fremdsprache: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
handwerks: new SchemaField({
|
||||||
|
abrichten: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
ackerbau: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
alchimie: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
bergbau: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
bogenbau: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
boote_fahren: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
brauer: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
drucker: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
fahrzeug_lenken: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
falschspiel: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
feinmechanik: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
feuersteinbearbeitung: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
fleischer: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
gerber: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
glaskunst: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
grobschmied: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
handel: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
hauswirtschaft: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
heilkunde_gift: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
heilkunde_krankheiten: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
heilkunde_seele: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
heilkunde_wunden: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
holzbearbeitung: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
instrumentenbauer: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
kartographie: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
kochen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
kristallzucht: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
lederarbeiten: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
malen_zeichnen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
maurer: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
metallguss: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
musizieren: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
schloesser_knacken: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
schnapps_brennen: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
schneidern: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
seefahrt: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
seiler: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
steinmetz: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
juwelier: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
stellmacher: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
stoffe_faerben: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
taetowieren: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
toepfern: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
viehzucht: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
webkunst: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
winzer: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
zimmermann: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
prepareDerivedData() {
|
async prepareDerivedData() {
|
||||||
super.prepareDerivedData();
|
super.prepareDerivedData();
|
||||||
this.computed = {};
|
this.computed = {
|
||||||
|
attributes: {},
|
||||||
|
attributes_without_modifiers: {},
|
||||||
|
|
||||||
|
kampf: {
|
||||||
|
talente: {},
|
||||||
|
waffen: {},
|
||||||
|
fernkampf_waffen: {},
|
||||||
|
ruestungen: {},
|
||||||
|
ruestungen_gesamt: {
|
||||||
|
kopf: 0,
|
||||||
|
brust: 0,
|
||||||
|
ruecken: 0,
|
||||||
|
bauch: 0,
|
||||||
|
linker_arm: 0,
|
||||||
|
rechter_arm: 0,
|
||||||
|
linkes_bein: 0,
|
||||||
|
rechtes_bein: 0,
|
||||||
|
|
||||||
|
gesamt_ruestungsschutz: 0.0,
|
||||||
|
gesamt_behinderung: 0.0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
for (const [attribute, values] of Object.entries(this.attributes)) {
|
for (const [attribute, values] of Object.entries(this.attributes)) {
|
||||||
this.computed[attribute] = Object.values(values).reduce((a, b) => a + b, 0);
|
this.computed.attributes[attribute] = values.initial + values.advancement + values.modifier;
|
||||||
|
this.computed.attributes_without_modifiers[attribute] = values.initial + values.advancement;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.computed.max_lebenspunkte = Math.round((this.computed.attributes_without_modifiers.constitution + this.computed.attributes_without_modifiers.constitution + this.computed.attributes_without_modifiers.strength) / 2);
|
||||||
|
this.computed.max_ausdauer = Math.round((this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.constitution + this.computed.attributes_without_modifiers.agility) / 2);
|
||||||
|
this.computed.max_atralenergie = Math.round((this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.intuition + this.computed.attributes_without_modifiers.charisma) / 2);
|
||||||
|
|
||||||
|
this.computed.magieresistenz = Math.round((this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.cleverness + this.computed.attributes_without_modifiers.constitution) / 5);
|
||||||
|
this.computed.ini_basiswert = Math.round((this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.intuition + this.computed.attributes_without_modifiers.agility) / 5);
|
||||||
|
this.computed.at_basiswert = Math.round((this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.agility + this.computed.attributes_without_modifiers.strength) / 5);;
|
||||||
|
this.computed.pa_basiswert = Math.round((this.computed.attributes_without_modifiers.intuition + this.computed.attributes_without_modifiers.agility + this.computed.attributes_without_modifiers.strength) / 5);;
|
||||||
|
this.computed.fk_basiswert = Math.round((this.computed.attributes_without_modifiers.intuition + this.computed.attributes_without_modifiers.dexterity + this.computed.attributes_without_modifiers.strength) / 5);;
|
||||||
|
|
||||||
|
const equipped_ruestungen = this.parent.items.filter((x) => x.type === "Ruestung");
|
||||||
|
for (const item of equipped_ruestungen) {
|
||||||
|
this.computed.kampf.ruestungen[item._id] = { item: item };
|
||||||
|
|
||||||
|
this.computed.kampf.ruestungen_gesamt.kopf += item.system.kopf;
|
||||||
|
this.computed.kampf.ruestungen_gesamt.brust += item.system.brust;
|
||||||
|
this.computed.kampf.ruestungen_gesamt.ruecken += item.system.ruecken;
|
||||||
|
this.computed.kampf.ruestungen_gesamt.bauch += item.system.bauch;
|
||||||
|
this.computed.kampf.ruestungen_gesamt.linker_arm += item.system.linker_arm;
|
||||||
|
this.computed.kampf.ruestungen_gesamt.rechter_arm += item.system.rechter_arm;
|
||||||
|
this.computed.kampf.ruestungen_gesamt.linkes_bein += item.system.linkes_bein;
|
||||||
|
this.computed.kampf.ruestungen_gesamt.rechtes_bein += item.system.rechtes_bein;
|
||||||
|
this.computed.kampf.ruestungen_gesamt.gesamt_ruestungsschutz += item.system.gesamt_ruestungsschutz;
|
||||||
|
this.computed.kampf.ruestungen_gesamt.gesamt_behinderung += item.system.gesamt_behinderung;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let [key, value] of Object.entries(this.computed.kampf.ruestungen_gesamt)) {
|
||||||
|
this.computed.kampf.ruestungen_gesamt[key] = Math.round(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(const [name, values] of Object.entries(this.kampf_talente)) {
|
||||||
|
this.computed.kampf.talente[name] = {};
|
||||||
|
this.computed.kampf.talente[name].attacke = this.computed.at_basiswert + values.attacke;
|
||||||
|
this.computed.kampf.talente[name].parade = this.computed.pa_basiswert + values.parade;
|
||||||
|
}
|
||||||
|
|
||||||
|
const equipped_bewaffnung = this.parent.items.filter((x) => x.type === "Bewaffnung");
|
||||||
|
const equipped_nahkampfwaffen = equipped_bewaffnung.filter((x) => x.system.nahkampfwaffe.aktiv);
|
||||||
|
const equipped_parierwaffen = equipped_bewaffnung.filter((x) => x.system.parierwaffe.aktiv);
|
||||||
|
const equipped_schilde = equipped_bewaffnung.filter((x) => x.system.schild.aktiv);
|
||||||
|
const equipped_fernkampfwaffen = equipped_bewaffnung.filter((x) => x.system.fernkampfwaffe.aktiv);
|
||||||
|
|
||||||
|
for(const item of equipped_nahkampfwaffen) {
|
||||||
|
if (item.system.nahkampfwaffe.aktiv) {
|
||||||
|
let computed = this.computed.kampf.waffen[item._id] = {
|
||||||
|
item: item,
|
||||||
|
attacke: 0,
|
||||||
|
parade: 0,
|
||||||
|
trefferpunkte: "",
|
||||||
|
trefferpunkte_display: "",
|
||||||
|
|
||||||
|
basis_attacke: 0,
|
||||||
|
basis_parade: 0,
|
||||||
|
|
||||||
|
talent_attacke: 0,
|
||||||
|
talent_parade: 0,
|
||||||
|
|
||||||
|
modifikator_attacke: 0,
|
||||||
|
modifikator_parade: 0,
|
||||||
|
|
||||||
|
tp_kk: 0,
|
||||||
|
|
||||||
|
parierwaffe_attacke: 0,
|
||||||
|
parierwaffe_parade: 0,
|
||||||
|
|
||||||
|
schild_attacke: 0,
|
||||||
|
schild_parade: 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
computed.basis_attacke = this.computed.at_basiswert;
|
||||||
|
computed.basis_parade = this.computed.pa_basiswert;
|
||||||
|
|
||||||
|
const talent = item.system.nahkampfwaffe.kampftalente;
|
||||||
|
|
||||||
|
computed.talent_attacke = this.kampf_talente[talent]?.attacke ?? 0;
|
||||||
|
computed.talent_parade = this.kampf_talente[talent]?.parade ?? 0;
|
||||||
|
|
||||||
|
computed.modifikator_attacke = item.system.nahkampfwaffe.modifikator_attacke;
|
||||||
|
computed.modifikator_parade = item.system.nahkampfwaffe.modifikator_parade;
|
||||||
|
|
||||||
|
if (item.system.nahkampfwaffe.schadensschritte != 0) {
|
||||||
|
computed.tp_kk = Math.trunc((this.computed.attributes.strength - item.system.nahkampfwaffe.schwellenwert) / item.system.nahkampfwaffe.schadensschritte);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const parierwaffe of equipped_parierwaffen) {
|
||||||
|
if (parierwaffe._id === item._id) continue;
|
||||||
|
|
||||||
|
computed.parierwaffe_attacke += parierwaffe.system.parierwaffe.modifikator_attacke;
|
||||||
|
computed.parierwaffe_parade += parierwaffe.system.parierwaffe.modifikator_parade;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const schild of equipped_schilde) {
|
||||||
|
if (schild._id === item._id) continue;
|
||||||
|
|
||||||
|
computed.schild_attacke += schild.system.schild.modifikator_attacke;
|
||||||
|
computed.schild_parade += schild.system.schild.modifikator_parade;
|
||||||
|
}
|
||||||
|
|
||||||
|
computed.attacke = computed.basis_attacke + computed.talent_attacke + computed.modifikator_attacke + computed.parierwaffe_attacke + computed.schild_attacke + Math.min(computed.tp_kk, 0);
|
||||||
|
computed.parade = computed.basis_parade + computed.talent_parade + computed.modifikator_parade + computed.parierwaffe_parade + computed.schild_parade + Math.min(computed.tp_kk, 0);
|
||||||
|
|
||||||
|
computed.trefferpunkte = get_minified_formula(item.system.nahkampfwaffe.basis + (computed.tp_kk != 0 ? " + " + computed.tp_kk : ""));
|
||||||
|
computed.trefferpunkte_display = computed.trefferpunkte.replace(/[\+\-]/, (op) => "<br>" + op);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const item of equipped_fernkampfwaffen) {
|
||||||
|
let computed = this.computed.kampf.fernkampf_waffen[item._id] = {
|
||||||
|
item: item,
|
||||||
|
attacke: 0,
|
||||||
|
trefferpunkte: "",
|
||||||
|
trefferpunkte_display: "",
|
||||||
|
|
||||||
|
basis_attacke: 0,
|
||||||
|
talent_attacke: 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
computed.basis_attacke = this.computed.fk_basiswert;
|
||||||
|
|
||||||
|
const talent = item.system.nahkampfwaffe.kampftalente;
|
||||||
|
computed.talent_attacke = this.kampf_talente[talent]?.attacke ?? 0;
|
||||||
|
|
||||||
|
computed.attacke = computed.basis_attacke + computed.talent_attacke;
|
||||||
|
|
||||||
|
computed.trefferpunkte = get_minified_formula(item.system.fernkampfwaffe.basis);
|
||||||
|
computed.trefferpunkte_display = computed.trefferpunkte.replace(/[\+\-]/, (op) => "<br>" + op);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DSA41_ActorSheet extends ActorSheet {
|
class DSA41_GegenstandData extends TypeDataModel {
|
||||||
get template() {
|
static defineSchema() {
|
||||||
return "systems/dsa-4th-edition/src/ActorSheet.html";
|
return {
|
||||||
|
gewicht: new NumberField({ integer: false, initial: 0, min: 0 }),
|
||||||
|
preis: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DSA41_ItemSheet extends ItemSheet {
|
class DSA41_RuestungData extends TypeDataModel {
|
||||||
get template() {
|
static defineSchema() {
|
||||||
return "systems/dsa-4th-edition/src/ItemSheets/" + this.item.type + ".html";
|
return {
|
||||||
|
gewicht: new NumberField({ integer: false, initial: 0, min: 0 }),
|
||||||
|
preis: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
|
||||||
|
kopf: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
brust: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
ruecken: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
bauch: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
linker_arm: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
rechter_arm: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
linkes_bein: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
rechtes_bein: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
|
||||||
|
gesamt_ruestungsschutz: new NumberField({ integer: false, initial: 0, min: 0 }),
|
||||||
|
gesamt_behinderung: new NumberField({ integer: false, initial: 0, min: 0 }),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DSA41_BewaffnungData extends TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
return {
|
||||||
|
gewicht: new NumberField({ integer: false, initial: 0, min: 0 }),
|
||||||
|
preis: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
|
||||||
|
angelegt: new BooleanField(),
|
||||||
|
|
||||||
|
nahkampfwaffe: new SchemaField({
|
||||||
|
aktiv: new BooleanField(),
|
||||||
|
|
||||||
|
basis: new StringField(),
|
||||||
|
schwellenwert: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
schadensschritte: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
|
||||||
|
modifikator_attacke: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
modifikator_parade: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
|
||||||
|
initiative: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
bruchfaktor: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
|
||||||
|
distanzklasse: new StringField(),
|
||||||
|
kampftalente: new StringField(),
|
||||||
|
|
||||||
|
laenge: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||||
|
|
||||||
|
zweihaendig: new BooleanField(),
|
||||||
|
werfbar: new BooleanField(),
|
||||||
|
improvisiert: new BooleanField(),
|
||||||
|
priviligiert: new BooleanField(),
|
||||||
|
}),
|
||||||
|
|
||||||
|
parierwaffe: new SchemaField({
|
||||||
|
aktiv: new BooleanField(),
|
||||||
|
|
||||||
|
modifikator_attacke: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
modifikator_parade: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
|
||||||
|
initiative: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
bruchfaktor: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
schild: new SchemaField({
|
||||||
|
aktiv: new BooleanField(),
|
||||||
|
|
||||||
|
groesse: new StringField(),
|
||||||
|
|
||||||
|
modifikator_attacke: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
modifikator_parade: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
|
||||||
|
initiative: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
bruchfaktor: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
fernkampfwaffe: new SchemaField({
|
||||||
|
aktiv: new BooleanField(),
|
||||||
|
|
||||||
|
basis: new StringField({ initial: "1d6 + 1" }),
|
||||||
|
laden: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
|
||||||
|
reichweite1: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
reichweite2: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
reichweite3: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
reichweite4: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
reichweite5: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
|
||||||
|
modifikator1: new NumberField({ integer: true, initial: 0, nullable: true }),
|
||||||
|
modifikator2: new NumberField({ integer: true, initial: 0, nullable: true }),
|
||||||
|
modifikator3: new NumberField({ integer: true, initial: 0, nullable: true }),
|
||||||
|
modifikator4: new NumberField({ integer: true, initial: 0, nullable: true }),
|
||||||
|
modifikator5: new NumberField({ integer: true, initial: 0, nullable: true }),
|
||||||
|
|
||||||
|
munitionskosten: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
munitionsgewicht: new NumberField({ integer: true, initial: 0 }),
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function DSA41_ApplicationMixin(BaseApplication) {
|
||||||
|
class DSA41_Application extends HandlebarsApplicationMixin(BaseApplication) {
|
||||||
|
static DEFAULT_OPTIONS= {
|
||||||
|
classes: [ "DSA41" ],
|
||||||
|
window: { resizable: true },
|
||||||
|
form: { submitOnChange: true },
|
||||||
|
};
|
||||||
|
|
||||||
|
async _prepareContext(options) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSA41_Application;
|
||||||
|
}
|
||||||
|
|
||||||
|
class DSA41_Dialog extends DSA41_ApplicationMixin(ApplicationV2) {
|
||||||
|
static PARTS = {
|
||||||
|
Eigenschaft: { template: "systems/dsa-4th-edition/src/Dialogs/Attribute.hbs" },
|
||||||
|
|
||||||
|
Attacke: { template: "systems/dsa-4th-edition/src/Dialogs/Attacke.hbs" },
|
||||||
|
Parade: { template: "systems/dsa-4th-edition/src/Dialogs/Parade.hbs" },
|
||||||
|
Trefferpunkte: { template: "systems/dsa-4th-edition/src/Dialogs/Trefferpunkte.hbs" },
|
||||||
|
|
||||||
|
FernkampfAttacke: { template: "systems/dsa-4th-edition/src/Dialogs/FernkampfAttacke.hbs" },
|
||||||
|
FernkampfTrefferpunkte: { template: "systems/dsa-4th-edition/src/Dialogs/FernkampfTrefferpunkte.hbs" },
|
||||||
|
|
||||||
|
footer: { template: "templates/generic/form-footer.hbs" },
|
||||||
|
};
|
||||||
|
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
classes: [ "DSA41", "Dialog" ],
|
||||||
|
window: {
|
||||||
|
title: "Dialog",
|
||||||
|
minimizable: false,
|
||||||
|
resizable: false
|
||||||
|
},
|
||||||
|
tag: "form",
|
||||||
|
form: {
|
||||||
|
closeOnSubmit: false,
|
||||||
|
submitOnChange: true,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
get formData() {
|
||||||
|
const data = Object.fromEntries(
|
||||||
|
new FormData(this.element).entries().map(([key, value])=>{
|
||||||
|
if (typeof value != "string") return [key, value];
|
||||||
|
return isNaN(value) ? [key, value] : [key, Number(value)];
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
buttons = [{
|
||||||
|
type: "submit",
|
||||||
|
label: "Confirm"
|
||||||
|
}];
|
||||||
|
|
||||||
|
static async wait(dialog_type, options) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const dialog = new this({
|
||||||
|
dialog_type: dialog_type,
|
||||||
|
form: {
|
||||||
|
handler: (event, form, formData) => {
|
||||||
|
if (event.type != "submit") {
|
||||||
|
dialog.render({ force: false });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.close();
|
||||||
|
resolve(dialog.formData);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
...options,
|
||||||
|
});
|
||||||
|
dialog.render({ force: true });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_configureRenderOptions(options) {
|
||||||
|
super._configureRenderOptions(options);
|
||||||
|
options.parts = [ this.options.dialog_type, "footer" ];
|
||||||
|
}
|
||||||
|
|
||||||
|
_onFirstRender(context, options) {
|
||||||
|
this.render(options)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
|
||||||
|
static PARTS = {
|
||||||
|
ActorSheet: { template: "systems/dsa-4th-edition/src/ActorSheet.hbs" },
|
||||||
|
};
|
||||||
|
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
position: { width: "800", height: "650" },
|
||||||
|
actions: {
|
||||||
|
"roll": async function(event, target) {
|
||||||
|
var roll_formula = event.target.closest("[data-roll]").dataset.roll;
|
||||||
|
const roll_type = event.target.closest("[data-roll-type]").dataset.rollType;
|
||||||
|
const success_value = event.target.closest("[data-success-value]")?.dataset.successValue;
|
||||||
|
const item_id = event.target.closest("[data-item-id]")?.dataset.itemId;
|
||||||
|
const item = this.document.items.get(item_id);
|
||||||
|
|
||||||
|
let flavor = game.i18n.localize("DSA41.roll_types." + roll_type);
|
||||||
|
if (typeof success_value !== 'undefined') {
|
||||||
|
flavor += " <= " + success_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (roll_type == "courage" || roll_type == "cleverness" || roll_type == "intuition" || roll_type == "charisma" ||
|
||||||
|
roll_type == "dexterity" || roll_type == "agility" || roll_type == "constitution" || roll_type == "strength") {
|
||||||
|
const title = game.i18n.localize("DSA41.roll_types." + roll_type) + ": " + this.document.name;
|
||||||
|
const data = await DSA41_Dialog.wait("Eigenschaft", { window: { title: title }, attribute: this.document.system.attributes[roll_type] });
|
||||||
|
|
||||||
|
let flavor = game.i18n.localize("DSA41.roll_types." + roll_type);
|
||||||
|
if (typeof success_value !== 'undefined') {
|
||||||
|
flavor += " <= " + (Number(success_value) + data.modifikator);
|
||||||
|
}
|
||||||
|
|
||||||
|
let roll = new Roll(roll_formula, this.document.system);
|
||||||
|
roll.toMessage({
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.document }),
|
||||||
|
flavor: flavor,
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (roll_type == "attacke") {
|
||||||
|
const item = this.document.system.computed.kampf.waffen[item_id];
|
||||||
|
const title = game.i18n.localize("DSA41.roll_types." + roll_type) + ": " + item.name;
|
||||||
|
const data = await DSA41_Dialog.wait("Attacke", { window: { title: title }, item: item });
|
||||||
|
|
||||||
|
let flavor = game.i18n.localize("DSA41.roll_types." + roll_type);
|
||||||
|
if (typeof success_value !== 'undefined') {
|
||||||
|
flavor += " <= " + (Number(success_value) + data.modifikator);
|
||||||
|
}
|
||||||
|
|
||||||
|
let roll = new Roll(roll_formula, this.document.system);
|
||||||
|
roll.toMessage({
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.document }),
|
||||||
|
flavor: flavor,
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (roll_type == "parade") {
|
||||||
|
const item = this.document.system.computed.kampf.waffen[item_id];
|
||||||
|
const title = game.i18n.localize("DSA41.roll_types." + roll_type) + ": " + item.name;
|
||||||
|
const data = await DSA41_Dialog.wait("Parade", { window: { title: title }, item: item });
|
||||||
|
|
||||||
|
let flavor = game.i18n.localize("DSA41.roll_types." + roll_type);
|
||||||
|
if (typeof success_value !== 'undefined') {
|
||||||
|
flavor += " <= " + (Number(success_value) + data.modifikator);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.crit == "on") {
|
||||||
|
roll_formula = "round((" + roll_formula + ") / 2)";
|
||||||
|
}
|
||||||
|
|
||||||
|
let roll = new Roll(roll_formula, this.document.system);
|
||||||
|
roll.toMessage({
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.document }),
|
||||||
|
flavor: flavor,
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (roll_type == "trefferpunkte") {
|
||||||
|
const item = this.document.system.computed.kampf.waffen[item_id];
|
||||||
|
const title = game.i18n.localize("DSA41.roll_types." + roll_type) + ": " + item.name;
|
||||||
|
const data = await DSA41_Dialog.wait("Trefferpunkte", { window: { title: title }, item: item });
|
||||||
|
|
||||||
|
if (data.crit == "on") {
|
||||||
|
roll_formula = "2 * (" + item.item.system.nahkampfwaffe.basis + ")" + " + " + item.tp_kk;
|
||||||
|
}
|
||||||
|
|
||||||
|
let roll = new Roll(roll_formula + " + " + data.modifikator, this.document.system);
|
||||||
|
roll.toMessage({
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.document }),
|
||||||
|
flavor: flavor,
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (roll_type == "fernkampf-attacke") {
|
||||||
|
const title = game.i18n.localize("DSA41.roll_types." + roll_type) + ": " + item.name;
|
||||||
|
const data = await DSA41_Dialog.wait("FernkampfAttacke", { window: { title: title }, item: this.document.system.computed.kampf.fernkampf_waffen[item_id] });
|
||||||
|
|
||||||
|
const groessen_modifikator = Math.max(data.ziel_groesse + data.deckung + data.ziel_bewegung, -2);
|
||||||
|
const andere_modifikator = data.entfernung + data.wind + data.modifikator;
|
||||||
|
|
||||||
|
const total_modifikator = groessen_modifikator + andere_modifikator;
|
||||||
|
|
||||||
|
let roll = new Roll(roll_formula + " + " + total_modifikator, this.document.system);
|
||||||
|
roll.toMessage({
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.document }),
|
||||||
|
flavor: game.i18n.localize("DSA41.roll_types." + roll_type),
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (roll_type == "fernkampf-trefferpunkte") {
|
||||||
|
const title = game.i18n.localize("DSA41.roll_types." + roll_type) + ": " + item.name;
|
||||||
|
const data = await DSA41_Dialog.wait("FernkampfTrefferpunkte", { window: { title: title }, item: this.document.system.computed.kampf.fernkampf_waffen[item_id] });
|
||||||
|
const entfernung = item.system.fernkampfwaffe[data.entfernung];
|
||||||
|
|
||||||
|
if (data.crit == "on") {
|
||||||
|
roll_formula = "2 * (" + roll_formula + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
let roll = new Roll(roll_formula + " + " + (entfernung + data.modifikator), this.document.system);
|
||||||
|
roll.toMessage({
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.document }),
|
||||||
|
flavor: game.i18n.localize("DSA41.roll_types." + roll_type),
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let roll = new Roll(roll_formula, this.document.system);
|
||||||
|
roll.toMessage({
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.document }),
|
||||||
|
flavor: flavor,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
"item-open": async function(event, target) {
|
||||||
|
const item_id = event.target.closest("[data-item-id]").dataset.itemId;
|
||||||
|
const item = this.document.items.get(item_id);
|
||||||
|
item.sheet.render(true)
|
||||||
|
},
|
||||||
|
|
||||||
|
"item-delete": async function(event, target) {
|
||||||
|
const item_id = event.target.closest("[data-item-id]").dataset.itemId;
|
||||||
|
const item = this.document.items.get(item_id);
|
||||||
|
item.delete();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
_onFirstRender(context, options) {
|
||||||
|
super._onFirstRender(context, options);
|
||||||
|
|
||||||
|
const content = this.element.querySelector(".window-content");
|
||||||
|
content.addEventListener("drop", async (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
const data = TextEditor.getDragEventData(event);
|
||||||
|
|
||||||
|
switch (data.type) {
|
||||||
|
case "Item": {
|
||||||
|
const item = await Item.implementation.fromDropData(data);
|
||||||
|
await this.actor.createEmbeddedDocuments("Item", [item.toObject()]);
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
tabGroups = { primary: "tab1" };
|
||||||
|
}
|
||||||
|
|
||||||
|
class DSA41_ItemSheetV2 extends DSA41_ApplicationMixin(ItemSheetV2) {
|
||||||
|
static PARTS = {
|
||||||
|
Bewaffnung: { template: "systems/dsa-4th-edition/src/ItemSheets/Bewaffnung.hbs" },
|
||||||
|
Gegenstand: { template: "systems/dsa-4th-edition/src/ItemSheets/Gegenstand.hbs" },
|
||||||
|
Ruestung: { template: "systems/dsa-4th-edition/src/ItemSheets/Ruestung.hbs" },
|
||||||
|
};
|
||||||
|
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
position: { width: "600", height: "auto" },
|
||||||
|
};
|
||||||
|
|
||||||
|
tabGroups = { primary: "tab1" };
|
||||||
|
|
||||||
|
_configureRenderOptions(options) {
|
||||||
|
super._configureRenderOptions(options);
|
||||||
|
options.parts = [ this.options.document.type ];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,11 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
"compatibility": {
|
||||||
|
"minimum": "12",
|
||||||
|
"verified": "12"
|
||||||
|
},
|
||||||
|
|
||||||
"version": "0.1.5",
|
"version": "0.1.5",
|
||||||
"manifest": "https://gitea.ammerhai.com/foundry/dsa-4th-edition/releases/download/latest/system.json",
|
"manifest": "https://gitea.ammerhai.com/foundry/dsa-4th-edition/releases/download/latest/system.json",
|
||||||
"download": "https://gitea.ammerhai.com/foundry/dsa-4th-edition/releases/download/test2/dsa-4th-edition.zip"
|
"download": "https://gitea.ammerhai.com/foundry/dsa-4th-edition/releases/download/test2/dsa-4th-edition.zip"
|
||||||
|
|||||||
+3
-5
@@ -6,11 +6,9 @@
|
|||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"types": [
|
"types": [
|
||||||
"Generic Item",
|
"Gegenstand",
|
||||||
"Melee Weapon",
|
"Ruestung",
|
||||||
"Ranged Weapon",
|
"Bewaffnung"
|
||||||
"Armor",
|
|
||||||
"Shield"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user