diff --git a/assets/lf_logo_01.webp b/assets/lf_logo_01.webp
new file mode 100644
index 0000000..7af0210
Binary files /dev/null and b/assets/lf_logo_01.webp differ
diff --git a/assets/lf_logo_small_01.webp b/assets/lf_logo_small_01.webp
new file mode 100644
index 0000000..d90b1a5
Binary files /dev/null and b/assets/lf_logo_small_01.webp differ
diff --git a/css/fvtt-lethal-fantasy.css b/css/fvtt-lethal-fantasy.css
index 2298806..7893e3b 100644
--- a/css/fvtt-lethal-fantasy.css
+++ b/css/fvtt-lethal-fantasy.css
@@ -1,5 +1,5 @@
:root {
- --font-size-standard: 0.8125rem;
+ --font-size-standard: 1rem;
--background-image-base: url("../assets/parchment.jpg");
--font-secondary: "Amiri", serif;
--logo-standard: url("../assets/lethal-fantasy-logo.webp");
@@ -31,7 +31,7 @@ i.lethalfantasy {
}
.application.dialog.lethalfantasy {
font-family: var(--font-primary);
- font-size: calc(var(--font-size-standard) * 1.2);
+ font-size: calc(var(--font-size-standard) * 1);
background-image: var(--background-image-base);
}
.application.dialog.lethalfantasy button:hover {
@@ -53,16 +53,28 @@ i.lethalfantasy {
}
.lethalfantasy .character-sheet-common label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1.2);
}
.lethalfantasy .item-sheet-common .form-fields {
padding-top: 5px;
}
.lethalfantasy .item-sheet-common label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
+.lethalfantasy .item-sheet-common .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .item-sheet-common .shift-right {
+ margin-left: 2rem;
+}
.lethalfantasy .character-content {
font-family: var(--font-primary);
font-size: calc(var(--font-size-standard) * 1);
@@ -88,32 +100,32 @@ i.lethalfantasy {
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.lethalfantasy .character-content fieldset {
- margin-bottom: 10px;
+ margin-bottom: 5px;
border-radius: 5px;
}
.lethalfantasy .character-content .form-fields input,
.lethalfantasy .character-content .form-fields select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .character-content .form-fields select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .character-content legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
.lethalfantasy .character-content label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1.2);
}
.lethalfantasy .character-main {
display: flex;
@@ -433,26 +445,26 @@ i.lethalfantasy {
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.lethalfantasy .opponent-content fieldset {
- margin-bottom: 10px;
+ margin-bottom: 5px;
border-radius: 5px;
}
.lethalfantasy .opponent-content .form-fields input,
.lethalfantasy .opponent-content .form-fields select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .opponent-content .form-fields select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .opponent-content legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
@@ -547,26 +559,26 @@ i.lethalfantasy {
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.lethalfantasy .skill-content fieldset {
- margin-bottom: 10px;
+ margin-bottom: 5px;
border-radius: 5px;
}
.lethalfantasy .skill-content .form-fields input,
.lethalfantasy .skill-content .form-fields select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .skill-content .form-fields select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .skill-content legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
@@ -575,9 +587,21 @@ i.lethalfantasy {
}
.lethalfantasy .skill-content label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
+.lethalfantasy .skill-content .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .skill-content .shift-right {
+ margin-left: 2rem;
+}
.lethalfantasy .skill-content .header {
display: flex;
}
@@ -596,7 +620,7 @@ i.lethalfantasy {
.lethalfantasy .skill-content input[type="checkbox"]:checked::after {
color: rgba(0, 0, 0, 0.1);
}
-.lethalfantasy .gifts-content {
+.lethalfantasy .gift-content {
font-family: var(--font-primary);
font-size: calc(var(--font-size-standard) * 1);
color: var(--color-dark-1);
@@ -604,131 +628,82 @@ i.lethalfantasy {
background-repeat: no-repeat;
background-size: 100% 100%;
}
-.lethalfantasy .gifts-content input:disabled,
-.lethalfantasy .gifts-content select:disabled {
+.lethalfantasy .gift-content input:disabled,
+.lethalfantasy .gift-content select:disabled {
background-color: rgba(0, 0, 0, 0.2);
border-color: transparent;
color: var(--color-dark-3);
}
-.lethalfantasy .gifts-content input,
-.lethalfantasy .gifts-content select {
+.lethalfantasy .gift-content input,
+.lethalfantasy .gift-content select {
background-color: rgba(0, 0, 0, 0.1);
border-color: var(--color-dark-6);
color: var(--color-dark-2);
}
-.lethalfantasy .gifts-content input[name="name"] {
+.lethalfantasy .gift-content input[name="name"] {
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
-.lethalfantasy .gifts-content fieldset {
- margin-bottom: 10px;
+.lethalfantasy .gift-content fieldset {
+ margin-bottom: 5px;
border-radius: 5px;
}
-.lethalfantasy .gifts-content .form-fields input,
-.lethalfantasy .gifts-content .form-fields select {
+.lethalfantasy .gift-content .form-fields input,
+.lethalfantasy .gift-content .form-fields select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
-.lethalfantasy .gifts-content .form-fields select {
+.lethalfantasy .gift-content .form-fields select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
-.lethalfantasy .gifts-content legend {
+.lethalfantasy .gift-content legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
-.lethalfantasy .gifts-content .form-fields {
+.lethalfantasy .gift-content .form-fields {
padding-top: 5px;
}
-.lethalfantasy .gifts-content label {
+.lethalfantasy .gift-content label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
-.lethalfantasy .gifts-content .path-name {
+.lethalfantasy .gift-content .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .gift-content .shift-right {
+ margin-left: 2rem;
+}
+.lethalfantasy .gift-content .header {
display: flex;
- justify-content: space-between;
}
-.lethalfantasy .gifts-content .path-name .control {
- margin: 5px;
-}
-.lethalfantasy .gifts-content .path-name img {
+.lethalfantasy .gift-content .header img {
width: 50px;
height: 50px;
}
-.lethalfantasy .gifts-content .path-main {
- display: grid;
- grid-template-columns: 2fr 2fr 1fr;
- /* Optionnel : supprimer le margin-right sur la dernière colonne si vous avez besoin d'un espacement précis */
+.lethalfantasy .gift-content input[type="checkbox"] {
+ font-size: var(--font-size-14);
+ width: 20px;
+ padding-top: 0;
}
-.lethalfantasy .gifts-content .path-main .profil {
- display: grid;
- grid-template-columns: repeat(2, 1fr);
+.lethalfantasy .gift-content input[type="checkbox"]:checked {
+ background-color: rgba(0, 0, 0, 0.1);
}
-.lethalfantasy .gifts-content .path-main .profil-gauche,
-.lethalfantasy .gifts-content .path-main .profil-droite {
- flex: 1;
- /* Chaque colonne prend la moitié de l'espace disponible */
- padding: 10px;
- /* Espacement intérieur */
-}
-.lethalfantasy .gifts-content .path-main .profil-gauche {
- margin-right: 10px;
- /* Espace entre les deux colonnes */
-}
-.lethalfantasy .gifts-content .path-main .profil-droite {
- margin-right: 0;
-}
-.lethalfantasy .gifts-content .path-main .biens prose-mirror {
- height: 100%;
-}
-.lethalfantasy .gifts-content .path-main .langues prose-mirror {
- height: 100%;
-}
-.lethalfantasy .gifts-content .path-main .description {
- grid-column: span 3;
-}
-.lethalfantasy .gifts-content .path-main .description prose-mirror.inactive {
- min-height: 40px;
-}
-.lethalfantasy .gifts-content .path-main .description prose-mirror.active {
- min-height: 150px;
-}
-.lethalfantasy .gifts-content .path-talents {
- display: grid;
- grid-template-columns: repeat(5, 1fr);
- gap: 10px;
-}
-.lethalfantasy .gifts-content .path-talents .talent {
- background-color: #f0f0f0;
- padding: 5px;
- border-radius: 5px;
-}
-.lethalfantasy .gifts-content .path-talents .talent .header {
- display: flex;
- justify-content: space-between;
-}
-.lethalfantasy .gifts-content .path-talents .talent .header .name {
- font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.5);
- padding-left: 20px;
-}
-.lethalfantasy .gifts-content .path-talents .talent .header .controls {
- font-size: calc(var(--font-size-standard) * 0.8);
-}
-.lethalfantasy .gifts-content .path-talents .talent .progression {
- display: flex;
- justify-content: space-between;
- padding-top: 10px;
-}
-.lethalfantasy .gifts-content .path-talents .talent .description {
- font-size: calc(var(--font-size-standard) * 1);
+.lethalfantasy .gift-content input[type="checkbox"]:checked::after {
+ color: rgba(0, 0, 0, 0.1);
}
.lethalfantasy .weapon-content {
font-family: var(--font-primary);
@@ -754,26 +729,26 @@ i.lethalfantasy {
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.lethalfantasy .weapon-content fieldset {
- margin-bottom: 10px;
+ margin-bottom: 5px;
border-radius: 5px;
}
.lethalfantasy .weapon-content .form-fields input,
.lethalfantasy .weapon-content .form-fields select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .weapon-content .form-fields select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .weapon-content legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
@@ -782,9 +757,21 @@ i.lethalfantasy {
}
.lethalfantasy .weapon-content label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
+.lethalfantasy .weapon-content .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .weapon-content .shift-right {
+ margin-left: 2rem;
+}
.lethalfantasy .weapon-content .header {
display: flex;
}
@@ -819,26 +806,26 @@ i.lethalfantasy {
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.lethalfantasy .armor-content fieldset {
- margin-bottom: 10px;
+ margin-bottom: 5px;
border-radius: 5px;
}
.lethalfantasy .armor-content .form-fields input,
.lethalfantasy .armor-content .form-fields select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .armor-content .form-fields select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .armor-content legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
@@ -847,9 +834,21 @@ i.lethalfantasy {
}
.lethalfantasy .armor-content label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
+.lethalfantasy .armor-content .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .armor-content .shift-right {
+ margin-left: 2rem;
+}
.lethalfantasy .armor-content .header {
display: flex;
}
@@ -884,26 +883,26 @@ i.lethalfantasy {
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.lethalfantasy .spell-content fieldset {
- margin-bottom: 10px;
+ margin-bottom: 5px;
border-radius: 5px;
}
.lethalfantasy .spell-content .form-fields input,
.lethalfantasy .spell-content .form-fields select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .spell-content .form-fields select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .spell-content legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
@@ -912,9 +911,21 @@ i.lethalfantasy {
}
.lethalfantasy .spell-content label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
+.lethalfantasy .spell-content .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .spell-content .shift-right {
+ margin-left: 2rem;
+}
.lethalfantasy .spell-content .header {
display: flex;
}
@@ -925,10 +936,6 @@ i.lethalfantasy {
.lethalfantasy .spell-content label {
flex: 10%;
}
-.lethalfantasy .spell-content input[name="system.consequenceA"],
-.lethalfantasy .spell-content input[name="system.consequenceB"] {
- font-size: calc(var(--font-size-standard) * 1.2);
-}
.lethalfantasy .vulnerability-content {
font-family: var(--font-primary);
font-size: calc(var(--font-size-standard) * 1);
@@ -953,26 +960,26 @@ i.lethalfantasy {
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.lethalfantasy .vulnerability-content fieldset {
- margin-bottom: 10px;
+ margin-bottom: 5px;
border-radius: 5px;
}
.lethalfantasy .vulnerability-content .form-fields input,
.lethalfantasy .vulnerability-content .form-fields select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .vulnerability-content .form-fields select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .vulnerability-content legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
@@ -981,9 +988,21 @@ i.lethalfantasy {
}
.lethalfantasy .vulnerability-content label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
+.lethalfantasy .vulnerability-content .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .vulnerability-content .shift-right {
+ margin-left: 2rem;
+}
.lethalfantasy .vulnerability-content .header {
display: flex;
}
@@ -1026,26 +1045,26 @@ i.lethalfantasy {
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.lethalfantasy .save-content fieldset {
- margin-bottom: 10px;
+ margin-bottom: 5px;
border-radius: 5px;
}
.lethalfantasy .save-content .form-fields input,
.lethalfantasy .save-content .form-fields select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .save-content .form-fields select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1);
}
.lethalfantasy .save-content legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
@@ -1054,9 +1073,21 @@ i.lethalfantasy {
}
.lethalfantasy .save-content label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
+.lethalfantasy .save-content .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .save-content .shift-right {
+ margin-left: 2rem;
+}
.lethalfantasy .save-content .header {
display: flex;
}
@@ -1105,6 +1136,160 @@ i.lethalfantasy {
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.2);
}
+.lethalfantasy .equipment-content {
+ font-family: var(--font-primary);
+ font-size: calc(var(--font-size-standard) * 1);
+ color: var(--color-dark-1);
+ background-image: var(--background-image-base);
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+}
+.lethalfantasy .equipment-content input:disabled,
+.lethalfantasy .equipment-content select:disabled {
+ background-color: rgba(0, 0, 0, 0.2);
+ border-color: transparent;
+ color: var(--color-dark-3);
+}
+.lethalfantasy .equipment-content input,
+.lethalfantasy .equipment-content select {
+ background-color: rgba(0, 0, 0, 0.1);
+ border-color: var(--color-dark-6);
+ color: var(--color-dark-2);
+}
+.lethalfantasy .equipment-content input[name="name"] {
+ height: 50px;
+ margin-right: 10px;
+ font-family: var(--font-secondary);
+ font-size: calc(var(--font-size-standard) * 1);
+ font-weight: bold;
+ border: none;
+}
+.lethalfantasy .equipment-content fieldset {
+ margin-bottom: 5px;
+ border-radius: 5px;
+}
+.lethalfantasy .equipment-content .form-fields input,
+.lethalfantasy .equipment-content .form-fields select {
+ text-align: center;
+ font-size: calc(var(--font-size-standard) * 1);
+}
+.lethalfantasy .equipment-content .form-fields select {
+ font-family: var(--font-secondary);
+ font-size: calc(var(--font-size-standard) * 1);
+}
+.lethalfantasy .equipment-content legend {
+ font-family: var(--font-secondary);
+ font-size: calc(var(--font-size-standard) * 1.2);
+ font-weight: bold;
+ letter-spacing: 1px;
+}
+.lethalfantasy .equipment-content .form-fields {
+ padding-top: 5px;
+}
+.lethalfantasy .equipment-content label {
+ font-family: var(--font-secondary);
+ font-size: calc(var(--font-size-standard) * 1);
+ flex: 50%;
+}
+.lethalfantasy .equipment-content .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .equipment-content .shift-right {
+ margin-left: 2rem;
+}
+.lethalfantasy .equipment-content .header {
+ display: flex;
+}
+.lethalfantasy .equipment-content .header img {
+ width: 50px;
+ height: 50px;
+}
+.lethalfantasy .equipment-content label {
+ flex: 10%;
+}
+.lethalfantasy .shield-content {
+ font-family: var(--font-primary);
+ font-size: calc(var(--font-size-standard) * 1);
+ color: var(--color-dark-1);
+ background-image: var(--background-image-base);
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+}
+.lethalfantasy .shield-content input:disabled,
+.lethalfantasy .shield-content select:disabled {
+ background-color: rgba(0, 0, 0, 0.2);
+ border-color: transparent;
+ color: var(--color-dark-3);
+}
+.lethalfantasy .shield-content input,
+.lethalfantasy .shield-content select {
+ background-color: rgba(0, 0, 0, 0.1);
+ border-color: var(--color-dark-6);
+ color: var(--color-dark-2);
+}
+.lethalfantasy .shield-content input[name="name"] {
+ height: 50px;
+ margin-right: 10px;
+ font-family: var(--font-secondary);
+ font-size: calc(var(--font-size-standard) * 1);
+ font-weight: bold;
+ border: none;
+}
+.lethalfantasy .shield-content fieldset {
+ margin-bottom: 5px;
+ border-radius: 5px;
+}
+.lethalfantasy .shield-content .form-fields input,
+.lethalfantasy .shield-content .form-fields select {
+ text-align: center;
+ font-size: calc(var(--font-size-standard) * 1);
+}
+.lethalfantasy .shield-content .form-fields select {
+ font-family: var(--font-secondary);
+ font-size: calc(var(--font-size-standard) * 1);
+}
+.lethalfantasy .shield-content legend {
+ font-family: var(--font-secondary);
+ font-size: calc(var(--font-size-standard) * 1.2);
+ font-weight: bold;
+ letter-spacing: 1px;
+}
+.lethalfantasy .shield-content .form-fields {
+ padding-top: 5px;
+}
+.lethalfantasy .shield-content label {
+ font-family: var(--font-secondary);
+ font-size: calc(var(--font-size-standard) * 1);
+ flex: 50%;
+}
+.lethalfantasy .shield-content .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+}
+.lethalfantasy .shield-content .shift-right {
+ margin-left: 2rem;
+}
+.lethalfantasy .shield-content .header {
+ display: flex;
+}
+.lethalfantasy .shield-content .header img {
+ width: 50px;
+ height: 50px;
+}
+.lethalfantasy .shield-content label {
+ flex: 10%;
+}
.application.dialog.lethalfantasy {
color: var(--color-dark-1);
}
diff --git a/lang/en.json b/lang/en.json
index dbf0796..6e489a5 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -12,7 +12,8 @@
"gift": "Gift",
"vulnerability": "Vulnerability",
"save": "Save",
- "equipment": "Equipment"
+ "equipment": "Equipment" ,
+ "shield": "Shield"
}
},
@@ -47,7 +48,26 @@
}
},
"Skill": {
+ "Category": {
+ "layperson": "Layperson",
+ "professional": "Professional",
+ "weapon": "Weapon",
+ "armor": "Armor",
+ "resist": "Resist"
+ },
"FIELDS": {
+ "category": {
+ "label": "Category"
+ },
+ "bonus" :{
+ "label": "Bonus"
+ },
+ "base": {
+ "label": "Base"
+ },
+ "cost": {
+ "label": "Cost"
+ },
"description": {
"label": "Description"
}
@@ -55,6 +75,12 @@
},
"Equipment": {
"FIELDS": {
+ "cost": {
+ "label": "Cost"
+ },
+ "money": {
+ "label": "Money unit"
+ },
"description": {
"label": "Description"
}
@@ -62,46 +88,239 @@
},
"Gift": {
"FIELDS": {
+ "cost": {
+ "label": "Cost"
+ },
"description": {
"label": "Description"
}
}
},
"Weapon": {
+ "WeaponType": {
+ "melee": "Melee",
+ "ranged": "Ranged"
+ },
"FIELDS": {
- "category": {
- "label": "Category"
+ "weaponType": {
+ "label": "Type"
+ },
+ "damageType": {
+ "typeP": {
+ "label": "Piercing"
+ },
+ "typeB": {
+ "label": "Bashing"
+ },
+ "typeS": {
+ "label": "Slashing"
+ }
+ },
+ "damage": {
+ "damageS": {
+ "label": "Small"
+ },
+ "damageM": {
+ "label": "Medium"
+ }
+ },
+ "hands": {
+ "label": "Hands"
+ },
+ "defenseMax": {
+ "label": "Defense max"
+ },
+ "secondsToAttack": {
+ "label": "Seconds to attack"
+ },
+ "speed": {
+ "simpleAim": {
+ "label": "Simple aim"
+ },
+ "carefulAim": {
+ "label": "Careful aim"
+ },
+ "focusedAim": {
+ "label": "Focused aim"
+ }
+ },
+ "defense": {
+ "label": "Defense"
+ },
+ "range": {
+ "pointBlank": {
+ "label": "Point blank"
+ },
+ "short": {
+ "label": "Short"
+ },
+ "medium": {
+ "label": "Medium"
+ },
+ "long": {
+ "label": "Long"
+ },
+ "extreme": {
+ "label": "Extreme"
+ },
+ "outOfSkill": {
+ "label": "Out of skill"
+ }
+ },
+ "load": {
+ "label": "Load"
+ },
+ "cost": {
+ "label": "Cost"
+ },
+ "money": {
+ "label": "Money unit"
}
}
},
"Armor": {
- "FIELDS": {
- "category": {
- "label": "Category"
- }
- },
"Category": {
- "sommaire": "Armures sommaires",
- "legere": "Armures légères",
- "guerre": "Armures de guerre"
+ "light": "Light",
+ "medium": "Medium",
+ "heavy": "Heavy"
+ },
+ "FIELDS": {
+ "armortype": {
+ "label": "Category"
+ },
+ "defense": {
+ "label": "Defense"
+ },
+ "movementreduction": {
+ "label": "Movement reduction"
+ },
+ "hp": {
+ "label": "HP"
+ },
+ "damagereduction": {
+ "label": "Damage reduction"
+ },
+ "load": {
+ "label": "Load"
+ },
+ "cost": {
+ "label": "Cost"
+ },
+ "money": {
+ "label": "Money unit"
+ }
+ }
+ },
+ "Shield": {
+ "FIELDS": {
+ "defense": {
+ "label": "Defense"
+ },
+ "movementreduction": {
+ "label": "Movement reduction"
+ },
+ "hp": {
+ "label": "HP"
+ },
+ "standing": {
+ "min":{
+ "label": "Min"
+ },
+ "max":{
+ "label": "Max"
+ }
+ },
+ "crouching": {
+ "min":{
+ "label": "Min"
+ },
+ "max":{
+ "label": "Max"
+ }
+ },
+ "destruction": {
+ "bashing": {
+ "label": "Bashing"
+ },
+ "slashing": {
+ "label": "Slashing"
+ },
+ "piercing": {
+ "label": "Piercing"
+ }
+ },
+ "autodestruction": {
+ "bashing": {
+ "label": "Bashing"
+ },
+ "slashing": {
+ "label": "Slashing"
+ },
+ "piercing": {
+ "label": "Piercing"
+ }
+ },
+ "damagereduction": {
+ "label": "Damage reduction"
+ },
+ "load": {
+ "label": "Load"
+ },
+ "cost": {
+ "label": "Cost"
+ },
+ "money": {
+ "label": "Money unit"
+ }
}
},
"Spell": {
"FIELDS": {
"description": {
"label": "Description"
+ },
+ "components": {
+ "verbal": {
+ "label": "Verbal"
+ },
+ "somatic": {
+ "label": "Somatic"
+ },
+ "material": {
+ "label": "Material"
+ }
+ },
+ "level": {
+ "label": "Level"
+ },
+ "cost" : {
+ "label": "Cost"
+ },
+ "castingTime": {
+ "label": "Casting time"
+ },
+ "range": {
+ "label": "Range"
+ },
+ "duration": {
+ "label": "Duration"
+ },
+ "areaAffected": {
+ "label": "Area affected"
+ },
+ "savingThrow": {
+ "label": "Saving throw"
+ },
+ "extraAetherPoints": {
+ "label": "Extra aether points"
}
- },
- "Range": {
- "na": "-",
- "contact": "Contact",
- "proche": "Proche",
- "loin": "Loin",
- "distant": "Distant"
}
},
- "Vulneravility": {
+ "Vulnerability": {
"FIELDS": {
+ "cost": {
+ "label": "Cost"
+ },
"description": {
"label": "Description"
}
@@ -109,14 +328,24 @@
},
"Save": {
"FIELDS": {
+ "value": {
+ "label": "Value"
+ },
"description": {
"label": "Description"
}
}
},
+ "Money": {
+ "Tinbits": "Tin Bits",
+ "Coppers": "Copper",
+ "Silvers": "Silver",
+ "Golds": "Gold",
+ "Platinums": "Platinum"
+ },
"Label": {
"description": "Description",
- "biens": "Biens",
+ "total": "Total",
"langues": "Langues",
"profil": "Profil",
"details": "Détails",
diff --git a/lethal-fantasy.mjs b/lethal-fantasy.mjs
index e652496..24f1b71 100644
--- a/lethal-fantasy.mjs
+++ b/lethal-fantasy.mjs
@@ -44,9 +44,11 @@ Hooks.once("init", function () {
gift: models.LethalFantasyGift,
weapon: models.LethalFantasyWeapon,
armor: models.LethalFantasyArmor,
+ shield: models.LethalFantasyShield,
spell: models.LethalFantasySpell,
save: models.LethalFantasySave,
- vulnerability: models.LethalFantasyVulnerability
+ vulnerability: models.LethalFantasyVulnerability,
+ equipment: models.LethalFantasyEquipment
}
// Register sheet application classes
@@ -62,6 +64,8 @@ Hooks.once("init", function () {
Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true })
Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true })
Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true })
+ Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true })
+ Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true })
// Other Document Configuration
CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage
@@ -69,26 +73,6 @@ Hooks.once("init", function () {
// Dice system configuration
CONFIG.Dice.rolls.push(documents.LethalFantasyRoll)
- // Register system settings
- game.settings.register("lethalFantasy", "displayOpponentMalus", {
- name: "TENEBRIS.Setting.displayOpponentMalus",
- hint: "TENEBRIS.Setting.displayOpponentMalusHint",
- scope: "world",
- config: true,
- type: Boolean,
- default: true,
- })
-
- game.settings.register("lethalFantasy", "fortune", {
- name: "TENEBRIS.Setting.fortune",
- hint: "TENEBRIS.Setting.fortuneHint",
- scope: "world",
- config: true,
- type: Number,
- default: 0,
- requiresReload: true,
- })
-
game.settings.register("lethalFantasy", "worldKey", {
name: "Unique world key",
scope: "world",
@@ -100,9 +84,6 @@ Hooks.once("init", function () {
// Activate socket handler
game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent)
- // Pre-localize configuration objects
- // TODO : encore d'actualité ?
- // preLocalizeConfig()
initControlButtons()
@@ -121,7 +102,7 @@ Hooks.once("init", function () {
applications.LethalFantasyManager.askRollForAll(type, target, title, avantage)
})
- console.info("CTHULHU TENEBRIS | System Initialized")
+ console.info("LETHAL FANTASY | System Initialized")
})
/**
@@ -146,7 +127,7 @@ Hooks.once("ready", function () {
console.info("LETHAL FANTASY | Ready")
game.system.applicationManager = new applications.LethalFantasyManager()
if (game.user.isGM) {
- game.system.applicationManager.render(true)
+ //game.system.applicationManager.render(true)
}
if (!SYSTEM.DEV_MODE) {
diff --git a/module/applications/_module.mjs b/module/applications/_module.mjs
index 1b9d4c1..f04e2b4 100644
--- a/module/applications/_module.mjs
+++ b/module/applications/_module.mjs
@@ -8,4 +8,5 @@ export { default as LethalFantasySaveSheet } from "./sheets/save-sheet.mjs"
export { default as LethalFantasyArmorSheet } from "./sheets/armor-sheet.mjs"
export { default as LethalFantasySpellSheet } from "./sheets/spell-sheet.mjs"
export { default as LethalFantasyEquipmentSheet } from "./sheets/equipment-sheet.mjs"
+export { default as LethalFantasyShieldSheet } from "./sheets/shield-sheet.mjs"
export { default as LethalFantasyManager } from "./manager.mjs"
diff --git a/module/applications/sheets/character-sheet.mjs b/module/applications/sheets/character-sheet.mjs
index 35b99da..000fac3 100644
--- a/module/applications/sheets/character-sheet.mjs
+++ b/module/applications/sheets/character-sheet.mjs
@@ -13,8 +13,6 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
contentClasses: ["character-content"],
},
actions: {
- deleteVoieMajeure: LethalFantasyCharacterSheet.#onDeleteVoieMajeure,
- deleteVoieMineure: LethalFantasyCharacterSheet.#onDeleteVoieMineure,
createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment,
},
}
@@ -25,7 +23,7 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs",
},
tabs: {
- template: "templates/generic/tab-navigation.hbs",
+ template: "systems/fvtt-lethal-fantasy/templates/generic/tab-navigation.hbs",
},
items: {
template: "systems/fvtt-lethal-fantasy/templates/character-items.hbs",
@@ -46,8 +44,8 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
*/
#getTabs() {
const tabs = {
- items: { id: "items", group: "sheet", icon: "fa-solid fa-shapes", label: "TENEBRIS.Character.Label.details" },
- biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "TENEBRIS.Character.Label.biography" },
+ items: { id: "items", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Character.Label.details" },
+ biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Character.Label.biography" },
}
for (const v of Object.values(tabs)) {
v.active = this.tabGroups[v.group] === v.id
@@ -62,105 +60,17 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
context.tabs = this.#getTabs()
context.tooltipsCaracteristiques = {
- rob: this._generateTooltip("save", "rob"),
- dex: this._generateTooltip("save", "dex"),
- int: this._generateTooltip("save", "int"),
- per: this._generateTooltip("save", "per"),
- vol: this._generateTooltip("save", "vol"),
- dmax: this._generateTooltip("other", "dmax"),
}
context.tooltipsRessources = {
- san: this._generateTooltip("resource", "san"),
- oeil: this._generateTooltip("resource", "oeil"),
- verbe: this._generateTooltip("resource", "verbe"),
- bourse: this._generateTooltip("resource", "bourse"),
- magie: this._generateTooltip("resource", "magie"),
}
context.rollType = {
- saveRob: {
- action: "roll",
- rollType: "save",
- rollTarget: "rob",
- tooltip: this._generateTooltip("save", "rob"),
- },
- saveDex: {
- action: "roll",
- rollType: "save",
- rollTarget: "dex",
- tooltip: this._generateTooltip("save", "dex"),
- },
- saveInt: {
- action: "roll",
- rollType: "save",
- rollTarget: "int",
- tooltip: this._generateTooltip("save", "int"),
- },
- savePer: {
- action: "roll",
- rollType: "save",
- rollTarget: "per",
- tooltip: this._generateTooltip("save", "per"),
- drag: true,
- },
- saveVol: {
- action: "roll",
- rollType: "save",
- rollTarget: "vol",
- tooltip: this._generateTooltip("save", "vol"),
- drag: true,
- },
- resourceSan: {
- action: "roll",
- rollType: "resource",
- rollTarget: "san",
- tooltip: this._generateTooltip("resource", "san"),
- drag: true,
- },
- resourceOeil: {
- action: "roll",
- rollType: "resource",
- rollTarget: "oeil",
- tooltip: this._generateTooltip("resource", "oeil"),
- drag: true,
- },
- resourceVerbe: {
- action: "roll",
- rollType: "resource",
- rollTarget: "verbe",
- tooltip: this._generateTooltip("resource", "verbe"),
- drag: true,
- },
- resourceBourse: {
- action: "roll",
- rollType: "resource",
- rollTarget: "bourse",
- tooltip: this._generateTooltip("resource", "bourse"),
- drag: true,
- },
- resourceMagie: {
- action: "roll",
- rollType: "resource",
- rollTarget: "magie",
- tooltip: this._generateTooltip("resource", "magie"),
- drag: true,
- },
}
return context
}
_generateTooltip(type, target) {
- if (type === ROLL_TYPE.SAVE) {
- const progres = this.document.system.caracteristiques[target].progression.progres
- ? game.i18n.localize("TENEBRIS.Label.hasProgressed")
- : game.i18n.localize("TENEBRIS.Label.noProgress")
- return `${game.i18n.localize("TENEBRIS.Label.experience")} : ${this.document.system.caracteristiques[target].progression.experience}
${progres}`
- } else if (type === ROLL_TYPE.RESOURCE) {
- return `${game.i18n.localize("TENEBRIS.Label.maximum")} : ${this.document.system.ressources[target].max}
${game.i18n.localize("TENEBRIS.Label.experience")} : ${this.document.system.ressources[target].experience}`
- } else if (type === "other") {
- return `${game.i18n.localize("TENEBRIS.Label.experience")} : ${this.document.system.dmax.experience}`
- }
}
/** @override */
@@ -172,9 +82,6 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
break
case "items":
context.tab = context.tabs.items
- const talents = await this._prepareTalents()
- context.talents = talents
- context.talentsAppris = talents.filter((talent) => talent.appris)
context.weapons = doc.itemTypes.weapon
context.armors = doc.itemTypes.armor
context.spells = doc.itemTypes.spell
@@ -183,40 +90,12 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
case "biography":
context.tab = context.tabs.biography
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
- context.enrichedLangues = await TextEditor.enrichHTML(doc.system.langues, { async: true })
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
break
}
return context
}
- /**
- * Prepares the talents for the character sheet.
- *
- * @returns {Array} An array of talents with their properties.
- */
- async _prepareTalents() {
- const talents = await Promise.all(
- this.document.itemTypes.talent.map(async (talent) => {
- const pathName = await talent.system.getPathName()
- return {
- id: talent.id,
- uuid: talent.uuid,
- name: talent.name,
- img: talent.img,
- path: `Obtenu par ${pathName}`,
- description: talent.system.improvedDescription,
- progression: talent.system.progression,
- niveau: talent.system.niveau,
- appris: talent.system.appris,
- details: talent.system.details,
- }
- }),
- )
- talents.sort((a, b) => b.appris - a.appris || a.name.localeCompare(b.name, game.i18n.lang))
- return talents
- }
-
// #region Drag-and-Drop Workflow
/**
@@ -244,43 +123,6 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
await this.document.addPath(item)
}
- // #endregion
-
- // #region Actions
-
- /**
- * Suppression de la voie majeure
- * @param {Event} event The initiating click event.
- * @param {HTMLElement} target The current target of the event listener.
- */
- static async #onDeleteVoieMajeure(event, target) {
- const proceed = await foundry.applications.api.DialogV2.confirm({
- content: game.i18n.localize("TENEBRIS.Dialog.suppressionTalents"),
- rejectClose: false,
- modal: true,
- })
- if (!proceed) return
- const path = this.document.items.get(this.document.system.voies.majeure.id)
- if (!path) return
- await this.document.deletePath(path, true)
- }
-
- /**
- * Suppression de la voie mineure
- * @param {Event} event The initiating click event.
- * @param {HTMLElement} target The current target of the event listener.
- */
- static async #onDeleteVoieMineure(event, target) {
- const proceed = await foundry.applications.api.DialogV2.confirm({
- content: game.i18n.localize("TENEBRIS.Dialog.suppressionTalents"),
- rejectClose: false,
- modal: true,
- })
- if (!proceed) return
- const path = this.document.items.get(this.document.system.voies.mineure.id)
- if (!path) return
- await this.document.deletePath(path, false)
- }
/**
* Creates a new attack item directly from the sheet and embeds it into the document.
@@ -290,11 +132,11 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
static #onCreateEquipment(event, target) {
// Création d'une armure
if (event.shiftKey) {
- this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("TENEBRIS.Label.newArmor"), type: "armor" }])
+ this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }])
}
// Création d'une arme
else {
- this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("TENEBRIS.Label.newWeapon"), type: "weapon" }])
+ this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }])
}
}
diff --git a/module/applications/sheets/gift-sheet.mjs b/module/applications/sheets/gift-sheet.mjs
index fc75c40..e37b986 100644
--- a/module/applications/sheets/gift-sheet.mjs
+++ b/module/applications/sheets/gift-sheet.mjs
@@ -22,7 +22,7 @@ export default class LethalFantasyGiftSheet extends LethalFantasyItemSheet {
/** @override */
async _prepareContext() {
const context = await super._prepareContext()
- context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.improvedDescription, { async: true })
+ context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
return context
}
}
diff --git a/module/applications/sheets/shield-sheet.mjs b/module/applications/sheets/shield-sheet.mjs
new file mode 100644
index 0000000..46e876e
--- /dev/null
+++ b/module/applications/sheets/shield-sheet.mjs
@@ -0,0 +1,27 @@
+import LethalFantasyItemSheet from "./base-item-sheet.mjs"
+
+export default class LethalFantasyShieldSheet extends LethalFantasyItemSheet {
+ /** @override */
+ static DEFAULT_OPTIONS = {
+ classes: ["shield"],
+ position: {
+ width: 620,
+ },
+ window: {
+ contentClasses: ["shield-content"],
+ },
+ }
+
+ /** @override */
+ static PARTS = {
+ main: {
+ template: "systems/fvtt-lethal-fantasy/templates/shield.hbs",
+ },
+ }
+
+ /** @override */
+ async _prepareContext() {
+ const context = await super._prepareContext()
+ return context
+ }
+}
diff --git a/module/applications/sheets/weapon-sheet.mjs b/module/applications/sheets/weapon-sheet.mjs
index a696ea7..2c5d0f5 100644
--- a/module/applications/sheets/weapon-sheet.mjs
+++ b/module/applications/sheets/weapon-sheet.mjs
@@ -5,7 +5,7 @@ export default class LethalFantasyWeaponSheet extends LethalFantasyItemSheet {
static DEFAULT_OPTIONS = {
classes: ["weapon"],
position: {
- width: 400,
+ width: 620,
},
window: {
contentClasses: ["weapon-content"],
diff --git a/module/config/armor.mjs b/module/config/armor.mjs
index 157d572..b2ea2b5 100644
--- a/module/config/armor.mjs
+++ b/module/config/armor.mjs
@@ -1,5 +1,5 @@
-export const CATEGORY = Object.freeze({
- sommaire: { id: "sommaire", label: "LETHALFANTASY.Armor.Category.sommaire" },
- legere: { id: "legere", label: "LETHALFANTASY.Armor.Category.legere" },
- guerre: { id: "guerre", label: "LETHALFANTASY.Armor.Category.guerre" },
+export const TYPE = Object.freeze({
+ light: { id: "light", label: "LETHALFANTASY.Armor.Category.light" },
+ medium: { id: "medium", label: "LETHALFANTASY.Armor.Category.medium" },
+ heavy: { id: "medium", label: "LETHALFANTASY.Armor.Category.heavy" }
})
diff --git a/module/config/equipment.mjs b/module/config/equipment.mjs
new file mode 100644
index 0000000..c1e0146
--- /dev/null
+++ b/module/config/equipment.mjs
@@ -0,0 +1,51 @@
+export const CATEGORY = Object.freeze({
+ essentialkit: {
+ id: "essentialkit",
+ label: "LETHALFANTASY.EquipmentCategories.EssentialKit",
+ },
+ classkit: {
+ id: "classkit",
+ label: "LETHALFANTASY.EquipmentCategories.ClassKit",
+ },
+ clothing: {
+ id: "clothing",
+ label: "LETHALFANTASY.EquipmentCategories.Clothing",
+ },
+ music: {
+ id: "music",
+ label: "LETHALFANTASY.EquipmentCategories.Music",
+ },
+ sleeping: {
+ id: "sleeping",
+ label: "LETHALFANTASY.EquipmentCategories.Sleeping",
+ },
+ landtransport: {
+ id: "landtransport",
+ label: "LETHALFANTASY.EquipmentCategories.LandTransport",
+ },
+ watertransport: {
+ id: "watertransport",
+ label: "LETHALFANTASY.EquipmentCategories.WaterTransport",
+ },
+ mount: {
+ id: "mount",
+ label: "LETHALFANTASY.EquipmentCategories.Mount",
+ },
+ light: {
+ id: "light",
+ label: "LETHALFANTASY.EquipmentCategories.Light",
+ },
+ loadbearing: {
+ id: "loadbearing",
+ label: "LETHALFANTASY.EquipmentCategories.LoadBearing",
+ },
+ misc: {
+ id: "misc",
+ label: "LETHALFANTASY.EquipmentCategories.Misc",
+ },
+ fooddrink: {
+ id: "fooddrink",
+ label: "LETHALFANTASY.EquipmentCategories.FoodDrink",
+ },
+
+})
diff --git a/module/config/system.mjs b/module/config/system.mjs
index 3bc87c0..3f75f4f 100644
--- a/module/config/system.mjs
+++ b/module/config/system.mjs
@@ -3,6 +3,7 @@ import * as WEAPON from "./weapon.mjs"
import * as ARMOR from "./armor.mjs"
import * as SPELL from "./spell.mjs"
import * as SKILL from "./skill.mjs"
+import * as EQUIPMENT from "./equipment.mjs"
export const SYSTEM_ID = "fvtt-lethal-fantasy"
export const DEV_MODE = false
@@ -81,8 +82,10 @@ export const SYSTEM = {
SKILL_CATEGORY: SKILL.CATEGORY,
WEAPON_CATEGORY: WEAPON.CATEGORY,
WEAPON_DAMAGE: WEAPON.DAMAGE,
- ARMOR_CATEGORY: ARMOR.CATEGORY,
+ ARMOR_TYPE: ARMOR.TYPE,
+ EQUIPMENT_CATEGORY: EQUIPMENT.CATEGORY,
SPELL_RANGE: SPELL.RANGE,
+ WEAPON_TYPE: WEAPON.WEAPON_TYPE,
MONEY,
ASCII,
ROLL_TYPE,
diff --git a/module/config/weapon.mjs b/module/config/weapon.mjs
index d36e37f..4265c88 100644
--- a/module/config/weapon.mjs
+++ b/module/config/weapon.mjs
@@ -21,6 +21,11 @@ export const CATEGORY = Object.freeze({
},
})
+export const WEAPON_TYPE = {
+ "melee": "LETHALFANTASY.Weapon.WeaponType.melee",
+ "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged"
+}
+
export const DAMAGE = Object.freeze({
UN: "1",
D4: "d4",
diff --git a/module/models/_module.mjs b/module/models/_module.mjs
index a831a91..f6af99a 100644
--- a/module/models/_module.mjs
+++ b/module/models/_module.mjs
@@ -4,6 +4,8 @@ export { default as LethalFantasyWeapon } from "./weapon.mjs"
export { default as LethalFantasySpell } from "./spell.mjs"
export { default as LethalFantasySkill } from "./skill.mjs"
export { default as LethalFantasyArmor } from "./armor.mjs"
+export { default as LethalFantasyShield } from "./shield.mjs"
export { default as LethalFantasyGift } from "./gift.mjs"
export { default as LethalFantasyVulnerability } from "./vulnerability.mjs"
export { default as LethalFantasySave } from "./save.mjs"
+export { default as LethalFantasyEquipment } from "./equipment.mjs"
diff --git a/module/models/armor.mjs b/module/models/armor.mjs
index 4e58dea..00445c4 100644
--- a/module/models/armor.mjs
+++ b/module/models/armor.mjs
@@ -3,13 +3,17 @@ export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel {
static defineSchema() {
const fields = foundry.data.fields
const schema = {}
+ const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true })
- schema.category = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.ARMOR_CATEGORY })
- schema.protection = new fields.StringField({
- required: true,
- initial: ""
- })
+ schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE })
+ schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 })
+ schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+
+ schema.load = new fields.StringField({ required: true, initial: "L" })
+
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY })
diff --git a/module/models/equipment.mjs b/module/models/equipment.mjs
index 4367335..90aff59 100644
--- a/module/models/equipment.mjs
+++ b/module/models/equipment.mjs
@@ -7,11 +7,12 @@ export default class LethalFantasyEquipment extends foundry.abstract.TypeDataMod
const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true })
- schema.category = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_CATEGORY })
- schema.damages = new fields.StringField({
- required: true,
- initial: ""
- })
+ schema.category = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.EQUIPMENT_CATEGORIES })
+
+ schema.load = new fields.StringField({ required: true, initial: "L" })
+ schema.hi = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ schema.medium = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ schema.lo = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY })
@@ -21,7 +22,4 @@ export default class LethalFantasyEquipment extends foundry.abstract.TypeDataMod
/** @override */
static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Equipment"]
- get weaponCategory() {
- return game.i18n.localize(CATEGORY[this.category].label)
- }
}
diff --git a/module/models/shield.mjs b/module/models/shield.mjs
new file mode 100644
index 0000000..c6f68bb
--- /dev/null
+++ b/module/models/shield.mjs
@@ -0,0 +1,41 @@
+import { SYSTEM } from "../config/system.mjs"
+export default class LethalFantasyShield extends foundry.abstract.TypeDataModel {
+ static defineSchema() {
+ const fields = foundry.data.fields
+ const schema = {}
+ const requiredInteger = { required: true, nullable: false, integer: true }
+
+ schema.description = new fields.HTMLField({ required: true, textSearch: true })
+ schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 })
+ schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ schema.standing = new fields.SchemaField({
+ min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ })
+ schema.crouching = new fields.SchemaField({
+ min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ })
+
+ schema.destruction = new fields.SchemaField({
+ bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ })
+ schema.autodestruction = new fields.SchemaField({
+ bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ })
+
+ schema.load = new fields.StringField({ required: true, initial: "L" })
+ schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
+ schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY })
+
+ return schema
+ }
+
+ /** @override */
+ static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Shield"]
+
+}
diff --git a/module/models/skill.mjs b/module/models/skill.mjs
index 8a30feb..8bb2c3c 100644
--- a/module/models/skill.mjs
+++ b/module/models/skill.mjs
@@ -21,4 +21,47 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
get skillCategory() {
return game.i18n.localize(CATEGORY[this.category].label)
}
+
+ prepareDerivedData() {
+ super.prepareDerivedData();
+ this.skillTotal = this.computeBase();
+ }
+
+ computeBase() {
+ let actor = this.parent?.actor;
+ if (!actor) {
+ return `${this.base } + ${ String(this.bonus)}`;
+ }
+
+ // Split the base value per stat : WIS,DEX,STR,INT,CHA (example)
+ const base = this.base;
+ let baseSplit = base.split(",");
+ let baseSplitLength = baseSplit.length;
+ if ( baseSplitLength > 0) {
+ // Select the max stat value from the parent actor
+ let maxStat = 0;
+ for (let i = 0; i < baseSplitLength; i++) {
+ const stat = baseSplit[i];
+ const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0;
+ if (statValue > maxStat) {
+ maxStat = statValue;
+ }
+ }
+ return maxStat;
+ } else {
+ // Split with + calculate the total
+ baseSplit = base.split("+");
+ baseSplitLength = baseSplit.length;
+ if ( baseSplitLength > 0) {
+ let total = 0;
+ for (let i = 0; i < baseSplitLength; i++) {
+ const stat = baseSplit[i];
+ const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0;
+ total += statValue;
+ }
+ return total
+ }
+ }
+ return `${this.base } + ${ String(this.bonus)}`;
+ }
}
diff --git a/module/models/spell.mjs b/module/models/spell.mjs
index bdd82e0..b7fd5aa 100644
--- a/module/models/spell.mjs
+++ b/module/models/spell.mjs
@@ -18,6 +18,19 @@ export default class LethalFantasySpell extends foundry.abstract.TypeDataModel {
max: 20,
})
+ schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ schema.components = new fields.SchemaField({
+ verbal: new fields.BooleanField(),
+ somatic: new fields.BooleanField(),
+ material: new fields.BooleanField(),
+ })
+ schema.castingTime = new fields.StringField({ required: true, initial: "" })
+ schema.range = new fields.StringField({ required: true, initial: "" })
+ schema.areaAffected = new fields.StringField({ required: true, initial: "" })
+ schema.duration = new fields.StringField({ required: true, initial: "" })
+ schema.savingThrow = new fields.StringField({ required: true, initial: "" })
+ schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" })
+
return schema
}
diff --git a/module/models/weapon.mjs b/module/models/weapon.mjs
index d06ff75..ed4d8db 100644
--- a/module/models/weapon.mjs
+++ b/module/models/weapon.mjs
@@ -7,11 +7,38 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true })
- schema.category = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_CATEGORY })
- schema.damages = new fields.StringField({
- required: true,
- initial: ""
+ schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE })
+ schema.damageType = new fields.SchemaField({
+ typeP: new fields.BooleanField(),
+ typeB: new fields.BooleanField(),
+ typeS: new fields.BooleanField()
})
+ schema.damage = new fields.SchemaField({
+ damageS: new fields.StringField({required: true, initial: ""}),
+ damageM: new fields.StringField({required: true, initial: ""})
+ })
+ schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] })
+
+ schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ schema.secondsToAttack = new fields.StringField({required: true, initial: ""})
+
+ schema.speed = new fields.SchemaField({
+ simpleAim: new fields.StringField({required: true, initial: ""}),
+ carefulAim: new fields.StringField({required: true, initial: ""}),
+ focusedAim: new fields.StringField({required: true, initial: ""})
+ })
+
+ schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ schema.range = new fields.SchemaField({
+ pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
+ outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
+ })
+
+ schema.load = new fields.StringField({ required: true, initial: "L" })
schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY })
diff --git a/styles/equipment.less b/styles/equipment.less
new file mode 100644
index 0000000..a2db33b
--- /dev/null
+++ b/styles/equipment.less
@@ -0,0 +1,16 @@
+.equipment-content {
+ .sheet-common();
+ .item-sheet-common();
+
+ .header {
+ display: flex;
+ img {
+ width: 50px;
+ height: 50px;
+ }
+ }
+
+ label {
+ flex: 10%;
+ }
+}
diff --git a/styles/fvtt-lethal-fantasy.less b/styles/fvtt-lethal-fantasy.less
index 0bb175e..5f3a54d 100644
--- a/styles/fvtt-lethal-fantasy.less
+++ b/styles/fvtt-lethal-fantasy.less
@@ -12,6 +12,8 @@
@import "vulnerability.less";
@import "save.less";
@import "chat.less";
+ @import "equipment.less";
+ @import "shield.less";
}
@import "roll.less";
diff --git a/styles/gift.less b/styles/gift.less
index 017a782..c40ad31 100644
--- a/styles/gift.less
+++ b/styles/gift.less
@@ -1,94 +1,26 @@
-.gifts-content {
+.gift-content {
.sheet-common();
.item-sheet-common();
- .path-name {
+ .header {
display: flex;
- justify-content: space-between;
- .control {
- margin: 5px;
- }
img {
width: 50px;
height: 50px;
}
}
- .path-main {
- display: grid;
- grid-template-columns: 2fr 2fr 1fr;
-
- .profil {
- display: grid;
- grid-template-columns: repeat(2, 1fr);
- }
-
- .profil-gauche,
- .profil-droite {
- flex: 1; /* Chaque colonne prend la moitié de l'espace disponible */
- padding: 10px; /* Espacement intérieur */
- }
-
- .profil-gauche {
- margin-right: 10px; /* Espace entre les deux colonnes */
- }
-
- /* Optionnel : supprimer le margin-right sur la dernière colonne si vous avez besoin d'un espacement précis */
- .profil-droite {
- margin-right: 0;
- }
-
- .biens {
- prose-mirror {
- height: 100%;
- }
- }
-
- .langues {
- prose-mirror {
- height: 100%;
- }
- }
-
- .description {
- prose-mirror.inactive {
- min-height: 40px;
- }
- prose-mirror.active {
- min-height: 150px;
- }
- grid-column: span 3;
- }
+ input[type="checkbox"] {
+ font-size: var(--font-size-14);
+ width: 20px;
+ padding-top: 0;
}
- .path-talents {
- display: grid;
- grid-template-columns: repeat(5, 1fr);
- gap: 10px;
- .talent {
- background-color: #f0f0f0;
- padding: 5px;
- border-radius: 5px;
- .header {
- display: flex;
- justify-content: space-between;
- .name {
- font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.5);
- padding-left: 20px;
- }
- .controls {
- font-size: calc(var(--font-size-standard) * 0.8);
- }
- }
- .progression {
- display: flex;
- justify-content: space-between;
- padding-top: 10px;
- }
- .description {
- font-size: calc(var(--font-size-standard) * 1);
- }
- }
+ input[type="checkbox"]:checked {
+ background-color: rgba(0, 0, 0, 0.1);
+ }
+
+ input[type="checkbox"]:checked::after {
+ color: rgba(0, 0, 0, 0.1);
}
}
diff --git a/styles/global.less b/styles/global.less
index 319f486..6fc97d2 100644
--- a/styles/global.less
+++ b/styles/global.less
@@ -1,5 +1,5 @@
:root {
- --font-size-standard: 0.8125rem;
+ --font-size-standard: 1.0rem;
--background-image-base: url("../assets/parchment.jpg");
--font-secondary: "Amiri", serif;
--logo-standard: url("../assets/lethal-fantasy-logo.webp");
@@ -35,7 +35,7 @@ i.lethalfantasy {
.application.dialog.lethalfantasy {
font-family: var(--font-primary);
- font-size: calc(var(--font-size-standard) * 1.2);
+ font-size: calc(var(--font-size-standard) * 1.0);
background-image: var(--background-image-base);
button:hover {
background: var(--color-dark-6);
diff --git a/styles/mixins.less b/styles/mixins.less
index 01ec173..c9d4ed1 100644
--- a/styles/mixins.less
+++ b/styles/mixins.less
@@ -24,13 +24,13 @@
height: 50px;
margin-right: 10px;
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 2);
+ font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
fieldset {
- margin-bottom: 10px;
+ margin-bottom: 5px;
border-radius: 5px;
}
@@ -38,17 +38,17 @@
input,
select {
text-align: center;
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1.0);
}
select {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1.0);
}
}
legend {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
@@ -57,7 +57,7 @@
.character-sheet-common {
label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.4);
+ font-size: calc(var(--font-size-standard) * 1.2);
}
}
@@ -68,7 +68,21 @@
label {
font-family: var(--font-secondary);
- font-size: calc(var(--font-size-standard) * 1.6);
+ font-size: calc(var(--font-size-standard) * 1.0);
flex: 50%;
}
+
+ .align-top {
+ align-self: flex-start;
+ padding: 0.1rem;
+ margin-right: 0.2rem;
+ /*border-color: black;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2%;*/
+ }
+
+ .shift-right {
+ margin-left: 2rem;
+ }
}
diff --git a/styles/shield.less b/styles/shield.less
new file mode 100644
index 0000000..a04deaf
--- /dev/null
+++ b/styles/shield.less
@@ -0,0 +1,16 @@
+.shield-content {
+ .sheet-common();
+ .item-sheet-common();
+
+ .header {
+ display: flex;
+ img {
+ width: 50px;
+ height: 50px;
+ }
+ }
+
+ label {
+ flex: 10%;
+ }
+}
diff --git a/styles/spell.less b/styles/spell.less
index a80c4cb..55deea9 100644
--- a/styles/spell.less
+++ b/styles/spell.less
@@ -14,8 +14,5 @@
flex: 10%;
}
- input[name="system.consequenceA"], input[name="system.consequenceB"] {
- font-size: calc(var(--font-size-standard) * 1.2);
- }
}
\ No newline at end of file
diff --git a/system.json b/system.json
index dfd3d86..bd8b516 100644
--- a/system.json
+++ b/system.json
@@ -38,7 +38,9 @@
"save": { "htmlFields": ["description"] },
"weapon": { "htmlFields": ["description"] },
"armor": { "htmlFields": ["description"] },
- "spell": { "htmlFields": ["description"] }
+ "shield": { "htmlFields": ["description"] },
+ "spell": { "htmlFields": ["description"] },
+ "equipment": { "htmlFields": ["description"] }
}
},
"grid": {
diff --git a/templates/armor.hbs b/templates/armor.hbs
index f56f95d..7ab06b3 100644
--- a/templates/armor.hbs
+++ b/templates/armor.hbs
@@ -4,14 +4,21 @@
{{formInput fields.name value=source.name}}
- {{formField systemFields.category value=system.category localize=true}}
- {{formField systemFields.valeur value=system.valeur}}
- {{formField systemFields.malus value=system.malus}}
+ {{formField systemFields.armortype value=system.armortype localize=true}}
+ {{formField systemFields.defense value=system.defense}}
+ {{formField systemFields.movementreduction value=system.movementreduction}}
+ {{formField systemFields.hp value=system.hp}}
+ {{formField systemFields.damagereduction value=system.damagereduction}}
+ {{formField systemFields.load value=system.load}}
+
+ {{formField systemFields.cost value=system.cost}}
+ {{formField systemFields.money value=system.money localize=true}}
+