Updates to CSS/LESS and New Character Sheet

Various updates to CSS/LESS and adjustments to New Character Sheet to rearrange traits, resources, counters, favorites, and notes.
This commit is contained in:
Professor Bunbury 2021-01-19 09:27:48 -05:00
parent 7dbc48b718
commit 6947d65330
11 changed files with 351 additions and 224 deletions

BIN
fonts/EngliBesh-KG3W.ttf Normal file

Binary file not shown.

View file

@ -178,11 +178,14 @@
background: transparent;
}
// Rollable Links
// Rollable Titles
.editable .rollable:hover {
cursor: pointer;
}
.editable h4.rollable:hover,
.editable .rollable:hover > h4 {
color: #000;
text-shadow: 0 0 10px red;
cursor: pointer;
}
// Separators
@ -306,6 +309,7 @@
/* ----------------------------------------- */
.filter-list {
align-items: center;
list-style: none;
margin: 0;
padding: 0;
@ -382,6 +386,30 @@
padding: 0;
}
// Item Name
.item-name {
flex: 2;
margin: 0;
overflow: hidden;
font-size: 13px;
text-align: left;
align-items: center;
h3, h4 {
margin: 0;
white-space: nowrap;
overflow-x: hidden;
}
}
// Control Buttons
.item-controls {
flex: 0 0 60px;
justify-content: space-between;
a {
font-size: 12px;
text-align: center;
}
}
// Individual Item
.item {
align-items: center;
@ -419,32 +447,13 @@
font-size: 12px;
text-align: center;
}
.item-name {
h3 {
padding-left: 5px;
//.modesto();
text-align: left;
font-size: 16px;
}
}
// Item Name
.item-name {
flex: 2;
margin: 0;
overflow: hidden;
font-size: 13px;
text-align: left;
align-items: center;
}
// Control Buttons
.item-controls {
flex: 0 0 60px;
justify-content: space-between;
a {
font-size: 12px;
text-align: center;
}
}
}
/* ----------------------------------------- */
@ -482,4 +491,41 @@
height: 24px;
margin: 2px;
}
}
/* ----------------------------------------- */
/* HUD
/* ----------------------------------------- */
.placeable-hud .control-icon {
box-sizing: content-box;
width: 40px;
flex: 0 0 40px;
margin: 8px 0;
font-size: 28px;
line-height: 40px;
text-align: center;
color: #FBF4F4;
background: rgba(0, 0, 0, 0.6);
box-shadow: 0 0 15px #000;
border: 1px solid #333;
border-radius: 8px;
pointer-events: all;
}
#token-hud .status-effects {
visibility: hidden;
position: absolute;
left: 50px;
top: 0;
display: grid;
padding: 3px;
box-sizing: content-box;
width: 100px;
color: #FBF4F4;
grid-template-columns: 25px 25px 25px 25px;
background: rgba(0, 0, 0, 0.6);
box-shadow: 0 0 15px #000;
border: 1px solid #333;
border-radius: 4px;
pointer-events: all;
}

View file

@ -19,15 +19,15 @@
font-size: @font-size;
font-weight: 400;
}
/* bungee-inline-regular - latin */
/* engli-besh */
@font-face {
font-family: 'Bungee Inline';
font-family: 'Engli-Besh';
font-style: normal;
font-weight: 400;
src: url('./fonts/BungeeInline.ttf');
src: url('./fonts/EngliBesh-KG3W.ttf');
}
.bungeeInline {
font-family: 'Bungee Inline';
.engli-Besh {
font-family: 'Engli-Besh';
font-size: 20px;
font-weight: 400;
}

View file

@ -5,7 +5,7 @@
.dropShadow1();
}
.sw5e.sheet.actor.character {
min-width: 800px;
min-width: 850px;
min-height: 720px;
}
.sw5e.sheet .window-content {
@ -54,7 +54,7 @@
grid-template-rows: 1fr 26px auto;
grid-template-columns: 128px 1fr;
column-gap: 8px;
row-gap: 8px;
grid-row-gap: 8px;
img {
grid-column-start: 1;
@ -683,7 +683,7 @@
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 16px;
row-gap: 8px;
grid-row-gap: 8px;
input,
select {
@ -715,7 +715,7 @@
}
.languages {
grid-column-end: span 2;
grid-column-end: span 1;
label {
&:hover {
cursor: pointer;
@ -745,7 +745,7 @@
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 4px;
row-gap: 4px;
grid-row-gap: 4px;
strong {
font-size: 13px;
@ -994,7 +994,7 @@
}
&.limited {
grid-template-rows: 144px auto;
row-gap: 8px;
grid-row-gap: 8px;
header {
grid-template-rows: 1fr;
}

View file

@ -48,6 +48,12 @@
font-weight: 400;
src: url('./fonts/Aurebesh.ttf');
}
@font-face {
font-family: 'Engli-Besh';
font-style: normal;
font-weight: 400;
src: url('./fonts/EngliBesh-KG3W.ttf');
}
@import "_variables.less";
html {
@ -77,6 +83,9 @@ html {
body {
.openSans(13px, 400);
background-image: url('./ui/SW5e-logo.svg');
background-repeat: no-repeat;
background-size: cover;
}
h1 {

View file

@ -48,6 +48,17 @@
font-weight: 400;
src: url('./fonts/Aurebesh.ttf');
}
@font-face {
font-family: 'Engli-Besh';
font-style: normal;
font-weight: 400;
src: url('./fonts/EngliBesh-KG3W.ttf');
}
.engli-Besh {
font-family: 'Engli-Besh';
font-size: 20px;
font-weight: 400;
}
/* ----------------------------------------- */
/* Fonts */
/* ----------------------------------------- */
@ -379,12 +390,12 @@ input[type="reset"]:disabled {
padding: 0;
border: none;
}
.sw5e.chat-card .card-header,
.sw5e.chat-card .card-header img,
.midi-qol-item-card .card-header img {
flex: 0 0 36px;
margin-right: 4px;
}
.sw5e.chat-card .card-header,
.sw5e.chat-card .card-header h3,
.midi-qol-item-card .card-header h3 {
flex: 1;
margin: 0;
@ -705,7 +716,7 @@ input[type="reset"]:disabled {
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
}
.sw5e.sheet.actor.character {
min-width: 800px;
min-width: 850px;
min-height: 720px;
}
.sw5e.sheet .window-content {
@ -945,7 +956,7 @@ input[type="reset"]:disabled {
}
.sw5e.sheet.actor .swalt-sheet nav.sheet-navigation {
display: grid;
grid-template-columns: repeat(7, 1fr);
grid-template-columns: repeat(6, 1fr);
column-gap: 16px;
margin: 4px 0;
}
@ -1330,7 +1341,7 @@ input[type="reset"]:disabled {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 16px;
row-gap: 8px;
grid-row-gap: 8px;
}
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits input,
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits select {
@ -1357,7 +1368,7 @@ input[type="reset"]:disabled {
text-shadow: none;
}
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .languages {
grid-column-end: span 2;
grid-column-end: span 1;
}
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .languages label:hover {
cursor: pointer;

172
sw5e.css
View file

@ -9,15 +9,15 @@
font-weight: 400;
src: url('./fonts/RussoOne.ttf');
}
/* bungee-inline-regular - latin */
/* engli-besh */
@font-face {
font-family: 'Bungee Inline';
font-family: 'Engli-Besh';
font-style: normal;
font-weight: 400;
src: url('./fonts/BungeeInline.ttf');
src: url('./fonts/EngliBesh-KG3W.ttf');
}
.bungeeInline {
font-family: 'Bungee Inline';
.engli-Besh {
font-family: 'Engli-Besh';
font-size: 20px;
font-weight: 400;
}
@ -272,9 +272,12 @@
background: transparent;
}
.sw5e.sheet .editable .rollable:hover {
cursor: pointer;
}
.sw5e.sheet .editable h4.rollable:hover,
.sw5e.sheet .editable .rollable:hover > h4 {
color: #000;
text-shadow: 0 0 10px red;
cursor: pointer;
}
.sw5e.sheet span.sep {
flex: none;
@ -366,6 +369,7 @@
overflow: hidden;
}
.sw5e.sheet .filter-list {
align-items: center;
list-style: none;
margin: 0;
padding: 0;
@ -423,6 +427,28 @@
margin: 0;
padding: 0;
}
.sw5e.sheet .items-list .item-name {
flex: 2;
margin: 0;
overflow: hidden;
font-size: 13px;
text-align: left;
align-items: center;
}
.sw5e.sheet .items-list .item-name h3,
.sw5e.sheet .items-list .item-name h4 {
margin: 0;
white-space: nowrap;
overflow-x: hidden;
}
.sw5e.sheet .items-list .item-controls {
flex: 0 0 60px;
justify-content: space-between;
}
.sw5e.sheet .items-list .item-controls a {
font-size: 12px;
text-align: center;
}
.sw5e.sheet .items-list .item {
align-items: center;
padding: 0 2px;
@ -459,25 +485,10 @@
font-size: 12px;
text-align: center;
}
.sw5e.sheet .items-list .items-header .item-name {
.sw5e.sheet .items-list .items-header h3 {
padding-left: 5px;
font-size: 16px;
}
.sw5e.sheet .items-list .item-name {
flex: 2;
margin: 0;
overflow: hidden;
font-size: 13px;
text-align: left;
align-items: center;
}
.sw5e.sheet .items-list .item-controls {
flex: 0 0 60px;
justify-content: space-between;
}
.sw5e.sheet .items-list .item-controls a {
font-size: 12px;
text-align: center;
font-size: 16px;
}
.sw5e.sheet .effects .item .effect-source,
.sw5e.sheet .effects .item .effect-duration,
@ -586,7 +597,21 @@
height: 30px;
line-height: 30px;
}
.sw5e.sheet.actor .attributes input.temphp {
.sw5e.sheet.actor .sheet-header .attributes .movement h4.attribute-name {
position: relative;
}
.sw5e.sheet.actor .sheet-header .attributes .movement .config-button {
position: absolute;
display: none;
right: 0;
top: 1px;
font-size: 12px;
font-weight: normal;
}
.sw5e.sheet.actor .sheet-header .attributes .movement:hover .config-button {
display: block;
}
.sw5e.sheet.actor .sheet-header .attributes input.temphp {
width: 48%;
}
.sw5e.sheet.actor h4.box-title {
@ -798,7 +823,7 @@
margin: 0 0 3px 0;
justify-content: space-between;
}
.sw5e.sheet.actor .traits .configure-flags {
.sw5e.sheet.actor .traits .config-button {
flex: 1;
}
.sw5e.sheet.actor .traits label {
@ -871,8 +896,8 @@
.sw5e.sheet.actor .inventory-list .item .item-name i.attuned {
color: #7a7971;
}
.sw5e.sheet.actor .inventory-list .item .item-name h4 {
font-size: 14px;
.sw5e.sheet.actor .inventory-list .item .item-name i.not-attuned {
color: #44191A;
}
.sw5e.sheet.actor .inventory-list .item .item-uses input {
width: 24px;
@ -905,6 +930,9 @@
.sw5e.sheet.actor .inventory-list .item-detail.item-action {
flex: 0 0 100px;
}
.sw5e.sheet.actor .inventory-list .item-detail.attunement {
flex: 0 0 24px;
}
.sw5e.sheet.actor .inventory-list .item-weight {
flex: 0 0 60px;
border-left: 1px solid #c9c7b8;
@ -995,24 +1023,22 @@
flex: 0 0 240px;
margin: 0;
}
.sw5e.sheet.actor .powercasting-ability input,
.sw5e.sheet.actor .powercasting-ability label,
.sw5e.sheet.actor .powercasting-ability span {
flex: 0 0 32px;
flex: none;
}
.sw5e.sheet.actor .powercasting-ability input {
flex: 0 0 28px;
text-align: center;
}
.sw5e.sheet.actor .powercasting-ability select {
margin: 0 5px;
flex: 0 0 150px;
}
.sw5e.sheet.actor .powercasting-ability h3.power-dc {
flex: 1;
text-align: right;
flex: 0 0 120px;
}
.sw5e.sheet.actor .power-slots,
.sw5e.sheet.actor .power-comps {
flex: 0 0 75px;
padding-right: 5px;
text-align: right;
flex: none;
padding: 0 5px;
font-size: 12px;
color: #7a7971;
border-right: 1px solid #c9c7b8;
@ -1025,9 +1051,10 @@
font-size: 13px;
font-weight: normal;
}
.sw5e.sheet.actor .power-uses {
padding-right: 8px;
text-align: right !important;
.sw5e.sheet.actor .powerbook .power-uses {
padding-right: 5px;
text-align: right;
color: #7a7971;
}
.sw5e.sheet.actor .power-school,
.sw5e.sheet.actor .power-action,
@ -1069,6 +1096,7 @@
padding-right: 8px;
margin-bottom: 4px;
overflow-y: auto;
scrollbar-width: thin;
}
.sw5e.sheet.item {
min-height: 660px;
@ -1587,7 +1615,7 @@
.sw5e.chat-card .card-footer span,
.midi-qol-item-card .card-footer span {
border-right: 2px groove #FFF;
padding: 0 5px 0 0;
padding: 0 3px 0 0;
font-size: 10px;
}
.sw5e.chat-card .card-footer span:last-child,
@ -1762,7 +1790,7 @@
resize: none;
}
.sw5e.sheet.actor.character .biography {
max-width: calc(-80%);
max-width: calc(100% - 180px);
}
/* ----------------------------------------- */
/* Basic Structure */
@ -1794,9 +1822,6 @@
.sw5e.sheet.actor.npc .summary {
font-size: 18px;
}
.sw5e.sheet.actor.npc .powercasting-ability label {
flex: none;
}
.sw5e.sheet.actor.vehicle .features .item-controls {
flex: 0 0 68px;
}
@ -1817,30 +1842,35 @@
max-width: 40px;
text-align: right;
}
input[type="number"] {
width: calc(100% - 2px);
min-width: 20px;
height: 26px;
background: rgba(0, 0, 0, 0.05);
padding: 1px 3px;
margin: 0;
color: #191813;
font-family: inherit;
font-size: inherit;
text-align: inherit;
line-height: inherit;
border: 1px solid #7a7971;
border-radius: 3px;
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
-moz-appearance: textfield;
}
input[type="number"]:focus {
box-shadow: 0 0 5px red;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
.placeable-hud .control-icon {
box-sizing: content-box;
width: 40px;
flex: 0 0 40px;
margin: 8px 0;
font-size: 28px;
line-height: 40px;
text-align: center;
color: #FBF4F4;
background: rgba(0, 0, 0, 0.6);
box-shadow: 0 0 15px #000;
border: 1px solid #333;
border-radius: 8px;
pointer-events: all;
}
#token-hud .status-effects {
visibility: hidden;
position: absolute;
left: 50px;
top: 0;
display: grid;
padding: 3px;
box-sizing: content-box;
width: 100px;
color: #FBF4F4;
grid-template-columns: 25px 25px 25px 25px;
background: rgba(0, 0, 0, 0.6);
box-shadow: 0 0 15px #000;
border: 1px solid #333;
border-radius: 4px;
pointer-events: all;
}

14
sw5e.js
View file

@ -26,7 +26,6 @@ import ActorSheet5eCharacter from "./module/actor/sheets/oldSheets/character.js"
import ActorSheet5eNPC from "./module/actor/sheets/oldSheets/npc.js";
import ActorSheet5eVehicle from "./module/actor/sheets/oldSheets/vehicle.js";
import ActorSheet5eCharacterNew from "./module/actor/sheets/newSheet/character.js";
import ActorSheet5eNPCNew from "./module/actor/sheets/newSheet/npc.js";
import ItemSheet5e from "./module/item/sheet.js";
import ShortRestDialog from "./module/apps/short-rest.js";
import TraitSelector from "./module/apps/trait-selector.js";
@ -53,7 +52,6 @@ Hooks.once("init", function() {
ActorSheet5eCharacter,
ActorSheet5eCharacterNew,
ActorSheet5eNPC,
ActorSheet5eNPCNew,
ActorSheet5eVehicle,
ItemSheet5e,
ShortRestDialog,
@ -79,6 +77,11 @@ Hooks.once("init", function() {
CONFIG.Actor.entityClass = Actor5e;
CONFIG.Item.entityClass = Item5e;
CONFIG.time.roundTime = 6;
CONFIG.fontFamilies = [
"Engli-Besh",
"Open Sans",
"Russo One"
];
// Add DND5e namespace for module compatability
game.dnd5e = game.sw5e;
@ -103,16 +106,11 @@ Hooks.once("init", function() {
makeDefault: false,
label: "SW5E.SheetClassCharacterOld"
});
Actors.registerSheet("sw5e", ActorSheet5eNPCNew, {
Actors.registerSheet("sw5e", ActorSheet5eNPC, {
types: ["npc"],
makeDefault: true,
label: "SW5E.SheetClassNPC"
});
Actors.registerSheet("sw5e", ActorSheet5eNPC, {
types: ["npc"],
makeDefault: false,
label: "SW5E.SheetClassNPCOld"
});
Actors.registerSheet('sw5e', ActorSheet5eVehicle, {
types: ['vehicle'],
makeDefault: true,

View file

@ -44,8 +44,8 @@
</section>
<section class="panel traits-resources">
<nav class="core-tabs tab-list" data-subgroup-selection>
<button type="button" class="item active" data-subgroup="coreattributes" data-target="traits">Traits</button>
<button type="button" class="item" data-subgroup="coreattributes" data-target="resources">Resources</button>
<button type="button" class="item active" data-subgroup="coreattributes" data-target="traits">Traits & Resources</button>
<button type="button" class="item" data-subgroup="coreattributes" data-target="resources">Favorites & Notes</button>
</nav>
<div class="tab core-traits active" data-subgroup="coreattributes" data-target="traits">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-traits.html"}}

View file

@ -1,65 +1,36 @@
{{!-- Resources, Counters, & Favorites --}}
<section class="resources">
<section class="resource-items">
{{#each resources as |res|}}
<div class="resource">
<h1>
<input name="data.resources.{{res.name}}.label" type="text" value="{{res.label}}"
placeholder="{{res.placeholder}}" />
</h1>
<div class="attribute-value">
<input name="data.resources.{{res.name}}.value" type="text" value="{{res.value}}" data-dtype="Number"
placeholder="0" class="value-number" />
<span class="value-separator">/</span>
<input name="data.resources.{{res.name}}.max" type="text" value="{{res.max}}" data-dtype="Number"
placeholder="0" class="value-number" />
</div>
<footer class="attribute-footer">
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationSR" }} <input name="data.resources.{{res.name}}.sr" type="checkbox"
{{checked res.sr}} />
</label>
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationLR" }} <input name="data.resources.{{res.name}}.lr" type="checkbox"
{{checked res.lr}} />
</label>
</footer>
</div>
{{/each}}
</section>
<section class="counters">
<div class="counter">
<h4 class="death-save rollable">{{ localize "SW5E.DeathSave" }}</h4>
<div class="counter-value">
<div class="death-success">
<i class="fas fa-check"></i>
<input type="text" name="data.attributes.death.success" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.success}}" />
</div>
<div class="death-fail">
<i class="fas fa-times"></i>
<input type="text" name="data.attributes.death.failure" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.failure}}" />
</div>
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Exhaustion" }}</h4>
<div class="counter-value">
<input type="text" name="data.attributes.exhaustion" data-dtype="Number" placeholder="0"
value="{{data.attributes.exhaustion}}" />
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Inspiration" }}</h4>
<div class="counter-value">
<input type="checkbox" name="data.attributes.inspiration" data-dtype="Boolean"
{{checked data.attributes.inspiration}} />
</div>
</div>
</section>
<section class="favorites">
<h1>Favorites</h1>
<section class="favorites">
<h1>Favorites</h1>
<div class="favtabtarget"></div>
</section>
</section>
</section>
<p>&nbsp;</p>
<section class="background">
<h1>Journal and Notes</h1>
<input type="text" name="data.details.notesname" value="{{data.details.notesname}}"
placeholder="Personal Journal" />
{{editor content=data.details.notes.value target="data.details.notes.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes1name" value="{{data.details.notes1name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes1.value target="data.details.notes1.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes2name" value="{{data.details.notes2name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes2.value target="data.details.notes2.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes3name" value="{{data.details.notes3name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes3.value target="data.details.notes3.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes4name" value="{{data.details.notes4name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes4.value target="data.details.notes4.value" button=true owner=owner editable=editable}}
</section>

View file

@ -16,6 +16,16 @@
placeholder="{{ localize 'SW5E.None' }}" />
{{/unless}}
</label>
<div>
<label>{{localize "SW5E.MovementConfig"}}</label>
<a class="configure-movement" title="{{localize 'SW5E.MovementConfig'}}"><i class="fas fa-cog"></i></a>
</div>
<div>
{{#unless isVehicle}}
<label>{{localize "SW5E.SpecialTraits"}}</label>
<a class="configure-flags"><i class="fas fa-cog"></i></a>
{{/unless}}
</div>
<div class="languages">
<label data-options="share-languages" class="languages">{{localize "SW5E.Languages"}}</label>
<a class="trait-selector" data-options="languages" data-target="data.traits.languages">
@ -26,7 +36,40 @@
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitArmorProf"}}</label>
<a class="trait-selector" data-options="armorProficiencies" data-target="data.traits.armorProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.armorProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitToolProf"}}</label>
<a class="trait-selector" data-options="toolProficiencies" data-target="data.traits.toolProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.toolProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitWeaponProf"}}</label>
<a class="trait-selector" data-options="weaponProficiencies" data-target="data.traits.weaponProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.weaponProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.DamImm"}}</label>
<a class="trait-selector" data-options="damageResistanceTypes" data-target="data.traits.di">
@ -72,47 +115,66 @@
{{/each}}
</ul>
</div>{{#if isCharacter}}
<div>
<label>{{localize "SW5E.TraitWeaponProf"}}</label>
<a class="trait-selector" data-options="weaponProficiencies" data-target="data.traits.weaponProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.weaponProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitArmorProf"}}</label>
<a class="trait-selector" data-options="armorProficiencies" data-target="data.traits.armorProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.armorProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitToolProf"}}</label>
<a class="trait-selector" data-options="toolProficiencies" data-target="data.traits.toolProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.toolProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
{{/if}}
{{#unless isVehicle}}
<div>
<label>{{localize "SW5E.SpecialTraits"}}</label>
<a class="configure-flags"><i class="fas fa-cog"></i></a>
</div>
{{/unless}}
<ul class="passives"></ul>
</section>
<section class="resources">
<section class="resource-items">
{{#each resources as |res|}}
<div class="resource">
<h1>
<input name="data.resources.{{res.name}}.label" type="text" value="{{res.label}}"
placeholder="{{res.placeholder}}" />
</h1>
<div class="attribute-value">
<input name="data.resources.{{res.name}}.value" type="text" value="{{res.value}}" data-dtype="Number"
placeholder="0" class="value-number" />
<span class="value-separator">/</span>
<input name="data.resources.{{res.name}}.max" type="text" value="{{res.max}}" data-dtype="Number"
placeholder="0" class="value-number" />
</div>
<footer class="attribute-footer">
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationSR" }} <input name="data.resources.{{res.name}}.sr" type="checkbox"
{{checked res.sr}} />
</label>
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationLR" }} <input name="data.resources.{{res.name}}.lr" type="checkbox"
{{checked res.lr}} />
</label>
</footer>
</div>
{{/each}}
</section>
<section class="counters">
<div class="counter">
<h4 class="death-save rollable">{{ localize "SW5E.DeathSave" }}</h4>
<div class="counter-value">
<div class="death-success">
<i class="fas fa-check"></i>
<input type="text" name="data.attributes.death.success" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.success}}" />
</div>
<div class="death-fail">
<i class="fas fa-times"></i>
<input type="text" name="data.attributes.death.failure" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.failure}}" />
</div>
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Exhaustion" }}</h4>
<div class="counter-value">
<input type="text" name="data.attributes.exhaustion" data-dtype="Number" placeholder="0"
value="{{data.attributes.exhaustion}}" />
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Inspiration" }}</h4>
<div class="counter-value">
<input type="checkbox" name="data.attributes.inspiration" data-dtype="Boolean"
{{checked data.attributes.inspiration}} />
</div>
</div>
</section>