Merge pull request #153 from justinross/task/css-html-cleanup

CSS and Handlebars/HTML cleanup
This commit is contained in:
megastruktur 2021-10-01 11:52:38 +03:00 committed by GitHub
commit d197d49d55
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
43 changed files with 3803 additions and 2090 deletions

View file

@ -11,7 +11,7 @@ export class BladesActorSheet extends BladesSheet {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["blades-in-the-dark", "sheet", "actor"],
classes: ["blades-in-the-dark", "sheet", "actor", "pc"],
template: "systems/blades-in-the-dark/templates/actor-sheet.html",
width: 700,
height: 970,

View file

@ -10,7 +10,7 @@ export class BladesClockSheet extends BladesSheet {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["blades-in-the-dark", "sheet", "actor"],
classes: ["blades-in-the-dark", "sheet", "actor", "clock"],
template: "systems/blades-in-the-dark/templates/actors/clock-sheet.html",
width: 700,
height: 970,

View file

@ -9,7 +9,7 @@ export class BladesCrewSheet extends BladesSheet {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["blades-in-the-dark", "sheet", "actor"],
classes: ["blades-in-the-dark", "sheet", "actor", "crew"],
template: "systems/blades-in-the-dark/templates/crew-sheet.html",
width: 940,
height: 1020,

View file

@ -9,7 +9,7 @@ export class BladesFactionSheet extends BladesSheet {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["blades-in-the-dark", "sheet", "actor"],
classes: ["blades-in-the-dark", "sheet", "item", "faction"],
template: "systems/blades-in-the-dark/templates/faction-sheet.html",
width: 900,
height: 'auto',

View file

@ -35,7 +35,7 @@ export class BladesSheet extends ActorSheet {
let items = await BladesHelpers.getAllItemsByType(item_type, game);
let html = `<div id="items-to-add">`;
let html = `<div class="items-to-add">`;
items.forEach(e => {
let addition_price_load = ``;
@ -65,7 +65,7 @@ export class BladesSheet extends ActorSheet {
one: {
icon: '<i class="fas fa-check"></i>',
label: game.i18n.localize('Add'),
callback: async () => await this.addItemsToSheet(item_type, $(document).find('#items-to-add'))
callback: async (html) => await this.addItemsToSheet(item_type, $(html).find('.items-to-add'))
},
two: {
icon: '<i class="fas fa-times"></i>',

View file

@ -139,12 +139,12 @@ Hooks.once("init", async function() {
return html;
});
Handlebars.registerHelper('crew_experience', (options) => {
Handlebars.registerHelper('crew_experience', (actor, options) => {
let html = options.fn(this);
for (let i = 1; i <= 10; i++) {
html += '<input type="radio" id="crew-experience-' + i + '" name="data.experience" value="' + i + '" dtype="Radio"><label for="crew-experience-' + i + '"></label>';
html += `<input type="radio" id="crew-${actor._id}-experience-${i}" name="data.experience" value="${i}" dtype="Radio"><label for="crew-experience-${i}"></label>`;
}
return html;

View file

@ -8,6 +8,5 @@
{"name":"Flipped","content":"<p>One of the PCs rivals arranges for one of your contacts, patrons, clients, or a group of your customers to switch allegiances due to the heat on you. Theyre loyal to another faction now.</p>\n<p><em>You hear word on the street that Laroze is working for the Billhooks now. He </em><em>was seen talking to Flint the other day... that bastard is probably behind it. </em><em>Remove Laroze as a contact until you can get that sorted out.</em></p>","folder":null,"sort":0,"permission":{"default":0,"thWDvNEhl7M3mC2d":3},"flags":{"core":{"sourceId":"JournalEntry.CXvqaOROYyqpWZpK"}},"_id":"NoLY64zJ3lEF5Xia"}
{"name":"Unquiet Dead","content":"<p>A rogue spirit is drawn to you—perhaps its a past victim? Acquire the services of a Whisper or Rail Jack to attempt to destroy or banish it, or deal with it yourself.</p>\n<p><em>They can hire an NPC by using the acquire asset downtime activity (see page </em><em>153). Roll the NPCs quality level as a fortune roll to see how well they deal </em><em>with the spirit.</em></p>","folder":null,"sort":0,"permission":{"default":0,"thWDvNEhl7M3mC2d":3},"flags":{"core":{"sourceId":"JournalEntry.K1wg10vMiU0bOSsb"}},"_id":"dR9zBnrjy4AyA9Ru"}
{"_id":"pEpm365I7XjEXeci","name":"Gang Trouble","content":"<p>One of your gangs (or other cohorts) causes trouble due to their flaw(s). You can lose face (forfeit rep equal to your Tier +1), make an example of one of the gang members, or face reprisals from the wronged party.</p>\n<p><em>After the PCs succeed at their assault and wipe out the Red Sashes, their savage </em><em>gang takes things too far. They start attacking any Iruvians they see in Crows </em><em>Foot, and during one brawl, they horribly maim a citizen. Everyones talking </em><em>about it. Is this how the Bloodletters run their crew? Arcy decides to handle </em><em>matters by making an example of one of the gang. She takes them back to the </em><em>tavern where the incident happened, and smashes the offending thugs face </em><em>into the bar, giving her a horrific scar.</em></p>\n<p><em>The GM thinks this treatment warrants a tick on a progress clock they created </em><em>in an earlier session when Arcy treated the gang roughly. The clock is called </em><em>“The Gang Fights Back.” It was already at three out of four segments, so now </em><em>its full! Looks like Arcys rough treatment of the savage gang is gonna come </em><em>back to bite her.</em></p>","folder":null,"sort":0,"permission":{"default":0,"thWDvNEhl7M3mC2d":3},"flags":{"core":{"sourceId":"JournalEntry.FZyfk6PnXl8pDltO"}}}
{"name":"Reprisals","content":"<p>An enemy faction makes a move against you (or a friend, contact, or vice purveyor). Pay them (<strong>1 rep</strong> and <strong>1 coin</strong>) per Tier of the enemy as an apology, allow them to mess with you or yours, or fight back and show them whos boss.</p>","folder":null,"sort":0,"permission":{"default":0,"thWDvNEhl7M3mC2d":3},"flags":{"core":{"sourceId":"JournalEntry.q0txK7pUnzstXrUy"}},"_id":"wVkkWR1jl10k7aeu"}
{"name":"Questioning","content":"<p>The Bluecoats grab an NPC member of your crew or one of the crews contacts, to question them about your crimes. Who do the Bluecoats think is most vulnerable? Make a <strong>fortune roll</strong> to see how much they talk (<strong>1-3: +2 heat, 4/5: +1 heat</strong>), or pay the Bluecoats off with<strong> 2 coin</strong>.</p>\n<p><em>Roll 2d for a normal person to see how well they keep quiet. If theyre an experienced underworld type or some kind of tough, give them 3d or 4d instead. If theyre soft or if they have some loyalty to the law, give them 1d or 0d.</em></p>","folder":null,"sort":0,"permission":{"default":0,"thWDvNEhl7M3mC2d":3},"flags":{"core":{"sourceId":"JournalEntry.XNuIDt1MjPKwISTW"}},"_id":"whBkmsxokUuJ4t9J"}
{"_id":"wVkkWR1jl10k7aeu","name":"Reprisals","content":"<p>An enemy faction makes a move against you (or a friend, contact, or vice purveyor). Pay them (<strong>1 rep</strong> and <strong>1 coin</strong>) per Tier of the enemy as an apology, allow them to mess with you or yours, or fight back and show them whos boss.</p>","folder":null,"sort":0,"permission":{"default":0,"thWDvNEhl7M3mC2d":3},"flags":{"core":{"sourceId":"JournalEntry.q0txK7pUnzstXrUy"}}}
{"name":"Questioning","content":"<p>The Bluecoats grab an NPC member of your crew or one of the crews contacts, to question them about your crimes. Who do the Bluecoats think is most vulnerable? Make a <strong>fortune roll</strong> to see how much they talk (<strong>1-3: +2 heat, 4/5: +1 heat</strong>), or pay the Bluecoats off with<strong> 2 coin</strong>.</p>\n<p><em>Roll 2d for a normal person to see how well they keep quiet. If theyre an experienced underworld type or some kind of tough, give them 3d or 4d instead. If theyre soft or if they have some loyalty to the law, give them 1d or 0d.</em></p>","folder":null,"sort":0,"permission":{"default":0,"thWDvNEhl7M3mC2d":3},"flags":{"core":{"sourceId":"JournalEntry.XNuIDt1MjPKwISTW"}},"_id":"whBkmsxokUuJ4t9J"}

71
scss/fonts.scss Normal file
View file

@ -0,0 +1,71 @@
//Kirsty
@font-face {
font-family: 'Kirsty';
src: url('assets/fonts/Kirsty/Kirsty.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Kirsty';
src: url('assets/fonts/Kirsty/KirstyBold.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'Kirsty';
src: url('assets/fonts/Kirsty/KirstyBoldItalic.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: 'Kirsty';
src: url('assets/fonts/Kirsty/KirstyItalic.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: normal;
font-style: italic;
}
//Crimson Text
@font-face {
font-family: 'Crimson Text';
src: url('assets/fonts/CrimsonText/CrimsonText-Regular.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Crimson Text';
src: url('assets/fonts/CrimsonText/CrimsonText-Bold.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'Crimson Text';
src: url('assets/fonts/CrimsonText/CrimsonText-BoldItalic.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: 'Crimson Text';
src: url('assets/fonts/CrimsonText/CrimsonText-Italic.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: 'Crimson Text';
src: url('assets/fonts/CrimsonText/CrimsonText-SemiBold.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Crimson Text';
src: url('assets/fonts/CrimsonText/CrimsonText-SemiBoldItalic.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: 600;
font-style: italic;
}

View file

@ -0,0 +1,276 @@
// Colors
$lightgray: #CCC;
$gray: #999;
$red: red;
$almost_black: #191813;
$almost_white: #EEEFFF;
$gold: #DAA520;
$green: #008000;
$light_green: #12a012;
$blue: #04578f;
// Transition period for sheet parts that hint what they can do
$transition-period: 0.2s;
$hover-opacity: 0.9;
$hover-brightness: 0.8;
// Imports
@import 'mixin.scss';
/*
* General Styles
* Cleaned out things that don't appear to apply to the character sheet, and exist in other, separated SCSS files.
* Some things *might* be missing, but at a glance, everything looks to be in order.
*/
& * {
.name-alias{
img.portrait{
max-width: 200px;
max-height: 200px;
width: auto;
height: auto;
}
}
.tab[data-tab]{
display: none;
&.active{
display: block;
}
}
form {
&.actor-sheet {
padding: 20px;
}
}
// Stress and Trauma
.big-teeth-section {
border-top: 3px solid $almost_black;
display: flex;
flex-direction: row;
margin-bottom: 0px;
margin-top: 10px;
> * {
margin-right: 10px;
&:last-child {
margin-right: 0px;
}
}
&:last-child {
margin-right: 0px;
}
// Stress
.big-teeth {
@include toothradio(17px, 50px, "assets/teeth/stresstooth-halfgrey.png", "assets/teeth/stresstooth-red.png");
}
/* Trauma */
.small-teeth-container {
.small-teeth-wrap {
@include toothradio(17px, 50px, "assets/teeth/shorttooth-grey.png", "assets/teeth/shorttooth-red.png", false);
flex-direction: column;
.small-teeth {
display: flex;
flex-direction: row;
}
}
}
.trauma-list {
@include check_underscore();
justify-content: space-between;
align-items: flex-start;
}
}
.character-stress {
label {
&[for$="-0"] {
margin-right: 0px;
}
}
}
//Abilitiers and loadout
.abilities, .loadout {
.item-name {
width: 100px;
}
.item-body {
width: auto;
}
.item-description {
width: 260px;
}
}
// Abilities
.abilities {
.label-stripe {
p:first-child {
margin-right: 10px;
}
}
}
// Loadout
.loadout {
.item-add-popup {
margin-left: 10px;
}
}
// Experience teeth
.teeth-experience {
@include toothradio(10px, 30px, "assets/teeth/stresstooth-halfgrey.png", "assets/teeth/stresstooth-red.png");
position: absolute;
top: 0px;
right: 10px;
}
.harm-armor {
display: flex;
// Harm
.character-harm {
width: 100%;
table {
width: 100%;
th {
background-color: $almost_black;
color: $almost_white;
}
input[type="text"] {
width: 100%;
}
}
}
// Clock
.character-health-clock {
margin: 0 auto;
@include clock(4, 88);
}
.character-armor-uses {
div {
display: flex;
flex-direction: row;
justify-content: space-between;
}
}
}
.attributes {
display: flex;
flex-direction: column;
width: 200px;
.stripe {
background-color: $almost_black;
color: $almost_white;
font-size: 17px;
padding-left: 5px;
}
.attribute-label,
.attribute-skill-label {
font-weight: bold;
text-transform: uppercase;
}
.attribute-skill-label {
letter-spacing: 1px;
}
.attributes-exp {
position: relative;
margin-bottom: 10px;
.stripe-tooth-body {
@include toothradio(10px, 30px, "assets/teeth/xptooth-white.png", "assets/teeth/xptooth-red.png");
position: absolute;
top: 0px;
right: 0px;
}
}
.attributes-container {
display: flex;
margin: 3px 0px;
@include custom_radio(15px, 15px);
* {
margin-right: 5px;
}
}
}
// ITEM
.item {
justify-content: space-between;
.item-body {
margin-bottom: 10px;
* {
margin-right: 10px;
}
.item-description {
font-style: italic;
text-align: justify;
}
}
div {
flex-grow: 2;
}
.item-control {
flex-grow: 1;
}
.item-body,
.item-class-label {
width: 100px;
}
}
.item-class-label {
margin-bottom: 10px;
}
.name,
.lair,
.alias {
margin-bottom: 10px;
}
@import "coins.scss";
}

67
scss/import/chat.scss Normal file
View file

@ -0,0 +1,67 @@
.chat-label {
background-color: $almost_black;
font-family: Kirsty, serif;
color: $almost_white;
font-size: 21px;
text-align: center;
padding: 0px 5px;
height: 30px !important;
text-transform: capitalize;
}
.chat-label-small {
background-color: $gray;
color: $almost_black;
font-size: small;
text-align: center;
padding: 3px 5px;
height: 20px !important;
}
.label-stripe-chat {
text-transform: uppercase;
background-color: $almost_black;
color: $almost_white;
margin-bottom: 10px;
position: relative;
padding-top: 3px;
display: flex;
font-weight: bold;
margin: 0;
}
.label-stripe-chat-small {
text-transform: capitalize;
background-color: $gray;
color: $almost_black;
margin-bottom: 10px;
position: relative;
padding-top: 3px;
display: flex;
font-weight: bold;
}
.blades-die-tooltip {
.die {
font-weight: bold;
text-transform: capitalize;
font-size: large;
&.critical-success {
color: $light_green;
}
&.success {
color: $green;
}
&.partial-success {
color: $blue;
}
&.failure {
color: $red;
}
}
}

30
scss/import/clocks.scss Normal file
View file

@ -0,0 +1,30 @@
&{
min-width: 420px;
min-height: 320px;
}
.clock-zero-label {
color: $almost_black;
}
.clocks {
&.clocks-4 {
@include clock(4, 200);
}
&.clocks-6 {
@include clock(6, 200);
}
&.clocks-8 {
@include clock(8, 200);
}
}
.blades-clock-name-type {
> * {
margin-bottom: 10px;
}
.blades-clock{
margin: 10px auto;
}
}

27
scss/import/coins.scss Normal file
View file

@ -0,0 +1,27 @@
$coin_size: 15px;
$coin_margin: 3px;
.coins {
@include custom_radio_square($coin_size);
flex-wrap: wrap;
input ~ label {
margin-right: $coin_margin;
margin-bottom: $coin_margin;
&[for$="0"] {
border-width: 2px;
}
@include changeable($transition-period, $hover-brightness, $hover-opacity);
}
&.coins-hands {
width: 36px;
}
&.coins-stashed {
width: 190px;
}
}

298
scss/import/crew-sheet.scss Normal file
View file

@ -0,0 +1,298 @@
$coin_size: 15px;
$coin_margin: 3px;
@import 'coins.scss';
.item {
justify-content: space-between;
.item-body {
margin-bottom: 10px;
* {
margin-right: 10px;
}
.item-description {
font-style: italic;
text-align: justify;
}
}
div {
flex-grow: 2;
}
.item-control {
flex-grow: 1;
}
.item-body,
.item-class-label {
width: 100px;
}
}
.item-class-label {
margin-bottom: 10px;
}
.name,
.lair,
{
margin-bottom: 10px;
}
form {
&.actor-sheet {
padding: 20px;
}
}
nav{
padding-bottom: 10px;
}
// Crew Coins
.crew-coins {
@include custom_radio_square($coin_size);
flex-wrap: wrap;
max-width: 4 * ($coin_size + $coin_margin);
label {
margin-right: $coin_margin;
margin-bottom: $coin_margin;
}
}
// Reputation
.crew-reputation {
border-top: 3px solid $almost_black;
@include toothradio(17px, 50px, "assets/teeth/stresstooth-halfgrey.png", "assets/teeth/stresstooth-red.png");
input[disabled="disabled"] + label {
background-image: url(assets/teeth/stresstooth-black.png);
}
}
// Turfs.
.turf-container {
overflow-x: scroll;
overflow-y: clip;
}
.turf-list {
display: flex;
flex-direction: column;
width: 855px;
.turf-row {
display: flex;
flex-direction: row;
flex-wrap: wrap;
*:first-child {
margin-left: 0px;
}
*:last-child {
margin-right: 0px;
}
}
&.section-non-editable {
.turf-block {
@include turf_block(130px, 100px);
}
}
&.section-editable {
.turf-block {
@include turf_block(130px, 125px);
}
}
}
.crew-hold {
border-top: 3px solid $almost_black;
@include toothradio_single(17px, 50px, "assets/teeth/stresstooth-halfgrey.png", "assets/teeth/stresstooth-red.png");
width: 221px;
}
.crew-tier {
background-color: $gray;
height: 33px;
width: 145px;
display: flex;
align-items: center;
border-top: 3px solid $almost_black;
@include custom_radio_round(18px, gray, $almost_white, $almost_black);
> * {
margin-right: 5px;
}
}
.heat-wanted {
//justify-content: none;
.small-teeth{
height: 20px;
label{
height: 100%;
width: 100%;
cursor: default;
}
}
}
.experience-clues-container {
width: 340px;
font-size: 12px;
.experience-clues-description {
font-weight: bold;
}
.experience-clues {
font-style: italic;
}
}
// Cohorts styling
.edgeflaw {
input {
display: none;
&:checked {
& + label {
color: $red;
}
}
}
}
.gang-expert-type-selector {
.gang-type-boxes {
flex-wrap: wrap;
}
}
.cohorts {
flex-wrap: wrap;
.cohort-block-wrapper {
width: 400px;
}
.label-stripe {
margin-bottom: 0px;
}
.cohort-body {
> div {
margin-bottom: 10px;
}
}
.cohort-block-harm {
justify-content: space-around;
input[type="radio"] {
display: none;
&:checked + label {
color: $almost_white;
font-weight: bold;
background-color: $almost_black;
}
}
label {
border: 2px solid $almost_black;
border-top: none;
padding: 5px;
}
}
}
.class-name {
width: 512px;
height: 120px;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 48px;
text-transform: uppercase;
border: 3px solid $almost_black;
.big-name {
font-weight: bold;
font-family: Kirsty, serif;
}
.big-description {
font-size: 20px;
font-family: "Crimson Text", serif;
color: $almost_black;
}
}
.big-teeth-section {
border-top: 3px solid $almost_black;
display: flex;
flex-direction: row;
margin-bottom: 0px;
> * {
margin-right: 10px;
&:last-child {
margin-right: 0px;
}
}
&:last-child {
margin-right: 0px;
}
// Stress
.big-teeth {
@include toothradio(17px, 50px, "assets/teeth/stresstooth-halfgrey.png", "assets/teeth/stresstooth-red.png");
}
/* Trauma */
.small-teeth-container {
.small-teeth-wrap {
@include toothradio(17px, 50px, "assets/teeth/shorttooth-grey.png", "assets/teeth/shorttooth-red.png", false);
flex-direction: column;
.small-teeth {
display: flex;
flex-direction: row;
}
}
}
.trauma-list {
@include check_underscore();
justify-content: space-between;
align-items: flex-start;
}
}
header {
margin-bottom: 10px;
}

39
scss/import/dialogs.scss Normal file
View file

@ -0,0 +1,39 @@
// Add Items modal styling.
.items-to-add {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-around;
input[type="radio"],
input[type="checkbox"] {
display: none;
&:checked + label {
font-weight: bold;
}
}
//Tooltip.
.tooltip {
.tooltiptext {
visibility: hidden;
width: 200px;
background-color: $almost_black;
color: $almost_white;
text-align: center;
padding: 5px;
border-radius: 6px;
// Position
position: absolute;
z-index: 9999;
}
&:hover .tooltiptext {
visibility: visible;
}
}
}

View file

@ -0,0 +1,171 @@
textarea {
margin-top: 10px;
margin-bottom: 20px;
}
.debug-toggle{
opacity: 0.1;
&.on{
opacity: 0.75;
}
}
.rollable-text {
transition: color $transition-period;
}
.rollable-text:hover {
cursor: pointer;
color: $red;
}
section {
display: flex;
flex-direction: column;
justify-content: space-between;
> *:not(.label-stripe) {
margin-right: 10px;
&:last-child {
margin-right: 0px;
}
}
.grow-one {
flex-grow: 1;
}
.grow-two {
flex-grow: 2;
}
&.experience {
margin-bottom: 0px;
justify-content: center;
}
}
.flex-horizontal {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.flex-vertical {
display: flex;
flex-direction: column;
}
.tab[data-tab]{
display: none;
&.active{
display: block;
}
}
.black-label {
background-color: $almost_black;
color: $almost_white;
font-size: 21px;
text-align: center;
padding: 0px 5px;
height: 30px !important;
text-transform: capitalize;
font-family: Kirsty, serif;
}
.gray-label {
background-color: $gray;
color: $almost_black;
font-size: 21px;
text-align: center;
padding: 0px 5px;
height: 30px !important;
text-transform: capitalize;
font-family: Kirsty, serif;
}
.label-stripe {
text-transform: uppercase;
background-color: $almost_black;
color: $almost_white;
margin-bottom: 10px;
position: relative;
padding-left: 10px;
padding-right: 10px;
display: flex;
font-weight: bold;
}
.label-stripe-gray {
text-transform: uppercase;
background-color: $gray;
margin-bottom: 10px;
position: relative;
padding-left: 10px;
padding-right: 10px;
display: flex;
font-weight: bold;
}
.editor,
.editor-content {
min-height: 150px;
}
.description {
font-style: italic;
}
i {
&.nullifier {
@include changeable($transition-period, $hover-brightness, $hover-opacity, $red);
}
}
.loadout {
select {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
box-shadow: none;
border: none;
cursor: pointer;
background: url("data:image/svg+xml;utf8,<svg fill='white' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>") no-repeat right;
padding: 0 20px 0 0;
margin: 0.1em -6px 0 0;
background-color: $almost_black;
font-family: Georgia, "Bitstream Charter", "Times New Roman", serif;
font-size: 14px;
font-weight: bold;
text-transform: uppercase;
color: white;
text-align: right;
option {
color: white;
}
}
select:hover {
color: red;
}
}
.abilities, .loadout, .faction-items {
.item-name {
width: 100px;
margin-left: 10px;
}
.item-body {
width: auto;
}
.item-description {
width: 260px;
}
}
td {
padding: 5px;
}

View file

@ -0,0 +1,33 @@
// ITEM
.item {
justify-content: space-between;
.item-body {
margin-bottom: 10px;
* {
margin-right: 10px;
}
.item-description {
font-style: italic;
text-align: justify;
}
}
div {
flex-grow: 2;
}
.item-control {
flex-grow: 1;
}
.item-body,
.item-class-label {
width: 100px;
}
}
.item-class-label {
margin-bottom: 10px;
}

View file

@ -1,4 +1,6 @@
/*
@use "sass:math";
/*
* Elements that can be changed will hint this by dimming and fading a little on hover
*/
@mixin changeable($transition-period, $hover-brightness, $hover-opacity, $hover-color: null) {
@ -281,7 +283,7 @@
$turf_margin: 20px;
$connector_height: $turf_height/10;
$connector_height: math.div($turf_height, 10);
$connector_width: $turf_margin * 2;
width: $turf_width;
@ -307,8 +309,8 @@
&.right,
&.left {
width: $turf_margin * 2;
height: $turf_height/5;
top: $turf_height/2 - $turf_height/10;
height: math.div($turf_height, 5);
top: math.div($turf_height, 2) - math.div($turf_height, 10);
}
&.left {
left: -$turf_margin * 2;
@ -320,8 +322,8 @@
&.top,
&.bottom {
height: $turf_margin * 2;
width: $turf_height/5;
left: $turf_width/2 - $turf_height/10;
width: math.div($turf_height, 5);
left: math.div($turf_width, 2) - math.div($turf_height, 10);
}
&.top {
top: -$turf_margin * 2;
@ -419,7 +421,7 @@
vertical-align: middle;
border: 2px solid $accent_color;
border-radius: $diameter / 2;
border-radius: math.div($diameter, 2);
}
}

View file

@ -0,0 +1,154 @@
/*
* General Styles - Original
*/
& {
// Stress and Trauma
//#character-stress {
// label {
// &[for$="-0"] {
// margin-right: 0px;
// }
// }
//}
//Abilities and loadout
// Abilities
//#abilities {
// .label-stripe {
// p:first-child {
// margin-right: 10px;
// }
// }
//}
// Loadout
//#loadout {
// .item-add-popup {
// margin-left: 10px;
// }
//}
// Experience teeth
//.teeth-experience {
// @include toothradio(10px, 30px, "assets/teeth/stresstooth-halfgrey.png", "assets/teeth/stresstooth-red.png");
// position: absolute;
// top: 0px;
// right: 10px;
//}
//#harm-armor {
//
// display: flex;
//
// // Harm
// #character-harm {
//
// width: 100%;
//
// table {
// width: 100%;
//
// th {
// background-color: $almost_black;
// color: $almost_white;
// }
//
// input[type="text"] {
// width: 100%;
// }
// }
// }
//
// // Clock
// #character-health-clock {
// margin: 0 auto;
// @include clock(4, 88);
// }
//
// #character-armor-uses {
//
// div {
// display: flex;
// flex-direction: row;
// justify-content: space-between;
// }
// }
//}
//#attributes {
//
// display: flex;
// flex-direction: column;
// width: 200px;
//
// .stripe {
// background-color: $almost_black;
// color: $almost_white;
// font-size: 17px;
// padding-left: 5px;
// }
//
// .attribute-label,
// .attribute-skill-label {
// font-weight: bold;
// text-transform: uppercase;
// }
// .attribute-skill-label {
// letter-spacing: 1px;
// }
// .attributes-exp {
//
// position: relative;
// margin-bottom: 10px;
//
// .stripe-tooth-body {
// @include toothradio(10px, 30px, "assets/teeth/xptooth-white.png", "assets/teeth/xptooth-red.png");
// position: absolute;
// top: 0px;
// right: 0px;
// }
// }
//
// .attributes-container {
// display: flex;
// margin: 3px 0px;
// @include custom_radio(15px, 15px);
//
// * {
// margin-right: 5px;
// }
// }
//}
//// Tooltip.
//.tooltip {
//
// .tooltiptext {
// visibility: hidden;
// width: 200px;
// background-color: $almost_black;
// color: $almost_white;
// text-align: center;
// padding: 5px;
// border-radius: 6px;
//
// // Position
// position: absolute;
// z-index: 9999;
// }
//
// &:hover .tooltiptext {
// visibility: visible;
// }
//}
}

12
scss/import/tooltip.scss Normal file
View file

@ -0,0 +1,12 @@
.tooltip {
display: none;
position: absolute;
padding: 10px;
color: $almost_white;
background-color: $almost_black;
border: 1px solid #777;
//box-shadow: 0 1px 3px 1px rgba(0,0,0,0.5);
border-radius: 3px;
z-index: 9999999;
max-width: 300px;
}

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,94 @@
Copyright (c) 2010, Sebastian Kosch (sebastian@aldusleaf.org),
with Reserved Font Name "Crimson" and "Crimson Text".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,36 @@
LARABIE FONTS FREEWARE FONTS EULA (End User License Agreement) and SOFTWARE INCLUSION AGREEMENT
LARABIE FONTS FREEWARE FONTS EULA
Larabie Fonts Freeware Fonts in TrueType format are free to use for personal and commercial purposes. No payment is necessary to use Larabie Fonts Freeware Fonts for personal or commercial use. If you wish to include Larabie Fonts Freeware Fonts in software see SOFTWARE INCLUSION AGREEMENT below.
USAGE
You can offer individual Larabie Fonts Freeware Fonts for download on a website but do not combine fonts into a single archive or alter them in any way. We appreciate inclusion of the font name and trademark or site URL in the credits or documentation but it is not mandatory.
Some Larabie Fonts Freeware Fonts may have enhanced and/or expanded families available for sale at www.typodermic.com.
PAYMENT
Payment is not required for the use of Larabie Fonts Freeware Fonts unless they are intended to be included with software. More details follow.
Donations to Larabie Fonts are welcome via check or electronic payment via Paypal. We can accept any amount in US dollars, Canadian dollars, GBP or euros. If you require an invoice for your donation, please refer to www.larabiefonts.com/donation.html for instructions.
Donations can include CDs, magazines, t-shirts, a sample of your merchandise or anything featuring Larabie Fonts. Mailing information is available at the link above.
SUPPORT
Font installation help is available at www.myfonts.com/support. If you experience problems with any Larabie Font, please visit www.larabiefonts.com to verify you have the latest version. If you download Larabie Fonts Freeware Fonts from other websites you may get older versions that have spacing issues, incomplete character sets or technical problems.
SOFTWARE INCLUSION AGREEMENT
The Larabie Fonts SOFTWARE PRODUCT is protected by copyright laws and International copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.
1. GRANT OF LICENSE. This document grants you the following rights:
- Installation and Use. You may install and use an unlimited number of copies of the SOFTWARE PRODUCT. You may copy and distribute unlimited copies of the SOFTWARE PRODUCT as you receive them, in any medium, provided that you publish on each copy an appropriate copyright notice. Keep intact all the notices that refer to this License and give any other recipients of the fonts a copy of this License along with the fonts.
2. LIMITED WARRANTY NO WARRANTIES. Larabie Fonts expressly disclaims any warranty for the SOFTWARE PRODUCT. The SOFTWARE PRODUCT and any related documentation is provided "as is" without warranty of any kind, either express or implied, including, without limitation, the implied warranties or merchantability, fitness for a particular purpose, or non-infringement. The entire risk arising out of use or performance of the SOFTWARE PRODUCT remains with you.
NO LIABILITY FOR CONSEQUENTIAL DAMAGES. In no event shall Ray Larabie or Larabie Fonts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use this product, even if Larabie Fonts has been advised of the possibility of such damages.
3. MISCELLANEOUS
Should you have any questions concerning this document or you desire to contact Larabie Fonts for any reason, please email www.larabiefonts.com/email.html.
4. GOVERNING LAW
This agreement is governed by the laws of Canada and the province of British Columbia.

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,16 +1,18 @@
<form class="{{cssClass}} actor-sheet" autocomplete="off">
<section id="name-alias" class="flex-horizontal">
<img src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
<section id="character-{{actor._id}}-name-alias" class="flex-horizontal name-alias">
<div class="grow-two">
<div id="name">
<img src="{{actor.img}}" data-edit="img" title="{{actor.name}}" class="portrait" />
</div>
<div class="grow-two">
<div id="character-{{actor._id}}-name-box">
<label for="character-{{actor._id}}-name">{{localize "BITD.Name"}}</label>
<input type="text" id="character-{{actor._id}}-name" name="name" value="{{actor.name}}">
<input type="text" id="character-{{actor._id}}-name" class="name" name="name" value="{{actor.name}}">
</div>
<div id="character-traits" class="flex-column">
<div id="character-{{actor._id}}-traits" class="flex-column">
<div class="item-block flex-horizontal">
<div class="item-class-label"><a class="item-add-popup" data-distinct="true" data-item-type="heritage">{{localize "BITD.Heritage"}}</a></div>
@ -76,9 +78,9 @@
</div>
<div class="grow-two">
<div id="alias">
<div id="character-{{actor._id}}-alias-box">
<label for="character-{{actor._id}}-alias">{{localize "BITD.Alias"}}</label>
<input type="text" id="character-{{actor._id}}-alias" name="data.alias" value="{{data.alias}}">
<input type="text" id="character-{{actor._id}}-alias" class="alias" name="data.alias" value="{{data.alias}}">
</div>
{{> "systems/blades-in-the-dark/templates/parts/coins.html" actor=actor}}
@ -87,11 +89,11 @@
</section>
{{!-- Experience --}}
<section class="experience">
<section class="flex experience">
</section>
{{!-- Stress and Trauma --}}
<div id="stress-trauma" class="section big-teeth-section">
<div id="character-{{actor._id}}-stress" class="big-teeth">
<div id="character-{{actor._id}}-stress-trauma" class="section big-teeth-section">
<div id="character-{{actor._id}}-stress" class="big-teeth character-stress">
{{#multiboxes data.stress.value}}
<input type="radio" id="character-{{actor._id}}-stress-0" name="data.stress.value" value="0" dtype="Radio">
@ -110,19 +112,19 @@
{{#traumacounter data.trauma.list}}
<div id="character-{{actor._id}}-trauma" class="small-teeth-wrap">
<label class="black-label" for="character-{{actor._id}}-trauma-counter-0">{{localize data.trauma.name}}</label>
<div id="trauma-teeth" class="small-teeth">
<div id="character-{{actor._id}}-trauma-teeth" class="small-teeth">
<input type="radio" id="character-{{actor._id}}-trauma-counter-0" name="data.trauma.value" value="0">
{{#times_from_1 data.trauma.max}}
<input type="radio" id="character-{{actor._id}}-trauma-counter-{{this}}" name="data.trauma.value" value="{{this}}" disabled>
<label for="character-{{actor._id}}-trauma-counter-{{this}}"></label>
<input type="radio" id="character-{{../actor._id}}-trauma-counter-{{this}}" name="data.trauma.value" value="{{this}}" disabled>
<label for="character-{{../actor._id}}-trauma-counter-{{this}}"></label>
{{/times_from_1}}
</div>
</div>
{{/traumacounter}}
</div>
<div id="trauma-list">
<div id="character-{{actor._id}}-trauma-list" class="trauma-list">
<label>
<input type="checkbox" name="data.trauma.list.cold" value="cold" {{checked data.trauma.list.cold}}>
<span class="checkmark">{{localize "BITD.TraumaCold"}}</span>
@ -160,8 +162,8 @@
</div>
{{!-- Harm, Healing and Armor --}}
<section id="harm-armor">
<div id="character-harm">
<section id="character-{{actor._id}}-harm-armor" class="flex harm-armor">
<div id="character-{{actor._id}}-character-harm" class="character-harm">
<table>
<thead>
<th class="black-white" colspan="4">{{localize "BITD.Harm"}}</th>
@ -176,22 +178,22 @@
</td>
<td>{{localize "BITD.NeedHelp"}}</td>
<td rowspan="3">
<div id="character-health-clock">
<div id="character-{{actor._id}}-health-clock" class="character-health-clock">
{{{blades-clock "data.healing-clock" 4 data.healing-clock actor._id}}}
</div>
</td>
<td rowspan="3" id="character-armor-uses">
<td rowspan="3" id="character-{{actor._id}}-armor-uses" class="character-armor-uses">
<div>
<label for="armor-uses-armor">{{localize "BITD.Armor"}}</label>
<input id="armor-uses-armor" type="checkbox" name="data.armor-uses.armor" {{checked data.armor-uses.armor}}>
<label for="character-{{actor._id}}-armor-uses-armor">{{localize "BITD.Armor"}}</label>
<input id="character-{{actor._id}}-armor-uses-armor" type="checkbox" name="data.armor-uses.armor" {{checked data.armor-uses.armor}}>
</div>
<div>
<label for="armor-uses-heavy">{{localize "BITD.Heavy"}}</label>
<input id="armor-uses-heavy" type="checkbox" name="data.armor-uses.heavy" {{checked data.armor-uses.heavy}}>
<label for="character-{{actor._id}}-armor-uses-heavy">{{localize "BITD.Heavy"}}</label>
<input id="character-{{actor._id}}-armor-uses-heavy" type="checkbox" name="data.armor-uses.heavy" {{checked data.armor-uses.heavy}}>
</div>
<div>
<label for="armor-uses-special">{{localize "BITD.Special"}}</label>
<input id="armor-uses-special" type="checkbox" name="data.armor-uses.special" {{checked data.armor-uses.special}}>
<label for="character-{{actor._id}}-armor-uses-special">{{localize "BITD.Special"}}</label>
<input id="character-{{actor._id}}-armor-uses-special" type="checkbox" name="data.armor-uses.special" {{checked data.armor-uses.special}}>
</div>
</td>
</tr>
@ -239,11 +241,11 @@
<a class="item" data-tab="all-character-items">{{localize "BITD.AllItems"}}</a>
</nav>
<div id="abilities" class="tab flex-vertical" data-tab="abilities">
<div id="character-{{actor._id}}-abilities" class="tab flex-vertical abilities" data-tab="abilities">
<div class="label-stripe">
<p><label for="character-{{actor._id}}-experience-0">{{localize "BITD.Abilities"}}</label></p>
<p><a class="item-add-popup" data-item-type="ability"><i class="fas fa-plus-square"></i></a></p>
<div id="character-experience" class="teeth-experience">
<div id="character-{{actor._id}}-experience" class="teeth-experience">
<label for="character-{{actor._id}}-experience-0"><i class="fab fa-creative-commons-zero nullifier"></i></label>
{{#multiboxes data.experience}}
<input type="radio" id="character-{{actor._id}}-experience-0" name="data.experience" value="0" dtype="Radio">
@ -269,7 +271,7 @@
</div>
</div>
<div id="abilities-list">
<div id="character-{{actor._id}}-abilities-list">
{{#each actor.items as |item id|}}
{{#if (eq item.type "ability")}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
@ -286,7 +288,7 @@
</div>
{{!-- Owned Items Tab --}}
<div id="loadout" class="tab flex-vertical" data-tab="loadout">
<div id="character-{{actor._id}}-loadout" class="tab flex-vertical loadout" data-tab="loadout">
<div class="label-stripe flex-horizontal">
<p>{{localize "BITD.Loadout"}} <a class="item-add-popup" data-item-type="item"><i class="fas fa-plus-square"></i></a></p>
<p>{{data.loadout}}/{{localize data.load_level}} </p>
@ -321,7 +323,7 @@
</div>
{{!-- Active Effects --}}
<div id="effects" class="tab effects flex-vertical" data-tab="effects">
<div id="character-{{actor._id}}-effects" class="tab effects flex-vertical" data-tab="effects">
<div class="label-stripe">
<p>{{localize "BITD.Effects"}}</p>
</div>

View file

@ -4,10 +4,10 @@
<img src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
<div id="name-alias" class="grow-two flex-column">
<div id="name">
<label for="crew-name">{{localize "BITD.Name"}}</label>
<input type="text" id="crew-name" name="name" value="{{actor.name}}">
<div id="crew-{{actor._id}}-name-alias" class="crew-name-alias grow-two flex-column">
<div id="crew-{{actor._id}}-name-box" class="crew-name">
<label for="crew-{{actor._id}}-name">{{localize "BITD.Name"}}</label>
<input type="text" id="crew-{{actor._id}}-name" name="name" value="{{actor.name}}">
</div>
<div class="flex-vertical">
@ -29,42 +29,42 @@
</div>
<div class="grow-two flex-vertical">
<div id="lair">
<label for="crew-lair">{{localize "BITD.Lair"}}</label>
<input type="text" id="crew-lair" name="data.lair" value="{{data.lair}}">
<div id="crew-{{actor._id}}-lair-box" class="lair">
<label for="crew-{{actor._id}}-lair">{{localize "BITD.Lair"}}</label>
<input type="text" id="crew-{{actor._id}}-lair" name="data.lair" value="{{data.lair}}">
</div>
<div class="flex-horizontal">
<div id="crew-hold" class="flex-horizontal">
<div id="crew-{{actor._id}}-hold-box" class="flex-horizontal crew-hold">
<div class="black-label">{{localize "BITD.Hold"}}</div>
{{#multiboxes data.hold}}
<div class="flex-horizontal">
<div class="gray-label">{{localize "BITD.Weak"}}</div>
<input id="crew-hold-weak" type="radio" name="data.hold" value="weak">
<label for="crew-hold-weak"></label>
<input id="crew-{{actor._id}}-hold-weak" type="radio" name="data.hold" value="weak">
<label for="crew-{{actor._id}}-hold-weak"></label>
</div>
<div class="flex-horizontal">
<div class="gray-label">{{localize "BITD.Strong"}}</div>
<input id="crew-hold-strong" type="radio" name="data.hold" value="strong">
<label for="crew-hold-strong"></label>
<input id="crew-{{actor._id}}-hold-strong" type="radio" name="data.hold" value="strong">
<label for="crew-{{actor._id}}-hold-strong"></label>
</div>
{{/multiboxes}}
</div>
<div id="crew-tier">
<div id="crew-{{actor._id}}-tier">
{{#multiboxes data.tier}}
<input id="crew-tier-0" type="radio" name="data.tier" value="0">
<label for="crew-tier-0" class="black-label">{{localize "BITD.Tier"}}</label>
<input id="crew-tier-1" type="radio" name="data.tier" value="1">
<label for="crew-tier-1"></label>
<input id="crew-tier-2" type="radio" name="data.tier" value="2">
<label for="crew-tier-2"></label>
<input id="crew-tier-3" type="radio" name="data.tier" value="3">
<label for="crew-tier-3"></label>
<input id="crew-tier-4" type="radio" name="data.tier" value="4">
<label for="crew-tier-4"></label>
<input id="crew-{{actor._id}}-tier-0" type="radio" name="data.tier" value="0">
<label for="crew-{{actor._id}}-tier-0" class="black-label">{{localize "BITD.Tier"}}</label>
<input id="crew-{{actor._id}}-tier-1" type="radio" name="data.tier" value="1">
<label for="crew-{{actor._id}}-tier-1"></label>
<input id="crew-{{actor._id}}-tier-2" type="radio" name="data.tier" value="2">
<label for="crew-{{actor._id}}-tier-2"></label>
<input id="crew-{{actor._id}}-tier-3" type="radio" name="data.tier" value="3">
<label for="crew-{{actor._id}}-tier-3"></label>
<input id="crew-{{actor._id}}-tier-4" type="radio" name="data.tier" value="4">
<label for="crew-{{actor._id}}-tier-4"></label>
{{/multiboxes}}
</div>
</div>
@ -74,71 +74,71 @@
<section class="flex-horizontal">
<div id="crew-reputation">
<div id="crew-{{actor._id}}-reputation" class="crew-reputation">
{{#multiboxes data.reputation}}
{{#repturf data.turfs_amount}}
<input type="radio" id="crew-reputation-0" name="data.reputation" value="0" dtype="Radio">
<label class="black-label" for="crew-reputation-0">{{localize "BITD.Rep"}}</label>
<input type="radio" id="crew-reputation-1" name="data.reputation" value="1" dtype="Radio">
<label for="crew-reputation-1"></label>
<input type="radio" id="crew-reputation-2" name="data.reputation" value="2" dtype="Radio">
<label for="crew-reputation-2"></label>
<input type="radio" id="crew-reputation-3" name="data.reputation" value="3" dtype="Radio">
<label for="crew-reputation-3"></label>
<input type="radio" id="crew-reputation-4" name="data.reputation" value="4" dtype="Radio">
<label for="crew-reputation-4"></label>
<input type="radio" id="crew-reputation-5" name="data.reputation" value="5" dtype="Radio">
<label for="crew-reputation-5"></label>
<input type="radio" id="crew-reputation-6" name="data.reputation" value="6" dtype="Radio">
<label for="crew-reputation-6"></label>
<input type="radio" id="crew-reputation-7" name="data.reputation" value="7" dtype="Radio">
<label for="crew-reputation-7"></label>
<input type="radio" id="crew-reputation-8" name="data.reputation" value="8" dtype="Radio">
<label for="crew-reputation-8"></label>
<input type="radio" id="crew-reputation-9" name="data.reputation" value="9" dtype="Radio" >
<label for="crew-reputation-9"></label>
<input type="radio" id="crew-reputation-10" name="data.reputation" value="10" dtype="Radio" >
<label for="crew-reputation-10"></label>
<input type="radio" id="crew-reputation-11" name="data.reputation" value="11" dtype="Radio" >
<label for="crew-reputation-11"></label>
<input type="radio" id="crew-reputation-12" name="data.reputation" value="12" dtype="Radio" >
<label for="crew-reputation-12"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-0" name="data.reputation" value="0" dtype="Radio">
<label class="black-label" for="crew-{{../actor._id}}-reputation-0">{{localize "BITD.Rep"}}</label>
<input type="radio" id="crew-{{../actor._id}}-reputation-1" name="data.reputation" value="1" dtype="Radio">
<label for="crew-{{../actor._id}}-reputation-1"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-2" name="data.reputation" value="2" dtype="Radio">
<label for="crew-{{../actor._id}}-reputation-2"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-3" name="data.reputation" value="3" dtype="Radio">
<label for="crew-{{../actor._id}}-reputation-3"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-4" name="data.reputation" value="4" dtype="Radio">
<label for="crew-{{../actor._id}}-reputation-4"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-5" name="data.reputation" value="5" dtype="Radio">
<label for="crew-{{../actor._id}}-reputation-5"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-6" name="data.reputation" value="6" dtype="Radio">
<label for="crew-{{../actor._id}}-reputation-6"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-7" name="data.reputation" value="7" dtype="Radio">
<label for="crew-{{../actor._id}}-reputation-7"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-8" name="data.reputation" value="8" dtype="Radio">
<label for="crew-{{../actor._id}}-reputation-8"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-9" name="data.reputation" value="9" dtype="Radio" >
<label for="crew-{{../actor._id}}-reputation-9"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-10" name="data.reputation" value="10" dtype="Radio" >
<label for="crew-{{../actor._id}}-reputation-10"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-11" name="data.reputation" value="11" dtype="Radio" >
<label for="crew-{{../actor._id}}-reputation-11"></label>
<input type="radio" id="crew-{{../actor._id}}-reputation-12" name="data.reputation" value="12" dtype="Radio" >
<label for="crew-{{../actor._id}}-reputation-12"></label>
{{/repturf}}
{{/multiboxes}}
<div class="gray-label">{{localize "BITD.Turf"}}</div>
</div>
{{!-- Coins --}}
<div id="crew-coins">
<div id="crew-{{actor._id}}-coins" class="crew-coins-container">
<div id="crew-coins-hands">
<div id="crew-{{actor._id}}-coins-hands" class="crew-coins-hands">
<div class="stripe">
<label for="crew-coins-hands-0">{{localize "BITD.Coins"}} <i class="fab fa-creative-commons-zero nullifier"></i></label>
<label for="crew-{{actor._id}}-coins-hands-0">{{localize "BITD.Coins"}} <i class="fab fa-creative-commons-zero nullifier"></i></label>
</div>
<div class="crew-coins coins-hands">
{{#multiboxes data.coins.value}}
<input type="radio" id="crew-coins-hands-0" name="data.coins.value" value="0" checked="checked">
<input type="radio" id="crew-coins-hands-1" name="data.coins.value" value="1">
<label for="crew-coins-hands-1"></label>
<input type="radio" id="crew-coins-hands-2" name="data.coins.value" value="2">
<label for="crew-coins-hands-2"></label>
<input type="radio" id="crew-coins-hands-3" name="data.coins.value" value="3">
<label for="crew-coins-hands-3"></label>
<input type="radio" id="crew-coins-hands-4" name="data.coins.value" value="4">
<label for="crew-coins-hands-4"></label>
<input type="radio" id="crew-{{actor._id}}-coins-hands-0" name="data.coins.value" value="0" checked="checked">
<input type="radio" id="crew-{{actor._id}}-coins-hands-1" name="data.coins.value" value="1">
<label for="crew-{{actor._id}}-coins-hands-1"></label>
<input type="radio" id="crew-{{actor._id}}-coins-hands-2" name="data.coins.value" value="2">
<label for="crew-{{actor._id}}-coins-hands-2"></label>
<input type="radio" id="crew-{{actor._id}}-coins-hands-3" name="data.coins.value" value="3">
<label for="crew-{{actor._id}}-coins-hands-3"></label>
<input type="radio" id="crew-{{actor._id}}-coins-hands-4" name="data.coins.value" value="4">
<label for="crew-{{actor._id}}-coins-hands-4"></label>
{{/multiboxes}}
</div>
</div>
{{#if data.vault.max}}
<div id="crew-coins-vault">
<div id="crew-{{actor._id}}-coins-vault" class="crew-coins-vault">
<div class="stripe">
<label for="crew-coins-vault-0">{{localize "BITD.Vault"}} <i class="fab fa-creative-commons-zero nullifier"></i></label>
<label for="crew-{{actor._id}}-coins-vault-0">{{localize "BITD.Vault"}} <i class="fab fa-creative-commons-zero nullifier"></i></label>
</div>
<div class="crew-coins coins-vault">
{{#multiboxes data.vault.value}}
<input type="radio" id="crew-coins-vault-0" name="data.vault.value" value="0" checked="checked">
<input type="radio" id="crew-{{actor._id}}-coins-vault-0" name="data.vault.value" value="0" checked="checked">
{{#crew_vault_coins data.vault.max}}{{/crew_vault_coins}}
{{/multiboxes}}
</div>
@ -149,47 +149,47 @@
</div>
{{!-- Heat/Wanted --}}
<div id="heat-wanted" class="flex-horizontal big-teeth-section">
<div id="crew-{{actor._id}}-heat-wanted" class="flex-horizontal big-teeth-section crew-heat-wanted">
<div id="crew-heat" class="big-teeth">
<div id="crew-{{actor._id}}-heat" class="big-teeth">
{{#multiboxes data.heat}}
<input type="radio" id="crew-heat-0" name="data.heat" value="0" dtype="Radio">
<label class="black-label" for="crew-heat-0">{{localize "BITD.Heat"}}</label>
<input type="radio" id="crew-heat-1" name="data.heat" value="1" dtype="Radio">
<label for="crew-heat-1"></label>
<input type="radio" id="crew-heat-2" name="data.heat" value="2" dtype="Radio">
<label for="crew-heat-2"></label>
<input type="radio" id="crew-heat-3" name="data.heat" value="3" dtype="Radio">
<label for="crew-heat-3"></label>
<input type="radio" id="crew-heat-4" name="data.heat" value="4" dtype="Radio">
<label for="crew-heat-4"></label>
<input type="radio" id="crew-heat-5" name="data.heat" value="5" dtype="Radio">
<label for="crew-heat-5"></label>
<input type="radio" id="crew-heat-6" name="data.heat" value="6" dtype="Radio">
<label for="crew-heat-6"></label>
<input type="radio" id="crew-heat-7" name="data.heat" value="7" dtype="Radio">
<label for="crew-heat-7"></label>
<input type="radio" id="crew-heat-8" name="data.heat" value="8" dtype="Radio">
<label for="crew-heat-8"></label>
<input type="radio" id="crew-heat-9" name="data.heat" value="9" dtype="Radio">
<label for="crew-heat-9"></label>
<input type="radio" id="crew-{{actor._id}}-heat-0" name="data.heat" value="0" dtype="Radio">
<label class="black-label" for="crew-{{actor._id}}-heat-0">{{localize "BITD.Heat"}}</label>
<input type="radio" id="crew-{{actor._id}}-heat-1" name="data.heat" value="1" dtype="Radio">
<label for="crew-{{actor._id}}-heat-1"></label>
<input type="radio" id="crew-{{actor._id}}-heat-2" name="data.heat" value="2" dtype="Radio">
<label for="crew-{{actor._id}}-heat-2"></label>
<input type="radio" id="crew-{{actor._id}}-heat-3" name="data.heat" value="3" dtype="Radio">
<label for="crew-{{actor._id}}-heat-3"></label>
<input type="radio" id="crew-{{actor._id}}-heat-4" name="data.heat" value="4" dtype="Radio">
<label for="crew-{{actor._id}}-heat-4"></label>
<input type="radio" id="crew-{{actor._id}}-heat-5" name="data.heat" value="5" dtype="Radio">
<label for="crew-{{actor._id}}-heat-5"></label>
<input type="radio" id="crew-{{actor._id}}-heat-6" name="data.heat" value="6" dtype="Radio">
<label for="crew-{{actor._id}}-heat-6"></label>
<input type="radio" id="crew-{{actor._id}}-heat-7" name="data.heat" value="7" dtype="Radio">
<label for="crew-{{actor._id}}-heat-7"></label>
<input type="radio" id="crew-{{actor._id}}-heat-8" name="data.heat" value="8" dtype="Radio">
<label for="crew-{{actor._id}}-heat-8"></label>
<input type="radio" id="crew-{{actor._id}}-heat-9" name="data.heat" value="9" dtype="Radio">
<label for="crew-{{actor._id}}-heat-9"></label>
{{/multiboxes}}
</div>
<div id="crew-wanted-container" class="small-teeth-container">
<div id="crew-{{actor._id}}-wanted-container" class="small-teeth-container crew-wanted-container">
{{#multiboxes data.wanted}}
<div id="crew-wanted" class="small-teeth-wrap">
<label class="black-label" for="crew-wanted-counter-0">{{localize "BITD.Wanted"}}</label>
<div id="crew-{{actor._id}}-wanted" class="small-teeth-wrap">
<label class="black-label" for="crew-{{actor._id}}-wanted-counter-0">{{localize "BITD.Wanted"}}</label>
<div class="small-teeth">
<input type="radio" id="crew-wanted-counter-0" name="data.wanted" value="0">
<input type="radio" id="crew-wanted-counter-1" name="data.wanted" value="1">
<label for="crew-wanted-counter-1"></label>
<input type="radio" id="crew-wanted-counter-2" name="data.wanted" value="2">
<label for="crew-wanted-counter-2"></label>
<input type="radio" id="crew-wanted-counter-3" name="data.wanted" value="3">
<label for="crew-wanted-counter-3"></label>
<input type="radio" id="crew-wanted-counter-4" name="data.wanted" value="4">
<label for="crew-wanted-counter-4"></label>
<input type="radio" id="crew-{{actor._id}}-wanted-counter-0" name="data.wanted" value="0">
<input type="radio" id="crew-{{actor._id}}-wanted-counter-1" name="data.wanted" value="1">
<label for="crew-{{actor._id}}-wanted-counter-1"></label>
<input type="radio" id="crew-{{actor._id}}-wanted-counter-2" name="data.wanted" value="2">
<label for="crew-{{actor._id}}-wanted-counter-2"></label>
<input type="radio" id="crew-{{actor._id}}-wanted-counter-3" name="data.wanted" value="3">
<label for="crew-{{actor._id}}-wanted-counter-3"></label>
<input type="radio" id="crew-{{actor._id}}-wanted-counter-4" name="data.wanted" value="4">
<label for="crew-{{actor._id}}-wanted-counter-4"></label>
</div>
</div>
{{/multiboxes}}
@ -202,7 +202,7 @@
<div class="flex-vertical">
<div id="crew-class" class="class-name">
<div id="crew-{{actor._id}}-class" class="class-name crew-class">
{{#each actor.items as |item id|}}
{{#if (eq item.type "crew_type")}}
<div class="big-name">{{item.name}}</div>
@ -224,11 +224,11 @@
{{!-- Crew XP --}}
<div class="flex-fertical">
<div class="big-teeth-section">
<div id="crew-xp" class="big-teeth">
<label class="black-label" for="crew-experience-0">{{localize "BITD.CrewXP"}}</label>
<div id="crew-{{actor._id}}-xp" class="big-teeth">
<label class="black-label" for="crew-{{../actor._id}}-experience-0">{{localize "BITD.CrewXP"}}</label>
{{#multiboxes data.experience}}
<input type="radio" id="crew-experience-0" name="data.experience" value="0" dtype="Radio">
{{#crew_experience}}{{/crew_experience}}
<input type="radio" id="crew-{{actor._id}}-experience-0" name="data.experience" value="0" dtype="Radio">
{{#crew_experience actor}}{{/crew_experience}}
{{/multiboxes}}
</div>
</div>
@ -257,7 +257,7 @@
{{#each actor.items as |item id|}}
{{#if (eq item.type "crew_type")}}
<div class="item" data-item-id="{{item._id}}">
{{> "systems/blades-in-the-dark/templates/parts/turf-list.html" turfs_data=item.data.turfs can_edit=false}}
{{> "systems/blades-in-the-dark/templates/parts/turf-list.html" actor=../actor turfs_data=item.data.turfs can_edit=false}}
</div>
{{/if}}
{{/each}}
@ -265,7 +265,7 @@
{{!-- Crew Upgrades --}}
<div id="crew-upgrades" class="tab grow-two flex-vertical" data-tab="upgrades">
<div id="crew-{{actor._id}}-upgrades" class="crew-upgrades tab grow-two flex-vertical" data-tab="upgrades">
<div class="label-stripe flex-horizontal">
<p>{{localize "BITD.CrewUpgrades"}}</p>
<p><a class="item-add-popup" data-item-type="crew_upgrade"><i class="fas fa-plus-square"></i></a></p>
@ -284,7 +284,7 @@
</div>
{{!-- Crew Abilities --}}
<div id="crew-abilities" class="tab grow-two flex-vertical" data-tab="abilities">
<div id="crew-{{actor._id}}-abilities" class="crew-abilities tab grow-two flex-vertical" data-tab="abilities">
<div class="label-stripe flex-horizontal">
<p>{{localize "BITD.SpecialAbilities"}}</p>
<p><a class="item-add-popup" data-item-type="crew_ability"><i class="fas fa-plus-square"></i></a></p>
@ -303,7 +303,7 @@
</div>
{{!-- Cohorts --}}
<div id="crew-cohorts" class="tab grow-two flex-vertical" data-tab="cohorts">
<div id="crew-{{actor._id}}-cohorts" class="crew-cohorts tab grow-two flex-vertical" data-tab="cohorts">
<div class="label-stripe flex-horizontal">
<p>{{localize "BITD.Cohorts"}}</p>
<p><a class="add-item" data-item-type="cohort"><i class="fas fa-plus-square"></i></a></p>
@ -320,7 +320,7 @@
</div>
{{!-- Notes --}}
<div id="notes" class="tab grow-two flex-vertical" data-tab="notes">
<div id="crew-{{actor._id}}-notes" class="notes tab grow-two flex-vertical" data-tab="notes">
<div class="label-stripe">
<p>{{localize "BITD.Notes"}}</p>
</div>

View file

@ -11,7 +11,7 @@
{{#each actor.items as |faction id|}}
{{#if (eq faction.type "faction")}}
<div id="faction-items" class="label-stripe-gray item flex-horizontal" data-item-id="{{faction._id}}">
<div id="faction-{{faction._id}}-items" class="faction-items label-stripe-gray item flex-horizontal" data-item-id="{{faction._id}}">
<a class="item-body flex-horizontal">
<img src="{{faction.img}}" title="{{faction.name}}" width="24" height="24"/>
<div class="item-name">{{faction.name}}<br>{{localize "BITD.Tier"}}: {{faction.data.tier}}</div>

View file

@ -7,7 +7,7 @@
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
<section class="sheet-body flex">
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</section>
<div class="flex-vertical">

View file

@ -110,7 +110,7 @@
</div>
</section>
<section>
<section class="flex">
<input id="cohort-armor" type="checkbox" name="data.armor" value="{{data.armor}}" {{checked data.armor}}>
<label for="cohort-armor">{{localize "BITD.Armor"}}</label>
</section>

View file

@ -7,7 +7,7 @@
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
<section class="sheet-body flex">
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</section>

View file

@ -1,9 +1,9 @@
<div id="attributes">
<div id="character-{{actor._id}}-attributes" class="attributes">
{{#each data.attributes as |attribute attribute_name|}}
<div id="attributes-{{attribute_name}}" class="attribute">
<div id="attributes-{{attribute_name}}-title" class="attributes-exp">
<div id="character-{{../actor._id}}-attributes-{{attribute_name}}" class="attribute">
<div id="character-{{../actor._id}}-attributes-{{attribute_name}}-title" class="attributes-exp">
<div class="stripe">
<a class="attribute-label roll-die-attribute rollable-text" data-roll-attribute="{{attribute_name}}">{{localize (concat attribute.label 'Short')}}</a>
</div>

View file

@ -1,6 +1,6 @@
<div id="coins" class="flex-horizontal">
<div id="character-{{actor._id}}-coins" class="flex-horizontal">
<div id="coins-hands">
<div id="character-{{actor._id}}-coins-hands">
<div class="stripe">
<label for="coins-{{actor._id}}-hands-0">{{localize "BITD.Coin"}}
<i class="fab fa-creative-commons-zero nullifier"></i></label>
@ -20,7 +20,7 @@
</div>
</div>
<div id="coins-stashed">
<div id="coins-{{actor._id}}-coins-stashed">
<div class="stripe">
<label for="coins-{{actor._id}}-stashed-0">{{localize "BITD.Stash"}} <i

View file

@ -1,4 +1,4 @@
<div id="turf-list" class="{{#if can_edit}}section-editable{{else}}section-non-editable{{/if}}">
<div id="crew-{{actor._id}}-turf-list" class="turf-list {{#if can_edit}}section-editable{{else}}section-non-editable{{/if}}">
<div class="turf-row">
{{#each turfs_data as |turf id|}}