Upgrade item sheets
This commit is contained in:
parent
df8995f8b7
commit
9775ec9fa1
BIN
assets/lf_logo_01.webp
Normal file
BIN
assets/lf_logo_01.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 623 KiB |
BIN
assets/lf_logo_small_01.webp
Normal file
BIN
assets/lf_logo_small_01.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 70 KiB |
@ -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);
|
||||
}
|
||||
|
269
lang/en.json
269
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",
|
||||
|
@ -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) {
|
||||
|
@ -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"
|
||||
|
@ -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} <br> ${progres}`
|
||||
} else if (type === ROLL_TYPE.RESOURCE) {
|
||||
return `${game.i18n.localize("TENEBRIS.Label.maximum")} : ${this.document.system.ressources[target].max} <br> ${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" }])
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
27
module/applications/sheets/shield-sheet.mjs
Normal file
27
module/applications/sheets/shield-sheet.mjs
Normal file
@ -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
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ export default class LethalFantasyWeaponSheet extends LethalFantasyItemSheet {
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["weapon"],
|
||||
position: {
|
||||
width: 400,
|
||||
width: 620,
|
||||
},
|
||||
window: {
|
||||
contentClasses: ["weapon-content"],
|
||||
|
@ -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" }
|
||||
})
|
||||
|
51
module/config/equipment.mjs
Normal file
51
module/config/equipment.mjs
Normal file
@ -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",
|
||||
},
|
||||
|
||||
})
|
@ -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,
|
||||
|
@ -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",
|
||||
|
@ -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"
|
||||
|
@ -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 })
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
41
module/models/shield.mjs
Normal file
41
module/models/shield.mjs
Normal file
@ -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"]
|
||||
|
||||
}
|
@ -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)}`;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -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 })
|
||||
|
||||
|
16
styles/equipment.less
Normal file
16
styles/equipment.less
Normal file
@ -0,0 +1,16 @@
|
||||
.equipment-content {
|
||||
.sheet-common();
|
||||
.item-sheet-common();
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
label {
|
||||
flex: 10%;
|
||||
}
|
||||
}
|
@ -12,6 +12,8 @@
|
||||
@import "vulnerability.less";
|
||||
@import "save.less";
|
||||
@import "chat.less";
|
||||
@import "equipment.less";
|
||||
@import "shield.less";
|
||||
}
|
||||
|
||||
@import "roll.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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
16
styles/shield.less
Normal file
16
styles/shield.less
Normal file
@ -0,0 +1,16 @@
|
||||
.shield-content {
|
||||
.sheet-common();
|
||||
.item-sheet-common();
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
label {
|
||||
flex: 10%;
|
||||
}
|
||||
}
|
@ -14,8 +14,5 @@
|
||||
flex: 10%;
|
||||
}
|
||||
|
||||
input[name="system.consequenceA"], input[name="system.consequenceB"] {
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
}
|
||||
}
|
||||
|
@ -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": {
|
||||
|
@ -4,14 +4,21 @@
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
|
||||
{{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}}
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Label.description"}}</legend>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput
|
||||
systemFields.description
|
||||
enriched=enrichedDescription
|
||||
enriched=description
|
||||
value=system.description
|
||||
name="system.description"
|
||||
toggled="false"
|
||||
|
14
templates/equipment.hbs
Normal file
14
templates/equipment.hbs
Normal file
@ -0,0 +1,14 @@
|
||||
<section>
|
||||
<div class="header">
|
||||
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
{{formField systemFields.money value=system.money localize=true}}
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
@ -3,14 +3,10 @@
|
||||
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
{{formField systemFields.appris value=system.appris}}
|
||||
{{formField systemFields.progression value=system.progression}}
|
||||
{{#if canProgress}}
|
||||
{{formField systemFields.niveau value=system.niveau }}
|
||||
{{/if}}wwww
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Label.description"}}</legend>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
|
13
templates/save.hbs
Normal file
13
templates/save.hbs
Normal file
@ -0,0 +1,13 @@
|
||||
<section>
|
||||
<div class="header">
|
||||
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
{{formField systemFields.value value=system.value}}
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
59
templates/shield.hbs
Normal file
59
templates/shield.hbs
Normal file
@ -0,0 +1,59 @@
|
||||
<section>
|
||||
<div class="header">
|
||||
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<div class="align-top">
|
||||
{{formField systemFields.defense value=system.defense}}
|
||||
{{formField systemFields.movementreduction value=system.movementreduction}}
|
||||
|
||||
<label>Standing</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.standing.fields.min value=system.standing.min}}
|
||||
{{formField systemFields.standing.fields.max value=system.standing.min}}
|
||||
</div>
|
||||
|
||||
<label>Crouching</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.crouching.fields.min value=system.crouching.min}}
|
||||
{{formField systemFields.crouching.fields.max value=system.crouching.min}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="align-top">
|
||||
<label>Destruction</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.destruction.fields.bashing value=system.destruction.bashing}}
|
||||
{{formField systemFields.destruction.fields.slashing value=system.destruction.slashing}}
|
||||
{{formField systemFields.destruction.fields.piercing value=system.destruction.piercing}}
|
||||
</div>
|
||||
|
||||
<label>Auto-Destruction</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.autodestruction.fields.bashing value=system.autodestruction.bashing}}
|
||||
{{formField systemFields.autodestruction.fields.slashing value=system.autodestruction.slashing}}
|
||||
{{formField systemFields.autodestruction.fields.piercing value=system.autodestruction.piercing}}
|
||||
</div>
|
||||
|
||||
{{formField systemFields.load value=system.load}}
|
||||
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
{{formField systemFields.money value=system.money localize=true}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput
|
||||
systemFields.description
|
||||
enriched=description
|
||||
value=system.description
|
||||
name="system.description"
|
||||
toggled="false"
|
||||
}}
|
||||
</fieldset>
|
||||
</section>
|
@ -3,7 +3,15 @@
|
||||
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
{{formField systemFields.category value=system.category localize=true}}
|
||||
{{formField systemFields.base value=system.base}}
|
||||
{{formField systemFields.bonus value=system.bonus}}
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
|
||||
<div class="total flexrow">
|
||||
<legend>{{localize "LETHALFANTASY.Label.total"}}</legend>
|
||||
{{system.skillTotal}}
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
|
@ -4,16 +4,26 @@
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
|
||||
{{formField systemFields.preparation value=system.preparation}}
|
||||
{{formField systemFields.cible value=system.cible}}
|
||||
{{formField systemFields.portee value=system.portee localize=true}}
|
||||
{{formField systemFields.duree value=system.duree}}
|
||||
{{formField systemFields.consequenceA value=system.consequenceA}}
|
||||
{{formField systemFields.consequenceB value=system.consequenceB}}
|
||||
{{formField systemFields.level value=system.level}}
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
|
||||
<label>Components</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.components.fields.verbal value=system.components.verbal}}
|
||||
{{formField systemFields.components.fields.somatic value=system.components.somatic}}
|
||||
{{formField systemFields.components.fields.material value=system.components.material}}
|
||||
</div>
|
||||
|
||||
{{formField systemFields.castingTime value=system.castingTime}}
|
||||
{{formField systemFields.range value=system.range}}
|
||||
{{formField systemFields.areaAffected value=system.areaAffected}}
|
||||
{{formField systemFields.duration value=system.duration}}
|
||||
{{formField systemFields.savingThrow value=system.savingThrow}}
|
||||
{{formField systemFields.extraAetherPoints value=system.extraAetherPoints}}
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
@ -3,15 +3,11 @@
|
||||
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
{{formField systemFields.appris value=system.appris}}
|
||||
{{formField systemFields.progression value=system.progression}}
|
||||
{{#if canProgress}}
|
||||
{{formField systemFields.niveau value=system.niveau }}
|
||||
{{/if}}
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
@ -2,18 +2,73 @@
|
||||
<div class="header">
|
||||
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<div class="align-top">
|
||||
|
||||
{{formField systemFields.weaponType value=system.weaponType localize=true}}
|
||||
|
||||
<label>Damage Type</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.damageType.fields.typeP value=system.standing.typeP}}
|
||||
{{formField systemFields.damageType.fields.typeB value=system.standing.typeB}}
|
||||
{{formField systemFields.damageType.fields.typeS value=system.standing.typeS}}
|
||||
</div>
|
||||
|
||||
<label>Damage</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.damage.fields.damageS value=system.standing.damageS}}
|
||||
{{formField systemFields.damage.fields.damageM value=system.standing.damageM}}
|
||||
</div>
|
||||
|
||||
{{formField systemFields.hands value=system.hands localize=true}}
|
||||
|
||||
{{#if (eq system.weaponType "melee")}}
|
||||
{{formField systemFields.defenseMax value=system.defenseMax}}
|
||||
{{formField systemFields.secondsToAttack value=system.secondsToAttack}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq system.weaponType "ranged")}}
|
||||
<label>Speed</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}}
|
||||
{{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}}
|
||||
{{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="align-top">
|
||||
{{#if (eq system.weaponType "ranged")}}
|
||||
|
||||
{{formField systemFields.defense value=system.defense}}
|
||||
|
||||
<label>Range</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.range.fields.pointBlank value=system.range.pointBlank}}
|
||||
{{formField systemFields.range.fields.short value=system.range.short}}
|
||||
{{formField systemFields.range.fields.medium value=system.range.medium}}
|
||||
{{formField systemFields.range.fields.long value=system.range.long}}
|
||||
{{formField systemFields.range.fields.extreme value=system.range.extreme}}
|
||||
{{formField systemFields.range.fields.outOfSkill value=system.range.outOfSkill}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{formField systemFields.load value=system.load}}
|
||||
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
{{formField systemFields.money value=system.money localize=true}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{formField systemFields.categorie value=system.categorie localize=true}}
|
||||
{{formField systemFields.degats value=system.degats}}
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Label.description"}}</legend>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput
|
||||
systemFields.description
|
||||
enriched=enrichedDescription
|
||||
value=system.description
|
||||
name="system.description"
|
||||
toggled=true
|
||||
systemFields.description
|
||||
enriched=description
|
||||
value=system.description
|
||||
name="system.description"
|
||||
toggled=true
|
||||
}}
|
||||
</fieldset>
|
||||
</section>
|
Loading…
x
Reference in New Issue
Block a user