Item ehnance, fixes on actor sheet
This commit is contained in:
@@ -111,7 +111,7 @@
|
|||||||
.oathhammer .skills-container .skills-header,
|
.oathhammer .skills-container .skills-header,
|
||||||
.oathhammer .skills-container .skill-row {
|
.oathhammer .skills-container .skill-row {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 3rem 3rem;
|
grid-template-columns: 1fr 2.5rem 2.5rem 2.5rem 5.5rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
@@ -124,14 +124,59 @@
|
|||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
padding-bottom: 2px;
|
padding-bottom: 2px;
|
||||||
}
|
}
|
||||||
|
.oathhammer .skills-container .skills-header span {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.oathhammer .skills-container .skills-header .skill-name-col {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
.oathhammer .skills-container .skill-row {
|
.oathhammer .skills-container .skill-row {
|
||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
}
|
}
|
||||||
.oathhammer .skills-container .skill-row label.skill-name-col {
|
.oathhammer .skills-container .skill-row label.skill-name-col {
|
||||||
font-size: calc(0.82rem * 0.85);
|
font-size: calc(0.82rem * 0.85);
|
||||||
}
|
}
|
||||||
.oathhammer .skills-container .skill-row .skill-rank-col input {
|
.oathhammer .skills-container .skill-row .skill-rank-col select,
|
||||||
|
.oathhammer .skills-container .skill-row .skill-modifier-col input {
|
||||||
|
width: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
padding: 1px 2px;
|
||||||
|
}
|
||||||
|
.oathhammer .skills-container .skill-row .skill-color-col {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 2px;
|
||||||
|
}
|
||||||
|
.oathhammer .skills-container .skill-row .skill-color-col .color-dice-dot {
|
||||||
|
display: inline-block;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
border-radius: 50%;
|
||||||
|
flex-shrink: 0;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
.oathhammer .skills-container .skill-row .skill-color-col .color-dice-dot.color-dice-white {
|
||||||
|
background: #f0f0f0;
|
||||||
|
}
|
||||||
|
.oathhammer .skills-container .skill-row .skill-color-col .color-dice-dot.color-dice-red {
|
||||||
|
background: #d9534f;
|
||||||
|
}
|
||||||
|
.oathhammer .skills-container .skill-row .skill-color-col .color-dice-dot.color-dice-black {
|
||||||
|
background: #222;
|
||||||
|
}
|
||||||
|
.oathhammer .skills-container .skill-row .skill-color-col .color-dice-select {
|
||||||
|
flex: 1;
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
padding: 1px 1px;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
.oathhammer .skills-container .skill-row .skill-color-col input[type="number"] {
|
||||||
|
width: 2.2rem;
|
||||||
|
text-align: center;
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
padding: 1px 2px;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.oathhammer .skills-container .skill-row .skill-total {
|
.oathhammer .skills-container .skill-row .skill-total {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -193,15 +238,105 @@
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 4px;
|
gap: 6px;
|
||||||
|
min-width: 0;
|
||||||
}
|
}
|
||||||
.oathhammer .character-main .character-name {
|
.oathhammer .character-main .character-name {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
|
border-bottom: 1px solid #535128;
|
||||||
|
padding-bottom: 4px;
|
||||||
}
|
}
|
||||||
.oathhammer .character-main .character-name input {
|
.oathhammer .character-main .character-name input {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
font-family: "Sherwood", "Palatino Linotype", serif;
|
||||||
|
font-size: calc(0.82rem * 1.1);
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-slot {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
padding: 2px 6px;
|
||||||
|
border: 1px solid #535128;
|
||||||
|
border-radius: 3px;
|
||||||
|
background: rgba(0, 0, 0, 0.15);
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
min-width: 6rem;
|
||||||
|
min-height: 1.6rem;
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-slot.empty {
|
||||||
|
opacity: 0.6;
|
||||||
|
font-style: italic;
|
||||||
|
border-style: dashed;
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-slot .identity-img {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
-o-object-fit: cover;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: 2px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-slot .identity-name {
|
||||||
|
flex: 1;
|
||||||
|
font-family: "BlueDragon", "Palatino Linotype", serif;
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-slot .slot-icon {
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-slot .slot-placeholder {
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-slot a {
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-slot a:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-xp {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 3px;
|
||||||
|
margin-left: auto;
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-xp .xp-label {
|
||||||
|
font-family: "BlueDragon", "Palatino Linotype", serif;
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
color: #535128;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-xp .xp-sep {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
.oathhammer .character-main .character-identity-bar .identity-xp input {
|
||||||
|
width: 3rem;
|
||||||
|
text-align: center;
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
|
padding: 1px 2px;
|
||||||
|
}
|
||||||
|
.oathhammer .attributes-stress-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 6px;
|
||||||
|
}
|
||||||
|
.oathhammer .attributes-stress-row .character-attributes {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.oathhammer .attributes-stress-row .character-arcane-stress {
|
||||||
|
flex-shrink: 0;
|
||||||
|
width: auto;
|
||||||
}
|
}
|
||||||
.oathhammer .attributes-grid {
|
.oathhammer .attributes-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
@@ -294,15 +429,22 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 2px;
|
gap: 2px;
|
||||||
}
|
}
|
||||||
.oathhammer .character-arcane-stress .flexrow {
|
.oathhammer .character-arcane-stress .stress-inputs {
|
||||||
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
|
.oathhammer .character-arcane-stress div.form-group {
|
||||||
|
display: contents;
|
||||||
|
}
|
||||||
.oathhammer .character-arcane-stress input {
|
.oathhammer .character-arcane-stress input {
|
||||||
min-width: 3rem;
|
width: 2.8rem;
|
||||||
max-width: 3rem;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
.oathhammer .character-arcane-stress span {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
.oathhammer .defense-display {
|
.oathhammer .defense-display {
|
||||||
min-width: 3rem;
|
min-width: 3rem;
|
||||||
max-width: 3rem;
|
max-width: 3rem;
|
||||||
@@ -328,50 +470,136 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
.oathhammer .item-entry {
|
.oathhammer .item-list-header {
|
||||||
display: flex;
|
display: grid;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 6px;
|
gap: 4px;
|
||||||
padding: 3px 4px;
|
padding: 2px 4px 3px;
|
||||||
|
border-bottom: 1px solid #535128;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
font-family: "BlueDragon", "Palatino Linotype", serif;
|
||||||
|
font-size: calc(0.82rem * 0.9);
|
||||||
|
color: #084a74;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list-header span {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list-header .col-name {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.oathhammer .item-entry {
|
||||||
|
display: grid;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
padding: 2px 4px;
|
||||||
border-bottom: 1px solid rgba(83, 81, 40, 0.2);
|
border-bottom: 1px solid rgba(83, 81, 40, 0.2);
|
||||||
}
|
}
|
||||||
.oathhammer .item-entry:hover {
|
.oathhammer .item-entry:hover {
|
||||||
background-color: rgba(8, 74, 116, 0.08);
|
background-color: rgba(8, 74, 116, 0.08);
|
||||||
}
|
}
|
||||||
.oathhammer .item-entry .item-img {
|
.oathhammer .item-entry .item-img {
|
||||||
height: 24px;
|
|
||||||
width: 24px;
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
border: 1px solid #535128;
|
border: 1px solid #535128;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
-o-object-fit: cover;
|
-o-object-fit: cover;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
|
align-self: center;
|
||||||
|
justify-self: center;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.oathhammer .item-entry .item-name {
|
.oathhammer .item-entry .item-name {
|
||||||
flex: 1;
|
|
||||||
font-family: "Calibri", "Segoe UI", sans-serif;
|
font-family: "Calibri", "Segoe UI", sans-serif;
|
||||||
font-size: 0.82rem;
|
font-size: 0.82rem;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
min-width: 0;
|
||||||
}
|
}
|
||||||
.oathhammer .item-entry .item-detail {
|
.oathhammer .item-entry .item-detail {
|
||||||
font-size: calc(0.82rem * 0.9);
|
font-size: calc(0.82rem * 0.9);
|
||||||
color: #535128;
|
color: #535128;
|
||||||
min-width: 4rem;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
.oathhammer .item-entry .item-type {
|
.oathhammer .item-entry .item-type {
|
||||||
font-size: calc(0.82rem * 0.85);
|
font-size: calc(0.82rem * 0.9);
|
||||||
color: #084a74;
|
color: #084a74;
|
||||||
min-width: 6rem;
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
.oathhammer .item-entry a {
|
.oathhammer .item-entry .item-equipped {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.oathhammer .item-entry .item-equipped input[type="checkbox"] {
|
||||||
|
width: 0.95rem;
|
||||||
|
height: 0.95rem;
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.oathhammer .item-entry .item-actions {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
.oathhammer .item-entry .item-actions a {
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
transition: opacity 0.2s;
|
transition: opacity 0.2s;
|
||||||
|
font-size: calc(0.82rem * 0.85);
|
||||||
}
|
}
|
||||||
.oathhammer .item-entry a:hover {
|
.oathhammer .item-entry .item-actions a:hover {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
.oathhammer .item-entry a:hover {
|
.oathhammer .item-entry .item-actions a:hover {
|
||||||
color: #084a74;
|
color: #084a74;
|
||||||
}
|
}
|
||||||
|
.oathhammer .item-list--weapon .item-list-header,
|
||||||
|
.oathhammer .item-list--weapon .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 5.5rem 3rem 1.8rem 3.5rem;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list--armor .item-list-header,
|
||||||
|
.oathhammer .item-list--armor .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 3.5rem 5rem 1.8rem 3.5rem;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list--ammo .item-list-header,
|
||||||
|
.oathhammer .item-list--ammo .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 4rem 3.5rem;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list--spell .item-list-header,
|
||||||
|
.oathhammer .item-list--spell .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 3rem 6rem 3rem 3.5rem;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list--miracle .item-list-header,
|
||||||
|
.oathhammer .item-list--miracle .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 4.5rem 3.5rem;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list--equipment .item-list-header,
|
||||||
|
.oathhammer .item-list--equipment .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 5rem 3rem 3.5rem;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list--magic-item .item-list-header,
|
||||||
|
.oathhammer .item-list--magic-item .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 5rem 3.5rem;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list--condition .item-list-header,
|
||||||
|
.oathhammer .item-list--condition .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 5.5rem 3.5rem;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list--ability .item-list-header,
|
||||||
|
.oathhammer .item-list--ability .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 6rem 3.5rem;
|
||||||
|
}
|
||||||
|
.oathhammer .item-list--oath .item-list-header,
|
||||||
|
.oathhammer .item-list--oath .item-entry {
|
||||||
|
grid-template-columns: 24px 1fr 5.5rem 3.5rem;
|
||||||
|
}
|
||||||
.oathhammer .no-items {
|
.oathhammer .no-items {
|
||||||
color: var(--color-dark-5);
|
color: var(--color-dark-5);
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
|
|||||||
21
lang/en.json
21
lang/en.json
@@ -242,11 +242,28 @@
|
|||||||
"Bane": "Bane",
|
"Bane": "Bane",
|
||||||
"Skill": "Skill",
|
"Skill": "Skill",
|
||||||
"SkillRank": "Rank",
|
"SkillRank": "Rank",
|
||||||
"TotalDice": "Total Dice",
|
"SkillModifier": "Mod",
|
||||||
|
"TotalDice": "Total",
|
||||||
|
"ColorDice": "Color",
|
||||||
"DropLineage": "Drop Lineage Here",
|
"DropLineage": "Drop Lineage Here",
|
||||||
"DropClass": "Drop Class Here",
|
"DropClass": "Drop Class Here",
|
||||||
"Traits": "Traits",
|
"Traits": "Traits",
|
||||||
"Features": "Features"
|
"Features": "Features",
|
||||||
|
"Name": "Name",
|
||||||
|
"Type": "Type",
|
||||||
|
"Damage": "Damage",
|
||||||
|
"Tradition": "Tradition",
|
||||||
|
"Piety": "Piety",
|
||||||
|
"Quantity": "Qty",
|
||||||
|
"Rarity": "Rarity",
|
||||||
|
"Penalty": "Penalty",
|
||||||
|
"Equipped": "Eq.",
|
||||||
|
"XPCurrent": "Current XP"
|
||||||
|
},
|
||||||
|
"ColorDice": {
|
||||||
|
"White": "White (4+)",
|
||||||
|
"Red": "Red (3+)",
|
||||||
|
"Black": "Black (2+)"
|
||||||
},
|
},
|
||||||
"NewItem": {
|
"NewItem": {
|
||||||
"Weapon": "New Weapon",
|
"Weapon": "New Weapon",
|
||||||
|
|||||||
@@ -67,15 +67,106 @@
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 4px;
|
gap: 6px;
|
||||||
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-name {
|
.character-name {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
|
border-bottom: 1px solid @color-olive;
|
||||||
|
padding-bottom: 4px;
|
||||||
|
|
||||||
input { flex: 1; }
|
input {
|
||||||
|
flex: 1;
|
||||||
|
font-family: @font-primary;
|
||||||
|
font-size: @font-size-lg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.character-identity-bar {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.identity-slot {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
padding: 2px 6px;
|
||||||
|
border: 1px solid @color-olive;
|
||||||
|
border-radius: 3px;
|
||||||
|
background: rgba(0,0,0,0.15);
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
min-width: 6rem;
|
||||||
|
min-height: 1.6rem;
|
||||||
|
|
||||||
|
&.empty {
|
||||||
|
opacity: 0.6;
|
||||||
|
font-style: italic;
|
||||||
|
border-style: dashed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.identity-img {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: 2px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.identity-name {
|
||||||
|
flex: 1;
|
||||||
|
font-family: @font-secondary;
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slot-icon { font-size: @font-size-sm; opacity: 0.6; }
|
||||||
|
.slot-placeholder { font-size: @font-size-sm; }
|
||||||
|
|
||||||
|
a { font-size: @font-size-sm; opacity: 0.7; &:hover { opacity: 1; } }
|
||||||
|
}
|
||||||
|
|
||||||
|
.identity-xp {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 3px;
|
||||||
|
margin-left: auto;
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
|
||||||
|
.xp-label {
|
||||||
|
font-family: @font-secondary;
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
color: @color-olive;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xp-sep { opacity: 0.6; }
|
||||||
|
|
||||||
|
input {
|
||||||
|
width: 3rem;
|
||||||
|
text-align: center;
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
padding: 1px 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attributes + Arcane Stress side by side
|
||||||
|
.attributes-stress-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 6px;
|
||||||
|
|
||||||
|
.character-attributes { flex: 1; }
|
||||||
|
|
||||||
|
.character-arcane-stress {
|
||||||
|
flex-shrink: 0;
|
||||||
|
width: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,17 +277,21 @@
|
|||||||
gap: 2px;
|
gap: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Arcane Stress narrow inputs
|
// Arcane Stress compact
|
||||||
.character-arcane-stress {
|
.character-arcane-stress {
|
||||||
.flexrow {
|
.stress-inputs {
|
||||||
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
|
// formInput renders a <div class="form-group"> — flatten it
|
||||||
|
div.form-group { display: contents; }
|
||||||
input {
|
input {
|
||||||
min-width: 3rem;
|
width: 2.8rem;
|
||||||
max-width: 3rem;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
span { opacity: 0.6; }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Defense display
|
// Defense display
|
||||||
|
|||||||
@@ -122,7 +122,7 @@
|
|||||||
.skills-header,
|
.skills-header,
|
||||||
.skill-row {
|
.skill-row {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 3rem 3rem;
|
grid-template-columns: 1fr 2.5rem 2.5rem 2.5rem 5.5rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
@@ -135,6 +135,9 @@
|
|||||||
border-bottom: 1px solid @color-olive;
|
border-bottom: 1px solid @color-olive;
|
||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
padding-bottom: 2px;
|
padding-bottom: 2px;
|
||||||
|
|
||||||
|
span { text-align: center; }
|
||||||
|
.skill-name-col { text-align: left; }
|
||||||
}
|
}
|
||||||
|
|
||||||
.skill-row {
|
.skill-row {
|
||||||
@@ -144,8 +147,46 @@
|
|||||||
font-size: @font-size-sm;
|
font-size: @font-size-sm;
|
||||||
}
|
}
|
||||||
|
|
||||||
.skill-rank-col input {
|
.skill-rank-col select,
|
||||||
|
.skill-modifier-col input {
|
||||||
|
width: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
padding: 1px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skill-color-col {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 2px;
|
||||||
|
|
||||||
|
.color-dice-dot {
|
||||||
|
display: inline-block;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
border-radius: 50%;
|
||||||
|
flex-shrink: 0;
|
||||||
|
border: 1px solid rgba(0,0,0,0.3);
|
||||||
|
|
||||||
|
&.color-dice-white { background: #f0f0f0; }
|
||||||
|
&.color-dice-red { background: #d9534f; }
|
||||||
|
&.color-dice-black { background: #222; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-dice-select {
|
||||||
|
flex: 1;
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
padding: 1px 1px;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="number"] {
|
||||||
|
width: 2.2rem;
|
||||||
|
text-align: center;
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
padding: 1px 2px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.skill-total {
|
.skill-total {
|
||||||
|
|||||||
@@ -10,45 +10,153 @@
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-entry {
|
// Header row shared by all lists
|
||||||
display: flex;
|
.item-list-header {
|
||||||
|
display: grid;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 6px;
|
gap: 4px;
|
||||||
padding: 3px 4px;
|
padding: 2px 4px 3px;
|
||||||
border-bottom: 1px solid @color-olive-faint;
|
border-bottom: 1px solid @color-olive;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
font-family: @font-secondary;
|
||||||
|
font-size: @font-size-xs;
|
||||||
|
color: @color-blue;
|
||||||
|
span { text-align: center; }
|
||||||
|
.col-name { text-align: left; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Data row
|
||||||
|
.item-entry {
|
||||||
|
display: grid;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-bottom: 1px solid @color-olive-faint;
|
||||||
&:hover { background-color: @color-blue-hover; }
|
&:hover { background-color: @color-blue-hover; }
|
||||||
|
|
||||||
.item-img {
|
.item-img {
|
||||||
height: @item-img-size;
|
|
||||||
width: @item-img-size;
|
width: @item-img-size;
|
||||||
|
height: @item-img-size;
|
||||||
border: 1px solid @color-olive;
|
border: 1px solid @color-olive;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
|
align-self: center;
|
||||||
|
justify-self: center;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name {
|
.item-name {
|
||||||
flex: 1;
|
|
||||||
font-family: @font-body;
|
font-family: @font-body;
|
||||||
font-size: @font-size-base;
|
font-size: @font-size-base;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-detail {
|
.item-detail {
|
||||||
font-size: @font-size-xs;
|
font-size: @font-size-xs;
|
||||||
color: @color-olive;
|
color: @color-olive;
|
||||||
min-width: 4rem;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-type {
|
.item-type {
|
||||||
font-size: @font-size-sm;
|
font-size: @font-size-xs;
|
||||||
color: @color-blue;
|
color: @color-blue;
|
||||||
min-width: 6rem;
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
.item-equipped {
|
||||||
.transition-opacity();
|
display: flex;
|
||||||
&:hover { color: @color-blue; }
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
input[type="checkbox"] {
|
||||||
|
width: 0.95rem;
|
||||||
|
height: 0.95rem;
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-actions {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
gap: 4px;
|
||||||
|
a {
|
||||||
|
.transition-opacity();
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
&:hover { color: @color-blue; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── Per-list grid templates ──────────────────────────────
|
||||||
|
// Format: [img] [name] [detail cols...] [equipped?] [actions]
|
||||||
|
|
||||||
|
.item-list--weapon {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 5.5rem 3rem 1.8rem 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-list--armor {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 3.5rem 5rem 1.8rem 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-list--ammo {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 4rem 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-list--spell {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 3rem 6rem 3rem 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-list--miracle {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 4.5rem 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-list--equipment {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 5rem 3rem 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-list--magic-item {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 5rem 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-list--condition {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 5.5rem 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-list--ability {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 6rem 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-list--oath {
|
||||||
|
.item-list-header, .item-entry {
|
||||||
|
grid-template-columns: @item-img-size 1fr 5.5rem 3.5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,10 @@ export default class OathHammerCharacterSheet extends OathHammerActorSheet {
|
|||||||
async _prepareContext() {
|
async _prepareContext() {
|
||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
context.tabs = this.#getTabs()
|
context.tabs = this.#getTabs()
|
||||||
|
// lineage/class/experience available to all parts (header + identity tab)
|
||||||
|
const doc = this.document
|
||||||
|
context.lineage = doc.itemTypes.lineage?.[0] ?? null
|
||||||
|
context.characterClass = doc.itemTypes["class"]?.[0] ?? null
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,8 +72,6 @@ export default class OathHammerCharacterSheet extends OathHammerActorSheet {
|
|||||||
break
|
break
|
||||||
case "identity":
|
case "identity":
|
||||||
context.tab = context.tabs.identity
|
context.tab = context.tabs.identity
|
||||||
context.lineage = doc.itemTypes.lineage?.[0] ?? null
|
|
||||||
context.characterClass = doc.itemTypes["class"]?.[0] ?? null
|
|
||||||
context.abilities = doc.itemTypes.ability
|
context.abilities = doc.itemTypes.ability
|
||||||
context.oaths = doc.itemTypes.oath
|
context.oaths = doc.itemTypes.oath
|
||||||
break
|
break
|
||||||
@@ -89,14 +91,26 @@ export default class OathHammerCharacterSheet extends OathHammerActorSheet {
|
|||||||
attribute: attr,
|
attribute: attr,
|
||||||
label: `OATHHAMMER.Attribute.${attr.charAt(0).toUpperCase()}${attr.slice(1)}`,
|
label: `OATHHAMMER.Attribute.${attr.charAt(0).toUpperCase()}${attr.slice(1)}`,
|
||||||
attrRank: attrRanks[attr],
|
attrRank: attrRanks[attr],
|
||||||
skillData: skillKeys.map(skillKey => ({
|
skillData: skillKeys.map(skillKey => {
|
||||||
key: skillKey,
|
const sk = sys.skills[skillKey]
|
||||||
label: SYSTEM.SKILLS[skillKey].label,
|
return {
|
||||||
rank: sys.skills[skillKey].rank,
|
key: skillKey,
|
||||||
name: `system.skills.${skillKey}.rank`,
|
label: SYSTEM.SKILLS[skillKey].label,
|
||||||
total: attrRanks[attr] + sys.skills[skillKey].rank,
|
rank: sk.rank,
|
||||||
field: skillSchemaFields[skillKey].fields.rank,
|
modifier: sk.modifier,
|
||||||
}))
|
colorDice: sk.colorDice,
|
||||||
|
colorDiceType: sk.colorDiceType,
|
||||||
|
rankName: `system.skills.${skillKey}.rank`,
|
||||||
|
modifierName: `system.skills.${skillKey}.modifier`,
|
||||||
|
colorDiceName: `system.skills.${skillKey}.colorDice`,
|
||||||
|
colorDiceTypeName: `system.skills.${skillKey}.colorDiceType`,
|
||||||
|
rankOptions: [0,1,2,3,4].map(v => ({ value: v, label: String(v), selected: v === sk.rank })),
|
||||||
|
total: attrRanks[attr] + sk.rank,
|
||||||
|
// legacy - kept for formInput compatibility
|
||||||
|
name: `system.skills.${skillKey}.rank`,
|
||||||
|
field: skillSchemaFields[skillKey].fields.rank,
|
||||||
|
}
|
||||||
|
})
|
||||||
}))
|
}))
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -125,6 +139,36 @@ export default class OathHammerCharacterSheet extends OathHammerActorSheet {
|
|||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Auto-fill colorDice count when color type changes */
|
||||||
|
static #COLOR_THRESHOLDS = { white: 4, red: 3, black: 2 }
|
||||||
|
|
||||||
|
_onRender(context, options) {
|
||||||
|
super._onRender?.(context, options)
|
||||||
|
|
||||||
|
// Color dice auto-fill
|
||||||
|
this.element.querySelectorAll('select.color-dice-select').forEach(select => {
|
||||||
|
select.addEventListener('change', event => {
|
||||||
|
const threshold = OathHammerCharacterSheet.#COLOR_THRESHOLDS[event.target.value] ?? 4
|
||||||
|
const countInput = event.target.closest('.skill-color-col')?.querySelector('input[type="number"]')
|
||||||
|
if (countInput) {
|
||||||
|
countInput.value = threshold
|
||||||
|
countInput.dispatchEvent(new Event('change', { bubbles: true }))
|
||||||
|
}
|
||||||
|
const dot = event.target.closest('.skill-color-col')?.querySelector('.color-dice-dot')
|
||||||
|
if (dot) dot.className = `color-dice-dot color-dice-${event.target.value}`
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// Equipped checkbox — directly updates the item
|
||||||
|
this.element.querySelectorAll('input.item-equipped-cb').forEach(cb => {
|
||||||
|
cb.addEventListener('change', event => {
|
||||||
|
const itemId = event.target.dataset.itemId
|
||||||
|
const item = this.document.items.get(itemId)
|
||||||
|
if (item) item.update({ 'system.equipped': event.target.checked })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
async _onDrop(event) {
|
async _onDrop(event) {
|
||||||
if (!this.isEditable) return
|
if (!this.isEditable) return
|
||||||
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event)
|
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event)
|
||||||
|
|||||||
@@ -20,9 +20,15 @@ export default class OathHammerCharacter extends foundry.abstract.TypeDataModel
|
|||||||
fate: attributeField()
|
fate: attributeField()
|
||||||
})
|
})
|
||||||
|
|
||||||
// Skills: 26 skills each with a rank (0–4). Grit.max = resilience.rank + toughness.rank.
|
// Skills: 26 skills each with a rank (0–4), a bonus/penalty modifier, and color dice.
|
||||||
|
// Total dice = attr rank + skill rank. Modifier = bonus (+) or penalty (-) dice.
|
||||||
|
// Color dice: type (white 4+, red 3+, black 2+) + count of colored dice in the pool.
|
||||||
const skillField = () => new fields.SchemaField({
|
const skillField = () => new fields.SchemaField({
|
||||||
rank: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 4 })
|
rank: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 4 }),
|
||||||
|
modifier: new fields.NumberField({ required: true, nullable: false, integer: true, initial: 0 }),
|
||||||
|
colorDiceType: new fields.StringField({ required: true, nullable: false, initial: "white",
|
||||||
|
choices: { white: "OATHHAMMER.ColorDice.White", red: "OATHHAMMER.ColorDice.Red", black: "OATHHAMMER.ColorDice.Black" } }),
|
||||||
|
colorDice: new fields.NumberField({ ...requiredInteger, initial: 4, min: 0 }),
|
||||||
})
|
})
|
||||||
schema.skills = new fields.SchemaField({
|
schema.skills = new fields.SchemaField({
|
||||||
academics: skillField(),
|
academics: skillField(),
|
||||||
|
|||||||
@@ -21,18 +21,30 @@
|
|||||||
{{#unless isPlayMode}}<a data-action="createWeapon" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
|
{{#unless isPlayMode}}<a data-action="createWeapon" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
|
||||||
</legend>
|
</legend>
|
||||||
{{#if weapons.length}}
|
{{#if weapons.length}}
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--weapon">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Damage"}}</span>
|
||||||
|
<span>AP</span>
|
||||||
|
<span title="{{localize "OATHHAMMER.Label.Equipped"}}"><i class="fa-solid fa-shield-halved"></i></span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each weapons as |weapon|}}
|
{{#each weapons as |weapon|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}">
|
<li class="item-entry" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}">
|
||||||
<img src="{{weapon.img}}" class="item-img" />
|
<img src="{{weapon.img}}" class="item-img" />
|
||||||
<span class="item-name">{{weapon.name}}</span>
|
<span class="item-name">{{weapon.name}}</span>
|
||||||
<span class="item-detail">{{weapon.system.damageLabel}}</span>
|
<span class="item-detail">{{weapon.system.damageLabel}}</span>
|
||||||
<span class="item-detail">AP: {{weapon.system.ap}}</span>
|
<span class="item-detail">{{weapon.system.ap}}</span>
|
||||||
{{formField weapon.system.schema.fields.equipped value=weapon.system.equipped name="system.equipped"}}
|
<div class="item-equipped">
|
||||||
{{#unless ../isPlayMode}}
|
<input type="checkbox" class="item-equipped-cb" data-item-id="{{weapon.id}}" {{checked weapon.system.equipped}} {{#if ../isPlayMode}}disabled{{/if}}>
|
||||||
<a data-action="edit" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
</div>
|
||||||
<a data-action="delete" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<div class="item-actions">
|
||||||
{{/unless}}
|
{{#unless ../isPlayMode}}
|
||||||
|
<a data-action="edit" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
|
<a data-action="delete" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -44,18 +56,30 @@
|
|||||||
<legend>{{localize "OATHHAMMER.Label.Armor"}}
|
<legend>{{localize "OATHHAMMER.Label.Armor"}}
|
||||||
</legend>
|
</legend>
|
||||||
{{#if armors.length}}
|
{{#if armors.length}}
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--armor">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>AV</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Penalty"}}</span>
|
||||||
|
<span title="{{localize "OATHHAMMER.Label.Equipped"}}"><i class="fa-solid fa-shield-halved"></i></span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each armors as |armor|}}
|
{{#each armors as |armor|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}">
|
<li class="item-entry" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}">
|
||||||
<img src="{{armor.img}}" class="item-img" />
|
<img src="{{armor.img}}" class="item-img" />
|
||||||
<span class="item-name">{{armor.name}}</span>
|
<span class="item-name">{{armor.name}}</span>
|
||||||
<span class="item-detail">AV: {{armor.system.armorValue}}</span>
|
<span class="item-detail">{{armor.system.armorValue}}</span>
|
||||||
{{#if armor.system.penalty}}<span class="item-detail">{{armor.system.penalty}}</span>{{/if}}
|
<span class="item-detail">{{#if armor.system.penalty}}{{armor.system.penalty}}{{else}}—{{/if}}</span>
|
||||||
{{formField armor.system.schema.fields.equipped value=armor.system.equipped name="system.equipped"}}
|
<div class="item-equipped">
|
||||||
{{#unless ../isPlayMode}}
|
<input type="checkbox" class="item-equipped-cb" data-item-id="{{armor.id}}" {{checked armor.system.equipped}} {{#if ../isPlayMode}}disabled{{/if}}>
|
||||||
<a data-action="edit" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
</div>
|
||||||
<a data-action="delete" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<div class="item-actions">
|
||||||
{{/unless}}
|
{{#unless ../isPlayMode}}
|
||||||
|
<a data-action="edit" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
|
<a data-action="delete" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -67,16 +91,24 @@
|
|||||||
{{#if ammunition.length}}
|
{{#if ammunition.length}}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "OATHHAMMER.Label.Ammunition"}}</legend>
|
<legend>{{localize "OATHHAMMER.Label.Ammunition"}}</legend>
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--ammo">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Quantity"}}</span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each ammunition as |ammo|}}
|
{{#each ammunition as |ammo|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{ammo.id}}" data-item-uuid="{{ammo.uuid}}">
|
<li class="item-entry" data-item-id="{{ammo.id}}" data-item-uuid="{{ammo.uuid}}">
|
||||||
<img src="{{ammo.img}}" class="item-img" />
|
<img src="{{ammo.img}}" class="item-img" />
|
||||||
<span class="item-name">{{ammo.name}}</span>
|
<span class="item-name">{{ammo.name}}</span>
|
||||||
<span class="item-detail">{{ammo.system.quantity}}</span>
|
<span class="item-detail">×{{ammo.system.quantity}}</span>
|
||||||
{{#unless ../isPlayMode}}
|
<div class="item-actions">
|
||||||
<a data-action="edit" data-item-id="{{ammo.id}}" data-item-uuid="{{ammo.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
{{#unless ../isPlayMode}}
|
||||||
<a data-action="delete" data-item-id="{{ammo.id}}" data-item-uuid="{{ammo.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<a data-action="edit" data-item-id="{{ammo.id}}" data-item-uuid="{{ammo.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
{{/unless}}
|
<a data-action="delete" data-item-id="{{ammo.id}}" data-item-uuid="{{ammo.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -4,17 +4,26 @@
|
|||||||
{{#unless isPlayMode}}<a data-action="createEquipment" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
|
{{#unless isPlayMode}}<a data-action="createEquipment" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
|
||||||
</legend>
|
</legend>
|
||||||
{{#if equipment.length}}
|
{{#if equipment.length}}
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--equipment">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Type"}}</span>
|
||||||
|
<span>×</span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each equipment as |equip|}}
|
{{#each equipment as |equip|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{equip.id}}" data-item-uuid="{{equip.uuid}}">
|
<li class="item-entry" data-item-id="{{equip.id}}" data-item-uuid="{{equip.uuid}}">
|
||||||
<img src="{{equip.img}}" class="item-img" />
|
<img src="{{equip.img}}" class="item-img" />
|
||||||
<span class="item-name">{{equip.name}}</span>
|
<span class="item-name">{{equip.name}}</span>
|
||||||
<span class="item-detail">{{localize equip.system.itemType}}</span>
|
<span class="item-type">{{localize equip.system.itemType}}</span>
|
||||||
<span class="item-detail">×{{equip.system.quantity}}</span>
|
<span class="item-detail">{{equip.system.quantity}}</span>
|
||||||
{{#unless ../isPlayMode}}
|
<div class="item-actions">
|
||||||
<a data-action="edit" data-item-id="{{equip.id}}" data-item-uuid="{{equip.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
{{#unless ../isPlayMode}}
|
||||||
<a data-action="delete" data-item-id="{{equip.id}}" data-item-uuid="{{equip.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<a data-action="edit" data-item-id="{{equip.id}}" data-item-uuid="{{equip.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
{{/unless}}
|
<a data-action="delete" data-item-id="{{equip.id}}" data-item-uuid="{{equip.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -25,16 +34,24 @@
|
|||||||
{{#if magicItems.length}}
|
{{#if magicItems.length}}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "OATHHAMMER.Label.MagicItems"}}</legend>
|
<legend>{{localize "OATHHAMMER.Label.MagicItems"}}</legend>
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--magic-item">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Rarity"}}</span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each magicItems as |mi|}}
|
{{#each magicItems as |mi|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{mi.id}}" data-item-uuid="{{mi.uuid}}">
|
<li class="item-entry" data-item-id="{{mi.id}}" data-item-uuid="{{mi.uuid}}">
|
||||||
<img src="{{mi.img}}" class="item-img" />
|
<img src="{{mi.img}}" class="item-img" />
|
||||||
<span class="item-name">{{mi.name}}</span>
|
<span class="item-name">{{mi.name}}</span>
|
||||||
<span class="item-detail">{{localize mi.system.rarity}}</span>
|
<span class="item-type">{{localize mi.system.rarity}}</span>
|
||||||
{{#unless ../isPlayMode}}
|
<div class="item-actions">
|
||||||
<a data-action="edit" data-item-id="{{mi.id}}" data-item-uuid="{{mi.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
{{#unless ../isPlayMode}}
|
||||||
<a data-action="delete" data-item-id="{{mi.id}}" data-item-uuid="{{mi.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<a data-action="edit" data-item-id="{{mi.id}}" data-item-uuid="{{mi.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
{{/unless}}
|
<a data-action="delete" data-item-id="{{mi.id}}" data-item-uuid="{{mi.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -43,19 +60,44 @@
|
|||||||
{{#if conditions.length}}
|
{{#if conditions.length}}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "OATHHAMMER.Label.Conditions"}}</legend>
|
<legend>{{localize "OATHHAMMER.Label.Conditions"}}</legend>
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--condition">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Type"}}</span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each conditions as |cond|}}
|
{{#each conditions as |cond|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{cond.id}}" data-item-uuid="{{cond.uuid}}">
|
<li class="item-entry" data-item-id="{{cond.id}}" data-item-uuid="{{cond.uuid}}">
|
||||||
<img src="{{cond.img}}" class="item-img" />
|
<img src="{{cond.img}}" class="item-img" />
|
||||||
<span class="item-name">{{cond.name}}</span>
|
<span class="item-name">{{cond.name}}</span>
|
||||||
<span class="item-detail">{{localize cond.system.conditionType}}</span>
|
<span class="item-type">{{localize cond.system.conditionType}}</span>
|
||||||
{{#unless ../isPlayMode}}
|
<div class="item-actions">
|
||||||
<a data-action="edit" data-item-id="{{cond.id}}" data-item-uuid="{{cond.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
{{#unless ../isPlayMode}}
|
||||||
<a data-action="delete" data-item-id="{{cond.id}}" data-item-uuid="{{cond.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<a data-action="edit" data-item-id="{{cond.id}}" data-item-uuid="{{cond.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
{{/unless}}
|
<a data-action="delete" data-item-id="{{cond.id}}" data-item-uuid="{{cond.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
<fieldset class="currency-bar">
|
||||||
|
<legend>{{localize "OATHHAMMER.Label.Currency"}}</legend>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div class="currency-item">
|
||||||
|
<label>{{localize "OATHHAMMER.Currency.GP"}}</label>
|
||||||
|
{{formInput systemFields.currency.fields.gold value=system.currency.gold name="system.currency.gold" disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
<div class="currency-item">
|
||||||
|
<label>{{localize "OATHHAMMER.Currency.SP"}}</label>
|
||||||
|
{{formInput systemFields.currency.fields.silver value=system.currency.silver name="system.currency.silver" disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
<div class="currency-item">
|
||||||
|
<label>{{localize "OATHHAMMER.Currency.CP"}}</label>
|
||||||
|
{{formInput systemFields.currency.fields.copper value=system.currency.copper name="system.currency.copper" disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -1,32 +1,4 @@
|
|||||||
<section data-tab="identity" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
|
<section data-tab="identity" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
|
||||||
<div class="identity-lineage-class flexrow">
|
|
||||||
<div class="item-slot lineage-slot {{#unless lineage}}empty{{/unless}}">
|
|
||||||
{{#if lineage}}
|
|
||||||
<img src="{{lineage.img}}" class="item-img" data-item-id="{{lineage.id}}" data-item-uuid="{{lineage.uuid}}" />
|
|
||||||
<span class="item-name">{{lineage.name}}</span>
|
|
||||||
{{#unless ../isPlayMode}}
|
|
||||||
<a data-action="edit" data-item-id="{{lineage.id}}" data-item-uuid="{{lineage.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
|
||||||
<a data-action="delete" data-item-id="{{lineage.id}}" data-item-uuid="{{lineage.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
|
||||||
{{/unless}}
|
|
||||||
{{else}}
|
|
||||||
<i class="fa-solid fa-person slot-icon"></i>
|
|
||||||
<span class="slot-placeholder">{{localize "OATHHAMMER.Label.DropLineage"}}</span>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
<div class="item-slot class-slot {{#unless characterClass}}empty{{/unless}}">
|
|
||||||
{{#if characterClass}}
|
|
||||||
<img src="{{characterClass.img}}" class="item-img" data-item-id="{{characterClass.id}}" data-item-uuid="{{characterClass.uuid}}" />
|
|
||||||
<span class="item-name">{{characterClass.name}}</span>
|
|
||||||
{{#unless ../isPlayMode}}
|
|
||||||
<a data-action="edit" data-item-id="{{characterClass.id}}" data-item-uuid="{{characterClass.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
|
||||||
<a data-action="delete" data-item-id="{{characterClass.id}}" data-item-uuid="{{characterClass.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
|
||||||
{{/unless}}
|
|
||||||
{{else}}
|
|
||||||
<i class="fa-solid fa-shield-halved slot-icon"></i>
|
|
||||||
<span class="slot-placeholder">{{localize "OATHHAMMER.Label.DropClass"}}</span>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "OATHHAMMER.Label.Biodata"}}</legend>
|
<legend>{{localize "OATHHAMMER.Label.Biodata"}}</legend>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
@@ -43,36 +15,27 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "OATHHAMMER.Label.Experience"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
<div class="form-group">
|
|
||||||
<label>{{localize "OATHHAMMER.Label.Level"}}</label>
|
|
||||||
{{formInput systemFields.experience.fields.level value=system.experience.level name="system.experience.level" disabled=isPlayMode}}
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>{{localize "OATHHAMMER.Label.XP"}}</label>
|
|
||||||
{{formInput systemFields.experience.fields.current value=system.experience.current name="system.experience.current" disabled=isPlayMode}}
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>{{localize "OATHHAMMER.Label.TotalXP"}}</label>
|
|
||||||
{{formInput systemFields.experience.fields.total value=system.experience.total name="system.experience.total" disabled=isPlayMode}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
{{#if abilities.length}}
|
{{#if abilities.length}}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "OATHHAMMER.Label.Abilities"}}</legend>
|
<legend>{{localize "OATHHAMMER.Label.Abilities"}}</legend>
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--ability">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Type"}}</span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each abilities as |ability|}}
|
{{#each abilities as |ability|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{ability.id}}" data-item-uuid="{{ability.uuid}}">
|
<li class="item-entry" data-item-id="{{ability.id}}" data-item-uuid="{{ability.uuid}}">
|
||||||
<img src="{{ability.img}}" class="item-img" />
|
<img src="{{ability.img}}" class="item-img" />
|
||||||
<span class="item-name">{{ability.name}}</span>
|
<span class="item-name">{{ability.name}}</span>
|
||||||
<span class="item-type">{{localize ability.system.abilityType}}</span>
|
<span class="item-type">{{localize ability.system.abilityType}}</span>
|
||||||
{{#unless ../isPlayMode}}
|
<div class="item-actions">
|
||||||
<a data-action="edit" data-item-id="{{ability.id}}" data-item-uuid="{{ability.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
{{#unless ../isPlayMode}}
|
||||||
<a data-action="delete" data-item-id="{{ability.id}}" data-item-uuid="{{ability.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<a data-action="edit" data-item-id="{{ability.id}}" data-item-uuid="{{ability.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
{{/unless}}
|
<a data-action="delete" data-item-id="{{ability.id}}" data-item-uuid="{{ability.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -81,16 +44,24 @@
|
|||||||
{{#if oaths.length}}
|
{{#if oaths.length}}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "OATHHAMMER.Label.Oaths"}}</legend>
|
<legend>{{localize "OATHHAMMER.Label.Oaths"}}</legend>
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--oath">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Type"}}</span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each oaths as |oath|}}
|
{{#each oaths as |oath|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{oath.id}}" data-item-uuid="{{oath.uuid}}">
|
<li class="item-entry" data-item-id="{{oath.id}}" data-item-uuid="{{oath.uuid}}">
|
||||||
<img src="{{oath.img}}" class="item-img" />
|
<img src="{{oath.img}}" class="item-img" />
|
||||||
<span class="item-name">{{oath.name}}</span>
|
<span class="item-name">{{oath.name}}</span>
|
||||||
<span class="item-type">{{localize oath.system.oathType}}</span>
|
<span class="item-type">{{localize oath.system.oathType}}</span>
|
||||||
{{#unless ../isPlayMode}}
|
<div class="item-actions">
|
||||||
<a data-action="edit" data-item-id="{{oath.id}}" data-item-uuid="{{oath.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
{{#unless ../isPlayMode}}
|
||||||
<a data-action="delete" data-item-id="{{oath.id}}" data-item-uuid="{{oath.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<a data-action="edit" data-item-id="{{oath.id}}" data-item-uuid="{{oath.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
{{/unless}}
|
<a data-action="delete" data-item-id="{{oath.id}}" data-item-uuid="{{oath.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -11,18 +11,28 @@
|
|||||||
{{#unless isPlayMode}}<a data-action="createSpell" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
|
{{#unless isPlayMode}}<a data-action="createSpell" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
|
||||||
</legend>
|
</legend>
|
||||||
{{#if spells.length}}
|
{{#if spells.length}}
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--spell">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>Lv.</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Tradition"}}</span>
|
||||||
|
<span>AS</span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each spells as |spell|}}
|
{{#each spells as |spell|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{spell.id}}" data-item-uuid="{{spell.uuid}}">
|
<li class="item-entry" data-item-id="{{spell.id}}" data-item-uuid="{{spell.uuid}}">
|
||||||
<img src="{{spell.img}}" class="item-img" />
|
<img src="{{spell.img}}" class="item-img" />
|
||||||
<span class="item-name">{{spell.name}}</span>
|
<span class="item-name">{{spell.name}}</span>
|
||||||
<span class="item-detail">Lv.{{spell.system.level}}</span>
|
<span class="item-detail">{{spell.system.level}}</span>
|
||||||
<span class="item-detail">{{localize spell.system.tradition}}</span>
|
<span class="item-type">{{localize spell.system.tradition}}</span>
|
||||||
<span class="item-detail">AS: {{spell.system.arcaneStress}}</span>
|
<span class="item-detail">{{spell.system.arcaneStress}}</span>
|
||||||
{{#unless ../isPlayMode}}
|
<div class="item-actions">
|
||||||
<a data-action="edit" data-item-id="{{spell.id}}" data-item-uuid="{{spell.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
{{#unless ../isPlayMode}}
|
||||||
<a data-action="delete" data-item-id="{{spell.id}}" data-item-uuid="{{spell.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<a data-action="edit" data-item-id="{{spell.id}}" data-item-uuid="{{spell.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
{{/unless}}
|
<a data-action="delete" data-item-id="{{spell.id}}" data-item-uuid="{{spell.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -35,16 +45,24 @@
|
|||||||
{{#unless isPlayMode}}<a data-action="createMiracle" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
|
{{#unless isPlayMode}}<a data-action="createMiracle" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
|
||||||
</legend>
|
</legend>
|
||||||
{{#if miracles.length}}
|
{{#if miracles.length}}
|
||||||
<ul class="item-list">
|
<ul class="item-list item-list--miracle">
|
||||||
|
<li class="item-list-header">
|
||||||
|
<span></span>
|
||||||
|
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
|
||||||
|
<span>{{localize "OATHHAMMER.Label.Piety"}}</span>
|
||||||
|
<span></span>
|
||||||
|
</li>
|
||||||
{{#each miracles as |miracle|}}
|
{{#each miracles as |miracle|}}
|
||||||
<li class="item-entry flexrow" data-item-id="{{miracle.id}}" data-item-uuid="{{miracle.uuid}}">
|
<li class="item-entry" data-item-id="{{miracle.id}}" data-item-uuid="{{miracle.uuid}}">
|
||||||
<img src="{{miracle.img}}" class="item-img" />
|
<img src="{{miracle.img}}" class="item-img" />
|
||||||
<span class="item-name">{{miracle.name}}</span>
|
<span class="item-name">{{miracle.name}}</span>
|
||||||
<span class="item-detail">Piety: {{miracle.system.piety}}</span>
|
<span class="item-detail">{{miracle.system.piety}}</span>
|
||||||
{{#unless ../isPlayMode}}
|
<div class="item-actions">
|
||||||
<a data-action="edit" data-item-id="{{miracle.id}}" data-item-uuid="{{miracle.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
{{#unless ../isPlayMode}}
|
||||||
<a data-action="delete" data-item-id="{{miracle.id}}" data-item-uuid="{{miracle.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
<a data-action="edit" data-item-id="{{miracle.id}}" data-item-uuid="{{miracle.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
{{/unless}}
|
<a data-action="delete" data-item-id="{{miracle.id}}" data-item-uuid="{{miracle.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -36,42 +36,63 @@
|
|||||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<fieldset class="character-attributes character-attributes-{{ifThen isPlayMode 'play' 'edit'}}">
|
<div class="character-identity-bar">
|
||||||
<legend>{{localize "OATHHAMMER.Label.Attributes"}}</legend>
|
<div class="identity-slot lineage-slot {{#unless lineage}}empty{{/unless}}" data-drop-type="lineage">
|
||||||
<div class="attributes-grid">
|
{{#if lineage}}
|
||||||
{{#each system.attributes as |attr key|}}
|
<img src="{{lineage.img}}" class="identity-img" data-item-id="{{lineage.id}}" data-item-uuid="{{lineage.uuid}}" />
|
||||||
<div class="attribute-box">
|
<span class="identity-name">{{lineage.name}}</span>
|
||||||
<label>{{localize (concat "OATHHAMMER.Attribute." (capitalize key))}}</label>
|
{{#unless isPlayMode}}
|
||||||
<input type="number" name="system.attributes.{{key}}.rank" value="{{attr.rank}}" min="1" max="4" {{#if ../isPlayMode}}disabled{{/if}}>
|
<a data-action="edit" data-item-id="{{lineage.id}}" data-item-uuid="{{lineage.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
|
<a data-action="delete" data-item-id="{{lineage.id}}" data-item-uuid="{{lineage.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
{{else}}
|
||||||
|
<i class="fa-solid fa-person slot-icon"></i>
|
||||||
|
<span class="slot-placeholder">{{localize "OATHHAMMER.Label.DropLineage"}}</span>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="identity-slot class-slot {{#unless characterClass}}empty{{/unless}}" data-drop-type="class">
|
||||||
|
{{#if characterClass}}
|
||||||
|
<img src="{{characterClass.img}}" class="identity-img" data-item-id="{{characterClass.id}}" data-item-uuid="{{characterClass.uuid}}" />
|
||||||
|
<span class="identity-name">{{characterClass.name}}</span>
|
||||||
|
{{#unless isPlayMode}}
|
||||||
|
<a data-action="edit" data-item-id="{{characterClass.id}}" data-item-uuid="{{characterClass.uuid}}"><i class="fa-solid fa-edit"></i></a>
|
||||||
|
<a data-action="delete" data-item-id="{{characterClass.id}}" data-item-uuid="{{characterClass.uuid}}"><i class="fa-solid fa-trash"></i></a>
|
||||||
|
{{/unless}}
|
||||||
|
{{else}}
|
||||||
|
<i class="fa-solid fa-shield-halved slot-icon"></i>
|
||||||
|
<span class="slot-placeholder">{{localize "OATHHAMMER.Label.DropClass"}}</span>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="identity-xp">
|
||||||
|
<span class="xp-label">{{localize "OATHHAMMER.Label.Level"}}</span>
|
||||||
|
{{formInput systemFields.experience.fields.level value=system.experience.level name="system.experience.level" disabled=isPlayMode}}
|
||||||
|
<span class="xp-label">{{localize "OATHHAMMER.Label.XP"}}</span>
|
||||||
|
{{formInput systemFields.experience.fields.current value=system.experience.current name="system.experience.current" disabled=isPlayMode}}
|
||||||
|
<span class="xp-sep">/</span>
|
||||||
|
{{formInput systemFields.experience.fields.total value=system.experience.total name="system.experience.total" disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="attributes-stress-row">
|
||||||
|
<fieldset class="character-attributes character-attributes-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
|
<legend>{{localize "OATHHAMMER.Label.Attributes"}}</legend>
|
||||||
|
<div class="attributes-grid">
|
||||||
|
{{#each system.attributes as |attr key|}}
|
||||||
|
<div class="attribute-box">
|
||||||
|
<label>{{localize (concat "OATHHAMMER.Attribute." (capitalize key))}}</label>
|
||||||
|
<input type="number" name="system.attributes.{{key}}.rank" value="{{attr.rank}}" min="1" max="4" {{#if ../isPlayMode}}disabled{{/if}}>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
</fieldset>
|
||||||
</div>
|
<fieldset class="character-arcane-stress">
|
||||||
</fieldset>
|
<legend>{{localize "OATHHAMMER.Label.ArcaneStress"}}</legend>
|
||||||
<fieldset class="character-arcane-stress">
|
<div class="stress-inputs">
|
||||||
<legend>{{localize "OATHHAMMER.Label.ArcaneStress"}}</legend>
|
{{formInput systemFields.arcaneStress.fields.value value=system.arcaneStress.value name="system.arcaneStress.value" disabled=isPlayMode}}
|
||||||
<div class="flexrow">
|
<span>/</span>
|
||||||
{{formInput systemFields.arcaneStress.fields.value value=system.arcaneStress.value name="system.arcaneStress.value" disabled=isPlayMode}}
|
{{formInput systemFields.arcaneStress.fields.threshold value=system.arcaneStress.threshold name="system.arcaneStress.threshold" disabled=isPlayMode}}
|
||||||
<span>/</span>
|
</div>
|
||||||
{{formInput systemFields.arcaneStress.fields.threshold value=system.arcaneStress.threshold name="system.arcaneStress.threshold" disabled=isPlayMode}}
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
<fieldset class="currency-bar">
|
|
||||||
<legend>{{localize "OATHHAMMER.Label.Currency"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
<div class="currency-item">
|
|
||||||
<label>{{localize "OATHHAMMER.Currency.GP"}}</label>
|
|
||||||
{{formInput systemFields.currency.fields.gold value=system.currency.gold name="system.currency.gold" disabled=isPlayMode}}
|
|
||||||
</div>
|
|
||||||
<div class="currency-item">
|
|
||||||
<label>{{localize "OATHHAMMER.Currency.SP"}}</label>
|
|
||||||
{{formInput systemFields.currency.fields.silver value=system.currency.silver name="system.currency.silver" disabled=isPlayMode}}
|
|
||||||
</div>
|
|
||||||
<div class="currency-item">
|
|
||||||
<label>{{localize "OATHHAMMER.Currency.CP"}}</label>
|
|
||||||
{{formInput systemFields.currency.fields.copper value=system.currency.copper name="system.currency.copper" disabled=isPlayMode}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|||||||
@@ -10,15 +10,33 @@
|
|||||||
<div class="skills-header">
|
<div class="skills-header">
|
||||||
<span class="skill-name-col">{{localize "OATHHAMMER.Label.Skill"}}</span>
|
<span class="skill-name-col">{{localize "OATHHAMMER.Label.Skill"}}</span>
|
||||||
<span class="skill-rank-col">{{localize "OATHHAMMER.Label.SkillRank"}}</span>
|
<span class="skill-rank-col">{{localize "OATHHAMMER.Label.SkillRank"}}</span>
|
||||||
|
<span class="skill-modifier-col">{{localize "OATHHAMMER.Label.SkillModifier"}}</span>
|
||||||
<span class="skill-total-col">{{localize "OATHHAMMER.Label.TotalDice"}}</span>
|
<span class="skill-total-col">{{localize "OATHHAMMER.Label.TotalDice"}}</span>
|
||||||
|
<span class="skill-color-col">{{localize "OATHHAMMER.Label.ColorDice"}}</span>
|
||||||
</div>
|
</div>
|
||||||
{{#each group.skillData as |skill|}}
|
{{#each group.skillData as |skill|}}
|
||||||
<div class="skill-row">
|
<div class="skill-row">
|
||||||
<label class="skill-name-col">{{localize skill.label}}</label>
|
<label class="skill-name-col">{{localize skill.label}}</label>
|
||||||
<div class="skill-rank-col">
|
<div class="skill-rank-col">
|
||||||
{{formInput skill.field value=skill.rank name=skill.name disabled=../../isPlayMode}}
|
<select name="{{skill.rankName}}" {{#if ../../isPlayMode}}disabled{{/if}}>
|
||||||
|
{{#each skill.rankOptions as |opt|}}
|
||||||
|
<option value="{{opt.value}}" {{#if opt.selected}}selected{{/if}}>{{opt.label}}</option>
|
||||||
|
{{/each}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="skill-modifier-col">
|
||||||
|
<input type="number" name="{{skill.modifierName}}" value="{{skill.modifier}}" {{#if ../../isPlayMode}}disabled{{/if}} />
|
||||||
</div>
|
</div>
|
||||||
<span class="skill-total-col skill-total">{{skill.total}}</span>
|
<span class="skill-total-col skill-total">{{skill.total}}</span>
|
||||||
|
<div class="skill-color-col">
|
||||||
|
<span class="color-dice-dot color-dice-{{skill.colorDiceType}}"></span>
|
||||||
|
<select name="{{skill.colorDiceTypeName}}" class="color-dice-select" {{#if ../../isPlayMode}}disabled{{/if}}>
|
||||||
|
<option value="white" {{#if (eq skill.colorDiceType "white")}}selected{{/if}}>⬜</option>
|
||||||
|
<option value="red" {{#if (eq skill.colorDiceType "red")}}selected{{/if}}>🔴</option>
|
||||||
|
<option value="black" {{#if (eq skill.colorDiceType "black")}}selected{{/if}}>⬛</option>
|
||||||
|
</select>
|
||||||
|
<input type="number" name="{{skill.colorDiceName}}" value="{{skill.colorDice}}" min="0" {{#if ../../isPlayMode}}disabled{{/if}} />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user