Support des propriétés d'items

Amélioration de l'interface
Améliorations cosmétiques
This commit is contained in:
ZigmundKreud 2021-12-24 04:51:14 +01:00
parent d5a5990faa
commit 7531937e52
59 changed files with 1919 additions and 210 deletions

View File

@ -1,4 +1,131 @@
/* ----------------------------------------- */
/* LOCAL FONTS */
/* ----------------------------------------- */
@import "../node_modules/rpg-awesome/css/rpg-awesome.min.css";
@font-face {
font-family: 'Contrail One';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/contrailone/v10/eLGbP-j_JA-kG0_Zo51noafdZQ.ttf) format('truetype');
}
@font-face {
font-family: "CCMeanwhile";
src: url('../fonts/ccmeanwhile-regular.ttf');
}
@font-face {
font-family: "Wolfsbane2";
src: url('../fonts/wolfsbane2.ttf');
}
@font-face {
font-family: "Wolfsbane2Condensed";
src: url('../fonts/wolfsbane2cond.ttf');
}
@font-face {
font-family: "Wolfsbane2Expanded";
src: url('../fonts/wolfsbane2expand.ttf');
}
@font-face {
font-family: "IMFellDWPicaSC-Regular";
src: url('../fonts/IMFellDWPicaSC-Regular.ttf');
}
/* ----------------------------------------- */
/* TEXT STYLES */
/* ----------------------------------------- */
/* -------------- */
/* Font Awesome */
/* Overrides */
/* -------------- */
/* ------------- */
a.entity-link,
a.inline-roll {
border: none;
background: transparent;
border-bottom: 1px dotted grey;
padding: 0;
}
a.inline-roll {
border: none;
}
a:hover {
text-shadow: 0 0 5px #a00;
}
#pause {
background: none;
}
#pause > img {
width: 200px;
height: 200px;
top: -50px;
left: calc(50% - 100px);
opacity: 0.7;
-webkit-animation: rotation 10s infinite linear;
animation: rotation 10s infinite linear;
}
#pause h3 {
font-family: "IMFellDWPicaSC-Regular", serif;
font-size: 32px;
text-shadow: 0px 3px 5px #000000;
}
::-webkit-scrollbar-thumb {
outline: none;
border-radius: 3px;
background: #999 !important;
border: 1px solid #333 !important;
border-color: #333 !important;
}
::-webkit-scrollbar-track {
box-shadow: 0 0 3px #005d67 inset !important;
border-radius: 3px;
}
* {
scrollbar-width: thin !important;
scrollbar-color: #005d67 #ccc !important;
}
.element-invisible {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
border: 0;
padding: 0;
clip: rect(0 0 0 0);
overflow: hidden;
}
.hide {
display: none;
}
.ellipsis {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.nomargin {
margin: 0;
padding: 0;
}
.flxrow {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
}
.flxrow > * {
flex: 1;
}
.flxrow .flex1 {
flex: 1;
}
.flxrow .flex2 {
flex: 2;
}
.flxrow .flex3 {
flex: 3;
}
.flxrow .flex4 {
flex: 4;
}
/* ----------------------------------------- */
/* Flexbox */
/* ----------------------------------------- */
.flexrow {
@ -141,6 +268,7 @@
background: rgba(0, 0, 0, 0.1);
}
.bol select {
box-shadow: none;
font-size: 14px;
text-align: center;
text-align-last: center;
@ -152,12 +280,18 @@
.bol select[multiple] {
box-shadow: none;
border: none;
font-size: 12px;
font-size: 14px;
}
.bol select[multiple]:focus option:checked {
background: darkred linear-gradient(0deg, darkred 0%, darkred 100%);
color: white;
}
.bol option {
font-size: 14px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.bol option:hover,
.bol option:focus,
.bol option:active,
@ -222,6 +356,9 @@
flex: auto;
text-align: left;
}
.bol .form-group .form-fields .field-value {
text-align: center;
}
.bol .form-group.stacked label {
flex: 0 0 100%;
margin: 0;
@ -231,11 +368,35 @@
text-align: left;
}
.bol .form-header {
margin: 0 0 0.25em 0;
padding: 2px 0;
font-size: 20px;
margin: 0.25em 0 0.25em 0;
padding: 2px 5px;
font-family: "Wolfsbane2Expanded", cursive;
color: #4b4a44;
background-color: lightgray;
}
.bol h1.form-header {
font-size: 2.5em;
font-weight: 700;
}
.bol h2.form-header {
font-size: 2em;
font-weight: 500;
border-bottom: 1px groove #eeede0;
}
.bol h3.form-header {
font-size: 1.5em;
font-weight: 500;
border-bottom: 1px groove #eeede0;
}
.bol h4.form-header {
font-size: 1em;
font-weight: 500;
font-family: 'Signika', sans-serif;
color: black;
background-color: transparent;
border-top: none;
border-bottom: 1px groove #eeede0;
}
.bol .tag {
display: inline-block;
margin: 0 2px 0 0;
@ -266,35 +427,6 @@
.bol .property {
margin-top: 2px;
}
/* ----------------------------------------- */
/* LOCAL FONTS */
/* ----------------------------------------- */
@font-face {
font-family: 'Contrail One';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/contrailone/v10/eLGbP-j_JA-kG0_Zo51noafdZQ.ttf) format('truetype');
}
@font-face {
font-family: "CCMeanwhile";
src: url('../fonts/ccmeanwhile-regular.ttf');
}
@font-face {
font-family: "Wolfsbane2";
src: url('../fonts/wolfsbane2.ttf');
}
@font-face {
font-family: "Wolfsbane2Condensed";
src: url('../fonts/wolfsbane2cond.ttf');
}
@font-face {
font-family: "Wolfsbane2Expanded";
src: url('../fonts/wolfsbane2expand.ttf');
}
/* ----------------------------------------- */
/* TEXT STYLES */
/* ----------------------------------------- */
/* Items List */
.items-list {
list-style: none;
@ -481,12 +613,61 @@
color: darkslategrey;
font-weight: bold;
}
.chat-message {
margin: 3px;
padding: 10px;
font-size: 14px;
border-radius: 0;
background-color: white;
background-image: url("/systems/bol/ui/box-border-large.webp");
background-repeat: no-repeat;
background-size: 100% 100%;
}
.chat-message .message-header .flavor-text {
font-family: "IMFellDWPicaSC-Regular", serif;
font-size: 14px;
}
.chat-message .message-header .flavor-text h2 {
font-family: "Modesto Condensed", "Palatino Linotype", serif;
font-size: 20px;
}
.chat-message .message-content .dice-roll .dice-result .dice-formula {
border-radius: 0px;
border: 1px inset lightgray;
background-color: #282828;
color: white;
}
.chat-message .message-content .dice-roll .dice-result .dice-tooltip .tooltip-part .part-total {
border-radius: 0px;
border: 1px inset lightgray;
background-color: #2a2a2a;
color: white;
}
.chat-message .message-content .dice-roll .dice-result .dice-total {
border-radius: 0px;
border: 1px inset lightgray;
background-color: #2a2a2a;
color: white;
}
body.system-bol img#logo {
content: url("/systems/bol/ui/logo2.webp");
}
.bol.sheet .window-header {
border: none;
}
.bol.sheet .window-content {
height: 100%;
padding: 5px;
padding: 10px;
overflow-y: hidden;
background: transparent;
}
.bol.sheet .window-content form {
border: 10px solid transparent;
border-image: url("/systems/bol/ui/box-border-large.webp") 36 repeat;
border-image-outset: 1;
background: white;
margin: 0;
padding: 0;
height: 100%;
}
.bol.sheet .window-content form .sheet-header {
@ -529,15 +710,16 @@
/* Sheet Tabs */
}
.bol.sheet .window-content form .main .tabs {
flex: 0 0 40px;
flex: 0 0 30px;
background-color: black;
}
.bol.sheet .window-content form .main .tabs .item {
line-height: 40px;
line-height: 30px;
font-weight: bold;
font-family: "CCMeanwhile", cursive;
color: white;
font-size: 14px;
padding-top: 4px;
font-size: 0.8em;
}
.bol.sheet .window-content form .main .tabs .item.active {
text-decoration: underline;
@ -547,7 +729,8 @@
overflow: hidden;
}
.bol.sheet .window-content form .main .sheet-body .tab {
height: 100%;
height: 95%;
border: none;
overflow-y: auto;
/* Items List */
}
@ -564,7 +747,6 @@
background-image: url("/systems/bol/ui/logo.webp");
background-repeat: no-repeat;
background-size: 190px 115px;
background-color: white;
}
.bol.sheet.actor .window-content form .sidebar {
padding-top: 115px;
@ -585,10 +767,6 @@
.bol.sheet.actor .window-content form .main .sheet-body {
overflow: hidden;
}
.bol.sheet.actor .window-content form .main .sheet-body .tab {
height: 100%;
overflow-y: auto;
}
.bol.sheet.actor .window-content form .main .sheet-body .tab .attribute.vigor {
background-image: url("/systems/bol/ui/attributes/vigor.webp");
background-repeat: no-repeat;
@ -715,9 +893,6 @@
.bol.sheet.item .item-properties .form-group label {
line-height: 20px;
}
.bol.sheet.item .item-properties .form-group input {
text-align: right;
}
.bol.sheet.item .item-properties .properties-list {
list-style: none;
margin: 0;

View File

@ -64,7 +64,7 @@
},
"soak" : {
"formula" : "d6-1",
"value" : 1
"value" : 3
}
}
}

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 634 KiB

Binary file not shown.

Binary file not shown.

BIN
fonts/skullz.ttf Normal file

Binary file not shown.

View File

@ -27,8 +27,9 @@
"BOL.ui.tab.features": "Traits",
"BOL.ui.tab.equipment": "Equipement",
"BOL.ui.tab.description": "Description",
"BOL.ui.tab.properties": "Proprietes",
"BOL.ui.tab.details": "Details",
"BOL.ui.properties": "Proprietes",
"BOL.ui.description": "Description",
"BOL.ui.actions": "Actions",
"BOL.ui.damages": "Dommages",
@ -49,6 +50,7 @@
"BOL.ui.delete": "Supprimer",
"BOL.ui.roll" : "Utiliser",
"BOL.ui.equipment" : "Équipement",
"BOL.ui.armor" : "Armure",
"BOL.ui.weapon" : "Arme",
"BOL.ui.melee" : "Arme de contact",
"BOL.ui.ranged" : "Arme à distance",
@ -73,6 +75,8 @@
"BOL.ui.failure" : "Échec",
"BOL.ui.fumble" : "Échec critique",
"BOL.ui.critical" : "Succès critique",
"BOL.ui.maneuvers" : "Actions de combat",
"BOL.ui.stacksize" : "Taille de pile (max)",
"BOL.featureCategory.origins": "Origines",
"BOL.featureCategory.races": "Races",
@ -88,11 +92,11 @@
"BOL.featureSubtypes.flaw": "Désavantage",
"BOL.featureSubtypes.language": "Langage",
"BOL.itemCategory.object": "Objet",
"BOL.itemCategory.equipment": "Équipement",
"BOL.itemCategory.consumable": "Consommable",
"BOL.itemCategory.spell": "Sort",
"BOL.itemCategory.mount": "Monture",
"BOL.itemCategory.vehicle": "Véhicule",
"BOL.itemCategory.vehicle": "Monture/Véhicule",
"BOL.itemCategory.other": "Autre",
"BOL.combatCategory.protections": "Protections",
@ -101,7 +105,10 @@
"BOL.combatCategory.ranged": "Armes à distance",
"BOL.equipmentCategory.weapon": "Arme",
"BOL.equipmentCategory.armor": "Armure",
"BOL.equipmentCategory.protection": "Protection",
"BOL.equipmentCategory.shield": "Bouclier",
"BOL.equipmentCategory.helm": "Casque",
"BOL.equipmentCategory.jewel": "Bijou",
"BOL.equipmentCategory.scroll": "Parchemin",
"BOL.equipmentCategory.ammunition": "Munition",
@ -118,7 +125,7 @@
"BOL.weaponCategory.ranged": "Arme de tir",
"BOL.weaponCategory.other": "Autre",
"BOL.itemProperty.equipable": "Equipable",
"BOL.itemProperty.equipable": "Équipable",
"BOL.itemProperty.protection": "Protection",
"BOL.itemProperty.blocking": "Blocage",
"BOL.itemProperty.magical": "Magique",
@ -135,7 +142,34 @@
"BOL.itemProperty.ranged": "A distance",
"BOL.itemProperty.weapon": "Arme",
"BOL.itemProperty.reloadable": "Rechargeable",
"BOL.itemProperty.worn": "Equipé",
"BOL.itemProperty.worn": "Équipé",
"BOL.itemProperty.spell" : "Sort",
"BOL.itemProperty.armor" : "Armure",
"BOL.itemProperty.consumable" : "Consommable",
"BOL.itemProperty.bow" : "Arc",
"BOL.itemProperty.crossbow" : "Arbalète",
"BOL.itemProperty.throwing" : "Arme de jet",
"BOL.itemProperty.activable" : "Activable",
"BOL.itemProperty.powder" : "Arme à poudre",
"BOL.itemProperty.attackAttribute" : "Attaque (Attribut)",
"BOL.itemProperty.attackAptitude" : "Attaque (Aptitude)",
"BOL.itemProperty.attackModifiers" : "Attaque (Modificateurs)",
"BOL.itemProperty.attackReroll1" : "Attaque (Relancer les 1)",
"BOL.itemProperty.damage" : "Dommages (Dés)",
"BOL.itemProperty.damageModifiers" : "Dommages (Modificateurs)",
"BOL.itemProperty.damageAttribute" : "Dommages (Attribut)",
"BOL.itemProperty.damageSpecial" : "Dommages (Spécial)",
"BOL.itemProperty.damageReroll1" : "Relancer les 1",
"BOL.itemProperty.range" : "Portée (en m)",
"BOL.itemProperty.soakFormula": "Encaissement (Formule)",
"BOL.itemProperty.soakModifiers": "Encaissement (Modificateur)",
"BOL.itemProperty.soakValue": "Encaissement (Valeur par défaut)",
"BOL.itemProperty.armorQuality": "Qualité d'armure",
"BOL.itemProperty.blockingMalus" : "Malus de blocage",
"BOL.itemProperty.blockingAttacksBlocked" : "Attaques bloquée",
"BOL.itemProperty.blocking1Attack" : "Bloque 1 attaque",
"BOL.itemProperty.blockingAllAttacks" : "Bloque toutes les attaques",
"BOL.itemStat.quantity": "Quantité",
"BOL.itemStat.weight": "Poids",
@ -147,16 +181,33 @@
"BOL.itemStat.blocking": "Bloquage",
"BOL.itemStat.modifiers": "Modificateurs",
"BOL.itemModifiers.init": "Initiative",
"BOL.itemModifiers.social": "Social",
"BOL.itemModifiers.agility": "Agilité",
"BOL.itemModifiers.powercost": "Coût supplémentaire en PP",
"BOL.itemModifiers.init": "Malus (Initiative)",
"BOL.itemModifiers.social": "Malus (Social)",
"BOL.itemModifiers.agility": "Malus (Agilité)",
"BOL.itemModifiers.powercost": "Malus (Coût supplémentaire en PP)",
"BOL.itemBlocking.malus": "Social",
"BOL.itemBlocking.nbAttacksPerRound": "Agilité",
"BOL.itemSoak.formula": "Formule",
"BOL.itemSoak.value": "Valeur",
"BOL.soakFormula.none" : "-",
"BOL.soakFormula.light" : "Légère (Annule d6-3 dégâts subis)",
"BOL.soakFormula.medium" : "Moyenne (Annule d6-2 dégâts subis)",
"BOL.soakFormula.heavy" : "Lourde (Annule d6-1 dégâts subis)",
"BOL.armorQuality.none" : "-",
"BOL.armorQuality.light" : "Légère",
"BOL.armorQuality.lightQ" : "Légère de qualité",
"BOL.armorQuality.lightSup" : "Légère Supérieure",
"BOL.armorQuality.lightLeg" : "Légère Légendaire",
"BOL.armorQuality.medium" : "Moyenne",
"BOL.armorQuality.mediumQ" : "Moyenne de qualité",
"BOL.armorQuality.mediumSup" : "Moyenne Supérieure",
"BOL.armorQuality.mediumLeg" : "Moyenne Légendaire",
"BOL.armorQuality.heavy" : "Lourde",
"BOL.armorQuality.heavyQ" : "Lourde de qualité",
"BOL.armorQuality.heavySup" : "Lourde Supérieure",
"BOL.armorQuality.heavyLeg" : "Lourde Légendaire",
"BOL.range.PointBlank": "Bout portant",
"BOL.range.Short": "Courte",

View File

@ -27,8 +27,9 @@
"BOL.ui.tab.features": "Traits",
"BOL.ui.tab.equipment": "Equipement",
"BOL.ui.tab.description": "Description",
"BOL.ui.tab.properties": "Proprietes",
"BOL.ui.tab.details": "Details",
"BOL.ui.properties": "Proprietes",
"BOL.ui.description": "Description",
"BOL.ui.actions": "Actions",
"BOL.ui.damages": "Dommages",
@ -49,6 +50,7 @@
"BOL.ui.delete": "Supprimer",
"BOL.ui.roll" : "Utiliser",
"BOL.ui.equipment" : "Équipement",
"BOL.ui.armor" : "Armure",
"BOL.ui.weapon" : "Arme",
"BOL.ui.melee" : "Arme de contact",
"BOL.ui.ranged" : "Arme à distance",
@ -73,6 +75,8 @@
"BOL.ui.failure" : "Échec",
"BOL.ui.fumble" : "Échec critique",
"BOL.ui.critical" : "Succès critique",
"BOL.ui.maneuvers" : "Actions de combat",
"BOL.ui.stacksize" : "Taille de pile (max)",
"BOL.featureCategory.origins": "Origines",
"BOL.featureCategory.races": "Races",
@ -88,11 +92,11 @@
"BOL.featureSubtypes.flaw": "Désavantage",
"BOL.featureSubtypes.language": "Langage",
"BOL.itemCategory.object": "Objet",
"BOL.itemCategory.equipment": "Équipement",
"BOL.itemCategory.consumable": "Consommable",
"BOL.itemCategory.spell": "Sort",
"BOL.itemCategory.mount": "Monture",
"BOL.itemCategory.vehicle": "Véhicule",
"BOL.itemCategory.vehicle": "Monture/Véhicule",
"BOL.itemCategory.other": "Autre",
"BOL.combatCategory.protections": "Protections",
@ -101,7 +105,10 @@
"BOL.combatCategory.ranged": "Armes à distance",
"BOL.equipmentCategory.weapon": "Arme",
"BOL.equipmentCategory.armor": "Armure",
"BOL.equipmentCategory.protection": "Protection",
"BOL.equipmentCategory.shield": "Bouclier",
"BOL.equipmentCategory.helm": "Casque",
"BOL.equipmentCategory.jewel": "Bijou",
"BOL.equipmentCategory.scroll": "Parchemin",
"BOL.equipmentCategory.ammunition": "Munition",
@ -118,7 +125,7 @@
"BOL.weaponCategory.ranged": "Arme de tir",
"BOL.weaponCategory.other": "Autre",
"BOL.itemProperty.equipable": "Equipable",
"BOL.itemProperty.equipable": "Équipable",
"BOL.itemProperty.protection": "Protection",
"BOL.itemProperty.blocking": "Blocage",
"BOL.itemProperty.magical": "Magique",
@ -135,7 +142,34 @@
"BOL.itemProperty.ranged": "A distance",
"BOL.itemProperty.weapon": "Arme",
"BOL.itemProperty.reloadable": "Rechargeable",
"BOL.itemProperty.worn": "Equipé",
"BOL.itemProperty.worn": "Équipé",
"BOL.itemProperty.spell" : "Sort",
"BOL.itemProperty.armor" : "Armure",
"BOL.itemProperty.consumable" : "Consommable",
"BOL.itemProperty.bow" : "Arc",
"BOL.itemProperty.crossbow" : "Arbalète",
"BOL.itemProperty.throwing" : "Arme de jet",
"BOL.itemProperty.activable" : "Activable",
"BOL.itemProperty.powder" : "Arme à poudre",
"BOL.itemProperty.attackAttribute" : "Attaque (Attribut)",
"BOL.itemProperty.attackAptitude" : "Attaque (Aptitude)",
"BOL.itemProperty.attackModifiers" : "Attaque (Modificateurs)",
"BOL.itemProperty.attackReroll1" : "Attaque (Relancer les 1)",
"BOL.itemProperty.damage" : "Dommages (Dés)",
"BOL.itemProperty.damageModifiers" : "Dommages (Modificateurs)",
"BOL.itemProperty.damageAttribute" : "Dommages (Attribut)",
"BOL.itemProperty.damageSpecial" : "Dommages (Spécial)",
"BOL.itemProperty.damageReroll1" : "Relancer les 1",
"BOL.itemProperty.range" : "Portée (en m)",
"BOL.itemProperty.soakFormula": "Encaissement (Formule)",
"BOL.itemProperty.soakModifiers": "Encaissement (Modificateur)",
"BOL.itemProperty.soakValue": "Encaissement (Valeur par défaut)",
"BOL.itemProperty.armorQuality": "Qualité d'armure",
"BOL.itemProperty.blockingMalus" : "Malus de blocage",
"BOL.itemProperty.blockingAttacksBlocked" : "Attaques bloquée",
"BOL.itemProperty.blocking1Attack" : "Bloque 1 attaque",
"BOL.itemProperty.blockingAllAttacks" : "Bloque toutes les attaques",
"BOL.itemStat.quantity": "Quantité",
"BOL.itemStat.weight": "Poids",
@ -147,16 +181,33 @@
"BOL.itemStat.blocking": "Bloquage",
"BOL.itemStat.modifiers": "Modificateurs",
"BOL.itemModifiers.init": "Initiative",
"BOL.itemModifiers.social": "Social",
"BOL.itemModifiers.agility": "Agilité",
"BOL.itemModifiers.powercost": "Coût supplémentaire en PP",
"BOL.itemModifiers.init": "Malus (Initiative)",
"BOL.itemModifiers.social": "Malus (Social)",
"BOL.itemModifiers.agility": "Malus (Agilité)",
"BOL.itemModifiers.powercost": "Malus (Coût supplémentaire en PP)",
"BOL.itemBlocking.malus": "Social",
"BOL.itemBlocking.nbAttacksPerRound": "Agilité",
"BOL.itemSoak.formula": "Formule",
"BOL.itemSoak.value": "Valeur",
"BOL.soakFormula.none" : "-",
"BOL.soakFormula.light" : "Légère (Annule d6-3 dégâts subis)",
"BOL.soakFormula.medium" : "Moyenne (Annule d6-2 dégâts subis)",
"BOL.soakFormula.heavy" : "Lourde (Annule d6-1 dégâts subis)",
"BOL.armorQuality.none" : "-",
"BOL.armorQuality.light" : "Légère",
"BOL.armorQuality.lightQ" : "Légère de qualité",
"BOL.armorQuality.lightSup" : "Légère Supérieure",
"BOL.armorQuality.lightLeg" : "Légère Légendaire",
"BOL.armorQuality.medium" : "Moyenne",
"BOL.armorQuality.mediumQ" : "Moyenne de qualité",
"BOL.armorQuality.mediumSup" : "Moyenne Supérieure",
"BOL.armorQuality.mediumLeg" : "Moyenne Légendaire",
"BOL.armorQuality.heavy" : "Lourde",
"BOL.armorQuality.heavyQ" : "Lourde de qualité",
"BOL.armorQuality.heavySup" : "Lourde Supérieure",
"BOL.armorQuality.heavyLeg" : "Lourde Légendaire",
"BOL.range.PointBlank": "Bout portant",
"BOL.range.Short": "Courte",

View File

@ -11,8 +11,8 @@ export class BoLItemSheet extends ItemSheet {
return mergeObject(super.defaultOptions, {
classes: ["bol", "sheet", "item"],
template: "systems/bol/templates/item/item-sheet.hbs",
width: 520,
height: 480,
width: 650,
height: 750,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }]
});
}
@ -30,31 +30,17 @@ export class BoLItemSheet extends ItemSheet {
/* -------------------------------------------- */
/** @override */
getData() {
const objectData = BoLUtility.data(this.item);
// const objectData = BoLUtility.data(this.object);
let itemData = foundry.utils.deepClone(BoLUtility.templateData(this.item));
let formData = {
title: this.title,
id: this.id,
config: game.bol.config,
type: objectData.type,
img: objectData.img,
name: objectData.name,
editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked",
data: itemData,
limited: this.object.limited,
options: this.options,
owner: this.document.isOwner,
isGM: game.user.isGM,
itemProperties : this.item.itemProperties
}
console.log("ITEMDATA", formData);
this.options.editable = !(this.object.data.origin == "embeddedItem");
return formData;
getData(options) {
const data = super.getData(options);
const itemData = data.data;
data.config = game.bol.config;
data.item = itemData;
data.data = itemData.data;
data.category = itemData.category;
data.itemProperties = this.item.itemProperties;
data.isGM = game.user.isGM;
console.log("ITEMDATA", data);
return data;
}
/* -------------------------------------------- */
@ -76,6 +62,13 @@ export class BoLItemSheet extends ItemSheet {
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
// Roll handlers, click handlers, etc. would go here.
html.find('.armorQuality').change(ev => {
const li = $(ev.currentTarget);
console.log(game.bol.config.soakFormulas[li.val()]);
$('.soakFormula').val(game.bol.config.soakFormulas[li.val()]);
});
}
}

View File

@ -31,7 +31,7 @@ export class BoLItem extends Item {
const props = [];
if ( this.data.type === "item" ) {
const entries = Object.entries(this.data.data.properties);
props.push(...entries.filter(e => e[1] === true).map(e => { return game.bol.config.itemProperties[e[0]] }));
props.push(...entries.filter(e => e[1] === true).map(e => { return game.bol.config.itemProperties2[e[0]] }));
}
return props.filter(p => !!p);
}

View File

@ -9,23 +9,95 @@ System.debugMode = true;
export const BOL = {};
BOL.damageValues = {
"d3" : "d3",
"d6M" : "d6M (Malus)",
"d6" : "d6",
"d6B" : "d6B (Bonus)",
"d6BB" : "d6B + dé bonus",
}
BOL.armorQualities = {
"none" : "BOL.armorQuality.none",
"light" : "BOL.armorQuality.light",
"lightQ" : "BOL.armorQuality.lightQ",
"lightSup" : "BOL.armorQuality.lightSup",
"lightLeg" : "BOL.armorQuality.lightLeg",
"medium" : "BOL.armorQuality.medium",
"mediumQ" : "BOL.armorQuality.mediumQ",
"mediumSup" : "BOL.armorQuality.mediumSup",
"mediumLeg" : "BOL.armorQuality.mediumLeg",
"heavy" : "BOL.armorQuality.heavy",
"heavyQ" : "BOL.armorQuality.heavyQ",
"heavySup" : "BOL.armorQuality.heavySup",
"heavyLeg" : "BOL.armorQuality.heavyLeg"
}
BOL.soakFormulas = {
"none" : "0",
"light" : "1d6-3",
"lightQ" : "1d6r1-3",
"lightSup" : "1d6-2",
"lightLeg" : "2d6kh1-2",
"medium" : "1d6-2",
"mediumQ" : "1d6r1-2",
"mediumSup" : "1d6-1",
"mediumLeg" : "2d6kh1-1",
"heavy" : "1d6-1",
"heavyQ" : "1d6r1-1",
"heavySup" : "1d6",
"heavyLeg" : "2d6kh1"
}
BOL.attackAttributes = {
"vigor" : "BOL.attributes.vigor",
"agility" : "BOL.attributes.agility",
"mind" : "BOL.attributes.mind",
"appeal" : "BOL.attributes.appeal"
}
BOL.attackAptitudes = {
"melee" : "BOL.aptitudes.melee",
"ranged" : "BOL.aptitudes.ranged"
}
BOL.aptitudes = {
"melee" : "BOL.aptitudes.melee",
"ranged" : "BOL.aptitudes.ranged",
"init" : "BOL.aptitudes.init",
"def" : "BOL.aptitudes.def"
}
BOL.damageAttributes = {
"vigor" : "BOL.attributes.vigor",
"agility" : "BOL.attributes.agility",
"mind" : "BOL.attributes.mind",
"appeal" : "BOL.attributes.appeal"
}
BOL.itemCategories = {
"equipment" : "BOL.itemCategory.equipment",
"consumable" : "BOL.itemCategory.consumable",
"spell" : "BOL.itemCategory.spell",
"mount" : "BOL.itemCategory.mount",
"vehicle" : "BOL.itemCategory.vehicle",
"other" : "BOL.itemCategory.other"
}
BOL.equipmentCategories = {
"weapon" : "BOL.equipmentCategory.weapon",
BOL.itemSubtypes = {
"equipment" : "BOL.equipmentCategory.equipment",
"protection" : "BOL.equipmentCategory.protection",
"weapon" : "BOL.equipmentCategory.weapon",
"magical" : "BOL.equipmentCategory.magical"
}
BOL.equipmentCategories = {
"armor" : "BOL.equipmentCategory.armor",
"weapon" : "BOL.equipmentCategory.weapon",
"shield" : "BOL.equipmentCategory.shield",
"helm" : "BOL.equipmentCategory.helm",
"jewel" : "BOL.equipmentCategory.jewel",
"scroll" : "BOL.equipmentCategory.scroll",
"ammunition" : "BOL.equipmentCategory.ammunition",
"container" : "BOL.equipmentCategory.container",
"ammunition" : "BOL.equipmentCategory.ammunition",
"currency" : "BOL.equipmentCategory.currency",
"other" : "BOL.equipmentCategory.other"
}
@ -43,7 +115,14 @@ BOL.weaponCategories = {
"other" : "BOL.weaponCategory.other"
}
BOL.itemProperties = {
BOL.itemProperties1 = {
"equipable" : "BOL.itemProperty.equipable",
"protection" : "BOL.itemProperty.protection",
"magical" : "BOL.itemProperty.magical",
"worn" : "BOL.itemProperty.worn",
}
BOL.itemProperties2 = {
"equipable" : "BOL.itemProperty.equipable",
"protection" : "BOL.itemProperty.protection",
"blocking" : "BOL.itemProperty.blocking",
@ -62,6 +141,15 @@ BOL.itemProperties = {
"weapon" : "BOL.itemProperty.weapon",
"reloadable" : "BOL.itemProperty.reloadable",
"worn" : "BOL.itemProperty.worn",
"spell" : "BOL.itemProperty.spell",
"armor" : "BOL.itemProperty.armor",
"consumable" : "BOL.itemProperty.consumable",
"bow" : "BOL.itemProperty.bow",
"crossbow" : "BOL.itemProperty.crossbow",
"throwing" : "BOL.itemProperty.throwing",
"activable" : "BOL.itemProperty.activable",
"powder" : "BOL.itemProperty.powder",
"damage" : "BOL.itemProperty.damage"
}
BOL.itemStats = {

View File

@ -56,6 +56,10 @@ export const registerHandlebarsHelpers = function () {
return val1 || val2;
});
Handlebars.registerHelper('or3', function (val1, val2, val3) {
return val1 || val2 || val3;
});
Handlebars.registerHelper('not', function (cond) {
return !cond;
});
@ -100,4 +104,10 @@ export const registerHandlebarsHelpers = function () {
return array.includes(val);
});
Handlebars.registerHelper('eval', function (expr) {
return eval(expr);
});
}

View File

@ -1,5 +1,8 @@
export default function registerHooks() {
Hooks.on("renderPause", ((_app, html) => {
html.find("img").attr("src", "systems/bol/ui/pause2.webp")
}))
/**
* Create a macro when dropping an entity on the hotbar
* Item - open roll dialog for item

View File

@ -19,11 +19,8 @@ export const preloadHandlebarsTemplates = async function () {
"systems/bol/templates/item/parts/properties/item-properties.hbs",
"systems/bol/templates/item/parts/properties/item/equipment-properties.hbs",
"systems/bol/templates/item/parts/properties/item/protection-properties.hbs",
"systems/bol/templates/item/parts/properties/item/shield-properties.hbs",
"systems/bol/templates/item/parts/properties/item/weapon-properties.hbs",
"systems/bol/templates/item/parts/properties/item/armor-properties.hbs",
"systems/bol/templates/item/parts/properties/item/melee-properties.hbs",
"systems/bol/templates/item/parts/properties/item/ranged-properties.hbs",
"systems/bol/templates/item/parts/properties/item/magical-properties.hbs",
"systems/bol/templates/item/parts/properties/feature/career-properties.hbs",
"systems/bol/templates/item/parts/properties/feature/boon-properties.hbs",
"systems/bol/templates/item/parts/properties/feature/flaw-properties.hbs",

13
package-lock.json generated
View File

@ -10,7 +10,8 @@
"license": "MIT",
"dependencies": {
"gulp": "^4.0.2",
"gulp-less": "^4.0.1"
"gulp-less": "^4.0.1",
"rpg-awesome": "^0.2.0"
}
},
"node_modules/accord": {
@ -3075,6 +3076,11 @@
"node": ">=0.10.0"
}
},
"node_modules/rpg-awesome": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/rpg-awesome/-/rpg-awesome-0.2.0.tgz",
"integrity": "sha512-+jTuYWHOs8iZV5+XKvI/7Ojr0k4pLX/dRpa2LHXReGMQI6h0cGvNxIh/AQY1zhAC7LPcNXnPTliD1/ugB/DbRA=="
},
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@ -6508,6 +6514,11 @@
"align-text": "^0.1.1"
}
},
"rpg-awesome": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/rpg-awesome/-/rpg-awesome-0.2.0.tgz",
"integrity": "sha512-+jTuYWHOs8iZV5+XKvI/7Ojr0k4pLX/dRpa2LHXReGMQI6h0cGvNxIh/AQY1zhAC7LPcNXnPTliD1/ugB/DbRA=="
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",

View File

@ -15,6 +15,7 @@
"private": true,
"dependencies": {
"gulp": "^4.0.2",
"gulp-less": "^4.0.1"
"gulp-less": "^4.0.1",
"rpg-awesome": "^0.2.0"
}
}

View File

@ -1,6 +1,8 @@
@import "global/typography";
@import 'global/foundry-overrides';
@import 'global/mixins';
@import "global/flex";
@import "global/forms";
@import "global/typography";
@import "global/item-list";
@import "global/colors";
@import 'global/chat';
@ -14,7 +16,18 @@
@footer-height: 30px;
@sidebar-width: 250px;
body.system-bol {
img#logo{
content: url("/systems/bol/ui/logo2.webp");
}
}
.bol {
//&.app {
//border:none;
//background: transparent;
//box-shadow: none;
//}
&.sheet {
@import 'components/common';
&.actor {

View File

@ -1,14 +1,10 @@
.window-content {
form {
background-image: url("/systems/bol/ui/logo.webp");
background-repeat: no-repeat;
background-size: @logo-width @logo-height;
background-color: white;
.sidebar {
//background-color: green;
//background-color: red;
padding-top: @logo-height;
min-width: @sidebar-width;
width: @sidebar-width;
@ -29,8 +25,6 @@
.sheet-body {
overflow: hidden;
.tab {
height: 100%;
overflow-y: auto;
.attribute {
&.vigor {
background-image: url("/systems/bol/ui/attributes/vigor.webp");

View File

@ -1,10 +1,19 @@
.window-header {
border:none;
}
.window-content {
//background: white;
height: 100%;
padding: 5px;
padding: 10px;
overflow-y: hidden;
background: transparent;
form {
border: 10px solid transparent;
border-image: url("/systems/bol/ui/box-border-large.webp") 108/3 repeat;
border-image-outset: 1;
background: white;
margin:0;
padding:0;
height: 100%;
.sheet-header {
//background-color: red;
@ -54,15 +63,16 @@
.main {
/* Sheet Tabs */
.tabs {
flex: 0 0 40px;
flex: 0 0 30px;
background-color: black;
.item {
line-height: 40px;
line-height: 30px;
font-weight: bold;
font-family: @font-handwrite;
color: white;
font-size: 14px;
padding-top: 4px;
font-size: 0.8em;
}
.item.active {
@ -75,7 +85,8 @@
overflow: hidden;
.tab {
height: 100%;
height: 95%;
border:none;
overflow-y: auto;
/* Items List */
&.description {

View File

@ -17,9 +17,9 @@ h1 {
line-height: 20px;
}
input {
text-align: right;
}
//input {
// text-align: right;
//}
}
.properties-list {

View File

@ -24,3 +24,59 @@
font-weight: bold;
}
}
.chat-message {
margin: 3px;
padding: 10px;
font-size: 14px;
border-radius : 0;
background-color: white;
background-image: url("/systems/bol/ui/box-border-large.webp");
background-repeat: no-repeat;
background-size: 100% 100%;
.message-header {
.flavor-text {
font-family: @font-special;
font-size: 14px;
h2 {
font-family: @font-special2;
font-size: 20px;
}
}
}
.message-content {
.dice-roll {
.dice-result {
.dice-formula {
border-radius: 0px;
border: 1px inset lightgray;
background-color: #282828;
color: white;
}
.dice-tooltip {
.tooltip-part {
.part-formula {
//display: none;
}
.part-total {
border-radius: 0px;
border: 1px inset lightgray;
background-color: #2a2a2a;
color: white;
}
}
}
.dice-total {
border-radius: 0px;
border: 1px inset lightgray;
background-color: #2a2a2a;
color: white;
}
}
}
}
// color: #191813;
// background: url(../bol/ui/box-border-large.webp) no-repeat;
// border: 2px solid #6f6c66;
// border-radius: 5px;
}

View File

@ -49,6 +49,7 @@
}
select {
box-shadow: none;
font-size: 14px;
text-align: center;
text-align-last: center;
@ -61,7 +62,7 @@
select[multiple]{
box-shadow: none;
border: none;
font-size: 12px;
font-size: 14px;
&:focus {
option:checked {
background: @c-darkred linear-gradient(0deg, @c-darkred 0%, @c-darkred 100%);
@ -69,6 +70,10 @@
}
}
}
option {
font-size: 14px;
.ellipsis();
}
option:hover,
option:focus,
option:active,
@ -153,6 +158,9 @@
}
}
.field-value {
text-align: center;
}
}
// Stacked Groups
@ -170,13 +178,43 @@
}
.form-header {
margin: 0 0 0.25em 0;
padding: 2px 0;
//border-top: $borderGroove;
//border-bottom: $borderGroove;
//font-family: $font-tertiary;
font-size: 20px;
margin: 0.25em 0 0.25em 0;
padding: 2px 5px;
//font-family: @font-special2;
//border-top: @borderGroove;
//border-bottom: @borderGroove;
font-family: @font-tertiary;
color: @colorOlive;
background-color: lightgray;
}
h1.form-header {
font-size: 2.5em;
font-weight: 700;
//color : black;
}
h2.form-header {
font-size: 2em;
font-weight: 500;
//color : black;
//border-top: @borderGroove;
border-bottom: @borderGroove;
}
h3.form-header {
font-size: 1.5em;
font-weight: 500;
//color : black;
//border-top: @borderGroove;
border-bottom: @borderGroove;
}
h4.form-header {
font-size: 1em;
font-weight: 500;
font-family: @font-primary;
color : black;
background-color: transparent;
border-top: none;
border-bottom: @borderGroove;
}
.tag {

View File

@ -0,0 +1,364 @@
//.window-app .window-header a.header-button {
// @mixin hoverWidth($class) {
// &.#{$class}:hover {
// max-width: 200px;
// color: #292929f0;
// }
// }
// display: flex;
// flex-flow: row-reverse;
// align-items: center;
// max-width: 34px;
// height: 26px;
// white-space: nowrap;
// line-height: 1;
// overflow: hidden;
// padding: 0 6px;
// margin: 0 0 0 4px;
// color: transparent;
// transition: max-width 1s ease;
// @include hoverWidth("char-gen");
// @include hoverWidth("custom-roll");
// @include hoverWidth("push-roll");
// @include hoverWidth("configure-sheet");
// @include hoverWidth("configure-token");
// @include hoverWidth("item-post");
// @include hoverWidth("share-image");
// @include hoverWidth("entry-text");
// @include hoverWidth("entry-image");
// @include hoverWidth("close");
// > i {
// font-size: var(--font-size--default);
// margin-left: 10px;
// margin-top: 2px;
// color: #292929f0;
// }
//}
/* -------------- */
/* Font Awesome */
/* Overrides */
/* -------------- */
//.fa-suitcase {
// font-family: RPGAwesome;
// font-size: 1.6rem;
// transform: translateY(1px);
// &:before {
// content: "\ea72";
// }
//}
//.fa-comments {
// font-family: RPGAwesome;
// font-size: 1.5rem;
// transform: translateY(1px);
// &:before {
// content: "\ea8f";
// }
//}
//.fa-fist-raised {
// font-family: Swordlings;
// transform: translate(1.3px, -0.6px);
// font-size: 1.5rem;
// &:before {
// content: "x";
// }
//}
/* ------------- */
//h3 {
// &.entity-name {
// & > a {
// color: #111;
// text-shadow: 0px 0px 5px #fff;
// font-weight: bold;
// text-transform: uppercase;
// margin: 2%;
// }
// }
//}
//.window-app {
// .window-content {
// padding: 2px 4px;
// }
// .window-resizable-handle {
// background: none;
// border: none;
// width: 19px;
// height: 19px;
// transform: translate(12px, 12px);
//
// &:hover {
// text-shadow: 0 0 5px #a00;
// }
//
// i.fas {
// transform: translateY(-1.5px) rotate(45deg);
// }
// }
// &.image-popout {
// form.flexcol {
// background: #fff;
// }
// .form-group {
// &.title {
// input {
// font-family: "IM FELL THREE LINE PICA";
// font-size: var(--font-size--extra-large);
// text-shadow: 0px 3px 4px rgba(0, 0, 0, 0.2);
// text-transform: uppercase;
// border: none;
// }
// }
// &.picker {
// opacity: 0.2;
// }
// input,
// button {
// background: #999;
// }
// }
// }
// .window-header {
// border: none;
// }
// &.minimized {
// .window-header {
// border: none;
// margin-top: -10px;
// display: flex;
// align-items: center;
// line-height: 1.5;
// padding: unset;
// .window-title {
// overflow: hidden;
// white-space: pre;
// }
// }
// }
// // Override weirdly big settings input box for numbers
// &#client-settings .settings-list input[data-dtype="Number"] {
// max-width: 3rem;
// text-align: center;
// }
//}
//body,
//button {
// font-family: Poppins, sans-serif;
// font-size: var(--font-size--small);
//}
//img {
// border: none;
// &.profile {
// padding: 5px;
// }
//}
//
//.app,
//#hotbar .macro,
//#hotbar .macro .macro-key,
//#hotbar .bar-controls,
//#controls .scene-control,
//#controls .control-tool,
//#navigation #nav-toggle,
//#navigation #scene-list .scene {
// background: #292929f0;
//}
a.entity-link,
a.inline-roll {
border: none;
background: transparent;
border-bottom: 1px dotted grey;
padding: 0;
}
a {
&.inline-roll {
border: none;
}
&:hover {
text-shadow: 0 0 5px #a00;
}
}
#pause {
background: none;
& > img {
width: 200px;
height: 200px;
top: -50px;
left: calc(50% - 100px);
opacity: 0.7;
-webkit-animation: rotation 10s infinite linear;
animation: rotation 10s infinite linear;
}
h3 {
font-family: @font-special;
font-size: 32px;
text-shadow: 0px 3px 5px rgba(0, 0, 0, 1);
}
}
//#navigation {
// left: 180px;
//}
//#scenes {
// .scene {
// h3 {
// background-color: #cccccc60;
// white-space: pre-wrap;
// line-height: 1;
// display: grid;
// & > a {
// place-self: center;
// }
// }
// }
//}
//#chat-log {
// .message {
// position: relative;
// &:after {
// content: "";
// border: 10px solid transparent;
// border-image: url(../assets/journal-art/small-border.webp) 100/10px repeat;
// position: absolute;
// height: calc(100% - 24px);
// width: calc(100% - 24px);
// margin: -3px 7px 7px -3px;
// pointer-events: none;
// }
// }
//}
//.chat-message {
// font-size: var(--font-size--very-small);
// .message-header {
// padding: 8px 13px;
// border-bottom: rgba(0, 0, 0, 0.2);
// }
// .message-content {
// border: none;
// padding: 0 13px 13px;
// }
//}
//#playlists {
// li {
// &.playlist {
// .sound-control {
// color: #666;
// }
// }
// }
//}
//form {
// & > select[name="folder"] {
// display: none;
// }
// & > .lightbox-image {
// background: rgb(255, 255, 255);
// }
//}
//.window-app.image-popout .form-group.picker:hover,
//.window-app.image-popout .form-group.picker:focus-within {
// opacity: 1;
//}
//li {
// &.directory-item {
// &.entity {
// background: #eee;
// color: #222;
// border-radius: 6px;
// margin: 0 6px;
// }
// }
//}
//
//.sheet .tabs .item {
// white-space: nowrap;
//}
//
//.app.sidebar-popout .folder > .folder-header .create-folder,
//.app.sidebar-popout li.folder > .folder-header .create-entity {
// color: #444;
//}
//
//#player-config {
// .avatar {
// border: 2px dotted #444;
// border-image: url(../assets/journal-art/small-border.webp) 100/10px repeat;
// }
// .directory-item.context {
// border-top: 1px solid black;
// border-bottom: 1px solid #666;
// background: #ccc;
// h3.entity-name > a {
// font-weight: 600;
// }
// }
// h3.entity-name > a {
// font-weight: 400;
// font-size: 1.2rem;
// &:hover {
// text-shadow: 0 0 6px #333;
// }
// }
//}
//
//#sidebar-tabs {
// border-bottom: 1px solid #fff;
// box-shadow: 0 0 6px #fff;
//
// & > .item.active {
// border: 1px solid #fff;
// box-shadow: 0 0 6px inset #fffc;
// }
//}
//
//#navigation #scene-list .scene.view,
//#navigation #scene-list .scene.context {
// border: 1px solid #fff;
// border-bottom: 1px solid #fffc;
// box-shadow: 0 0 10px #fffc;
//}
//
//#controls .scene-control.active,
//#controls .control-tool.active,
//#controls .scene-control:hover,
//#controls .control-tool:hover {
// border: 1px solid #fff;
// border-bottom: 1px solid #fffc;
// box-shadow: 0 0 10px #fffc;
//}
//
//#controls .control-tool.toggle {
// background: #666;
// border: 1px solid #fff;
//
// &:hover,
// &.active {
// background: #700;
// }
//}
// Fixing scrollbars!
::-webkit-scrollbar-thumb {
outline: none;
border-radius: 3px;
background: #999 !important;
border: 1px solid #333 !important;
border-color: #333 !important;
}
::-webkit-scrollbar-track {
box-shadow: 0 0 3px #005d67 inset !important;
border-radius: 3px;
}
* {
scrollbar-width: thin !important;
scrollbar-color: #005d67 #ccc !important;
}

48
styles/global/mixins.less Normal file
View File

@ -0,0 +1,48 @@
.element-invisible {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
border: 0;
padding: 0;
clip: rect(0 0 0 0);
overflow: hidden;
}
.hide {
display: none;
}
.ellipsis {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.nomargin {
margin:0;
padding: 0;
}
.flxrow {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
> * {
flex: 1;
}
.flex1 { flex: 1; }
.flex2 { flex: 2; }
.flex3 { flex: 3; }
.flex4 { flex: 4; }
}
//@mixin modesto {
// font-family: $font-tertiary;
// font-size: 20px;
// font-weight: 700;
//}

View File

@ -2,6 +2,7 @@
/* LOCAL FONTS */
/* ----------------------------------------- */
@import url('https://fonts.googleapis.com/css2?family=Contrail+One&display=swap');
@import "../node_modules/rpg-awesome/css/rpg-awesome.min.css"; //External Import
@font-face {
font-family: "CCMeanwhile";
@ -20,6 +21,10 @@
font-family: "Wolfsbane2Expanded";
src: url('../fonts/wolfsbane2expand.ttf');
}
@font-face {
font-family: "IMFellDWPicaSC-Regular";
src: url('../fonts/IMFellDWPicaSC-Regular.ttf');
}
/* ----------------------------------------- */
/* TEXT STYLES */
@ -28,6 +33,8 @@
@font-primary: 'Signika', sans-serif;
@font-secondary: 'Contrail One', cursive;
@font-tertiary: "Wolfsbane2Expanded", cursive;
@font-special: "IMFellDWPicaSC-Regular", serif;
@font-special2 : "Modesto Condensed", "Palatino Linotype", serif;
@font-header: "Wolfsbane2", cursive;
@font-charname: "Wolfsbane2Expanded", cursive;
@font-handwrite: "CCMeanwhile", cursive;

View File

@ -72,6 +72,7 @@
"tag": "item"
}
],
"background": "ui/splash-page.webp",
"gridDistance": 1.5,
"gridUnits": "m",
"primaryTokenAttribute": "resources.hp",

View File

@ -139,6 +139,7 @@
"equipment" : {
"quantity": 1,
"weight": 0,
"price": 0,
"properties" : {
"ranged": false,
"melee": false,

View File

@ -8,11 +8,6 @@
{{> "systems/bol/templates/actor/parts/actor-header.hbs"}}
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<!-- <a class="item" data-tab="stats" title="{{localize "BOL.ui.tab.stats"}}"><i class="fas fa-id-card"></i></a>-->
<!-- <a class="item" data-tab="combat" title="{{localize "BOL.ui.tab.combat"}}"><i class="fas fa-fist-raised"></i></a>-->
<!-- <a class="item" data-tab="features" title="{{localize "BOL.ui.tab.features"}}"><i class="fas fa-wrench"></i></a>-->
<!-- <a class="item" data-tab="equipment" title="{{localize "BOL.ui.tab.equipment"}}"><i class="fas fa-box-open"></i></a>-->
<!-- <a class="item" data-tab="description" title="{{localize "BOL.ui.tab.description"}}"><i class="fas fa-portrait"></i></a>-->
<a class="item" data-tab="stats">{{localize "BOL.ui.tab.stats"}}</a>
<a class="item" data-tab="combat">{{localize "BOL.ui.tab.combat"}}</a>
<a class="item" data-tab="features">{{localize "BOL.ui.tab.features"}}</a>

View File

@ -1,3 +1,10 @@
<ol class="items-list">
<li class="item flexrow item-header">
<div class="item-name flex2">{{localize "BOL.ui.maneuvers"}}</div>
</li>
<li class="item flexrow"><div class="item-image roll-weapon"><img src="icons/skills/melee/unarmed-punch-fist.webp" title="Attaque à mains nues"/></div><h4 class="item-name flex2"><a class="item-edit">Attaque à mains nues</a></h4></li>
</ol>
{{#each data.combat as | combat id|}}
{{#if (gt (count combat.items) 0)}}
<ol class="items-list">

View File

@ -1,7 +1,7 @@
<div class="attributes flexrow">
{{#each data.attributes as |attribute id|}}
<div class="attribute stat flex1 flex-group-center {{key}}">
<label class="stat-label"><a class="rollable" data-roll-type="attribute" data-key="{{key}}">{{localize label}}</a></label><br/>
<label class="stat-label"><a class="rollable" data-roll-type="attribute" data-roll="2d6+@attributes.{{key}}.value" data-adv="0" data-key="{{key}}">{{localize label}}</a></label><br/>
<input class="stat-value rounded" type="text" name="data.attributes.{{key}}.value" value="{{numberFormat value decimals=0 sign=true}}" data-dtype="Number"/><br/>
<span class="stat-roll malus rollable" title="2d6M" data-roll-type="attribute" data-roll="3d6kh2+@attributes.{{key}}.value" data-adv="-1" data-key="{{key}}"><i class="fas fa-dice"></i></span>
<span class="stat-roll rollable" title="2d6" data-roll-type="attribute" data-roll="2d6+@attributes.{{key}}.value" data-adv="0" data-key="{{key}}"><i class="fas fa-dice"></i></span>
@ -13,7 +13,7 @@
<div class="aptitudes flexrow">
{{#each data.aptitudes as |aptitude id|}}
<div class="aptitude stat flex1 flex-group-center">
<label class="stat-label"><a class="rollable" data-roll-type="aptitude" data-key="{{key}}">{{localize label}}</a></label><br/>
<label class="stat-label"><a class="rollable" data-roll-type="aptitude" data-roll="2d6+@aptitudes.{{key}}.value" data-adv="0" data-key="{{key}}">{{localize label}}</a></label><br/>
<input class="stat-value rounded-border" type="text" name="data.aptitudes.{{key}}.value" value="{{numberFormat value decimals=0 sign=true}}" data-dtype="Number"/><br/>
<span class="stat-roll malus rollable" title="2d6M" data-roll-type="aptitude" data-roll="3d6kh2+@aptitudes.{{key}}.value" data-adv="-1" data-key="{{key}}"><i class="fas fa-dice"></i></span>
<span class="stat-roll rollable" title="2d6" data-roll-type="aptitude" data-roll="2d6+@aptitudes.{{key}}.value" data-adv="0" data-key="{{key}}"><i class="fas fa-dice"></i></span>

View File

@ -8,7 +8,7 @@
</div>
</header>
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkslate">
<div class="flex1 center bg-darkred">
<label for="apt">{{localize 'BOL.ui.aptitude'}}</label>
</div>
<div class="flex1 center cell">
@ -21,7 +21,7 @@
</div>
</div>
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkslate">
<div class="flex1 center bg-darkred">
<label for="adv">{{localize 'BOL.ui.advantages'}}</label>
</div>
<div class="flex1 center cell">
@ -29,15 +29,16 @@
</div>
</div>
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkslate">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.modifiers'}}</label>
</div>
<div class="flex1 center cell">
<input type="text" class="field-value" name="mod" id="mod" value="{{mod}}" data-type="Number">
</div>
</div>
{{#if careers.items}}
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkslate">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.careers'}}</label>
</div>
<div class="flex1 center cell">
@ -48,4 +49,5 @@
</select>
</div>
</div>
{{/if}}
</form>

View File

@ -36,6 +36,7 @@
<input type="text" class="field-value" name="mod" id="mod" value="{{mod}}" data-type="Number">
</div>
</div>
{{#if careers.items}}
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.careers'}}</label>
@ -48,6 +49,7 @@
</select>
</div>
</div>
{{/if}}
<!--<div class="flexrow" style="margin-bottom: 1px;">-->
<!-- <div class="flex1 center bg-darkred">-->
<!-- <label for="mod">{{!localize 'BOL.ui.boons'}}</label>-->

View File

@ -5,7 +5,7 @@
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="description">{{localize "BOL.ui.tab.description"}}</a>
<a class="item" data-tab="properties">{{localize "BOL.ui.tab.properties"}}</a>
<a class="item" data-tab="properties">{{localize "BOL.ui.tab.details"}}</a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
@ -23,12 +23,12 @@
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</div>
<div class="tab properties" data-group="primary" data-tab="properties">
{{#if (equals type "item")}}
{{> "systems/bol/templates/item/parts/properties/item-properties.hbs"}}
{{/if}}
{{#if (equals type "feature")}}
{{> "systems/bol/templates/item/parts/properties/feature-properties.hbs"}}
{{/if}}
{{#if (equals item.type "item")}}
{{> "systems/bol/templates/item/parts/properties/item-properties.hbs"}}
{{/if}}
{{#if (equals item.type "feature")}}
{{> "systems/bol/templates/item/parts/properties/feature-properties.hbs"}}
{{/if}}
</div>
</section>
</div>

View File

@ -1,8 +1,8 @@
{{!-- Sheet Header --}}
<header class="sheet-header">
<div class="header-field-group flexrow">
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
<h1><input class="itemname flex6" name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}" style="border:none; background: lightgray; box-shadow: 5px 5px 5px black;"/>
<h1><input class="itemname flex6" name="name" type="text" value="{{item.name}}" placeholder="Name" style="text-shadow: 3px 3px 5px #333;"/></h1>
</div>
<!-- <img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>-->
<!-- <div class="header-fields">-->

View File

@ -1,62 +1,40 @@
<!--<div class="property flexrow">-->
<!-- <label class="property-label">{{localize "BOL.ui.category"}}</label>-->
<!-- <select name="data.subtype" value="{{data.category}}" data-dtype="String">-->
<!-- {{#select data.category}}-->
<!-- {{#each config.itemCategories as |item id|}}-->
<!-- <option value="{{id}}">{{localize item}}</option>-->
<!-- {{/each}}-->
<!-- {{/select}}-->
<!-- </select>-->
<!--</div>-->
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.subtype"}}</label>
<select name="data.subtype" value="{{data.subtype}}" data-dtype="String">
{{#select data.subtype}}
{{#each config.equipmentCategories as |item id|}}
<option value="{{id}}">{{localize item}}</option>
{{/each}}
{{/select}}
</select>
</div>
<hr/>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.quantity"}}</label>
<input type="text" name="data.quantity" value="{{data.quantity}}" data-dtype="Number"/>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.weight"}}</label>
<input type="text" name="data.weight" value="{{data.weight}}" data-dtype="Number"/>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.price"}}</label>
<input type="text" name="data.price" value="{{data.price}}" data-dtype="Number"/>
</div>
<hr/>
<div class="form-group stacked">
<!-- <label>Propriétés</label>-->
<div class="form-group">
<label class="property-label">{{localize "BOL.ui.category"}}</label>
<div class="form-fields">
{{#each data.properties as |property key|}}
<label class="checkbox">
<input type="checkbox" name="data.properties.{{key}}" {{checked property}}> {{localize key}} ({{key}})
</label>
{{/each}}
<select class="field-value" name="data.category" value="{{data.category}}" data-dtype="String">
{{#select data.category}}
{{#each config.itemCategories as |item id|}}
<option value="{{id}}">{{localize item}}</option>
{{/each}}
{{/select}}
</select>
</div>
</div>
{{#if data.properties.equipable}}
<div class="form-group">
<label class="property-label">Type</label>
<div class="form-fields">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.weapon" {{checked data.properties.weapon}}> {{localize "BOL.itemProperty.weapon"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.protection" {{checked data.properties.protection}}> {{localize "BOL.itemProperty.protection"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.magical" {{checked data.properties.magical}}> {{localize "BOL.itemProperty.magical"}}
</label>
</div>
</div>
{{#if (equals data.category "equipment")}}
{{> "systems/bol/templates/item/parts/properties/item/equipment-properties.hbs"}}
{{/if}}
{{#if data.properties.weapon}}
{{> "systems/bol/templates/item/parts/properties/item/weapon-properties.hbs"}}
{{/if}}
{{#if (equals data.properties.protection)}}
{{#if data.properties.protection}}
{{> "systems/bol/templates/item/parts/properties/item/protection-properties.hbs"}}
{{/if}}
{{#if data.properties.shield}}
{{> "systems/bol/templates/item/parts/properties/item/shield-properties.hbs"}}
{{#if data.properties.magical}}
{{> "systems/bol/templates/item/parts/properties/item/magical-properties.hbs"}}
{{/if}}

View File

@ -1 +0,0 @@
<h3 class="form-header">{{localize "BOL.ui.armor"}}</h3>

View File

@ -1 +1,65 @@
<h3 class="form-header">{{localize "BOL.ui.equipment"}}</h3>
<!--<div class="property flexrow">-->
<!-- <label class="property-label">{{!localize "BOL.ui.subtype"}}</label>-->
<!-- <select name="data.subtype" data-dtype="String">-->
<!-- {{!#select data.subtype}}-->
<!-- {{!#each config.equipmentCategories as |item id|}}-->
<!-- <option value="{{!id}}" {{!#if (equals data.subtype id)}}selected{{!/if}}>{{!localize item}}</option>-->
<!-- {{!/each}}-->
<!-- {{!/select}}-->
<!-- </select>-->
<!--</div>-->
<div class="form-group">
<label class="property-label">{{localize "BOL.ui.subtype"}}</label>
<div class="form-fields">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.equipable" {{checked data.properties.equipable}}> {{localize "BOL.itemProperty.equipable"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.stackable" {{checked data.properties.stackable}}> {{localize "BOL.itemProperty.stackable"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.consumable" {{checked data.properties.consumable}}> {{localize "BOL.itemProperty.consumable"}}
</label>
</div>
</div>
{{#if data.properties.equipable}}
<div class="form-group">
<label>Équipé</label>
<div class="form-fields">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.worn" {{checked data.properties.worn}}> {{localize "BOL.itemProperty.worn"}}
</label>
</div>
</div>
{{/if}}
{{#if data.properties.stackable}}
<div class="form-group">
<label class="property-label">{{localize "BOL.ui.quantity"}}</label>
<div class="form-fields">
<input class="field-value" type="text" name="data.quantity" value="{{data.quantity}}" data-dtype="Number"/>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.ui.stacksize"}}</label>
<div class="form-fields">
<input class="field-value" type="text" name="data.properties.stacksize" value="{{data.properties.stacksize}}" data-dtype="Number"/>
</div>
</div>
{{/if}}
<!--<div class="form-group">-->
<!-- <label class="property-label">{{!localize "BOL.ui.weight"}}</label>-->
<!-- <div class="form-fields">-->
<!-- <input class="field-value" type="text" name="data.weight" value="{{!data.weight}}" data-dtype="Number"/>-->
<!-- </div>-->
<!--</div>-->
<div class="form-group">
<label class="property-label">{{localize "BOL.ui.price"}}</label>
<div class="form-fields">
<input class="field-value" type="text" name="data.price" value="{{data.price}}" data-dtype="Number"/>
</div>
</div>

View File

@ -0,0 +1 @@
<h3 class="form-header">{{localize "BOL.itemProperty.magical"}}</h3>

View File

@ -1 +0,0 @@
<h3 class="form-header">{{localize "BOL.ui.melee"}}</h3>

View File

@ -1 +1,109 @@
<h3 class="form-header">{{localize "BOL.ui.armor"}}</h3>
<div class="form-group">
<label>{{localize "BOL.ui.subtype"}}</label>
<div class="form-fields">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.armor" {{checked data.properties.armor}}> {{localize "BOL.itemProperty.armor"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.shield" {{checked data.properties.shield}}> {{localize "BOL.itemProperty.shield"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.helm" {{checked data.properties.helm}}> {{localize "BOL.itemProperty.helm"}}
</label>
</div>
</div>
<hr/>
<!--<div class="form-group">-->
<!-- <label>{{!localize "BOL.ui.properties"}}</label>-->
<!-- <div class="form-fields">-->
<!-- <label class="checkbox">-->
<!-- <input class="field-value" type="checkbox" name="data.properties.throwable" {{!checked data.properties.throwable}}> {{!localize "BOL.itemProperty.throwable"}}-->
<!-- </label>-->
<!-- </div>-->
<!--</div>-->
{{#if data.properties.armor}}
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.armorQuality"}}</label>
<div class="form-fields center">
<select class="field-value armorQuality" name="data.properties.armorQuality" data-dtype="String">
{{#select data.properties.armorQuality}}
{{#each config.armorQualities as |value id|}}
<option value="{{id}}">{{localize value}}</option>
{{/each}}
{{/select}}
</select>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.soakFormula"}}</label>
<div class="form-fields">
<input class="field-value soakFormula" type="text" name="data.properties.soak.formula" value="{{data.properties.soak.formula}}" data-dtype="String"/>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.soakValue"}}</label>
<div class="form-fields">
<input class="field-value" type="text" name="data.properties.soak.value" value="{{data.properties.soak.value}}" data-dtype="Number"/>
</div>
</div>
{{/if}}
{{#if data.properties.helm}}
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.soakModifiers"}}</label>
<div class="form-fields">
<input class="field-value" type="text" name="data.properties.soak.modifier" value="{{data.properties.soak.modifier}}" data-dtype="Number"/>
</div>
</div>
{{/if}}
{{#if data.properties.shield}}
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.blockingMalus"}}</label>
<div class="form-fields">
<input class="field-value" type="text" name="data.properties.blocking.malus" value="{{data.properties.blocking.malus}}" data-dtype="Number"/>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.blockingAttacksBlocked"}}</label>
<div class="form-fields">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.blocking.blocking1" {{checked data.properties.blocking.blocking1}}> {{localize "BOL.itemProperty.blocking1Attack"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.blocking.blockingAll" {{checked data.properties.blocking.blockingAll}}> {{localize "BOL.itemProperty.blockingAllAttacks"}}
</label>
</div>
</div>
{{/if}}
<hr/>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemModifiers.init"}}</label>
<div class="form-fields">
<input class="field-value" type="text" name="data.properties.modifiers.init" value="{{data.properties.modifiers.init}}" data-dtype="Number"/>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemModifiers.agility"}}</label>
<div class="form-fields">
<input class="field-value" type="text" name="data.properties.modifiers.agility" value="{{data.properties.modifiers.agility}}" data-dtype="Number"/>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemModifiers.powercost"}}</label>
<div class="form-fields">
<input class="field-value" type="text" name="data.properties.modifiers.powercost" value="{{data.properties.modifiers.powercost}}" data-dtype="Number"/>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemModifiers.social"}}</label>
<div class="form-fields">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.modifiers.social" {{checked data.properties.modifiers.social}}>
</label>
</div>
</div>

View File

@ -1 +0,0 @@
<h3 class="form-header">{{localize "BOL.ui.ranged"}}</h3>

View File

@ -1 +0,0 @@
<h3 class="form-header">{{localize "BOL.ui.armor"}}</h3>

View File

@ -1,8 +1,128 @@
<h3 class="form-header">{{localize "BOL.ui.weapon"}}</h3>
<div class="form-group">
<label>{{localize "BOL.ui.subtype"}}</label>
<div class="form-fields">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.melee" {{checked data.properties.melee}}> {{localize "BOL.itemProperty.melee"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.ranged" {{checked data.properties.ranged}}> {{localize "BOL.itemProperty.ranged"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.throwing" {{checked data.properties.throwing}}> {{localize "BOL.itemProperty.throwing"}}
</label>
</div>
</div>
<hr/>
<div class="form-group">
<label>{{localize "BOL.ui.properties"}}</label>
<div class="form-fields">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.throwable" {{checked data.properties.throwable}}> {{localize "BOL.itemProperty.throwable"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.2H" {{checked data.properties.2H}}> {{localize "BOL.itemProperty.2H"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.concealable" {{checked data.properties.concealable}}> {{localize "BOL.itemProperty.concealable"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.ignoreshield" {{checked data.properties.ignoreshield}}> {{localize "BOL.itemProperty.ignoreshield"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.bashing" {{checked data.properties.bashing}}> {{localize "BOL.itemProperty.bashing"}}
</label>
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.reloadable" {{checked data.properties.reloadable}}> {{localize "BOL.itemProperty.reloadable"}}
</label>
</div>
</div>
<hr/>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.attackAttribute"}}</label>
<div class="form-fields center">
<select class="field-value" name="data.properties.attackAttribute" data-dtype="String">
{{#select data.properties.attackAttribute}}
{{#each config.attackAttributes as |value id|}}
<option value="{{id}}">{{localize value}}</option>
{{/each}}
{{/select}}
</select>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.attackAptitude"}}</label>
<div class="form-fields center">
<select class="field-value" name="data.properties.attackAptitude" data-dtype="String">
{{#select data.properties.attackAptitude}}
{{#each config.attackAptitudes as |value id|}}
<option value="{{id}}">{{localize value}}</option>
{{/each}}
{{/select}}
</select>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.attackModifiers"}}</label>
<div class="form-fields center">
<input class="field-value" type="text" name="data.properties.attackModifiers" value="{{data.properties.attackModifiers}}" data-dtype="Number"/>
</div>
</div>
<hr/>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.damage"}}</label>
<div class="form-fields">
<select class="field-value" name="data.properties.damage" data-dtype="String">
{{#select data.properties.damage}}
{{#each config.damageValues as |value id|}}
<option value="{{id}}">{{value}}</option>
{{/each}}
{{/select}}
</select>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.damageAttribute"}}</label>
<div class="form-fields center">
<select class="field-value" name="data.properties.damageAttribute" data-dtype="String">
{{#select data.properties.damageAttribute}}
{{#each config.damageAttributes as |value id|}}
<option value="{{id}}">{{localize value}}</option>
{{/each}}
{{/select}}
</select>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.damageModifiers"}}</label>
<div class="form-fields center">
<input class="field-value" type="text" name="data.properties.damageModifiers" value="{{data.properties.damageModifiers}}" data-dtype="Number"/>
</div>
</div>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.damageSpecial"}}</label>
<div class="form-fields center">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.damageReroll1" {{checked data.properties.damageReroll1}}> {{localize "BOL.itemProperty.damageReroll1"}}
</label>
</div>
</div>
{{#if data.properties.melee}}
{{> "systems/bol/templates/item/parts/properties/melee-properties.hbs"}}
{{#if (or data.properties.throwing (or data.properties.ranged data.properties.throwable))}}
<hr/>
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.range"}}</label>
<div class="form-fields center">
<input class="field-value" type="text" name="data.properties.range" value="{{data.properties.range}}" data-dtype="Number"/>
</div>
</div>
{{/if}}
{{#if data.properties.ranged}}
{{> "systems/bol/templates/item/parts/properties/ranged-properties.hbs"}}
{{#if data.properties.reloadable}}
<div class="form-group">
<label class="property-label">{{localize "BOL.itemProperty.reload"}}</label>
<div class="form-fields center">
<input class="field-value" type="text" name="data.properties.reload" value="{{data.properties.reload}}" data-dtype="Number"/>
</div>
</div>
{{/if}}

BIN
ui/box-border-large.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
ui/icons/blason.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
ui/icons/blason.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 13 KiB

BIN
ui/icons/icon1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
ui/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 38 KiB

BIN
ui/logo2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 KiB

BIN
ui/logo2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
ui/pause.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
ui/pause2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
ui/pause2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
ui/portrait.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
ui/splash-page.webp Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB