Update sheets and fix basic bugs

This commit is contained in:
LeRatierBretonnien 2024-12-04 15:16:33 +01:00
parent 1cc3a0bc21
commit eaba806fec
33 changed files with 453 additions and 696 deletions

View File

@ -0,0 +1 @@
,morr,arioch,04.12.2024 14:13,file:///home/morr/.config/libreoffice/4;

Binary file not shown.

BIN
assets/fonts/georama.woff2 Normal file

Binary file not shown.

View File

@ -1,7 +1,8 @@
:root { :root {
--font-size-standard: 1rem; --font-size-standard: 1rem;
--background-image-base: url("../assets/parchment.jpg"); --background-image-base: url("../assets/parchment.jpg");
--font-secondary: "Amiri", serif; --font-primary: "Georama";
--font-secondary: "Georama";
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp"); --logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
} }
#logo { #logo {
@ -51,7 +52,7 @@ i.lethalfantasy {
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
.fvtt-cthulhu-eternal .character-sheet-common label { .fvtt-cthulhu-eternal .protagonist-sheet-common label {
font-family: var(--font-secondary); font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.2); font-size: calc(var(--font-size-standard) * 1.2);
} }
@ -75,7 +76,7 @@ i.lethalfantasy {
.fvtt-cthulhu-eternal .item-sheet-common .shift-right { .fvtt-cthulhu-eternal .item-sheet-common .shift-right {
margin-left: 2rem; margin-left: 2rem;
} }
.fvtt-cthulhu-eternal .character-content { .fvtt-cthulhu-eternal .protagonist-content {
font-family: var(--font-primary); font-family: var(--font-primary);
font-size: calc(var(--font-size-standard) * 1); font-size: calc(var(--font-size-standard) * 1);
color: var(--color-dark-1); color: var(--color-dark-1);
@ -84,19 +85,19 @@ i.lethalfantasy {
background-size: 100% 100%; background-size: 100% 100%;
overflow: scroll; overflow: scroll;
} }
.fvtt-cthulhu-eternal .character-content input:disabled, .fvtt-cthulhu-eternal .protagonist-content input:disabled,
.fvtt-cthulhu-eternal .character-content select:disabled { .fvtt-cthulhu-eternal .protagonist-content select:disabled {
background-color: rgba(0, 0, 0, 0.2); background-color: rgba(0, 0, 0, 0.2);
border-color: transparent; border-color: transparent;
color: var(--color-dark-3); color: var(--color-dark-3);
} }
.fvtt-cthulhu-eternal .character-content input, .fvtt-cthulhu-eternal .protagonist-content input,
.fvtt-cthulhu-eternal .character-content select { .fvtt-cthulhu-eternal .protagonist-content select {
background-color: rgba(0, 0, 0, 0.1); background-color: rgba(0, 0, 0, 0.1);
border-color: var(--color-dark-6); border-color: var(--color-dark-6);
color: var(--color-dark-2); color: var(--color-dark-2);
} }
.fvtt-cthulhu-eternal .character-content input[name="name"] { .fvtt-cthulhu-eternal .protagonist-content input[name="name"] {
height: 50px; height: 50px;
margin-right: 10px; margin-right: 10px;
font-family: var(--font-secondary); font-family: var(--font-secondary);
@ -104,58 +105,58 @@ i.lethalfantasy {
font-weight: bold; font-weight: bold;
border: none; border: none;
} }
.fvtt-cthulhu-eternal .character-content fieldset { .fvtt-cthulhu-eternal .protagonist-content fieldset {
margin-bottom: 5px; margin-bottom: 5px;
border-radius: 5px; border-radius: 5px;
} }
.fvtt-cthulhu-eternal .character-content .form-fields input, .fvtt-cthulhu-eternal .protagonist-content .form-fields input,
.fvtt-cthulhu-eternal .character-content .form-fields select { .fvtt-cthulhu-eternal .protagonist-content .form-fields select {
text-align: center; text-align: center;
font-size: calc(var(--font-size-standard) * 1); font-size: calc(var(--font-size-standard) * 1);
} }
.fvtt-cthulhu-eternal .character-content .form-fields select { .fvtt-cthulhu-eternal .protagonist-content .form-fields select {
font-family: var(--font-secondary); font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1); font-size: calc(var(--font-size-standard) * 1);
} }
.fvtt-cthulhu-eternal .character-content legend { .fvtt-cthulhu-eternal .protagonist-content legend {
font-family: var(--font-secondary); font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.2); font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold; font-weight: bold;
letter-spacing: 1px; letter-spacing: 1px;
} }
.fvtt-cthulhu-eternal .character-content label { .fvtt-cthulhu-eternal .protagonist-content label {
font-family: var(--font-secondary); font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.2); font-size: calc(var(--font-size-standard) * 1.2);
} }
.fvtt-cthulhu-eternal .character-main { .fvtt-cthulhu-eternal .protagonist-main {
display: flex; display: flex;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc {
display: flex; display: flex;
gap: 10px; gap: 10px;
flex: 1; flex: 1;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left {
min-width: 180px; min-width: 180px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-gauche-image { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-left-image {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
padding-bottom: 20px; padding-bottom: 20px;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-gauche-image .character-img { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-left-image .protagonist-img {
height: 140px; height: 140px;
width: auto; width: auto;
border: none; border: none;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-dv .form-fields, .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dv .form-fields,
.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-dmax .form-fields { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dmax .form-fields {
flex: none; flex: none;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-dmax-edit input { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dmax-edit input {
display: flex; display: flex;
width: 60px; width: 60px;
font-size: calc(var(--font-size-standard) * 1.4); font-size: calc(var(--font-size-standard) * 1.4);
@ -164,55 +165,37 @@ i.lethalfantasy {
padding: 0 5px 0 5px; padding: 0 5px 0 5px;
text-align: center; text-align: center;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 5px; gap: 5px;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-name { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-name {
display: flex; display: flex;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-name input { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-name input {
width: 400px; width: 400px;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 10px; gap: 10px;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos label { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos label {
min-width: 120px; min-width: 120px;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-majeure, .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp {
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-mineure {
display: flex;
}
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-majeure input,
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-mineure input {
width: 280px;
}
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-majeure .controls,
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-mineure .controls {
padding-left: 5px;
}
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-commanditaire {
display: flex;
}
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-commanditaire input {
width: 280px;
}
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv {
display: flex; display: flex;
gap: 2px; gap: 2px;
align-items: center; align-items: center;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv .character-pv-value .form-fields input { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-value .form-fields input {
flex: none; flex: none;
width: 50px; width: 50px;
margin-left: 10px; margin-left: 10px;
font-size: calc(var(--font-size-standard) * 1.4); font-size: calc(var(--font-size-standard) * 1.4);
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv .character-pv-max { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-max {
clear: both; clear: both;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -220,53 +203,53 @@ i.lethalfantasy {
margin: 3px 0; margin: 3px 0;
align-items: center; align-items: center;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv .character-pv-max input { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-max input {
width: 50px; width: 50px;
text-align: center; text-align: center;
font-size: calc(var(--font-size-standard) * 1.4); font-size: calc(var(--font-size-standard) * 1.4);
} }
.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv .pv-separator { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .hp-separator {
font-size: calc(var(--font-size-standard) * 1.2); font-size: calc(var(--font-size-standard) * 1.2);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage-play { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc-play {
min-width: 500px; min-width: 500px;
} }
.fvtt-cthulhu-eternal .character-main .character-personnage-edit { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc-edit {
min-width: 650px; min-width: 650px;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 5px; gap: 5px;
flex: 1; flex: 1;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .rollable:hover, .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .rollable:hover,
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .rollable:focus { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary); text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer; cursor: pointer;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .form-group { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .form-group {
flex: 1; flex: 1;
padding-left: 5px; padding-left: 5px;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .form-group .form-fields { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .form-group .form-fields {
flex: none; flex: none;
width: 70px; width: 70px;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
margin-left: 10px; margin-left: 10px;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input {
display: flex; display: flex;
width: 70px; width: 70px;
font-size: calc(var(--font-size-standard) * 1.4); font-size: calc(var(--font-size-standard) * 1.4);
@ -274,54 +257,54 @@ i.lethalfantasy {
justify-content: center; justify-content: center;
padding: 0 5px 0 5px; padding: 0 5px 0 5px;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input[type="number"] { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="number"] {
text-align: center; text-align: center;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input[type="checkbox"] { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="checkbox"] {
width: 20px; width: 20px;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input[type="checkbox"]:checked { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="checkbox"]:checked {
background-color: rgba(0, 0, 0, 0.1); background-color: rgba(0, 0, 0, 0.1);
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input[type="checkbox"]:checked::after { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="checkbox"]:checked::after {
color: rgba(0, 0, 0, 0.1); color: rgba(0, 0, 0, 0.1);
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques-play { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-play {
min-width: 225px; min-width: 225px;
} }
.fvtt-cthulhu-eternal .character-main .character-caracteristiques-edit { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-edit {
min-width: 400px; min-width: 400px;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 5px; gap: 5px;
flex: 1; flex: 1;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .rollable:hover, .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .rollable:hover,
.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .rollable:focus { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary); text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer; cursor: pointer;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .form-group { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .form-group {
flex: 1; flex: 1;
padding-left: 5px; padding-left: 5px;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .form-group .form-fields { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .form-group .form-fields {
flex: none; flex: none;
width: 70px; width: 70px;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .character-ressource-edit { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
margin-left: 10px; margin-left: 10px;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .character-ressource-edit input { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit input {
display: flex; display: flex;
width: 70px; width: 70px;
font-size: calc(var(--font-size-standard) * 1.4); font-size: calc(var(--font-size-standard) * 1.4);
@ -329,95 +312,107 @@ i.lethalfantasy {
justify-content: center; justify-content: center;
padding: 0 5px 0 5px; padding: 0 5px 0 5px;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .character-ressource-edit input[type="number"] { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit input[type="number"] {
text-align: center; text-align: center;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .character-ressource-edit select { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit select {
font-family: var(--font-secondary); font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.5); font-size: calc(var(--font-size-standard) * 1.5);
text-align: center; text-align: center;
width: 75px; width: 75px;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources-play { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources-play {
min-width: 235px; min-width: 235px;
} }
.fvtt-cthulhu-eternal .character-main .character-ressources-edit { .fvtt-cthulhu-eternal .protagonist-main .protagonist-resources-edit {
min-width: 400px; min-width: 400px;
} }
.fvtt-cthulhu-eternal .character-biography prose-mirror.inactive { .fvtt-cthulhu-eternal .protagonist-biography prose-mirror.inactive {
min-height: 40px; min-height: 40px;
} }
.fvtt-cthulhu-eternal .character-biography prose-mirror.active { .fvtt-cthulhu-eternal .protagonist-biography prose-mirror.active {
min-height: 150px; min-height: 150px;
} }
.fvtt-cthulhu-eternal .tab.character-items { .fvtt-cthulhu-eternal .tab.protagonist-skills {
display: grid; display: grid;
grid-template-columns: 1fr; grid-template-columns: 1fr;
} }
.fvtt-cthulhu-eternal .tab.character-items legend a { .fvtt-cthulhu-eternal .tab.protagonist-skills legend a {
font-size: calc(var(--font-size-standard) * 1.4); font-size: calc(var(--font-size-standard) * 1.4);
padding-left: 5px; padding-left: 5px;
} }
.fvtt-cthulhu-eternal .tab.character-items .talents { .fvtt-cthulhu-eternal .tab.protagonist-skills .skills {
display: grid; display: grid;
grid-template-columns: repeat(5, 1fr); grid-template-columns: repeat(3, 1fr);
gap: 10px; gap: 10px;
} }
.fvtt-cthulhu-eternal .tab.character-items .talents .talent { .fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
} }
.fvtt-cthulhu-eternal .tab.character-items .talents .talent .item-img { .fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img {
width: 50px; width: 50px;
height: 50px; height: 50px;
margin: 5px 0 0 0;
} }
.fvtt-cthulhu-eternal .tab.character-items .weapons { .fvtt-cthulhu-eternal .tab.protagonist-equipment {
display: grid;
grid-template-columns: 1fr;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment legend a {
font-size: calc(var(--font-size-standard) * 1.4);
padding-left: 5px;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons {
display: grid; display: grid;
grid-template-columns: repeat(4, 1fr); grid-template-columns: repeat(4, 1fr);
gap: 10px; gap: 10px;
} }
.fvtt-cthulhu-eternal .tab.character-items .weapons .weapon { .fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
} }
.fvtt-cthulhu-eternal .tab.character-items .weapons .weapon .item-img { .fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .item-img {
width: 50px; width: 50px;
height: 50px; height: 50px;
margin: 5px 0 0 0; margin: 5px 0 0 0;
} }
.fvtt-cthulhu-eternal .tab.character-items .armors { .fvtt-cthulhu-eternal .tab.protagonist-equipment .armors {
display: grid; display: grid;
grid-template-columns: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr);
gap: 10px; gap: 10px;
} }
.fvtt-cthulhu-eternal .tab.character-items .armors .armor { .fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
} }
.fvtt-cthulhu-eternal .tab.character-items .armors .armor .item-img { .fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .item-img {
width: 50px; width: 50px;
height: 50px; height: 50px;
margin: 5px 0 0 0; margin: 5px 0 0 0;
} }
.fvtt-cthulhu-eternal .tab.character-items .spells { .fvtt-cthulhu-eternal .tab.protagonist-equipment .gears {
display: grid; display: grid;
grid-template-columns: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr);
gap: 10px; gap: 10px;
} }
.fvtt-cthulhu-eternal .tab.character-items .spells .spell { .fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear {
display: flex; display: flex;
align-items: center;
gap: 10px; gap: 10px;
} }
.fvtt-cthulhu-eternal .tab.character-items .appris { .fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img {
font-weight: bold; width: 50px;
height: 50px;
margin: 5px 0 0 0;
} }
.fvtt-cthulhu-eternal .tab.character-items prose-mirror.inactive { .fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.inactive {
min-height: 40px; min-height: 40px;
} }
.fvtt-cthulhu-eternal .tab.character-items prose-mirror.active { .fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.active {
min-height: 150px; min-height: 150px;
} }
.fvtt-cthulhu-eternal .skill-content { .fvtt-cthulhu-eternal .skill-content {
@ -1274,22 +1269,3 @@ input[name="selectAvantages"] {
font-size: calc(var(--font-size-standard) * 1.2); font-size: calc(var(--font-size-standard) * 1.2);
text-shadow: 0 0 10px var(--color-shadow-primary); text-shadow: 0 0 10px var(--color-shadow-primary);
} }
#lethalfantasy-application-manager {
display: flex;
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-application-manager .lethalfantasy-table {
margin: 1rem;
background: none;
padding: 0;
margin: 0;
text-align: center;
}
#lethalfantasy-application-manager .lethalfantasy-table .player {
font-size: calc(var(--font-size-standard) * 1);
}

View File

@ -33,7 +33,7 @@ Hooks.once("init", function () {
CONFIG.Actor.documentClass = documents.CthulhuEternalActor CONFIG.Actor.documentClass = documents.CthulhuEternalActor
CONFIG.Actor.dataModels = { CONFIG.Actor.dataModels = {
character: models.CthulhuEternalProtagonist protagonist: models.CthulhuEternalProtagonist
} }
CONFIG.Item.documentClass = documents.CthulhuEternalItem CONFIG.Item.documentClass = documents.CthulhuEternalItem

Binary file not shown.

View File

@ -7,12 +7,12 @@
"skill": "Skill", "skill": "Skill",
"weapon": "Weapon", "weapon": "Weapon",
"armor": "Armor", "armor": "Armor",
"injuty": "Spell", "injury": "Injury",
"gift": "Gift", "gear": "Gear",
"vulnerability": "Vulnerability", "motivation": "Motivation",
"save": "Save", "mentaldisorder": "MentalDisorder",
"equipment": "Equipment" , "bond": "Bond" ,
"shield": "Shield" "arcane": "Arcane"
} }
}, },
"CTHULHUETERNAL": { "CTHULHUETERNAL": {
@ -90,7 +90,17 @@
"Weapon": { "Weapon": {
"WeaponType": { "WeaponType": {
"melee": "Melee", "melee": "Melee",
"ranged": "Ranged" "rangedprimitive": "Ranged Primitive",
"rangedthrown": "Ranged Thrown",
"rangedfirearm": "Ranged Firearm",
"unarmed": "Unarmed"
},
"WeaponSubtype": {
"basicfirearm": "Basic Firearm",
"pistol": "Pistol",
"shotgun": "Shotgun",
"submachinegun": "Submachinegun",
"riflecarabine": "Rifle/Carabine"
}, },
"FIELDS": { "FIELDS": {
"settings": { "settings": {
@ -99,6 +109,9 @@
"weaponType": { "weaponType": {
"label": "Type" "label": "Type"
}, },
"weaponSubtype": {
"label": "Firearm Subtype"
},
"damage": { "damage": {
"label": "Damage" "label": "Damage"
}, },
@ -119,6 +132,9 @@
}, },
"resourceLevel": { "resourceLevel": {
"label": "Resource level" "label": "Resource level"
},
"armorPiercing": {
"label": "Armor piercing"
} }
} }
}, },
@ -177,113 +193,40 @@
"community": "Community" "community": "Community"
}, },
"Label": { "Label": {
"protagonist": "Protagonist",
"characteristics": "Characteristics",
"description": "Description", "description": "Description",
"total": "Total", "total": "Total",
"langues": "Langues", "skills": "Skills",
"profil": "Profil", "gear": "Gear",
"details": "Détails", "damage": "Damage",
"talents": "Talents", "resource": "Resource",
"progressionPossible": "Progression possible", "newArmor": "New Armor",
"equipement": "Equipement", "newWeapon": "New Weapon",
"spells" : "Sortilèges", "armor": "Armor",
"level": "Niveau",
"degats": "Dégâts",
"ressource": "Ressource",
"sauvegarde": "Sauvegarde",
"newArmor": "Nouvelle armure",
"newWeapon": "Nouvelle arme",
"armor": "Armure",
"malus": "Malus", "malus": "Malus",
"jet": "Jet de ", "experience": "Experience",
"progress": "Progression", "maximum": "Maximum",
"hasProgressed": "A progressé dans la caractéristique", "equipment": "Equipment",
"noProgress": "N'a pas progressé dans la caractéristique", "biography": "Biography"
"experience": "Expérience",
"experienceDetail": "Expérience {detail}",
"maximum": "Maximum"
},
"Edit": "Editer",
"Delete": "Supprimer",
"ToggleSheet": "Changer de mode",
"Warning": {
"dejaDeuxVoies": "Vous avez déjà choisi deux voies",
"dejaVoieMajeure": "Vous avez déjà choisi cette voie comme voie majeure",
"voieMajeureAjoutee": "Voie majeure ajoutée",
"voieMineureAjoutee": "Voie mineure ajoutée",
"voieMajeureSupprimee": "Voie majeure supprimée",
"voieMineureSupprimee": "Voie mineure supprimée",
"plusDeRessource": "Vous n'avez plus de ressource {ressource}"
}, },
"Edit": "Edit",
"Delete": "Delete",
"ToggleSheet": "Toggle Sheet",
"Warning": { },
"Dialog": { "Dialog": {
"ajoutVoieMajeure": "Ajouter une voie majeure va automatiquement remplacer les caractéristiques, les ressources, les langues et les biens. Continuer ?",
"ajoutVoieMajeureTitre": "Ajout d'une voie majeure",
"ajoutVoieMineureTitre": "Ajout d'une voie mineure",
"suppressionTalents": "Supprimer cette voie va supprimer les talents associés. Continuer ?",
"talentDansVoie": "Ce talent est présent dans la voie {path}. Voulez-vous vraiment le supprimer ?",
"titleSave": "Jet de sauvegarde",
"titleResource": "Jet de ressource",
"titleDamage": "Jet de dégâts",
"titleAttack": "Jet d'attaque",
"titleStandard": "Jet standard"
}, },
"Roll": { "Roll": {
"save": "Jet de sauvegarde <br> {save}",
"resource": "Jet de ressource <br> {resource}", "resource": "Jet de ressource <br> {resource}",
"damage": "Jet de dégâts <br> {item}", "damage": "Jet de dégâts <br> {item}",
"attack": "Jet d'attaque <br> {item}", "attack": "Jet d'attaque <br> {item}",
"roll": "Lancer", "roll": "Lancer"
"aide": "Aider",
"gene": "Gêner",
"adversite": "Adversité",
"avantagesDesavantages": "Avantages et désavantages",
"normal": "Normal",
"avantage": "Avec avantage",
"desavantage": "Avec désavantage",
"doubleAvantage": "Avec double avantage",
"doubleDesavantage": "Avec double désavantage",
"visibilite": "Visibilité du lancer",
"success": "Réussite",
"failure": "Echec",
"resourceLost": "Ressource perdue",
"displayArmor": "{targetName} a une armure de {targetArmor}. <br>Dégâts réels : {realDamage}"
}, },
"Tooltip": { "Tooltip": {
"learnedTalents": "Les talents appris sont en gras",
"saveIntroTextTooltip": "Caractéristique : {value} <br> Aide : {aide} <br> Gêne : {gene} <br> Modificateur : {modificateur}",
"addAttack": "Ajouter une attaque",
"addEquipment": "Ajouter une arme, Shift + Click pour ajouter une armure",
"addSpell": "Ajouter un sortilège"
}, },
"Setting": { "Setting": {
"displayOpponentMalus": "Afficher le malus d'adversité",
"displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.",
"fortune": "Roue de Fortune",
"fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie."
}, },
"Chat": { "Chat": {
"askFortune": "{name} veut utiliser un point de Fortune !",
"askRollForAll": "Jet de {value}",
"askRollForOne": "Jet de {value} pour {name}"
},
"Fortune": {
"title": "Roue de Fortune"
},
"Manager": {
"title": "Gestionnaire de Personnages",
"player": "Utilisateur",
"character": "Personnage",
"rob": "Robustesse",
"dex": "Dextérité",
"int": "Intelligence",
"per": "Perception",
"vol": "Volonté",
"pv": "Points de Vie",
"san": "Santé Mentale",
"oeil": "Œil",
"verbe": "Verbe",
"bourse": "Bourse",
"magie": "Magie",
"roll": "Faire le jet"
} }
} }
} }

View File

@ -32,8 +32,7 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin
editImage: CthulhuEternalActorSheet.#onEditImage, editImage: CthulhuEternalActorSheet.#onEditImage,
toggleSheet: CthulhuEternalActorSheet.#onToggleSheet, toggleSheet: CthulhuEternalActorSheet.#onToggleSheet,
edit: CthulhuEternalActorSheet.#onItemEdit, edit: CthulhuEternalActorSheet.#onItemEdit,
delete: CthulhuEternalActorSheet.#onItemDelete, delete: CthulhuEternalActorSheet.#onItemDelete
createSpell: CthulhuEternalActorSheet.#onCreateSpell,
}, },
} }
@ -109,7 +108,9 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin
* @param {DragEvent} event The originating DragEvent * @param {DragEvent} event The originating DragEvent
* @protected * @protected
*/ */
async _onDrop(event) {} async _onDrop(event) {
}
/** /**
* Define whether a user is able to begin a dragstart workflow for a given drag selector * Define whether a user is able to begin a dragstart workflow for a given drag selector
@ -128,7 +129,7 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin
* @protected * @protected
*/ */
_canDragDrop(selector) { _canDragDrop(selector) {
return this.isEditable && this.document.isOwner return true //this.isEditable && this.document.isOwner
} }
/** /**
@ -203,6 +204,7 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin
_onDragOver(event) {} _onDragOver(event) {}
async _onDropItem(item) { async _onDropItem(item) {
console.log("Dropped item", item)
let itemData = item.toObject() let itemData = item.toObject()
await this.document.createEmbeddedDocuments("Item", [itemData], { renderSheet: false }) await this.document.createEmbeddedDocuments("Item", [itemData], { renderSheet: false })
} }
@ -272,20 +274,8 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin
*/ */
static async #onItemDelete(event, target) { static async #onItemDelete(event, target) {
const itemUuid = target.getAttribute("data-item-uuid") const itemUuid = target.getAttribute("data-item-uuid")
const talent = await fromUuid(itemUuid) const item = await fromUuid(itemUuid)
await talent.deleteDialog() await item.deleteDialog()
}
/**
* Handles the creation of a new attack item.
*
* @param {Event} event The event that triggered the creation of the attack.
* @param {Object} target The target object where the attack will be created.
* @private
* @static
*/
static #onCreateSpell(event, target) {
const item = this.document.createEmbeddedDocuments("Item", [{ name: "Nouveau sortilège", type: "spell" }])
} }
// #endregion // #endregion

View File

@ -19,22 +19,25 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
/** @override */ /** @override */
static PARTS = { static PARTS = {
main: { main: {
template: "systems/fvtt-cthulhu-eternal/templates/character-main.hbs", template: "systems/fvtt-cthulhu-eternal/templates/protagonist-main.hbs",
}, },
tabs: { tabs: {
template: "systems/fvtt-cthulhu-eternal/templates/generic/tab-navigation.hbs", template: "templates/generic/tab-navigation.hbs",
}, },
items: { skills: {
template: "systems/fvtt-cthulhu-eternal/templates/character-items.hbs", template: "systems/fvtt-cthulhu-eternal/templates/protagonist-skills.hbs",
},
equipment: {
template: "systems/fvtt-cthulhu-eternal/templates/protagonist-equipment.hbs",
}, },
biography: { biography: {
template: "systems/fvtt-cthulhu-eternal/templates/character-biography.hbs", template: "systems/fvtt-cthulhu-eternal/templates/protagonist-biography.hbs",
}, },
} }
/** @override */ /** @override */
tabGroups = { tabGroups = {
sheet: "items", sheet: "skills",
} }
/** /**
@ -43,8 +46,9 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
*/ */
#getTabs() { #getTabs() {
const tabs = { const tabs = {
items: { id: "items", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Character.Label.details" }, skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Label.skills" },
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "CTHULHUETERNAL.Character.Label.biography" }, equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Label.equipment" },
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "CTHULHUETERNAL.Label.biography" },
} }
for (const v of Object.values(tabs)) { for (const v of Object.values(tabs)) {
v.active = this.tabGroups[v.group] === v.id v.active = this.tabGroups[v.group] === v.id
@ -58,13 +62,25 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
const context = await super._prepareContext() const context = await super._prepareContext()
context.tabs = this.#getTabs() context.tabs = this.#getTabs()
context.tooltipsCaracteristiques = { context.tooltipsCharacteristic = {
str: game.i18n.localize("CTHULHUETERNAL.Characteristic.Str"),
dex: game.i18n.localize("CTHULHUETERNAL.Characteristic.Dex"),
con: game.i18n.localize("CTHULHUETERNAL.Characteristic.Con"),
int: game.i18n.localize("CTHULHUETERNAL.Characteristic.Int"),
pow: game.i18n.localize("CTHULHUETERNAL.Characteristic.Pow"),
cha: game.i18n.localize("CTHULHUETERNAL.Characteristic.Cha")
} }
context.tooltipsRessources = { context.tooltipsRessources = {
} }
context.rollType = { context.rollType = {
str: "characteristic",
dex: "characteristic",
con: "characteristic",
int: "characteristic",
pow: "characteristic",
cha: "characteristic"
} }
return context return context
} }
@ -77,14 +93,16 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
const doc = this.document const doc = this.document
switch (partId) { switch (partId) {
case "main": case "main":
context.enrichedBiens = await TextEditor.enrichHTML(doc.system.biens, { async: true })
break break
case "items": case "skills":
context.tab = context.tabs.items context.tab = context.tabs.skills
context.skills = doc.itemTypes.skill
break
case "equipment":
context.tab = context.tabs.equipment
context.weapons = doc.itemTypes.weapon context.weapons = doc.itemTypes.weapon
context.armors = doc.itemTypes.armor context.armors = doc.itemTypes.armor
context.spells = doc.itemTypes.spell context.gears = doc.itemTypes.gear
context.hasSpells = context.spells.length > 0
break break
case "biography": case "biography":
context.tab = context.tabs.biography context.tab = context.tabs.biography
@ -95,34 +113,6 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
return context return context
} }
// #region Drag-and-Drop Workflow
/**
* Callback actions which occur when a dragged element is dropped on a target.
* @param {DragEvent} event The originating DragEvent
* @protected
*/
async _onDrop(event) {
if (!this.isEditable || !this.isEditMode) return
const data = TextEditor.getDragEventData(event)
// Handle different data types
switch (data.type) {
case "Item":
const item = await fromUuid(data.uuid)
if (!["path", "weapon", "armor", "spell"].includes(item.type)) return
if (item.type === "path") return this.#onDropPathItem(item)
if (item.type === "weapon") return super._onDropItem(item)
if (item.type === "armor") return this._onDropItem(item)
if (item.type === "spell") return this._onDropItem(item)
}
}
async #onDropPathItem(item) {
await this.document.addPath(item)
}
/** /**
* Creates a new attack item directly from the sheet and embeds it into the document. * Creates a new attack item directly from the sheet and embeds it into the document.
* @param {Event} event The initiating click event. * @param {Event} event The initiating click event.
@ -169,5 +159,18 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
} }
await this.document.system.roll(rollType, rollTarget) await this.document.system.roll(rollType, rollTarget)
} }
async _onDrop(event) {
if (!this.isEditable || !this.isEditMode) return
const data = TextEditor.getDragEventData(event)
// Handle different data types
switch (data.type) {
case "Item":
const item = await fromUuid(data.uuid)
return super._onDropItem(item)
}
}
// #endregion // #endregion
} }

View File

@ -39,6 +39,7 @@ export const SYSTEM = {
id: SYSTEM_ID, id: SYSTEM_ID,
CHARACTERISTICS: PROTAGONIST.CHARACTERISTICS, CHARACTERISTICS: PROTAGONIST.CHARACTERISTICS,
WEAPON_TYPE: WEAPON.WEAPON_TYPE, WEAPON_TYPE: WEAPON.WEAPON_TYPE,
WEAPON_SUBTYPE: WEAPON.WEAPON_SUBTYPE,
BOND_TYPE: BOND.BOND_TYPE, BOND_TYPE: BOND.BOND_TYPE,
AVAILABLE_SETTINGS, AVAILABLE_SETTINGS,
ASCII ASCII

View File

@ -1,6 +1,17 @@
export const WEAPON_TYPE = { export const WEAPON_TYPE = {
"melee": "CTHULHUETERNAL.Weapon.WeaponType.melee", "melee": "CTHULHUETERNAL.Weapon.WeaponType.melee",
"ranged": "CTHULHUETERNAL.Weapon.WeaponType.ranged" "rangedprimitive": "CTHULHUETERNAL.Weapon.WeaponType.rangedprimitive",
"rangedthrown": "CTHULHUETERNAL.Weapon.WeaponType.rangedthrown",
"rangedfirearm": "CTHULHUETERNAL.Weapon.WeaponType.rangedfirearm",
"unarmed": "CTHULHUETERNAL.Weapon.WeaponType.unarmed"
}
export const WEAPON_SUBTYPE = {
"basicfirearm": "CTHULHUETERNAL.Weapon.WeaponSubtype.basicfirearm",
"pistol": "CTHULHUETERNAL.Weapon.WeaponSubtype.pistol",
"shotgun": "CTHULHUETERNAL.Weapon.WeaponSubtype.shotgun",
"submachinegun": "CTHULHUETERNAL.Weapon.WeaponSubtype.submachinegun",
"riflecarabine": "CTHULHUETERNAL.Weapon.WeaponSubtype.riflecarabine",
} }
export const WEAPON_RANGE_UNIT = { export const WEAPON_RANGE_UNIT = {

View File

@ -1,6 +1,6 @@
import { SYSTEM } from "../config/system.mjs" import { SYSTEM } from "../config/system.mjs"
export default class CthulhuEternalEquipment extends foundry.abstract.TypeDataModel { export default class CthulhuEternalGHear extends foundry.abstract.TypeDataModel {
static defineSchema() { static defineSchema() {
const fields = foundry.data.fields const fields = foundry.data.fields
const schema = {} const schema = {}
@ -14,6 +14,6 @@ export default class CthulhuEternalEquipment extends foundry.abstract.TypeDataMo
} }
/** @override */ /** @override */
static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Equipment"] static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Gear"]
} }

View File

@ -35,6 +35,7 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
schema.hp = new fields.SchemaField({ schema.hp = new fields.SchemaField({
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
stunned: new fields.BooleanField({ required: true, initial: false })
}) })
schema.san = new fields.SchemaField({ schema.san = new fields.SchemaField({

View File

@ -27,39 +27,21 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
computeBase() { computeBase() {
let actor = this.parent?.actor; let actor = this.parent?.actor;
if (Number(this.base)) {
return Number(this.base) + this.bonus;
}
if (!actor) { if (!actor) {
return `${this.base } + ${ String(this.bonus)}`; return `${this.base} + ${ String(this.bonus)}`;
} }
// Split the base value per stat : WIS,DEX,STR,INT,CHA (example) // Split the base value per stat : WIS,DEX,STR,INT,CHA (example)
const base = this.base; let base = this.base.toLowerCase();
let baseSplit = base.split(","); let char = actor.system.characteristics[base];
let baseSplitLength = baseSplit.length; if (!char) {
if ( baseSplitLength > 0) { ui.notifications.error(`The characteristic ${base} is wrong for actor ${actor.name}`);
// Select the max stat value from the parent actor return `${this.base } + ${ String(this.bonus)}`;
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)}`; let charValue = char.value;
return charValue + this.bonus
} }
} }

View File

@ -15,6 +15,8 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
schema.rangeUnit = new fields.StringField({ required: true, initial: "yard", choices: SYSTEM.WEAPON_RANGE_UNIT }) schema.rangeUnit = new fields.StringField({ required: true, initial: "yard", choices: SYSTEM.WEAPON_RANGE_UNIT })
schema.lethality = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.lethality = new fields.NumberField({ required: true, initial: 0, min: 0 })
schema.killRadius = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.killRadius = new fields.NumberField({ required: true, initial: 0, min: 0 })
schema.armorPiercing = new fields.NumberField({ required: true, initial: 0, min: 0 })
schema.weaponSubtype = new fields.StringField({ required: true, initial: "basicfirearm", choices: SYSTEM.WEAPON_SUBTYPE })
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })

View File

@ -1,21 +0,0 @@
#lethalfantasy-application-manager {
display: flex;
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-table {
margin: 1rem;
background: none;
padding: 0;
margin: 0;
text-align: center;
.player {
font-size: calc(var(--font-size-standard) * 1);
}
}
}

View File

@ -1,6 +1,6 @@
@font-face { @font-face {
font-family: "Cat Franken"; font-family: "Georama";
src: url("../fonts/catfranken-deutsch.ttf") format("truetype"); src: url("../assets/fonts/georama.woff2") format("woff2");
} }
@font-face { @font-face {

View File

@ -2,7 +2,7 @@
.fvtt-cthulhu-eternal { .fvtt-cthulhu-eternal {
@import "mixins.less"; @import "mixins.less";
@import "character.less"; @import "protagonist.less";
@import "skill.less"; @import "skill.less";
@import "injury.less"; @import "injury.less";
@import "weapon.less"; @import "weapon.less";
@ -16,4 +16,3 @@
} }
@import "roll.less"; @import "roll.less";
@import "application-manager.less";

View File

@ -1,7 +1,8 @@
:root { :root {
--font-size-standard: 1.0rem; --font-size-standard: 1.0rem;
--background-image-base: url("../assets/parchment.jpg"); --background-image-base: url("../assets/parchment.jpg");
--font-secondary: "Amiri", serif; --font-primary: "Georama";
--font-secondary: "Georama";
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp"); --logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
} }

View File

@ -54,7 +54,7 @@
} }
} }
.character-sheet-common { .protagonist-sheet-common {
label { label {
font-family: var(--font-secondary); font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.2); font-size: calc(var(--font-size-standard) * 1.2);

View File

@ -1,41 +1,41 @@
.character-content { .protagonist-content {
.sheet-common(); .sheet-common();
.character-sheet-common(); .protagonist-sheet-common();
overflow: scroll; overflow: scroll;
} }
.character-main { .protagonist-main {
display: flex; display: flex;
.character-personnage { .protagonist-pc {
display: flex; display: flex;
gap: 10px; gap: 10px;
flex: 1; flex: 1;
.character-gauche { .protagonist-left {
min-width: 180px; min-width: 180px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.character-gauche-image { .protagonist-left-image {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
padding-bottom: 20px; padding-bottom: 20px;
.character-img { .protagonist-img {
height: 140px; height: 140px;
width: auto; width: auto;
border: none; border: none;
} }
} }
.character-dv, .protagonist-dv,
.character-dmax { .protagonist-dmax {
.form-fields { .form-fields {
flex: none; flex: none;
} }
} }
.character-dmax-edit { .protagonist-dmax-edit {
input { input {
display: flex; display: flex;
width: 60px; width: 60px;
@ -48,19 +48,19 @@
} }
} }
.character-droite { .protagonist-right {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 5px; gap: 5px;
.character-name { .protagonist-name {
display: flex; display: flex;
input { input {
width: 400px; width: 400px;
} }
} }
.character-infos { .protagonist-infos {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 10px; gap: 10px;
@ -69,29 +69,11 @@
min-width: 120px; min-width: 120px;
} }
.character-voie-majeure, .protagonist-hp {
.character-voie-mineure {
display: flex;
input {
width: 280px;
}
.controls {
padding-left: 5px;
}
}
.character-commanditaire {
display: flex;
input {
width: 280px;
}
}
.character-pv {
display: flex; display: flex;
gap: 2px; gap: 2px;
align-items: center; align-items: center;
.character-pv-value { .protagonist-hp-value {
.form-fields input { .form-fields input {
flex: none; flex: none;
width: 50px; width: 50px;
@ -99,7 +81,7 @@
font-size: calc(var(--font-size-standard) * 1.4); font-size: calc(var(--font-size-standard) * 1.4);
} }
} }
.character-pv-max { .protagonist-hp-max {
clear: both; clear: both;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -112,7 +94,7 @@
font-size: calc(var(--font-size-standard) * 1.4); font-size: calc(var(--font-size-standard) * 1.4);
} }
} }
.pv-separator { .hp-separator {
font-size: calc(var(--font-size-standard) * 1.2); font-size: calc(var(--font-size-standard) * 1.2);
display: flex; display: flex;
align-items: center; align-items: center;
@ -123,21 +105,21 @@
} }
} }
.character-personnage-play { .protagonist-pc-play {
min-width: 500px; min-width: 500px;
} }
.character-personnage-edit { .protagonist-pc-edit {
min-width: 650px; min-width: 650px;
} }
.character-caracteristiques { .protagonist-characteristics {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 5px; gap: 5px;
flex: 1; flex: 1;
.character-caracteristique { .protagonist-characteristic {
display: flex; display: flex;
align-items: center; align-items: center;
.rollable:hover, .rollable:hover,
@ -182,21 +164,21 @@
} }
} }
.character-caracteristiques-play { .protagonist-characteristic-play {
min-width: 225px; min-width: 225px;
} }
.character-caracteristiques-edit { .protagonist-characteristic-edit {
min-width: 400px; min-width: 400px;
} }
.character-ressources { .protagonist-resources {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 5px; gap: 5px;
flex: 1; flex: 1;
.character-ressource { .protagonist-resource {
display: flex; display: flex;
align-items: center; align-items: center;
.rollable:hover, .rollable:hover,
@ -213,7 +195,7 @@
width: 70px; width: 70px;
} }
} }
.character-ressource-edit { .protagonist-resource-edit {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
@ -239,16 +221,16 @@
} }
} }
.character-ressources-play { .protagonist-resources-play {
min-width: 235px; min-width: 235px;
} }
.character-ressources-edit { .protagonist-resources-edit {
min-width: 400px; min-width: 400px;
} }
} }
.character-biography { .protagonist-biography {
prose-mirror.inactive { prose-mirror.inactive {
min-height: 40px; min-height: 40px;
} }
@ -257,7 +239,7 @@
} }
} }
.tab.character-items { .tab.protagonist-skills {
display: grid; display: grid;
grid-template-columns: 1fr; grid-template-columns: 1fr;
legend { legend {
@ -266,20 +248,32 @@
padding-left: 5px; padding-left: 5px;
} }
} }
.talents { .skills {
display: grid; display: grid;
grid-template-columns: repeat(5, 1fr); grid-template-columns: repeat(3, 1fr);
gap: 10px; gap: 10px;
.talent { .skill {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
.item-img { .item-img {
width: 50px; width: 50px;
height: 50px; height: 50px;
margin: 5px 0 0 0;
} }
} }
} }
}
.tab.protagonist-equipment {
display: grid;
grid-template-columns: 1fr;
legend {
a {
font-size: calc(var(--font-size-standard) * 1.4);
padding-left: 5px;
}
}
.weapons { .weapons {
display: grid; display: grid;
grid-template-columns: repeat(4, 1fr); grid-template-columns: repeat(4, 1fr);
@ -310,19 +304,22 @@
} }
} }
} }
.spells { .gears {
display: grid; display: grid;
grid-template-columns: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr);
gap: 10px; gap: 10px;
.spell { .gear {
display: flex; display: flex;
align-items: center;
gap: 10px; gap: 10px;
.item-img {
width: 50px;
height: 50px;
margin: 5px 0 0 0;
}
} }
} }
.appris {
font-weight: bold;
}
prose-mirror.inactive { prose-mirror.inactive {
min-height: 40px; min-height: 40px;
} }

View File

@ -1,14 +0,0 @@
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
<fieldset>
<legend>{{localize "TENEBRIS.Character.Label.description"}}</legend>
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
</fieldset>
<fieldset>
<legend>{{localize "TENEBRIS.Character.Label.langues"}}</legend>
{{formInput systemFields.langues enriched=enrichedLangues value=system.langues name="system.langues" toggled=true}}
</fieldset>
<fieldset>
<legend>{{localize "TENEBRIS.Character.Label.notes"}}</legend>
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
</fieldset>
</section>

View File

@ -1,103 +0,0 @@
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
<fieldset>
<legend data-tooltip="{{localize "TENEBRIS.Tooltip.learnedTalents"}}" data-tooltip-direction="UP">{{localize "TENEBRIS.Label.talents"}}</legend>
<div class="talents">
{{#if @root.isEditMode}}
{{#each talents as |item|}}
{{!log "path-talent" this}}
<div class="talent {{#if item.appris}}appris{{/if}}" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.description}}}<br><br>{{item.path}}" data-tooltip-direction="UP">{{item.name}}
{{#if item.progression}}<span data-tooltip="{{localize 'TENEBRIS.Label.progressionPossible'}}"> (P)</span>{{/if}}
{{#if (and item.progression (gt item.niveau 1))}}{{localize 'TENEBRIS.Label.level'}} {{item.niveau}}{{/if}}
</div>
<div class="controls">
<a data-tooltip="{{localize 'TENEBRIS.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'TENEBRIS.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
{{else}}
{{#each talentsAppris as |item|}}
{{!log "path-talent appris" this}}
<div class="talent" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-tooltip="{{{item.description}}}<br><br>{{item.path}}">
{{#if (ne item.img "icons/svg/item-bag.svg")}}
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
{{/if}}
{{item.name}} {{item.details}}
</div>
{{/each}}
{{/if}}
</div>
</fieldset>
<fieldset>
<legend>{{localize "TENEBRIS.Label.equipement"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "TENEBRIS.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}</legend>
<div class="weapons">
{{#each weapons as |item|}}
{{!log 'weapon' this}}
<div class="weapon" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true" data-drag-type="damage">
{{#if (ne item.img "icons/svg/item-bag.svg")}}
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
{{/if}}
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<a {{#if (ne item.system.degats "1")}}class="rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage" data-roll-value="{{item.system.degats}}"{{/if}}>{{localize "TENEBRIS.Label.degats"}} : {{item.system.degats}}</a>
{{#if @root.isEditMode}}
<div class="controls">
<a data-tooltip="{{localize 'TENEBRIS.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'TENEBRIS.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</div>
{{/each}}
</div>
<div class="armors">
{{#each armors as |item|}}
{{!log 'armor' this}}
<div class="armor" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
{{localize "TENEBRIS.Label.armor"}} : {{item.system.valeur}} {{localize "TENEBRIS.Label.malus"}} : {{item.system.malus}}
{{#if @root.isEditMode}}
<div class="controls">
<a data-tooltip="{{localize 'TENEBRIS.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'TENEBRIS.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</div>
{{/each}}
</div>
</fieldset>
<fieldset>
<legend>{{localize "TENEBRIS.Label.biens"}}</legend>
{{formInput systemFields.biens enriched=enrichedBiens value=system.biens name="system.biens" toggled=true }}
</fieldset>
{{#if (or isEditMode (and isPlayMode hasSpells))}}
<fieldset>
<legend>{{localize "TENEBRIS.Label.spells"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "TENEBRIS.Tooltip.addSpell"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createSpell"></i></a>{{/if}}</legend>
<div class="spells">
{{#each spells as |item|}}
{{!log 'weapon' this}}
<div class="spell" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true" data-drag-type="spell">
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
{{#if @root.isEditMode}}
<div class="controls">
<a data-tooltip="{{localize 'TENEBRIS.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'TENEBRIS.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</div>
{{/each}}
</div>
</fieldset>
{{/if}}
</section>

View File

@ -1,187 +0,0 @@
<section class="character-main character-main-{{ifThen isPlayMode 'play' 'edit'}}">
{{!log "character-main" this}}
<fieldset>
<legend>{{localize "TENEBRIS.Character.Label.personnage"}}</legend>
<div class="character-personnage character-personnage-{{ifThen isPlayMode 'play' 'edit'}}">
<div class="character-gauche">
<div class="character-gauche-image">
<img class="character-img" src="{{actor.img}}" data-edit="img" data-action="editImage" data-tooltip="{{actor.name}}" />
</div>
<div class="character-dv">
{{formField systemFields.dv value=system.dv rootId=partId disabled=isPlayMode classes="character-dv"}}
</div>
<div class="character-dmax" data-tooltip="{{tooltipsCaracteristiques.dmax}}">
{{formField systemFields.dmax.fields.valeur value=system.dmax.valeur rootId=partId disabled=isPlayMode classes="character-dmax"}}
{{#if isEditMode}}
<div class="character-dmax-edit">
<div data-tooltip="{{localize "TENEBRIS.Label.experienceDetail" detail='Dégâts max'}}">{{formInput systemFields.dmax.fields.experience value=system.dmax.experience}}</div>
</div>
{{/if}}
</div>
</div>
<div class="character-droite">
<div class="character-name">
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
<a class="control" data-action="toggleSheet" data-tooltip="TENEBRIS.ToggleSheet" data-tooltip-direction="UP">
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
</a>
</div>
<div class="character-infos">
{{#if isEditMode}}
<div class="character-voie-majeure">
{{formField systemFields.voies.fields.majeure.fields.nom value=system.voies.majeure.nom rootId=partId disabled=true}}
{{#if system.hasVoieMajeure}}
<div class="controls">
<a class="control" data-action="edit" data-item-id="{{actor.system.voies.majeure.id}}" data-tooltip="{{localize 'TENEBRIS.Edit'}}"><i class="fas fa-edit"></i></a>
{{#if (not system.hasVoieMineure)}}
<a class="control" data-action="deleteVoieMajeure" data-tooltip="{{localize 'TENEBRIS.Delete'}}"><i class="fas fa-trash"></i></a>
{{/if}}
</div>
{{/if}}
</div>
<div class="character-voie-mineure">
{{formField systemFields.voies.fields.mineure.fields.nom value=system.voies.mineure.nom rootId=partId disabled=true}}
{{#if system.hasVoieMineure}}
<div class="controls">
<a class="control" data-action="edit" data-item-id="{{actor.system.voies.majeure.id}}" data-tooltip="{{localize 'TENEBRIS.Edit'}}"><i class="fas fa-edit"></i></a>
<a class="control" data-action="deleteVoieMineure" data-tooltip="{{localize 'TENEBRIS.Delete'}}"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</div>
{{else}}
<div class="character-voie-majeure">
{{formField systemFields.voies.fields.majeure.fields.nom value=system.voies.majeure.nom rootId=partId disabled=true}}
</div>
{{#if system.hasVoieMineure}}
<div class="character-voie-mineure">
{{formField systemFields.voies.fields.mineure.fields.nom value=system.voies.mineure.nom rootId=partId disabled=true}}
</div>
{{/if}}
{{/if}}
<div class="character-commanditaire">
{{formField systemFields.commanditaire value=system.commanditaire rootId=partId disabled=isPlayMode classes="character-commanditaire"}}
</div>
<div class="character-pv">
<div class="character-pv-value">
{{formField systemFields.pv.fields.value value=system.pv.value}}
</div>
<div class="pv-separator">/</div>
<div class="character-pv-max">
{{formInput systemFields.pv.fields.max value=system.pv.max rootId=partId disabled=isPlayMode}}
</div>
</div>
</div>
</div>
</div>
</fieldset>
<fieldset class="character-caracteristiques character-caracteristiques-{{ifThen isPlayMode 'play' 'edit'}}">
<legend>{{localize "TENEBRIS.Character.Label.caracteristiques"}}</legend>
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.rob}}" style="font-size: small;"></i>
{{formField systemFields.caracteristiques.fields.rob.fields.valeur value=system.caracteristiques.rob.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveRob}}
{{#if isEditMode}}
<div class="experience">
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.rob.fields.progression.fields.experience value=system.caracteristiques.rob.progression.experience}}</div>
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.rob.fields.progression.fields.progres value=system.caracteristiques.rob.progression.progres}}</div>
</div>
{{/if}}
</div>
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.dex}}" style="font-size: small;"></i>
{{formField systemFields.caracteristiques.fields.dex.fields.valeur value=system.caracteristiques.dex.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveDex}}
{{#if isEditMode}}
<div class="experience">
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.dex.fields.progression.fields.experience value=system.caracteristiques.dex.progression.experience}}</div>
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.dex.fields.progression.fields.progres value=system.caracteristiques.dex.progression.progres}}</div>
</div>
{{/if}}
</div>
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.int}}" style="font-size: small;"></i>
{{formField systemFields.caracteristiques.fields.int.fields.valeur value=system.caracteristiques.int.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveInt}}
{{#if isEditMode}}
<div class="experience">
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.int.fields.progression.fields.experience value=system.caracteristiques.int.progression.experience}}</div>
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.int.fields.progression.fields.progres value=system.caracteristiques.int.progression.progres}}</div>
</div>
{{/if}}
</div>
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.per}}" style="font-size: small;"></i>
{{formField systemFields.caracteristiques.fields.per.fields.valeur value=system.caracteristiques.per.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.savePer}}
{{#if isEditMode}}
<div class="experience">
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.per.fields.progression.fields.experience value=system.caracteristiques.per.progression.experience}}</div>
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.per.fields.progression.fields.progres value=system.caracteristiques.per.progression.progres}}</div>
</div>
{{/if}}
</div>
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.vol}}" style="font-size: small;"></i>
{{formField systemFields.caracteristiques.fields.vol.fields.valeur value=system.caracteristiques.vol.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveVol}}
{{#if isEditMode}}
<div class="experience">
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.vol.fields.progression.fields.experience value=system.caracteristiques.vol.progression.experience}}</div>
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.vol.fields.progression.fields.progres value=system.caracteristiques.vol.progression.progres}}</div>
</div>
{{/if}}
</div>
</fieldset>
<fieldset class="character-ressources character-ressources-{{ifThen isPlayMode 'play' 'edit'}}">
<legend>{{localize "TENEBRIS.Character.Label.ressources"}}</legend>
<div class="character-ressource" data-drag="true" data-drag-type="resource">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.san}}" style="font-size: small;"></i>
{{formField systemFields.ressources.fields.san.fields.valeur value=system.ressources.san.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceSan}}
{{#if isEditMode}}
<div class="character-ressource-edit">
{{formInput systemFields.ressources.fields.san.fields.max value=system.ressources.san.max}}
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.san.fields.experience value=system.ressources.san.experience}}</div>
</div>
{{/if}}
</div>
<div class="character-ressource" data-drag="true" data-drag-type="resource">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.oeil}}" style="font-size: small;"></i>
{{formField systemFields.ressources.fields.oeil.fields.valeur value=system.ressources.oeil.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceOeil}}
{{#if isEditMode}}
<div class="character-ressource-edit">
{{formInput systemFields.ressources.fields.oeil.fields.max value=system.ressources.oeil.max}}
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.oeil.fields.experience value=system.ressources.oeil.experience}}</div>
</div>
{{/if}}
</div>
<div class="character-ressource" data-drag="true" data-drag-type="resource">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.verbe}}" style="font-size: small;"></i>
{{formField systemFields.ressources.fields.verbe.fields.valeur value=system.ressources.verbe.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceVerbe}}
{{#if isEditMode}}
<div class="character-ressource-edit">
{{formInput systemFields.ressources.fields.verbe.fields.max value=system.ressources.verbe.max}}
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.verbe.fields.experience value=system.ressources.verbe.experience}}</div>
</div>
{{/if}}
</div>
<div class="character-ressource" data-drag="true" data-drag-type="resource">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.bourse}}" style="font-size: small;"></i>
{{formField systemFields.ressources.fields.bourse.fields.valeur value=system.ressources.bourse.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceBourse}}
{{#if isEditMode}}
<div class="character-ressource-edit">
{{formInput systemFields.ressources.fields.bourse.fields.max value=system.ressources.bourse.max}}
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.bourse.fields.experience value=system.ressources.bourse.experience}}</div>
</div>
{{/if}}
</div>
<div class="character-ressource" data-drag="true" data-drag-type="resource">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.magie}}" style="font-size: small;"></i>
{{formField systemFields.ressources.fields.magie.fields.valeur value=system.ressources.magie.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceMagie}}
{{#if isEditMode}}
<div class="character-ressource-edit">
{{formInput systemFields.ressources.fields.magie.fields.max value=system.ressources.magie.max}}
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.magie.fields.experience value=system.ressources.magie.experience}}</div>
</div>
{{/if}}
</div>
</fieldset>
</section>

View File

@ -3,7 +3,6 @@
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" /> <img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
{{formInput fields.name value=source.name}} {{formInput fields.name value=source.name}}
</div> </div>
{{formField systemFields.cost value=system.cost}}
<fieldset> <fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend> <legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>

View File

@ -0,0 +1,10 @@
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Character.Label.description"}}</legend>
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Character.Label.notes"}}</legend>
{{formInput systemFields.notes enriched=notes value=system.notes name="system.notes" toggled=true}}
</fieldset>
</section>

View File

@ -0,0 +1,60 @@
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.weapon"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}</legend>
<div class="weapons">
{{#each weapons as |item|}}
{{!log 'weapon' this}}
<div class="weapon" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true" data-drag-type="damage">
{{#if (ne item.img "icons/svg/item-bag.svg")}}
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
{{/if}}
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<a class="rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage" data-roll-value="{{item.system.degats}}">{{localize "CTHULHUETERNAL.Label.damage"}} : {{item.system.damage}}</a>
{{#if @root.isEditMode}}
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</div>
{{/each}}
</div>
<div class="armors">
{{#each armors as |item|}}
{{!log 'armor' this}}
<div class="armor" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
{{localize "CTHULHUETERNAL.Label.armor"}} : {{item.system.protection}}
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
</div>
<div class="gears">
{{#each gears as |item|}}
{{!log 'armor' this}}
<div class="gear" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
{{localize "CTHULHUETERNAL.Label.gear"}} : {{item.system.protection}}
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
</div>
</fieldset>
</section>

View File

@ -0,0 +1,79 @@
<section class="protagonist-main protagonist-main-{{ifThen isPlayMode 'play' 'edit'}}">
{{!log "protagonist-main" this}}
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.protagonist"}}</legend>
<div class="protagonist-pc protagonist-pc-{{ifThen isPlayMode 'play' 'edit'}}">
<div class="protagonist-left">
<div class="protagonist-left-image">
<img class="protagonist-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
data-tooltip="{{actor.name}}" />
</div>
</div>
<div class="protagonist-right">
<div class="protagonist-name">
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
<a class="control" data-action="toggleSheet" data-tooltip="CTHULHUETERNAL.ToggleSheet"
data-tooltip-direction="UP">
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
</a>
</div>
<div class="protagonist-infos">
<div class="protagonist-hp">
<div class="protagonist-hp-value">
{{formField systemFields.hp.fields.value value=system.hp.value}}
</div>
<div class="hp-separator">/</div>
<div class="protagonist-hp-max">
{{formInput systemFields.hp.fields.max value=system.hp.max rootId=partId disabled=isPlayMode}}
</div>
</div>
</div>
</div>
</div>
</fieldset>
<fieldset class="protagonist-characteristics protagonist-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
<legend>{{localize "CTHULHUETERNAL.Label.characteristics"}}</legend>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCharacteristic.str}}"
style="font-size: small;"></i>
{{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value
rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.str}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCharacteristic.dex}}"
style="font-size: small;"></i>
{{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value
rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.dex}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCharacteristic.dex}}"
style="font-size: small;"></i>
{{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value
rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.con}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCharacteristic.int}}"
style="font-size: small;"></i>
{{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value
rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.int}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCharacteristic.pow}}"
style="font-size: small;"></i>
{{formField systemFields.characteristics.fields.pow.fields.value value=system.characteristics.pow.value
rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.pow}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="save">
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCharacteristic.cha}}"
style="font-size: small;"></i>
{{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value
rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.cha}}
</div>
</fieldset>
<fieldset class="protagonist-resources protagonist-resources-{{ifThen isPlayMode 'play' 'edit'}}">
</fieldset>
</section>

View File

@ -0,0 +1,22 @@
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
{{log this}}
<fieldset>
<legend data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.skills"}}" data-tooltip-direction="UP">{{localize "CTHULHUETERNAL.Label.skills"}}</legend>
<div class="skills">
{{#each skills as |item|}}
<div class="skill " data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.description}}}<br><br>{{item.path}}" data-tooltip-direction="UP">{{item.name}}
<span data-tooltip="{{localize 'CTHULHUETERNAL.Label.progressionPossible'}}">{{item.system.skillTotal}}</span>
</div>
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
</div>
</fieldset>
</section>

View File

@ -6,6 +6,9 @@
{{formField systemFields.settings value=system.settings localize=true}} {{formField systemFields.settings value=system.settings localize=true}}
{{formField systemFields.weaponType value=system.weaponType localize=true}} {{formField systemFields.weaponType value=system.weaponType localize=true}}
{{#if (eq system.weaponType "rangedfirearm")}}
{{formField systemFields.weaponSubtype value=system.weaponSubtype localize=true}}
{{/if}}
{{formField systemFields.damage value=system.damage}} {{formField systemFields.damage value=system.damage}}
{{formField systemFields.baseRange value=system.baseRange}} {{formField systemFields.baseRange value=system.baseRange}}
@ -13,6 +16,8 @@
{{formField systemFields.lethality value=system.lethality}} {{formField systemFields.lethality value=system.lethality}}
{{formField systemFields.killRadius value=system.killRadius}} {{formField systemFields.killRadius value=system.killRadius}}
{{formField systemFields.armorPiercing value=system.armorPiercing}}
{{formField systemFields.resourceLevel value=system.resourceLevel}} {{formField systemFields.resourceLevel value=system.resourceLevel}}
<fieldset> <fieldset>