Compare commits
7 Commits
942c395f59
...
fea5de6596
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fea5de6596 | ||
|
|
4079a40d6b | ||
|
|
57eb581ae7 | ||
|
|
b011a65510 | ||
|
|
3dff7555e5 | ||
|
|
5ef47a483f | ||
|
|
f824286243 |
@ -15,19 +15,35 @@
|
||||
</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 class="actor-sheet ActorSheet" data-tooltip-class="DSA41">
|
||||
<div class="grid5 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")}}
|
||||
{{>editable-input type="number" name="system.sozialstatus" value=actor.system.sozialstatus placeholder=(localize "DSA41.sozialstatus")}}
|
||||
</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 class="col">
|
||||
<div class="row">
|
||||
{{#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>
|
||||
<div class="grid3">
|
||||
<div class="bar hp" style="--bar-percentage: {{actor.system.computed.lebenspunkte.prozent}}%;">
|
||||
{{>editable-input type="number" name="system.lebenspunkte.aktuell" value=actor.system.lebenspunkte.aktuell}} / <span>{{actor.system.computed.lebenspunkte.max}}</span>
|
||||
</div>
|
||||
<div class="bar ausdauer" style="--bar-percentage: {{actor.system.computed.ausdauer.prozent}}%;">
|
||||
{{>editable-input type="number" name="system.ausdauer.aktuell" value=actor.system.ausdauer.aktuell}} / <span>{{actor.system.computed.ausdauer.max}}</span>
|
||||
</div>
|
||||
<div class="bar astralenergie" style="--bar-percentage: {{actor.system.computed.astralenergie.prozent}}%;">
|
||||
{{>editable-input type="number" name="system.astralenergie.aktuell" value=actor.system.astralenergie.aktuell}} / <span>{{actor.system.computed.astralenergie.max}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@ -71,26 +87,144 @@
|
||||
{{/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>
|
||||
<div class="list Basiswerte">
|
||||
<div class="list-header">
|
||||
<span></span>
|
||||
<span>{{localize "DSA41.basiswerte.label_basiswert"}}</span>
|
||||
<span>{{localize "DSA41.basiswerte.label_modifikator"}}</span>
|
||||
<span>{{localize "DSA41.basiswerte.label_zukauf"}}</span>
|
||||
<span>{{localize "DSA41.basiswerte.label_verlust"}}</span>
|
||||
<span>{{localize "DSA41.basiswerte.label_total"}}</span>
|
||||
</div>
|
||||
|
||||
<span>INI-Basiswert</span>
|
||||
<span>{{actor.system.computed.ini_basiswert}}</span>
|
||||
<span>AT-Basiswert</span>
|
||||
<span>{{actor.system.computed.at_basiswert}}</span>
|
||||
<div class="list-item">
|
||||
<span>{{localize "DSA41.basiswerte.lebenspunkte"}}</span>
|
||||
<span>{{actor.system.computed.lebenspunkte.basiswert}}</span>
|
||||
<span>{{>editable-input type="number" name="system.lebenspunkte.modifikator" value=actor.system.lebenspunkte.modifikator}}</span>
|
||||
<span>{{>editable-input type="number" name="system.lebenspunkte.zukauf" value=actor.system.lebenspunkte.zukauf}}</span>
|
||||
<span>{{>editable-input type="number" name="system.lebenspunkte.verlust" value=actor.system.lebenspunkte.verlust}}</span>
|
||||
<span>{{actor.system.computed.lebenspunkte.max}}</span>
|
||||
</div>
|
||||
|
||||
<span>PA-Basiswert</span>
|
||||
<span>{{actor.system.computed.pa_basiswert}}</span>
|
||||
<span>FK-Basiswert</span>
|
||||
<span>{{actor.system.computed.fk_basiswert}}</span>
|
||||
<div class="list-item">
|
||||
<span>{{localize "DSA41.basiswerte.ausdauer"}}</span>
|
||||
<span>{{actor.system.computed.ausdauer.basiswert}}</span>
|
||||
<span>{{>editable-input type="number" name="system.ausdauer.modifikator" value=actor.system.ausdauer.modifikator}}</span>
|
||||
<span>{{>editable-input type="number" name="system.ausdauer.zukauf" value=actor.system.ausdauer.zukauf}}</span>
|
||||
<span>{{>editable-input type="number" name="system.ausdauer.verlust" value=actor.system.ausdauer.verlust}}</span>
|
||||
<span>{{actor.system.computed.ausdauer.max}}</span>
|
||||
</div>
|
||||
|
||||
<div class="list-item">
|
||||
<span>{{localize "DSA41.basiswerte.astralenergie"}}</span>
|
||||
<span>{{actor.system.computed.astralenergie.basiswert}}</span>
|
||||
<span>{{>editable-input type="number" name="system.astralenergie.modifikator" value=actor.system.astralenergie.modifikator}}</span>
|
||||
<span>{{>editable-input type="number" name="system.astralenergie.zukauf" value=actor.system.astralenergie.zukauf}}</span>
|
||||
<span>{{>editable-input type="number" name="system.astralenergie.verlust" value=actor.system.astralenergie.verlust}}</span>
|
||||
<span>{{actor.system.computed.astralenergie.max}}</span>
|
||||
</div>
|
||||
|
||||
<div class="list-item">
|
||||
<span>{{localize "DSA41.basiswerte.magieresistenz"}}</span>
|
||||
<span>{{actor.system.computed.magieresistenz.basiswert}}</span>
|
||||
<span>{{>editable-input type="number" name="system.magieresistenz.modifikator" value=actor.system.magieresistenz.modifikator}}</span>
|
||||
<span>{{>editable-input type="number" name="system.magieresistenz.zukauf" value=actor.system.magieresistenz.zukauf}}</span>
|
||||
<span></span>
|
||||
<span>{{actor.system.computed.magieresistenz.max}}</span>
|
||||
</div>
|
||||
|
||||
<div class="list-item">
|
||||
<span>{{localize "DSA41.basiswerte.initiative"}}</span>
|
||||
<span>{{actor.system.computed.initiative.basiswert}}</span>
|
||||
<span>{{>editable-input type="number" name="system.modifikator_initiative" value=actor.system.modifikator_initiative}}</span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span>{{actor.system.computed.initiative.wert}}</span>
|
||||
</div>
|
||||
|
||||
<div class="list-item">
|
||||
<span>{{localize "DSA41.basiswerte.attacke"}}</span>
|
||||
<span>{{actor.system.computed.attacke.basiswert}}</span>
|
||||
<span>{{>editable-input type="number" name="system.modifikator_attacke" value=actor.system.modifikator_attacke}}</span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span>{{actor.system.computed.attacke.wert}}</span>
|
||||
</div>
|
||||
|
||||
<div class="list-item">
|
||||
<span>{{localize "DSA41.basiswerte.parade"}}</span>
|
||||
<span>{{actor.system.computed.parade.basiswert}}</span>
|
||||
<span>{{>editable-input type="number" name="system.modifikator_parade" value=actor.system.modifikator_parade}}</span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span>{{actor.system.computed.parade.wert}}</span>
|
||||
</div>
|
||||
|
||||
<div class="list-item">
|
||||
<span>{{localize "DSA41.basiswerte.fernkampf"}}</span>
|
||||
<span>{{actor.system.computed.fernkampf.basiswert}}</span>
|
||||
<span>{{>editable-input type="number" name="system.modifikator_fernkampf" value=actor.system.modifikator_fernkampf}}</span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span>{{actor.system.computed.fernkampf.wert}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid2 gap">
|
||||
<div class="list Vorteile">
|
||||
<div class="list-header">
|
||||
<div>{{localize (concat "DSA41.vornachteil.label_vorteile")}}</div>
|
||||
</div>
|
||||
|
||||
{{#each actor.itemTypes.VorNachteil}}
|
||||
{{#if (eq system.kategorie "vorteil")}}
|
||||
<div class="list-item" data-item-id="{{_id}}">
|
||||
<div>
|
||||
<div class="fit-content" data-action="item-open" data-tooltip="<h4>{{name}}</h4>{{system.beschreibung}}">{{maybeLocalize name prefix=(concat "DSA41.vornachteil." system.kategorie ".name")}}</div>
|
||||
</div>
|
||||
<div></div>
|
||||
<div class="center fas fa-trash" data-action="item-delete"></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div class="list Nachteile subgrid-rows">
|
||||
<div class="list-header">
|
||||
<div>{{localize (concat "DSA41.vornachteil.label_nachteile")}}</div>
|
||||
</div>
|
||||
|
||||
{{#each actor.itemTypes.VorNachteil}}
|
||||
{{#if (eq system.kategorie "nachteil")}}
|
||||
<div class="list-item" data-item-id="{{_id}}">
|
||||
<div>
|
||||
<div class="fit-content" data-action="item-open" data-tooltip="<h4>{{name}}</h4>{{system.beschreibung}}">{{maybeLocalize name prefix=(concat "DSA41.vornachteil." system.kategorie ".name")}}</div>
|
||||
</div>
|
||||
<div></div>
|
||||
<div class="center fas fa-trash" data-action="item-delete"></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list Sonderfertigkeiten">
|
||||
<div class="list-header">
|
||||
<div>{{localize (concat "DSA41.sonderfertigkeiten.label_allgemein")}}</div>
|
||||
</div>
|
||||
|
||||
{{#each actor.itemTypes.Sonderfertigkeit}}
|
||||
{{#if (eq this.system.kategorie "allgemein")}}
|
||||
<div class="list-item" data-item-id="{{_id}}">
|
||||
<div>
|
||||
<div class="fit-content" data-action="item-open">{{maybeLocalize name prefix=(concat "DSA41.sonderfertigkeiten." system.kategorie ".name")}}</div>
|
||||
</div>
|
||||
<div></div>
|
||||
<div class="center fas fa-trash" data-action="item-delete"></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -105,15 +239,13 @@
|
||||
|
||||
{{#each this}}
|
||||
<div class="list-item" data-item-id="{{_id}}">
|
||||
<div>
|
||||
<div class="fit-content" data-action="item-open">{{maybeLocalize name prefix=(concat "DSA41.talente." system.kategorie ".name")}}</div>
|
||||
</div>
|
||||
<div data-action="item-open">{{maybeLocalize name prefix=(concat "DSA41.talente." system.kategorie ".name")}}</div>
|
||||
<div class="center" data-action="roll" data-roll-type="talent">
|
||||
{{>die-type type=system.attribute1}}
|
||||
{{>die-type type=system.attribute2}}
|
||||
{{>die-type type=system.attribute3}}
|
||||
</div>
|
||||
<div>{{>editable-input type="number" data-name="system.talentwert" value=system.talentwert}}</div>
|
||||
<div>{{>editable-input name=(concat name "system.talentwert") type="number" data-name="system.talentwert" value=system.talentwert}}</div>
|
||||
<div class="center fas fa-trash" data-action="item-delete"></div>
|
||||
</div>
|
||||
{{/each}}
|
||||
@ -130,14 +262,14 @@
|
||||
<div class="center">{{localize "DSA41.talente.kampf.label_parade_total"}}</div>
|
||||
</div>
|
||||
|
||||
{{#each actor.system.kampf_talente}}
|
||||
<div class="list-item">
|
||||
<div>{{localize (concat "DSA41.talente.kampf.name." @key)}}</div>
|
||||
<div>{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".talentwert") value=(lookup this "talentwert")}}</div>
|
||||
<div>{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".attacke") value=(lookup this "attacke")}}</div>
|
||||
<div>{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".parade") value=(lookup this "parade")}}</div>
|
||||
<div class="center">{{lookup (lookup @root.actor.system.computed.kampf.talente @key) "attacke"}}</div>
|
||||
<div class="center">{{lookup (lookup @root.actor.system.computed.kampf.talente @key) "parade"}}</div>
|
||||
{{#each actor.system.kampftalente}}
|
||||
<div class="list-item" data-item-id="{{_id}}">
|
||||
<div data-action="item-open">{{maybeLocalize name prefix="DSA41.talente.kampf.name."}}</div>
|
||||
<div>{{>editable-input type="number" name=(concat name "system.talentwert") data-name="system.talentwert" value=system.talentwert}}</div>
|
||||
<div>{{>editable-input type="number" name=(concat name "system.attacke") data-name="system.attacke" value=system.attacke}}</div>
|
||||
<div>{{>editable-input type="number" name=(concat name "system.parade") data-name="system.parade" value=system.parade}}</div>
|
||||
<div class="center">{{lookup (lookup @root.actor.system.computed.kampf.talente name) "attacke"}}</div>
|
||||
<div class="center">{{lookup (lookup @root.actor.system.computed.kampf.talente name) "parade"}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
@ -305,5 +437,23 @@
|
||||
<div>{{actor.system.computed.kampf.ruestungen_gesamt.gesamt_behinderung}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list Sonderfertigkeiten">
|
||||
<div class="list-header">
|
||||
<div>{{localize (concat "DSA41.sonderfertigkeiten.label_kampf")}}</div>
|
||||
</div>
|
||||
|
||||
{{#each actor.itemTypes.Sonderfertigkeit}}
|
||||
{{#if (eq this.system.kategorie "kampf")}}
|
||||
<div class="list-item" data-item-id="{{_id}}">
|
||||
<div>
|
||||
<div class="fit-content" data-action="item-open" data-tooltip="{{this.system.beschreibung}}">{{maybeLocalize name prefix=(concat "DSA41.sonderfertigkeiten." system.kategorie ".name")}}</div>
|
||||
</div>
|
||||
<div></div>
|
||||
<div class="center fas fa-trash" data-action="item-delete"></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
<div class="editable-input editable-{{type}} {{class}}">
|
||||
{{#if (eq type "checkbox")}}
|
||||
<input type="checkbox" name="{{name}}" data-name="{{data-name}}" {{checked value}}>
|
||||
<input type="checkbox" name="{{name}}" {{#if data-name}}data-name="{{data-name}}"{{/if}} {{checked value}}>
|
||||
{{else}}
|
||||
<input type="{{type}}" name="{{name}}" data-name="{{data-name}}" value="{{value}}" placeholder="{{placeholder}}">
|
||||
<input type="{{type}}" name="{{name}}" {{#if data-name}}data-name="{{data-name}}"{{/if}} value="{{value}}" placeholder="{{placeholder}}">
|
||||
{{/if}}
|
||||
|
||||
{{#if placeholder}}
|
||||
|
||||
39
src/ItemSheets/Kampftalent.hbs
Normal file
39
src/ItemSheets/Kampftalent.hbs
Normal file
@ -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">
|
||||
<div class="grid3 gap">
|
||||
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
|
||||
<div>
|
||||
<select name="system.steigern">
|
||||
<option value="A_Star" {{#if (eq item.system.steigern "A_Star")}}selected{{/if}}>{{localize "DSA41.kampftalent.steigern.A_Star"}}</option>
|
||||
<option value="A" {{#if (eq item.system.steigern "A") }}selected{{/if}}>{{localize "DSA41.kampftalent.steigern.A"}} </option>
|
||||
<option value="B" {{#if (eq item.system.steigern "B") }}selected{{/if}}>{{localize "DSA41.kampftalent.steigern.B"}} </option>
|
||||
<option value="C" {{#if (eq item.system.steigern "C") }}selected{{/if}}>{{localize "DSA41.kampftalent.steigern.C"}} </option>
|
||||
<option value="D" {{#if (eq item.system.steigern "D") }}selected{{/if}}>{{localize "DSA41.kampftalent.steigern.D"}} </option>
|
||||
<option value="E" {{#if (eq item.system.steigern "E") }}selected{{/if}}>{{localize "DSA41.kampftalent.steigern.E"}} </option>
|
||||
<option value="F" {{#if (eq item.system.steigern "F") }}selected{{/if}}>{{localize "DSA41.kampftalent.steigern.F"}} </option>
|
||||
<option value="G" {{#if (eq item.system.steigern "G") }}selected{{/if}}>{{localize "DSA41.kampftalent.steigern.G"}} </option>
|
||||
<option value="H" {{#if (eq item.system.steigern "H") }}selected{{/if}}>{{localize "DSA41.kampftalent.steigern.H"}} </option>
|
||||
</select>
|
||||
<div class="placeholder">{{localize "DSA41.kampftalent.label_steigern"}}</div>
|
||||
</div>
|
||||
{{>editable-input type="text" name="system.behinderung" value=item.system.behinderung placeholder=(localize "DSA41.talente.label_behinderung")}}
|
||||
</div>
|
||||
<div class="grid gap">
|
||||
<div>
|
||||
<select name="system.kategorie">
|
||||
<option value="waffenlos" {{#if (eq item.system.kategorie "waffenlos")}}selected{{/if}}>{{localize "DSA41.kampftalent.kategorie.waffenlos"}}</option>
|
||||
<option value="nahkampf" {{#if (eq item.system.kategorie "nahkampf") }}selected{{/if}}>{{localize "DSA41.kampftalent.kategorie.nahkampf"}} </option>
|
||||
<option value="fernkampf" {{#if (eq item.system.kategorie "fernkampf")}}selected{{/if}}>{{localize "DSA41.kampftalent.kategorie.fernkampf"}}</option>
|
||||
</select>
|
||||
<div class="placeholder">{{localize "DSA41.talente.label_kategorie"}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<prose-mirror name="system.beschreibung" value="{{item.system.beschreibung}}" compact="true">
|
||||
</prose-mirror>
|
||||
</div>
|
||||
</div>
|
||||
28
src/ItemSheets/Sonderfertigkeit.hbs
Normal file
28
src/ItemSheets/Sonderfertigkeit.hbs
Normal file
@ -0,0 +1,28 @@
|
||||
<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">
|
||||
<div class="grid2 gap">
|
||||
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
|
||||
<div>
|
||||
<select name="system.kategorie">
|
||||
<option value="allgemein" {{#if (eq item.system.kategorie "allgemein")}}selected{{/if}}>{{localize "DSA41.sonderfertigkeiten.kategorie.allgemein"}}</option>
|
||||
<option value="kampf" {{#if (eq item.system.kategorie "kampf") }}selected{{/if}}>{{localize "DSA41.sonderfertigkeiten.kategorie.kampf"}} </option>
|
||||
<option value="magisch" {{#if (eq item.system.kategorie "magisch") }}selected{{/if}}>{{localize "DSA41.sonderfertigkeiten.kategorie.magisch"}} </option>
|
||||
<option value="klerikal" {{#if (eq item.system.kategorie "klerikal") }}selected{{/if}}>{{localize "DSA41.sonderfertigkeiten.kategorie.klerikal"}} </option>
|
||||
</select>
|
||||
<div class="placeholder">{{localize "DSA41.sonderfertigkeiten.kategorie.label"}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid2 gap">
|
||||
{{>editable-input type="number" name="system.kosten" value=item.system.kosten placeholder=(localize "DSA41.sonderfertigkeiten.kosten")}}
|
||||
{{>editable-input type="number" name="system.verbreitung" value=item.system.verbreitung placeholder=(localize "DSA41.sonderfertigkeiten.verbreitung")}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<prose-mirror name="system.beschreibung" value="{{item.system.beschreibung}}" compact="true">
|
||||
|
||||
</prose-mirror>
|
||||
</div>
|
||||
</div>
|
||||
22
src/ItemSheets/VorNachteil.hbs
Normal file
22
src/ItemSheets/VorNachteil.hbs
Normal file
@ -0,0 +1,22 @@
|
||||
<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">
|
||||
<div class="grid2 gap">
|
||||
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
|
||||
{{>editable-input type="number" name="system.kosten" value=item.system.kosten placeholder=(localize "DSA41.vornachteil.kosten")}}
|
||||
</div>
|
||||
<div>
|
||||
<select name="system.kategorie">
|
||||
<option value="vorteil" {{#if (eq item.system.kategorie "vorteil") }}selected{{/if}}>{{localize "DSA41.vornachteil.kategorie.vorteil"}} </option>
|
||||
<option value="nachteil" {{#if (eq item.system.kategorie "nachteil")}}selected{{/if}}>{{localize "DSA41.vornachteil.kategorie.nachteil"}} </option>
|
||||
</select>
|
||||
<div class="placeholder">{{localize "DSA41.vornachteil.kategorie.label"}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<prose-mirror name="system.beschreibung" value="{{item.system.beschreibung}}" compact="true">
|
||||
</prose-mirror>
|
||||
</div>
|
||||
</div>
|
||||
134
src/lang/de.json
134
src/lang/de.json
@ -1,20 +1,28 @@
|
||||
{
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"Player": "Spieler"
|
||||
},
|
||||
|
||||
"Item": {
|
||||
"Gegenstand": "Gegenstand",
|
||||
"Ruestung": "Rüstung",
|
||||
"Bewaffnung": "Bewaffnung",
|
||||
"Talent": "Talent"
|
||||
"Gegenstand": "Gegenstand",
|
||||
"Ruestung": "Rüstung",
|
||||
"Bewaffnung": "Bewaffnung",
|
||||
"Talent": "Talent",
|
||||
"Kampftalent": "Kampftalent",
|
||||
"Sonderfertigkeit": "Sonderfertigkeit",
|
||||
"VorNachteil": "Vor-/Nachteil"
|
||||
}
|
||||
},
|
||||
|
||||
"DSA41": {
|
||||
"name": "Name",
|
||||
"race": "Rasse",
|
||||
"culture": "Kultur",
|
||||
"profession": "Profession",
|
||||
"weight": "Gewicht",
|
||||
"price": "Preis",
|
||||
"name": "Name",
|
||||
"race": "Rasse",
|
||||
"culture": "Kultur",
|
||||
"profession": "Profession",
|
||||
"sozialstatus": "Sozialstatus",
|
||||
"weight": "Gewicht",
|
||||
"price": "Preis",
|
||||
|
||||
"chat": {
|
||||
"result": "Ergebnis",
|
||||
@ -28,6 +36,56 @@
|
||||
"talentwert_short": "TaW"
|
||||
},
|
||||
|
||||
"basiswerte": {
|
||||
"label_basiswert": "Basiswert",
|
||||
"label_modifikator": "Modifikator",
|
||||
"label_zukauf": "Zukauf",
|
||||
"label_verlust": "Verlust",
|
||||
"label_total": "Total",
|
||||
|
||||
"lebenspunkte": "Lebenspunkte",
|
||||
"ausdauer": "Ausdauer",
|
||||
"astralenergie": "Astralenergie",
|
||||
"magieresistenz": "Magieresistenz",
|
||||
"initiative": "Initiative",
|
||||
"attacke": "Attacke",
|
||||
"parade": "Parade",
|
||||
"fernkampf": "Fernkampf"
|
||||
},
|
||||
|
||||
"vornachteil": {
|
||||
"label_vorteile": "Vorteile",
|
||||
"label_nachteile": "Nachteile",
|
||||
|
||||
"kosten": "Kosten",
|
||||
|
||||
"kategorie": {
|
||||
"label": "Kategorie",
|
||||
|
||||
"vorteil": "Vorteil",
|
||||
"nachteil": "Nachteil"
|
||||
}
|
||||
},
|
||||
|
||||
"sonderfertigkeiten": {
|
||||
"label_allgemein": "Allgemeine Sonderfertigkeiten",
|
||||
"label_kampf": "Kampf-Sonderfertigkeiten",
|
||||
"label_magisch": "Magische Sonderfertigkeiten",
|
||||
"label_klerikal": "Klerikale Sonderfertigkeiten",
|
||||
|
||||
"kosten": "Kosten",
|
||||
"verbreitung": "Verbreitung",
|
||||
|
||||
"kategorie": {
|
||||
"label": "Kategorie",
|
||||
|
||||
"allgemein": "Allgemein",
|
||||
"kampf": "Kampf",
|
||||
"magisch": "Magisch",
|
||||
"klerikal": "Klerikal"
|
||||
}
|
||||
},
|
||||
|
||||
"roll_types": {
|
||||
"courage": "Mut",
|
||||
"cleverness": "Klugheit",
|
||||
@ -84,6 +142,30 @@
|
||||
}
|
||||
},
|
||||
|
||||
"kampftalent": {
|
||||
"label": "Kampftalent",
|
||||
"label_kategorie": "Kategorie",
|
||||
"label_steigern": "Steigern",
|
||||
|
||||
"kategorie":{
|
||||
"waffenlos": "Waffenlos",
|
||||
"nahkampf": "Bewaffneter Nahkampf",
|
||||
"fernkampf": "Fernkampf"
|
||||
},
|
||||
|
||||
"steigern": {
|
||||
"A_Star": "A*",
|
||||
"A": "A",
|
||||
"B": "B",
|
||||
"C": "C",
|
||||
"D": "D",
|
||||
"E": "E",
|
||||
"F": "F",
|
||||
"G": "G",
|
||||
"H": "H"
|
||||
}
|
||||
},
|
||||
|
||||
"talente":{
|
||||
"label": "Talent",
|
||||
"label_eigenschaften": "Eigenschaften",
|
||||
@ -96,37 +178,7 @@
|
||||
"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"
|
||||
}
|
||||
"label_parade_total": "Parade"
|
||||
},
|
||||
|
||||
"koerperliche": {
|
||||
|
||||
102
src/main.css
102
src/main.css
@ -1,6 +1,8 @@
|
||||
.DSA41 {
|
||||
font-size: 14px;
|
||||
html {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.DSA41 {
|
||||
/* Change from FoundryVTT's default of 'none' to 'auto' to allow checkboxes in the nav bar */
|
||||
& .tabs > [data-tab] > * {
|
||||
pointer-events: auto;
|
||||
@ -180,6 +182,61 @@
|
||||
&.die-fernkampf-trefferpunkte { fill: #a2a0ee; }
|
||||
}
|
||||
|
||||
|
||||
& .bar {
|
||||
--bar-percentage: 100%;
|
||||
--bar-color-left: #951a84;
|
||||
--bar-color-right: #cd22b6;
|
||||
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
margin: 1em;
|
||||
|
||||
border: 1px solid #9f9275;
|
||||
border-radius: 5px;
|
||||
|
||||
text-align: center;
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
left: 0;
|
||||
|
||||
width: var(--bar-percentage);
|
||||
height: 100%;
|
||||
|
||||
content: "";
|
||||
background: linear-gradient(90deg, var(--bar-color-left) 0%, var(--bar-color-right) 100%);
|
||||
}
|
||||
|
||||
& .editable-input, & span {
|
||||
display: inline-block;
|
||||
width: 4ch;
|
||||
|
||||
& input {
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.hp {
|
||||
--bar-color-left: #401f25;
|
||||
--bar-color-right: #861212;
|
||||
}
|
||||
|
||||
&.ausdauer {
|
||||
--bar-color-left: #114f0c;
|
||||
--bar-color-right: #178010;
|
||||
}
|
||||
|
||||
&.astralenergie {
|
||||
--bar-color-left: #0e1155;
|
||||
--bar-color-right: #141cb7;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
& .tabs {
|
||||
padding: .5rem;
|
||||
margin-top: .5rem;
|
||||
@ -204,6 +261,9 @@
|
||||
& .list {
|
||||
display: grid;
|
||||
|
||||
grid-template-rows: max-content;
|
||||
grid-auto-rows: max-content;
|
||||
|
||||
border-radius: 5px 5px 5px 5px;
|
||||
box-shadow: 0 0 6px rgba(0, 0, 0, 0.45);
|
||||
|
||||
@ -217,7 +277,7 @@
|
||||
display: grid;
|
||||
grid-column: 1 / -1;
|
||||
|
||||
grid-template-rows: subgrid;
|
||||
grid-template-rows: subgrid;
|
||||
grid-template-columns: subgrid;
|
||||
|
||||
align-items: center;
|
||||
@ -231,7 +291,7 @@
|
||||
display: grid;
|
||||
grid-column: 1 / -1;
|
||||
|
||||
grid-template-rows: subgrid;
|
||||
grid-template-rows: subgrid;
|
||||
grid-template-columns: subgrid;
|
||||
|
||||
align-items: center;
|
||||
@ -282,10 +342,26 @@
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
|
||||
& .Basiswerte {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
grid-template-columns: minmax(0, max-content) repeat(5, minmax(0, 1fr));
|
||||
align-items: center;
|
||||
|
||||
& .list-header :not(:nth-child(1)), .list-item :not(:nth-child(1)) {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
& .Sonderfertigkeiten {
|
||||
grid-template-columns: minmax(min-content, max-content) auto min-content;
|
||||
}
|
||||
|
||||
& .Vorteile {
|
||||
grid-template-columns: minmax(min-content, max-content) auto min-content;
|
||||
}
|
||||
|
||||
& .Nachteile {
|
||||
grid-template-columns: minmax(min-content, max-content) auto min-content;
|
||||
}
|
||||
}
|
||||
|
||||
@ -322,6 +398,10 @@
|
||||
grid-template-columns: 2fr repeat(8, 1fr) repeat(2, 1.5fr);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
& .Sonderfertigkeiten {
|
||||
grid-template-columns: minmax(min-content, max-content) auto min-content;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -349,3 +429,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#tooltip.DSA41 {
|
||||
max-width: 650px;
|
||||
text-align: left;
|
||||
|
||||
& h4 {
|
||||
font-size: large;
|
||||
}
|
||||
}
|
||||
223
src/main.mjs
223
src/main.mjs
@ -14,10 +14,13 @@ Hooks.once("init", async function() {
|
||||
CONFIG.Actor.dataModels.Player = DSA41_CharacterData;
|
||||
CONFIG.Actor.documentClass = DSA41_CharacterDocument;
|
||||
|
||||
CONFIG.Item.dataModels.Gegenstand = DSA41_GegenstandData;
|
||||
CONFIG.Item.dataModels.Ruestung = DSA41_RuestungData;
|
||||
CONFIG.Item.dataModels.Bewaffnung = DSA41_BewaffnungData;
|
||||
CONFIG.Item.dataModels.Talent = DSA41_TalentData;
|
||||
CONFIG.Item.dataModels.Gegenstand = DSA41_GegenstandData;
|
||||
CONFIG.Item.dataModels.Ruestung = DSA41_RuestungData;
|
||||
CONFIG.Item.dataModels.Bewaffnung = DSA41_BewaffnungData;
|
||||
CONFIG.Item.dataModels.Talent = DSA41_TalentData;
|
||||
CONFIG.Item.dataModels.Kampftalent = DSA41_KampftalentData;
|
||||
CONFIG.Item.dataModels.Sonderfertigkeit = DSA41_SonderfertigkeitData;
|
||||
CONFIG.Item.dataModels.VorNachteil = DSA41_VorNachteilData;
|
||||
|
||||
DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet);
|
||||
DocumentSheetConfig.registerSheet(Actor, "dsa41", DSA41_ActorSheet, {
|
||||
@ -35,14 +38,22 @@ Hooks.once("init", async function() {
|
||||
"Ruestung",
|
||||
"Bewaffnung",
|
||||
"Talent",
|
||||
"Kampftalent",
|
||||
"Sonderfertigkeit",
|
||||
"VorNachteil",
|
||||
]
|
||||
});
|
||||
|
||||
Handlebars.registerHelper({
|
||||
maybeLocalize: (value, options) => {
|
||||
const prefix = options.hash.prefix ? options.hash.prefix.string : null;
|
||||
if (prefix)
|
||||
return game.i18n.localize(prefix + "." + value);
|
||||
if (prefix) {
|
||||
const id = prefix + "." + value;
|
||||
const localized = game.i18n.localize(id);
|
||||
|
||||
return id === localized ? value : localized;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
});
|
||||
@ -121,18 +132,6 @@ class AttributeField extends SchemaField {
|
||||
}
|
||||
}
|
||||
|
||||
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 {
|
||||
static async create(data, operation) {
|
||||
const actor = await super.create(data, operation);
|
||||
@ -174,6 +173,14 @@ class DSA41_CharacterDocument extends Actor {
|
||||
"Lederarbeiten",
|
||||
"Malen/Zeichnen",
|
||||
"Schneidern",
|
||||
|
||||
// Basis Kampftalente
|
||||
"Dolche",
|
||||
"Hiebwaffen",
|
||||
"Raufen",
|
||||
"Ringen",
|
||||
"Säbel",
|
||||
"Wurfmesser",
|
||||
]});
|
||||
|
||||
await actor.createEmbeddedDocuments("Item", talente);
|
||||
@ -186,9 +193,10 @@ class DSA41_CharacterDocument extends Actor {
|
||||
class DSA41_CharacterData extends TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
race: new StringField(),
|
||||
culture: new StringField(),
|
||||
profession: new StringField(),
|
||||
race: new StringField(),
|
||||
culture: new StringField(),
|
||||
profession: new StringField(),
|
||||
sozialstatus: new NumberField({ integer: true, inital: 1 }),
|
||||
|
||||
attributes: new SchemaField({
|
||||
courage: new AttributeField(),
|
||||
@ -201,35 +209,41 @@ class DSA41_CharacterData extends TypeDataModel {
|
||||
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(),
|
||||
lebenspunkte: new SchemaField({
|
||||
modifikator: new NumberField({integer: true, initial: 0}),
|
||||
zukauf: new NumberField({integer: true, initial: 0}),
|
||||
verlust: new NumberField({integer: true, initial: 0}),
|
||||
|
||||
aktuell: new NumberField({integer: true, initial: 0}),
|
||||
}),
|
||||
|
||||
ausdauer: new SchemaField({
|
||||
modifikator: new NumberField({integer: true, initial: 0}),
|
||||
zukauf: new NumberField({integer: true, initial: 0}),
|
||||
verlust: new NumberField({integer: true, initial: 0}),
|
||||
|
||||
aktuell: new NumberField({integer: true, initial: 0}),
|
||||
}),
|
||||
|
||||
astralenergie: new SchemaField({
|
||||
modifikator: new NumberField({integer: true, initial: 0}),
|
||||
zukauf: new NumberField({integer: true, initial: 0}),
|
||||
verlust: new NumberField({integer: true, initial: 0}),
|
||||
|
||||
aktuell: new NumberField({integer: true, initial: 0}),
|
||||
}),
|
||||
|
||||
magieresistenz: new SchemaField({
|
||||
modifikator: new NumberField({integer: true, initial: 0}),
|
||||
zukauf: new NumberField({integer: true, initial: 0}),
|
||||
|
||||
aktuell: new NumberField({integer: true, initial: 0}),
|
||||
}),
|
||||
|
||||
modifikator_initiative: new NumberField({integer: true, initial: 0}),
|
||||
modifikator_attacke: new NumberField({integer: true, initial: 0}),
|
||||
modifikator_parade: new NumberField({integer: true, initial: 0}),
|
||||
modifikator_fernkampf: new NumberField({integer: true, initial: 0}),
|
||||
}
|
||||
}
|
||||
|
||||
@ -265,15 +279,40 @@ class DSA41_CharacterData extends TypeDataModel {
|
||||
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.lebenspunkte = {};
|
||||
this.computed.ausdauer = {};
|
||||
this.computed.astralenergie = {};
|
||||
this.computed.magieresistenz = {};
|
||||
|
||||
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);;
|
||||
this.computed.lebenspunkte.basiswert = Math.round((this.computed.attributes_without_modifiers.constitution + this.computed.attributes_without_modifiers.constitution + this.computed.attributes_without_modifiers.strength) / 2);
|
||||
this.computed.ausdauer.basiswert = Math.round((this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.constitution + this.computed.attributes_without_modifiers.agility) / 2);
|
||||
this.computed.astralenergie.basiswert = Math.round((this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.intuition + this.computed.attributes_without_modifiers.charisma) / 2);
|
||||
this.computed.magieresistenz.basiswert = Math.round((this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.cleverness + this.computed.attributes_without_modifiers.constitution) / 5);
|
||||
|
||||
this.computed.lebenspunkte.max = this.computed.lebenspunkte.basiswert + this.lebenspunkte.modifikator + this.lebenspunkte.zukauf - this.lebenspunkte.verlust;
|
||||
this.computed.ausdauer.max = this.computed.ausdauer.basiswert + this.ausdauer.modifikator + this.ausdauer.zukauf - this.ausdauer.verlust;
|
||||
this.computed.astralenergie.max = this.computed.astralenergie.basiswert + this.astralenergie.modifikator + this.astralenergie.zukauf - this.astralenergie.verlust;
|
||||
this.computed.magieresistenz.max = this.computed.magieresistenz.basiswert + this.magieresistenz.modifikator + this.magieresistenz.zukauf;
|
||||
|
||||
this.computed.lebenspunkte.prozent = this.lebenspunkte.aktuell / this.computed.lebenspunkte.max * 100;
|
||||
this.computed.ausdauer.prozent = this.ausdauer.aktuell / this.computed.ausdauer.max * 100;
|
||||
this.computed.astralenergie.prozent = this.astralenergie.aktuell / this.computed.astralenergie.max * 100;
|
||||
this.computed.magieresistenz.prozent = this.magieresistenz.aktuell / this.computed.magieresistenz.max * 100;
|
||||
|
||||
this.computed.initiative = {};
|
||||
this.computed.attacke = {};
|
||||
this.computed.parade = {};
|
||||
this.computed.fernkampf = {};
|
||||
|
||||
this.computed.initiative.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.attacke.basiswert = Math.round((this.computed.attributes_without_modifiers.courage + this.computed.attributes_without_modifiers.agility + this.computed.attributes_without_modifiers.strength) / 5);
|
||||
this.computed.parade.basiswert = Math.round((this.computed.attributes_without_modifiers.intuition + this.computed.attributes_without_modifiers.agility + this.computed.attributes_without_modifiers.strength) / 5);
|
||||
this.computed.fernkampf.basiswert = Math.round((this.computed.attributes_without_modifiers.intuition + this.computed.attributes_without_modifiers.dexterity + this.computed.attributes_without_modifiers.strength) / 5);
|
||||
|
||||
this.computed.initiative.wert = this.computed.initiative.basiswert + this.modifikator_initiative;
|
||||
this.computed.attacke.wert = this.computed.attacke.basiswert + this.modifikator_attacke;
|
||||
this.computed.parade.wert = this.computed.parade.basiswert + this.modifikator_parade;
|
||||
this.computed.fernkampf.wert = this.computed.fernkampf.basiswert + this.modifikator_fernkampf;
|
||||
|
||||
const equipped_ruestungen = this.parent.items.filter((x) => x.type === "Ruestung");
|
||||
for (const item of equipped_ruestungen) {
|
||||
@ -295,10 +334,14 @@ class DSA41_CharacterData extends TypeDataModel {
|
||||
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;
|
||||
this.kampftalente = this.parent.items.filter((x) => x.type === "Kampftalent").sort((a, b) => a.name > b.name);
|
||||
for(const talent of this.kampftalente) {
|
||||
this.computed.kampf.talente[talent.name] = {};
|
||||
this.computed.kampf.talente[talent.name].attacke = this.computed.at_basiswert + talent.system.attacke;
|
||||
this.computed.kampf.talente[talent.name].parade = this.computed.pa_basiswert + talent.system.parade;
|
||||
|
||||
this.computed.kampf.talente[talent.name].talent_attacke = talent.system.attacke;
|
||||
this.computed.kampf.talente[talent.name].talent_parade = talent.system.parade;
|
||||
}
|
||||
|
||||
const equipped_bewaffnung = this.parent.items.filter((x) => x.type === "Bewaffnung");
|
||||
@ -339,8 +382,8 @@ class DSA41_CharacterData extends TypeDataModel {
|
||||
|
||||
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.talent_attacke = this.computed.kampf.talente[talent]?.talent_attacke ?? 0;
|
||||
computed.talent_parade = this.computed.kampf.talente[talent]?.talent_parade ?? 0;
|
||||
|
||||
computed.modifikator_attacke = item.system.nahkampfwaffe.modifikator_attacke;
|
||||
computed.modifikator_parade = item.system.nahkampfwaffe.modifikator_parade;
|
||||
@ -385,7 +428,7 @@ class DSA41_CharacterData extends TypeDataModel {
|
||||
computed.basis_attacke = this.computed.fk_basiswert;
|
||||
|
||||
const talent = item.system.nahkampfwaffe.kampftalente;
|
||||
computed.talent_attacke = this.kampf_talente[talent]?.attacke ?? 0;
|
||||
computed.talent_attacke = this.computed.kampf.talente[talent]?.talent_attacke ?? 0;
|
||||
|
||||
computed.attacke = computed.basis_attacke + computed.talent_attacke;
|
||||
|
||||
@ -516,7 +559,7 @@ class DSA41_BewaffnungData extends TypeDataModel {
|
||||
class DSA41_TalentData extends TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
kategorie: new StringField(),
|
||||
kategorie: new StringField(),
|
||||
behinderung: new StringField(),
|
||||
|
||||
attribute1: new StringField(),
|
||||
@ -528,6 +571,45 @@ class DSA41_TalentData extends TypeDataModel {
|
||||
}
|
||||
}
|
||||
|
||||
class DSA41_KampftalentData extends TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
kategorie: new StringField(),
|
||||
behinderung: new StringField(),
|
||||
steigern: new StringField(),
|
||||
|
||||
beschreibung: new StringField(),
|
||||
|
||||
talentwert: new NumberField({ integer: true, initial: 0 }),
|
||||
attacke: new NumberField({ integer: true, initial: 0 }),
|
||||
parade: new NumberField({ integer: true, initial: 0 }),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
class DSA41_SonderfertigkeitData extends TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
kategorie: new StringField(),
|
||||
kosten: new NumberField({ integer: true, initial: 0 }),
|
||||
verbreitung: new NumberField({ integer: true, initial: 0 }),
|
||||
|
||||
beschreibung: new StringField(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
class DSA41_VorNachteilData extends TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
kategorie: new StringField(),
|
||||
kosten: new NumberField({ integer: true, initial: 0 }),
|
||||
|
||||
beschreibung: new StringField(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function DSA41_ApplicationMixin(BaseApplication) {
|
||||
class DSA41_Application extends HandlebarsApplicationMixin(BaseApplication) {
|
||||
static DEFAULT_OPTIONS= {
|
||||
@ -859,10 +941,13 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
|
||||
|
||||
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" },
|
||||
Talent: { template: "systems/dsa-4th-edition/src/ItemSheets/Talent.hbs" },
|
||||
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" },
|
||||
Talent: { template: "systems/dsa-4th-edition/src/ItemSheets/Talent.hbs" },
|
||||
Kampftalent: { template: "systems/dsa-4th-edition/src/ItemSheets/Kampftalent.hbs" },
|
||||
Sonderfertigkeit: { template: "systems/dsa-4th-edition/src/ItemSheets/Sonderfertigkeit.hbs" },
|
||||
VorNachteil: { template: "systems/dsa-4th-edition/src/ItemSheets/VorNachteil.hbs" },
|
||||
};
|
||||
|
||||
static DEFAULT_OPTIONS = {
|
||||
|
||||
@ -14,7 +14,10 @@
|
||||
"Ruestung": {},
|
||||
"Bewaffnung": {},
|
||||
|
||||
"Talent": {}
|
||||
"Talent": {},
|
||||
"Kampftalent": {},
|
||||
"Sonderfertigkeit": {},
|
||||
"VorNachteil": {}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@ -8,17 +8,17 @@ const talente: system.ItemCompendium = .{ .entries = &.{
|
||||
.{ .Folder = .{ .name = "Körperliche Talente", .entries = &.{
|
||||
.{ .Talent = .{ .name = "Akrobatik", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .GE, .attribute3 = .KK, .behinderung = "@BE * 2" } } },
|
||||
.{ .Talent = .{ .name = "Athletik", .system = .{ .kategorie = .koerperliche, .attribute1 = .GE, .attribute2 = .KO, .attribute3 = .KK, .behinderung = "@BE * 2" } } },
|
||||
.{ .Talent = .{ .name = "Fliegen", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .IN, .attribute3 = .GE, .behinderung = "" } } },
|
||||
.{ .Talent = .{ .name = "Gaukeleien", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .CH, .attribute3 = .FF, .behinderung = "" } } },
|
||||
.{ .Talent = .{ .name = "Klettern", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .GE, .attribute3 = .KK, .behinderung = "" } } },
|
||||
.{ .Talent = .{ .name = "Fliegen", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .IN, .attribute3 = .GE, .behinderung = "@BE" } } },
|
||||
.{ .Talent = .{ .name = "Gaukeleien", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .CH, .attribute3 = .FF, .behinderung = "@BE * 2" } } },
|
||||
.{ .Talent = .{ .name = "Klettern", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .GE, .attribute3 = .KK, .behinderung = "@BE * 2" } } },
|
||||
.{ .Talent = .{ .name = "Körperbeherrschung", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .IN, .attribute3 = .GE, .behinderung = "@BE * 2" } } },
|
||||
.{ .Talent = .{ .name = "Reiten", .system = .{ .kategorie = .koerperliche, .attribute1 = .CH, .attribute2 = .GE, .attribute3 = .KK, .behinderung = "@BE - 2" } } },
|
||||
.{ .Talent = .{ .name = "Schleichen", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .IN, .attribute3 = .GE, .behinderung = "@BE" } } },
|
||||
.{ .Talent = .{ .name = "Schwimmen", .system = .{ .kategorie = .koerperliche, .attribute1 = .GE, .attribute2 = .KO, .attribute3 = .KK, .behinderung = "@BE * 2" } } },
|
||||
.{ .Talent = .{ .name = "Selbstbeherrschung", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .KO, .attribute3 = .KK, .behinderung = "" } } },
|
||||
.{ .Talent = .{ .name = "Sich Verstecken", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .IN, .attribute3 = .GE, .behinderung = "@BE * 2" } } },
|
||||
.{ .Talent = .{ .name = "Singen", .system = .{ .kategorie = .koerperliche, .attribute1 = .IN, .attribute2 = .CH, .attribute3 = .CH, .behinderung = "" } } },
|
||||
.{ .Talent = .{ .name = "Singen", .system = .{ .kategorie = .koerperliche, .attribute1 = .IN, .attribute2 = .CH, .attribute3 = .KO, .behinderung = "" } } },
|
||||
.{ .Talent = .{ .name = "Sich Verstecken", .system = .{ .kategorie = .koerperliche, .attribute1 = .MU, .attribute2 = .IN, .attribute3 = .GE, .behinderung = "@BE - 2" } } },
|
||||
.{ .Talent = .{ .name = "Singen", .system = .{ .kategorie = .koerperliche, .attribute1 = .IN, .attribute2 = .CH, .attribute3 = .CH, .behinderung = "@BE - 3" } } },
|
||||
.{ .Talent = .{ .name = "Singen", .system = .{ .kategorie = .koerperliche, .attribute1 = .IN, .attribute2 = .CH, .attribute3 = .KO, .behinderung = "@BE - 3" } } },
|
||||
.{ .Talent = .{ .name = "Sinnenschärfe", .system = .{ .kategorie = .koerperliche, .attribute1 = .KL, .attribute2 = .IN, .attribute3 = .IN, .behinderung = "" } } },
|
||||
.{ .Talent = .{ .name = "Sinnenschärfe", .system = .{ .kategorie = .koerperliche, .attribute1 = .KL, .attribute2 = .IN, .attribute3 = .FF, .behinderung = "" } } },
|
||||
.{ .Talent = .{ .name = "Skifahren", .system = .{ .kategorie = .koerperliche, .attribute1 = .GE, .attribute2 = .GE, .attribute3 = .KO, .behinderung = "@BE - 2" } } },
|
||||
@ -131,6 +131,37 @@ const talente: system.ItemCompendium = .{ .entries = &.{
|
||||
.{ .Talent = .{ .name = "Winzer", .system = .{ .kategorie = .handwerks, .attribute1 = .KL, .attribute2 = .FF, .attribute3 = .KK, .behinderung = "" } } },
|
||||
.{ .Talent = .{ .name = "Zimmermann", .system = .{ .kategorie = .handwerks, .attribute1 = .KL, .attribute2 = .FF, .attribute3 = .KK, .behinderung = "" } } },
|
||||
}}},
|
||||
|
||||
// Kampftalente
|
||||
.{ .Folder = .{ .name = "Kampftalente", .entries = &.{
|
||||
.{ .Kampftalent = .{ .name = "Anderthalbhänder", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 2" } } },
|
||||
.{ .Kampftalent = .{ .name = "Armbrust", .system = .{ .kategorie = .fernkampf, .steigern = .C, .behinderung = "@BE - 5" } } },
|
||||
.{ .Kampftalent = .{ .name = "Belagerungswaffen", .system = .{ .kategorie = .fernkampf, .steigern = .D, .behinderung = "" } } },
|
||||
.{ .Kampftalent = .{ .name = "Blasrohr", .system = .{ .kategorie = .fernkampf, .steigern = .D, .behinderung = "@BE - 5" } } },
|
||||
.{ .Kampftalent = .{ .name = "Bogen", .system = .{ .kategorie = .fernkampf, .steigern = .E, .behinderung = "@BE - 3" } } },
|
||||
.{ .Kampftalent = .{ .name = "Diskus", .system = .{ .kategorie = .fernkampf, .steigern = .D, .behinderung = "@BE - 2" } } },
|
||||
.{ .Kampftalent = .{ .name = "Dolche", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 1" } } },
|
||||
.{ .Kampftalent = .{ .name = "Fechtwaffen", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 1" } } },
|
||||
.{ .Kampftalent = .{ .name = "Hiebwaffen", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 4" } } },
|
||||
.{ .Kampftalent = .{ .name = "Infanteriewaffen", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } },
|
||||
.{ .Kampftalent = .{ .name = "Kettenstäbe", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 1" } } },
|
||||
.{ .Kampftalent = .{ .name = "Kettenwaffen", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } },
|
||||
// .{ .Kampftalent = .{ .name = "Lanzenreiten", .system = .{ .kategorie = .???, .steigern = .E, .behinderung = "" } } },
|
||||
// .{ .Kampftalent = .{ .name = "Peitsche", .system = .{ .kategorie = .???, .steigern = .E, .behinderung = "@BE - 1" } } },
|
||||
.{ .Kampftalent = .{ .name = "Raufen", .system = .{ .kategorie = .waffenlos, .steigern = .C, .behinderung = "@BE" } } },
|
||||
.{ .Kampftalent = .{ .name = "Ringen", .system = .{ .kategorie = .waffenlos, .steigern = .D, .behinderung = "@BE" } } },
|
||||
.{ .Kampftalent = .{ .name = "Saebel", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 2" } } },
|
||||
.{ .Kampftalent = .{ .name = "Schleuder", .system = .{ .kategorie = .fernkampf, .steigern = .E, .behinderung = "@BE - 2" } } },
|
||||
.{ .Kampftalent = .{ .name = "Schwerter", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 2" } } },
|
||||
.{ .Kampftalent = .{ .name = "Speere", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } },
|
||||
.{ .Kampftalent = .{ .name = "Stäbe", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 2" } } },
|
||||
.{ .Kampftalent = .{ .name = "Wurfbeile", .system = .{ .kategorie = .fernkampf, .steigern = .D, .behinderung = "@BE - 2" } } },
|
||||
.{ .Kampftalent = .{ .name = "Wurfmesser", .system = .{ .kategorie = .fernkampf, .steigern = .C, .behinderung = "@BE - 3" } } },
|
||||
.{ .Kampftalent = .{ .name = "Wurfspeere", .system = .{ .kategorie = .fernkampf, .steigern = .C, .behinderung = "@BE - 2" } } },
|
||||
.{ .Kampftalent = .{ .name = "Zweihandflegel", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } },
|
||||
.{ .Kampftalent = .{ .name = "Zweihand-Hiebwaffen", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } },
|
||||
.{ .Kampftalent = .{ .name = "Zweihandschwerter/-säbel", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 2" } } },
|
||||
}}},
|
||||
}};
|
||||
|
||||
pub fn main() !void {
|
||||
|
||||
@ -120,6 +120,32 @@ pub const ItemCompendium = foundry.Compendium(.Item, union(enum) {
|
||||
|
||||
talentwert: u8 = 0,
|
||||
}),
|
||||
Kampftalent: foundry.Item("Kampftalent", struct {
|
||||
kategorie: enum {
|
||||
waffenlos,
|
||||
nahkampf,
|
||||
fernkampf,
|
||||
},
|
||||
|
||||
steigern: enum {
|
||||
A_Star,
|
||||
A,
|
||||
B,
|
||||
C,
|
||||
D,
|
||||
E,
|
||||
F,
|
||||
G,
|
||||
H,
|
||||
},
|
||||
|
||||
behinderung: String = "",
|
||||
beschreibung: String = "",
|
||||
|
||||
talentwert: u8 = 0,
|
||||
attacke: u8 = 0,
|
||||
parade: u8 = 0,
|
||||
}),
|
||||
});
|
||||
|
||||
const Attribute = enum {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user