forked from public/fvtt-cthulhu-eternal
Fix history
This commit is contained in:
parent
2ac69e2108
commit
2c29acd56c
BIN
assets/ui/jazzage_background_main.webp
Normal file
BIN
assets/ui/jazzage_background_main.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 379 KiB |
@ -1,6 +1,7 @@
|
|||||||
:root {
|
:root {
|
||||||
--font-size-standard: 0.9rem;
|
--font-size-standard: 0.9rem;
|
||||||
--background-image-base: url("../assets/parchment.jpg");
|
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/jazzage_background_main.webp");
|
||||||
|
/*--background-image-base: url("../assets/ui/jazzage_background_main.webp");*/
|
||||||
--font-primary: "Georama";
|
--font-primary: "Georama";
|
||||||
--font-secondary: "Georama";
|
--font-secondary: "Georama";
|
||||||
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
|
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
|
||||||
@ -22,7 +23,7 @@
|
|||||||
top: -45px;
|
top: -45px;
|
||||||
left: calc(50% - 96px);
|
left: calc(50% - 96px);
|
||||||
}
|
}
|
||||||
i.lethalfantasy {
|
i.fvtt-cthulhu-eternal {
|
||||||
width: 36px;
|
width: 36px;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
background-image: var(--logo-standard);
|
background-image: var(--logo-standard);
|
||||||
@ -34,21 +35,17 @@ i.lethalfantasy {
|
|||||||
filter: grayscale(1);
|
filter: grayscale(1);
|
||||||
transition: 0.3s;
|
transition: 0.3s;
|
||||||
}
|
}
|
||||||
.application.dialog.lethalfantasy {
|
.application.dialog.fvtt-cthulhu-eternal {
|
||||||
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);
|
||||||
background-image: var(--background-image-base);
|
background-image: var(--background-image-base);
|
||||||
}
|
}
|
||||||
.application.dialog.lethalfantasy button:hover {
|
.application.dialog.fvtt-cthulhu-eternal button:hover {
|
||||||
background: var(--color-dark-6);
|
background: var(--color-dark-6);
|
||||||
}
|
}
|
||||||
.application.dialog.lethalfantasy .legend {
|
.application.dialog.fvtt-cthulhu-eternal .legend {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
}
|
}
|
||||||
#tooltip.tooltip-avantages {
|
|
||||||
max-width: 550px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
.chat-message,
|
.chat-message,
|
||||||
.chat-message.whisper {
|
.chat-message.whisper {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
@ -132,12 +129,16 @@ i.lethalfantasy {
|
|||||||
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 .sheet-tabs {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main {
|
.fvtt-cthulhu-eternal .protagonist-main {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left {
|
||||||
@ -149,7 +150,7 @@ i.lethalfantasy {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 8px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-left-image .protagonist-img {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-left-image .protagonist-img {
|
||||||
height: 140px;
|
height: 140px;
|
||||||
@ -183,7 +184,7 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-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: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos label {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos label {
|
||||||
min-width: 120px;
|
min-width: 120px;
|
||||||
@ -196,7 +197,7 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-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: 4px;
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-max {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-max {
|
||||||
@ -225,6 +226,7 @@ i.lethalfantasy {
|
|||||||
min-width: 650px;
|
min-width: 650px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
@ -247,89 +249,14 @@ i.lethalfantasy {
|
|||||||
flex: none;
|
flex: none;
|
||||||
width: 70px;
|
width: 70px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input {
|
|
||||||
display: flex;
|
|
||||||
width: 70px;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0 5px 0 5px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="number"] {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="checkbox"] {
|
|
||||||
width: 20px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="checkbox"]:checked {
|
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="checkbox"]:checked::after {
|
|
||||||
color: rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-play {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-play {
|
||||||
min-width: 225px;
|
min-width: 225px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-edit {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-edit {
|
||||||
min-width: 400px;
|
min-width: 400px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources {
|
.fvtt-cthulhu-eternal .protagonist-biography {
|
||||||
display: flex;
|
background-color: var(--color-light-1);
|
||||||
flex-direction: column;
|
|
||||||
gap: 5px;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .rollable:hover,
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .form-group {
|
|
||||||
flex: 1;
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .form-group .form-fields {
|
|
||||||
flex: none;
|
|
||||||
width: 70px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit input {
|
|
||||||
display: flex;
|
|
||||||
width: 70px;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0 5px 0 5px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit input[type="number"] {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit select {
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.5);
|
|
||||||
text-align: center;
|
|
||||||
width: 75px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources-play {
|
|
||||||
min-width: 235px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources-edit {
|
|
||||||
min-width: 400px;
|
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography prose-mirror.inactive {
|
.fvtt-cthulhu-eternal .protagonist-biography prose-mirror.inactive {
|
||||||
min-height: 40px;
|
min-height: 40px;
|
||||||
@ -338,6 +265,7 @@ i.lethalfantasy {
|
|||||||
min-height: 150px;
|
min-height: 150px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-skills {
|
.fvtt-cthulhu-eternal .tab.protagonist-skills {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
@ -348,19 +276,35 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills {
|
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill {
|
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
|
min-width: 10rem;
|
||||||
|
max-width: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .rollable:hover,
|
||||||
|
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .controls {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .name {
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img {
|
||||||
width: 50px;
|
width: 32px;
|
||||||
height: 50px;
|
height: 32px;
|
||||||
margin: 5px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
@ -371,12 +315,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons {
|
.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: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .item-img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
@ -386,12 +330,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .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: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .item-img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
@ -401,12 +345,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears {
|
.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: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
@ -486,7 +430,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .skill-content .shift-right {
|
.fvtt-cthulhu-eternal .skill-content .shift-right {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .skill-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .skill-content .header {
|
.fvtt-cthulhu-eternal .skill-content .header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .skill-content .header img {
|
.fvtt-cthulhu-eternal .skill-content .header img {
|
||||||
@ -571,7 +520,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .injury-content .shift-right {
|
.fvtt-cthulhu-eternal .injury-content .shift-right {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .injury-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .injury-content .header {
|
.fvtt-cthulhu-eternal .injury-content .header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .injury-content .header img {
|
.fvtt-cthulhu-eternal .injury-content .header img {
|
||||||
@ -657,12 +611,17 @@ i.lethalfantasy {
|
|||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .weapon-content .header {
|
.fvtt-cthulhu-eternal .weapon-content .header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .weapon-content .header img {
|
.fvtt-cthulhu-eternal .weapon-content .header img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .weapon-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .weapon-content label {
|
.fvtt-cthulhu-eternal .weapon-content label {
|
||||||
flex: 10%;
|
flex: 10%;
|
||||||
}
|
}
|
||||||
@ -733,7 +692,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .armor-content .shift-right {
|
.fvtt-cthulhu-eternal .armor-content .shift-right {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .armor-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .armor-content .header {
|
.fvtt-cthulhu-eternal .armor-content .header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .armor-content .header img {
|
.fvtt-cthulhu-eternal .armor-content .header img {
|
||||||
@ -810,7 +774,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .motivation-content .shift-right {
|
.fvtt-cthulhu-eternal .motivation-content .shift-right {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .motivation-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .motivation-content .header {
|
.fvtt-cthulhu-eternal .motivation-content .header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .motivation-content .header img {
|
.fvtt-cthulhu-eternal .motivation-content .header img {
|
||||||
@ -887,7 +856,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .mentaldisorder-content .shift-right {
|
.fvtt-cthulhu-eternal .mentaldisorder-content .shift-right {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .mentaldisorder-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .mentaldisorder-content .header {
|
.fvtt-cthulhu-eternal .mentaldisorder-content .header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .mentaldisorder-content .header img {
|
.fvtt-cthulhu-eternal .mentaldisorder-content .header img {
|
||||||
@ -964,7 +938,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .bond-content .shift-right {
|
.fvtt-cthulhu-eternal .bond-content .shift-right {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .bond-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .bond-content .header {
|
.fvtt-cthulhu-eternal .bond-content .header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .bond-content .header img {
|
.fvtt-cthulhu-eternal .bond-content .header img {
|
||||||
@ -982,43 +961,13 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .bond-content input[type="checkbox"]:checked::after {
|
.fvtt-cthulhu-eternal .bond-content input[type="checkbox"]:checked::after {
|
||||||
color: rgba(0, 0, 0, 0.1);
|
color: rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal.fortune img {
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal.fortune .intro-chat {
|
|
||||||
border-radius: 20px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal.fortune .intro-chat .intro-img {
|
|
||||||
padding: 5px;
|
|
||||||
width: 80px;
|
|
||||||
align-self: center;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal.fortune .intro-chat .intro-right {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal.fortune .intro-chat .intro-right .introText {
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.2);
|
|
||||||
width: 210px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal.fortune .button.control,
|
|
||||||
.fvtt-cthulhu-eternal.fortune .fortune-accepted {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.3);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal.ask-roll {
|
.fvtt-cthulhu-eternal.ask-roll {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
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.1);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .gear-content {
|
.fvtt-cthulhu-eternal .gear-content {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
@ -1087,7 +1036,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .gear-content .shift-right {
|
.fvtt-cthulhu-eternal .gear-content .shift-right {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .gear-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .gear-content .header {
|
.fvtt-cthulhu-eternal .gear-content .header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .gear-content .header img {
|
.fvtt-cthulhu-eternal .gear-content .header img {
|
||||||
@ -1166,11 +1120,16 @@ i.lethalfantasy {
|
|||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .arcane-content .header {
|
.fvtt-cthulhu-eternal .arcane-content .header {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .arcane-content .header img {
|
.fvtt-cthulhu-eternal .arcane-content .header img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .arcane-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .arcane-content label {
|
.fvtt-cthulhu-eternal .arcane-content label {
|
||||||
flex: 10%;
|
flex: 10%;
|
||||||
}
|
}
|
||||||
@ -1241,7 +1200,12 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .archetype-content .shift-right {
|
.fvtt-cthulhu-eternal .archetype-content .shift-right {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-cthulhu-eternal .archetype-content fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
.fvtt-cthulhu-eternal .archetype-content .header {
|
.fvtt-cthulhu-eternal .archetype-content .header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .archetype-content .header img {
|
.fvtt-cthulhu-eternal .archetype-content .header img {
|
||||||
@ -1251,54 +1215,38 @@ i.lethalfantasy {
|
|||||||
.fvtt-cthulhu-eternal .archetype-content label {
|
.fvtt-cthulhu-eternal .archetype-content label {
|
||||||
flex: 10%;
|
flex: 10%;
|
||||||
}
|
}
|
||||||
.application.dialog.lethalfantasy {
|
.application.dialog.fvtt-cthulhu-eternal {
|
||||||
color: var(--color-dark-1);
|
color: var(--color-dark-1);
|
||||||
|
background-color: var(--color-light-1);
|
||||||
}
|
}
|
||||||
.application.dialog.lethalfantasy input,
|
.application.dialog.fvtt-cthulhu-eternal button {
|
||||||
.application.dialog.lethalfantasy select {
|
background-image: none;
|
||||||
|
background-color: var(--color-dark-6);
|
||||||
|
color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
.application.dialog.fvtt-cthulhu-eternal input,
|
||||||
|
.application.dialog.fvtt-cthulhu-eternal 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);
|
||||||
}
|
}
|
||||||
.lethalfantasy-roll-dialog fieldset {
|
.fvtt-cthulhu-eternal-roll-dialog fieldset {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
}
|
}
|
||||||
input[name="selectAvantages"] {
|
.dialog-modifier {
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
.dialog-aide-gene {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.dialog-aide-gene select {
|
.dialog-modifier select {
|
||||||
border: none;
|
border: none;
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
width: 60px;
|
width: 60px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.dialog-modificateur {
|
.dialog-damage {
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.dialog-modificateur select {
|
|
||||||
border: none;
|
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
|
||||||
color: var(--color-dark-2);
|
|
||||||
width: 60px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.dialog-avantages #selectAvantages {
|
|
||||||
background-color: inherit;
|
|
||||||
text-align: center;
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.2);
|
|
||||||
}
|
|
||||||
.dialog-damage,
|
|
||||||
.dialog-resource,
|
|
||||||
.dialog-save {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -1323,6 +1271,7 @@ input[name="selectAvantages"] {
|
|||||||
border: 0px;
|
border: 0px;
|
||||||
}
|
}
|
||||||
.dice-roll .intro-chat {
|
.dice-roll .intro-chat {
|
||||||
|
color: var(--color-dark-1);
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
13
lang/en.json
13
lang/en.json
@ -28,7 +28,8 @@
|
|||||||
"WW1": "World War 1",
|
"WW1": "World War 1",
|
||||||
"WW2": "World War 2",
|
"WW2": "World War 2",
|
||||||
"ColdWar": "Cold War",
|
"ColdWar": "Cold War",
|
||||||
"Victorian": "Victorian"
|
"Victorian": "Victorian",
|
||||||
|
"AgeOfSail": "Age of Sail"
|
||||||
},
|
},
|
||||||
"Protagonist": {
|
"Protagonist": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
@ -212,6 +213,9 @@
|
|||||||
"community": "Community"
|
"community": "Community"
|
||||||
},
|
},
|
||||||
"Label": {
|
"Label": {
|
||||||
|
"skill": "Skill",
|
||||||
|
"modifier": "Modifier",
|
||||||
|
"rollView": "Roll View",
|
||||||
"protagonist": "Protagonist",
|
"protagonist": "Protagonist",
|
||||||
"characteristics": "Characteristics",
|
"characteristics": "Characteristics",
|
||||||
"description": "Description",
|
"description": "Description",
|
||||||
@ -245,6 +249,7 @@
|
|||||||
"helplessness": "Helplessness",
|
"helplessness": "Helplessness",
|
||||||
"breakingPoint": "Breaking Point",
|
"breakingPoint": "Breaking Point",
|
||||||
"willpower": "Willpower",
|
"willpower": "Willpower",
|
||||||
|
"totalScore": "Total Score",
|
||||||
"exhausted": "Exhausted"
|
"exhausted": "Exhausted"
|
||||||
},
|
},
|
||||||
"Edit": "Edit",
|
"Edit": "Edit",
|
||||||
@ -254,10 +259,8 @@
|
|||||||
"Dialog": {
|
"Dialog": {
|
||||||
},
|
},
|
||||||
"Roll": {
|
"Roll": {
|
||||||
"resource": "Jet de ressource <br> {resource}",
|
"skill": "Skill",
|
||||||
"damage": "Jet de dégâts <br> {item}",
|
"roll": "Roll"
|
||||||
"attack": "Jet d'attaque <br> {item}",
|
|
||||||
"roll": "Lancer"
|
|
||||||
},
|
},
|
||||||
"Tooltip": {
|
"Tooltip": {
|
||||||
"sanBP": ">5 SAN lost in one roll, temporary insanity. If SAN less reaches BP = a Disorder unconscious Breaking and AND reset BP."
|
"sanBP": ">5 SAN lost in one roll, temporary insanity. If SAN less reaches BP = a Disorder unconscious Breaking and AND reset BP."
|
||||||
|
@ -5,8 +5,8 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
classes: ["protagonist"],
|
classes: ["protagonist"],
|
||||||
position: {
|
position: {
|
||||||
width: 1150,
|
width: 820,
|
||||||
height: 780,
|
height: 620,
|
||||||
},
|
},
|
||||||
window: {
|
window: {
|
||||||
contentClasses: ["protagonist-content"],
|
contentClasses: ["protagonist-content"],
|
||||||
@ -144,20 +144,15 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
* corresponding value from the document's system and performs the roll.
|
* corresponding value from the document's system and performs the roll.
|
||||||
*/
|
*/
|
||||||
async _onRoll(event, target) {
|
async _onRoll(event, target) {
|
||||||
if (this.isEditMode) return
|
const rollType = $(event.currentTarget).data("roll-type")
|
||||||
// Jet de sauvegarde
|
let item
|
||||||
let elt = event.currentTarget.querySelector("input")
|
// Debug : console.log(">>>>", event, target, rollType)
|
||||||
// Jet de ressource
|
// Deprecated : if (this.isEditMode) return
|
||||||
if (!elt) elt = event.currentTarget.querySelector("select")
|
if (rollType === "skill") {
|
||||||
// Jet de dégâts
|
const li = $(event.currentTarget).parents(".item");
|
||||||
if (!elt) elt = event.currentTarget
|
item = this.actor.items.get(li.data("item-id"));
|
||||||
const rollType = elt.dataset.rollType
|
|
||||||
let rollTarget
|
|
||||||
switch (rollType) {
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
await this.document.system.roll(rollType, rollTarget)
|
await this.document.system.roll(rollType, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
async _onDrop(event) {
|
async _onDrop(event) {
|
||||||
|
@ -16,6 +16,7 @@ export const AVAILABLE_SETTINGS = {
|
|||||||
victorian: "CTHULHUETERNAL.Settings.Victorian",
|
victorian: "CTHULHUETERNAL.Settings.Victorian",
|
||||||
revolution: "CTHULHUETERNAL.Settings.Revolution",
|
revolution: "CTHULHUETERNAL.Settings.Revolution",
|
||||||
medieval: "CTHULHUETERNAL.Settings.Medieval",
|
medieval: "CTHULHUETERNAL.Settings.Medieval",
|
||||||
|
ageofsail: "CTHULHUETERNAL.Settings.AgeOfSail",
|
||||||
classical: "CTHULHUETERNAL.Settings.Classical"
|
classical: "CTHULHUETERNAL.Settings.Classical"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,10 +22,6 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
return this.options.value
|
return this.options.value
|
||||||
}
|
}
|
||||||
|
|
||||||
get treshold() {
|
|
||||||
return this.options.treshold
|
|
||||||
}
|
|
||||||
|
|
||||||
get actorId() {
|
get actorId() {
|
||||||
return this.options.actorId
|
return this.options.actorId
|
||||||
}
|
}
|
||||||
@ -46,20 +42,16 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
return this.options.introTextTooltip
|
return this.options.introTextTooltip
|
||||||
}
|
}
|
||||||
|
|
||||||
get aide() {
|
get help() {
|
||||||
return this.options.aide
|
return this.options.help
|
||||||
}
|
}
|
||||||
|
|
||||||
get gene() {
|
get gene() {
|
||||||
return this.options.gene
|
return this.options.gene
|
||||||
}
|
}
|
||||||
|
|
||||||
get modificateur() {
|
get modifier() {
|
||||||
return this.options.modificateur
|
return this.options.modifier
|
||||||
}
|
|
||||||
|
|
||||||
get avantages() {
|
|
||||||
return this.options.avantages
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get resultType() {
|
get resultType() {
|
||||||
@ -90,10 +82,6 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
return this.options.realDamage
|
return this.options.realDamage
|
||||||
}
|
}
|
||||||
|
|
||||||
get rollAdvantage() {
|
|
||||||
return this.options.rollAdvantage
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates introductory text based on the roll type.
|
* Generates introductory text based on the roll type.
|
||||||
*
|
*
|
||||||
@ -103,23 +91,11 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
let text
|
let text
|
||||||
|
|
||||||
switch (this.type) {
|
switch (this.type) {
|
||||||
case ROLL_TYPE.SAVE:
|
case "skill":
|
||||||
const saveLabel = game.i18n.localize(`CTHULHUETERNAL.Character.FIELDS.caracteristiques.${this.target}.valeur.label`)
|
const skillLabel = game.i18n.localize(`CTHULHUETERNAL.Character.FIELDS.caracteristiques.${this.target}.valeur.label`)
|
||||||
text = game.i18n.format("CTHULHUETERNAL.Roll.save", { save: saveLabel })
|
text = game.i18n.format("CTHULHUETERNAL.Roll.skill", { skill: "skill" })
|
||||||
text = text.concat("<br>").concat(`Seuil : ${this.treshold}`)
|
text = text.concat("<br>").concat(`Seuil : ${this.treshold}`)
|
||||||
break
|
break
|
||||||
case ROLL_TYPE.RESOURCE:
|
|
||||||
const resourceLabel = game.i18n.localize(`CTHULHUETERNAL.Character.FIELDS.ressources.${this.target}.valeur.label`)
|
|
||||||
text = game.i18n.format("CTHULHUETERNAL.Roll.resource", { resource: resourceLabel })
|
|
||||||
break
|
|
||||||
case ROLL_TYPE.DAMAGE:
|
|
||||||
const damageLabel = this.target
|
|
||||||
text = game.i18n.format("CTHULHUETERNAL.Roll.damage", { item: damageLabel })
|
|
||||||
break
|
|
||||||
case ROLL_TYPE.ATTACK:
|
|
||||||
const attackLabel = this.target
|
|
||||||
text = game.i18n.format("CTHULHUETERNAL.Roll.attack", { item: attackLabel })
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
return text
|
return text
|
||||||
}
|
}
|
||||||
@ -130,9 +106,9 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
* @returns {string} A formatted string containing the value, help, hindrance, and modifier.
|
* @returns {string} A formatted string containing the value, help, hindrance, and modifier.
|
||||||
*/
|
*/
|
||||||
_createIntroTextTooltip() {
|
_createIntroTextTooltip() {
|
||||||
let tooltip = game.i18n.format("CTHULHUETERNAL.Tooltip.saveIntroTextTooltip", { value: this.value, aide: this.aide, gene: this.gene, modificateur: this.modificateur })
|
let tooltip = game.i18n.format("CTHULHUETERNAL.Tooltip.saveIntroTextTooltip", { value: this.value, help: this.help, gene: this.gene, modifier: this.modifier })
|
||||||
if (this.hasTarget) {
|
if (this.hasTarget) {
|
||||||
tooltip = tooltip.concat(`<br>Cible : ${this.targetName}`)
|
tooltip = tooltip.concat(`<br>Target : ${this.targetName}`)
|
||||||
}
|
}
|
||||||
return tooltip
|
return tooltip
|
||||||
}
|
}
|
||||||
@ -141,29 +117,29 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
* Prompt the user with a dialog to configure and execute a roll.
|
* Prompt the user with a dialog to configure and execute a roll.
|
||||||
*
|
*
|
||||||
* @param {Object} options Configuration options for the roll.
|
* @param {Object} options Configuration options for the roll.
|
||||||
* @param {string} options.rollType The type of roll being performed (e.g., RESOURCE, DAMAGE, ATTACK, SAVE).
|
* @param {string} options.rollType The type of roll being performed.
|
||||||
* @param {string} options.rollValue The initial value or formula for the roll.
|
|
||||||
* @param {string} options.rollTarget The target of the roll.
|
* @param {string} options.rollTarget The target of the roll.
|
||||||
* @param {"="|"+"|"++"|"-"|"--"} options.rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=).
|
|
||||||
* @param {string} options.actorId The ID of the actor performing the roll.
|
* @param {string} options.actorId The ID of the actor performing the roll.
|
||||||
* @param {string} options.actorName The name of the actor performing the roll.
|
* @param {string} options.actorName The name of the actor performing the roll.
|
||||||
* @param {string} options.actorImage The image of the actor performing the roll.
|
* @param {string} options.actorImage The image of the actor performing the roll.
|
||||||
* @param {boolean} options.hasTarget Whether the roll has a target.
|
* @param {boolean} options.hasTarget Whether the roll has a target.
|
||||||
* @param {Object} options.target The target of the roll, if any.
|
|
||||||
* @param {Object} options.data Additional data for the roll.
|
* @param {Object} options.data Additional data for the roll.
|
||||||
*
|
*
|
||||||
* @returns {Promise<Object|null>} The roll result or null if the dialog was cancelled.
|
* @returns {Promise<Object|null>} The roll result or null if the dialog was cancelled.
|
||||||
*/
|
*/
|
||||||
static async prompt(options = {}) {
|
static async prompt(options = {}) {
|
||||||
let formula = options.rollValue
|
let formula = "1d100"
|
||||||
|
switch (options.rollType) {
|
||||||
// Formula for a resource roll
|
case "skill":
|
||||||
if (options.rollType === ROLL_TYPE.RESOURCE) {
|
console.log(options.rollItem)
|
||||||
let ressource = game.i18n.localize(`CTHULHUETERNAL.Character.FIELDS.ressources.${options.rollTarget}.valeur.label`)
|
options.targetScore = options.rollItem.system.computeScore()
|
||||||
if (formula === "0" || formula === "") {
|
break
|
||||||
ui.notifications.warn(game.i18n.format("CTHULHUETERNAL.Warning.plusDeRessource", { ressource: ressource }))
|
case "characteristic":
|
||||||
return null
|
options.targetScore = options.rollItem.value * 5
|
||||||
}
|
break
|
||||||
|
default:
|
||||||
|
options.targetScore = 50
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)]))
|
const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)]))
|
||||||
@ -173,94 +149,33 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
default: "public",
|
default: "public",
|
||||||
})
|
})
|
||||||
|
|
||||||
const choiceAide = foundry.utils.mergeObject({ 0: "0" }, options.rollValue <= 10 ? { 1: "1" } : { 1: "1", 2: "2" })
|
const choiceModifier = {
|
||||||
const choiceGene = {
|
|
||||||
0: "0",
|
|
||||||
"-1": "-1",
|
|
||||||
"-2": "-2",
|
|
||||||
"-3": "-3",
|
|
||||||
"-4": "-4",
|
|
||||||
"-5": "-5",
|
|
||||||
"-6": "-6",
|
|
||||||
"-7": "-7",
|
|
||||||
"-8": "-8",
|
|
||||||
"-9": "-9",
|
|
||||||
"-10": "-10",
|
"-10": "-10",
|
||||||
}
|
"-20": "-20",
|
||||||
const choiceAvantage = { normal: "Normal", avantage: "Avantage", desavantage: "Désavantage", doubleAvantage: "Double avantage", doubleDesavantage: "Double désavantage" }
|
"-40": "-40",
|
||||||
const choiceModificateur = {
|
|
||||||
0: "0",
|
0: "0",
|
||||||
"-1": "-1",
|
"+10": "+10",
|
||||||
"-2": "-2",
|
"+20": "+20",
|
||||||
"-3": "-3",
|
"+40": "+40",
|
||||||
"-4": "-4",
|
|
||||||
"-5": "-5",
|
|
||||||
"-6": "-6",
|
|
||||||
"-7": "-7",
|
|
||||||
"-8": "-8",
|
|
||||||
"-9": "-9",
|
|
||||||
"-10": "-10",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let damageDice
|
let modifier = "0"
|
||||||
let damageDiceMax
|
|
||||||
let damageDiceFinal
|
|
||||||
let damageDiceLowered
|
|
||||||
|
|
||||||
// Damage roll : check the roll is not above the maximum damage
|
|
||||||
if (options.rollType === ROLL_TYPE.DAMAGE) {
|
|
||||||
damageDice = options.rollValue
|
|
||||||
damageDiceMax = game.actors.get(options.actorId).system.dmax.valeur
|
|
||||||
damageDiceFinal = CthulhuEternalUtils.maxDamage(damageDice, damageDiceMax)
|
|
||||||
damageDiceLowered = damageDiceFinal !== damageDice
|
|
||||||
// Récupération du nom de l'objet si c'est un jet depuis la fiche de l'acteur
|
|
||||||
// Si c'est via une macro le nom est connu
|
|
||||||
options.rollTarget = game.actors.get(options.actorId).items.get(options.rollTarget).name
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.rollType === ROLL_TYPE.ATTACK) {
|
|
||||||
damageDice = options.rollValue
|
|
||||||
}
|
|
||||||
|
|
||||||
let malus = "0"
|
|
||||||
let targetMalus = "0"
|
let targetMalus = "0"
|
||||||
let targetName
|
let targetName
|
||||||
let targetArmor
|
let targetArmor
|
||||||
const displayOpponentMalus = game.settings.get("tenebris", "displayOpponentMalus")
|
|
||||||
|
|
||||||
if (options.rollType === ROLL_TYPE.SAVE && options.hasTarget && options.target.document.actor.type === "opponent") {
|
|
||||||
targetName = options.target.document.actor.name
|
|
||||||
if (displayOpponentMalus) malus = options.target.document.actor.system.malus.toString()
|
|
||||||
else targetMalus = options.target.document.actor.system.malus.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.rollType === ROLL_TYPE.DAMAGE && options.hasTarget && options.target.document.actor.type === "opponent") {
|
|
||||||
targetName = options.target.document.actor.name
|
|
||||||
targetArmor = options.target.document.actor.system.armure.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
let dialogContext = {
|
let dialogContext = {
|
||||||
isSave: options.rollType === ROLL_TYPE.SAVE,
|
rollType: options.rollType,
|
||||||
isResource: options.rollType === ROLL_TYPE.RESOURCE,
|
rollItem: foundry.utils.duplicate(options.rollItem), // Object only, no class
|
||||||
isDamage: options.rollType === ROLL_TYPE.DAMAGE,
|
targetScore: options.targetScore,
|
||||||
isAttack: options.rollType === ROLL_TYPE.ATTACK,
|
|
||||||
rollModes,
|
rollModes,
|
||||||
fieldRollMode,
|
fieldRollMode,
|
||||||
choiceAide,
|
choiceModifier,
|
||||||
choiceGene,
|
|
||||||
choiceAvantage,
|
|
||||||
choiceModificateur,
|
|
||||||
damageDice,
|
|
||||||
damageDiceMax,
|
|
||||||
damageDiceFinal,
|
|
||||||
damageDiceLowered,
|
|
||||||
formula,
|
formula,
|
||||||
hasTarget: options.hasTarget,
|
hasTarget: options.hasTarget,
|
||||||
malus,
|
modifier,
|
||||||
targetName,
|
targetName,
|
||||||
targetArmor,
|
targetArmor
|
||||||
rollAdvantage: this._convertAvantages(options.rollAdvantage),
|
|
||||||
rangeAdvantage: this._convertRollAdvantageToRange(options.rollAdvantage),
|
|
||||||
}
|
}
|
||||||
const content = await renderTemplate("systems/fvtt-cthulhu-eternal/templates/roll-dialog.hbs", dialogContext)
|
const content = await renderTemplate("systems/fvtt-cthulhu-eternal/templates/roll-dialog.hbs", dialogContext)
|
||||||
|
|
||||||
@ -278,89 +193,21 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
if (input.name) obj[input.name] = input.value
|
if (input.name) obj[input.name] = input.value
|
||||||
return obj
|
return obj
|
||||||
}, {})
|
}, {})
|
||||||
// Avantages
|
|
||||||
switch (output.avantages) {
|
|
||||||
case "1":
|
|
||||||
output.avantages = "doubleDesavantage"
|
|
||||||
break
|
|
||||||
case "2":
|
|
||||||
output.avantages = "desavantage"
|
|
||||||
break
|
|
||||||
case "3":
|
|
||||||
output.avantages = "normal"
|
|
||||||
break
|
|
||||||
case "4":
|
|
||||||
output.avantages = "avantage"
|
|
||||||
break
|
|
||||||
case "5":
|
|
||||||
output.avantages = "doubleAvantage"
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return output
|
return output
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
rejectClose: false, // Click on Close button will not launch an error
|
rejectClose: false, // Click on Close button will not launch an error
|
||||||
render: (event, dialog) => {
|
render: (event, dialog) => {
|
||||||
const rangeInput = dialog.querySelector('input[name="avantages"]')
|
|
||||||
if (rangeInput) {
|
|
||||||
rangeInput.addEventListener("change", (event) => {
|
|
||||||
event.preventDefault()
|
|
||||||
event.stopPropagation()
|
|
||||||
const readOnly = dialog.querySelector('input[name="selectAvantages"]')
|
|
||||||
readOnly.value = this._convertAvantages(event.target.value)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
// If the user cancels the dialog, exit
|
// If the user cancels the dialog, exit
|
||||||
if (rollContext === null) return
|
if (rollContext === null) return
|
||||||
|
|
||||||
let treshold
|
|
||||||
|
|
||||||
if (options.rollType === ROLL_TYPE.SAVE) {
|
|
||||||
const aide = rollContext.aide === "" ? 0 : parseInt(rollContext.aide, 10)
|
|
||||||
const gene = rollContext.gene === "" ? 0 : parseInt(rollContext.gene, 10)
|
|
||||||
const modificateur = rollContext.modificateur === "" ? 0 : parseInt(rollContext.modificateur, 10)
|
|
||||||
|
|
||||||
if (options.rollType === ROLL_TYPE.SAVE) {
|
|
||||||
let dice = "1d20"
|
|
||||||
switch (rollContext.avantages) {
|
|
||||||
case "avantage":
|
|
||||||
dice = "2d20kl"
|
|
||||||
break
|
|
||||||
case "desavantage":
|
|
||||||
dice = "2d20kh"
|
|
||||||
break
|
|
||||||
case "doubleAvantage":
|
|
||||||
dice = "3d20kl"
|
|
||||||
break
|
|
||||||
case "doubleDesavantage":
|
|
||||||
dice = "3d20kh"
|
|
||||||
break
|
|
||||||
}
|
|
||||||
formula = `${dice}`
|
|
||||||
}
|
|
||||||
|
|
||||||
treshold = options.rollValue + aide + gene + modificateur
|
|
||||||
}
|
|
||||||
|
|
||||||
// Formula for a damage roll
|
|
||||||
if (options.rollType === ROLL_TYPE.DAMAGE) {
|
|
||||||
formula = damageDiceFinal
|
|
||||||
}
|
|
||||||
|
|
||||||
// Formula for an attack roll
|
|
||||||
if (options.rollType === ROLL_TYPE.ATTACK) {
|
|
||||||
formula = damageDice
|
|
||||||
}
|
|
||||||
|
|
||||||
const rollData = {
|
const rollData = {
|
||||||
type: options.rollType,
|
rollType: options.rollType,
|
||||||
target: options.rollTarget,
|
rollItem: options.rollItem,
|
||||||
value: options.rollValue,
|
|
||||||
treshold: treshold,
|
|
||||||
actorId: options.actorId,
|
actorId: options.actorId,
|
||||||
actorName: options.actorName,
|
actorName: options.actorName,
|
||||||
actorImage: options.actorImage,
|
actorImage: options.actorImage,
|
||||||
@ -372,48 +219,30 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
...rollContext,
|
...rollContext,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update target score
|
||||||
|
rollData.targetScore = options.targetScore + Number(rollData.modifier)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A hook event that fires before the roll is made.
|
* A hook event that fires before the roll is made.
|
||||||
* @function tenebris.preRoll
|
|
||||||
* @memberof hookEvents
|
|
||||||
* @param {Object} options Options for the roll.
|
|
||||||
* @param {Object} rollData All data related to the roll.
|
|
||||||
* @returns {boolean} Explicitly return `false` to prevent roll to be made.
|
|
||||||
*/
|
*/
|
||||||
if (Hooks.call("tenebris.preRoll", options, rollData) === false) return
|
if (Hooks.call("fvtt-cthulhu-eternal.preRoll", options, rollData) === false) return
|
||||||
|
|
||||||
const roll = new this(formula, options.data, rollData)
|
const roll = new this(formula, options.data, rollData)
|
||||||
|
|
||||||
await roll.evaluate()
|
await roll.evaluate()
|
||||||
|
|
||||||
let resultType
|
let resultType = "failure"
|
||||||
if (options.rollType === ROLL_TYPE.SAVE) {
|
if (roll.total <= rollData.targetScore) {
|
||||||
resultType = roll.total <= treshold ? "success" : "failure"
|
resultType = "success"
|
||||||
} else if (options.rollType === ROLL_TYPE.RESOURCE) {
|
|
||||||
resultType = roll.total === 1 || roll.total === 2 ? "failure" : "success"
|
|
||||||
}
|
|
||||||
|
|
||||||
let realDamage
|
|
||||||
if (options.rollType === ROLL_TYPE.DAMAGE) {
|
|
||||||
realDamage = Math.max(0, roll.total - parseInt(targetArmor, 10))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
roll.options.resultType = resultType
|
roll.options.resultType = resultType
|
||||||
roll.options.treshold = treshold
|
|
||||||
roll.options.introText = roll._createIntroText()
|
roll.options.introText = roll._createIntroText()
|
||||||
roll.options.introTextTooltip = roll._createIntroTextTooltip()
|
roll.options.introTextTooltip = roll._createIntroTextTooltip()
|
||||||
roll.options.realDamage = realDamage
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A hook event that fires after the roll has been made.
|
* A hook event that fires after the roll has been made.
|
||||||
* @function tenebris.Roll
|
|
||||||
* @memberof hookEvents
|
|
||||||
* @param {Object} options Options for the roll.
|
|
||||||
* @param {Object} rollData All data related to the roll.
|
|
||||||
@param {CthulhuEternalRoll} roll The resulting roll.
|
|
||||||
* @returns {boolean} Explicitly return `false` to prevent roll to be made.
|
|
||||||
*/
|
*/
|
||||||
if (Hooks.call("tenebris.Roll", options, rollData, roll) === false) return
|
if (Hooks.call("fvtt-cthulhu-eternal.Roll", options, rollData, roll) === false) return
|
||||||
|
|
||||||
return roll
|
return roll
|
||||||
}
|
}
|
||||||
@ -427,14 +256,8 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
*/
|
*/
|
||||||
static createTitle(type, target) {
|
static createTitle(type, target) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case ROLL_TYPE.SAVE:
|
case "skill":
|
||||||
return `${game.i18n.localize("CTHULHUETERNAL.Dialog.titleSave")} : ${game.i18n.localize(`CTHULHUETERNAL.Manager.${target}`)}`
|
return `${game.i18n.localize("CTHULHUETERNAL.Dialog.titleSkill")}`
|
||||||
case ROLL_TYPE.RESOURCE:
|
|
||||||
return `${game.i18n.localize("CTHULHUETERNAL.Dialog.titleResource")} : ${game.i18n.localize(`CTHULHUETERNAL.Manager.${target}`)}`
|
|
||||||
case ROLL_TYPE.DAMAGE:
|
|
||||||
return `${game.i18n.localize("CTHULHUETERNAL.Dialog.titleDamage")} : ${target}`
|
|
||||||
case ROLL_TYPE.ATTACK:
|
|
||||||
return `${game.i18n.localize("CTHULHUETERNAL.Dialog.titleAttack")} : ${target}`
|
|
||||||
default:
|
default:
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Dialog.titleStandard")
|
return game.i18n.localize("CTHULHUETERNAL.Dialog.titleStandard")
|
||||||
}
|
}
|
||||||
@ -457,11 +280,7 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
* @property {boolean} isGM - Indicates if the user is a Game Master.
|
* @property {boolean} isGM - Indicates if the user is a Game Master.
|
||||||
* @property {string} formula - The formula used for the roll.
|
* @property {string} formula - The formula used for the roll.
|
||||||
* @property {number} total - The total result of the roll.
|
* @property {number} total - The total result of the roll.
|
||||||
* @property {boolean} isSave - Indicates if the roll is a saving throw.
|
|
||||||
* @property {boolean} isResource - Indicates if the roll is related to a resource.
|
|
||||||
* @property {boolean} isDamage - Indicates if the roll is for damage.
|
|
||||||
* @property {boolean} isFailure - Indicates if the roll is a failure.
|
* @property {boolean} isFailure - Indicates if the roll is a failure.
|
||||||
* @property {Array} avantages - Advantages associated with the roll.
|
|
||||||
* @property {string} actorId - The ID of the actor performing the roll.
|
* @property {string} actorId - The ID of the actor performing the roll.
|
||||||
* @property {string} actingCharName - The name of the character performing the roll.
|
* @property {string} actingCharName - The name of the character performing the roll.
|
||||||
* @property {string} actingCharImg - The image of the character performing the roll.
|
* @property {string} actingCharImg - The image of the character performing the roll.
|
||||||
@ -482,13 +301,12 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
data: this.data,
|
data: this.data,
|
||||||
diceTotal: this.dice.reduce((t, d) => t + d.total, 0),
|
diceTotal: this.dice.reduce((t, d) => t + d.total, 0),
|
||||||
isGM: game.user.isGM,
|
isGM: game.user.isGM,
|
||||||
|
rollItem: this.options.rollItem,
|
||||||
|
targetScore: this.options.targetScore,
|
||||||
|
rollType: this.options.rollType,
|
||||||
formula: this.formula,
|
formula: this.formula,
|
||||||
total: this.total,
|
total: this.total,
|
||||||
isSave: this.isSave,
|
|
||||||
isResource: this.isResource,
|
|
||||||
isDamage: this.isDamage,
|
|
||||||
isFailure: this.isFailure,
|
isFailure: this.isFailure,
|
||||||
avantages: this.avantages,
|
|
||||||
actorId: this.actorId,
|
actorId: this.actorId,
|
||||||
actingCharName: this.actorName,
|
actingCharName: this.actorName,
|
||||||
actingCharImg: this.actorImage,
|
actingCharImg: this.actorImage,
|
||||||
@ -501,6 +319,7 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
realDamage: this.realDamage,
|
realDamage: this.realDamage,
|
||||||
isPrivate: isPrivate,
|
isPrivate: isPrivate,
|
||||||
}
|
}
|
||||||
|
console.log(cardData)
|
||||||
cardData.cssClass = cardData.css.join(" ")
|
cardData.cssClass = cardData.css.join(" ")
|
||||||
cardData.tooltip = isPrivate ? "" : await this.getTooltip()
|
cardData.tooltip = isPrivate ? "" : await this.getTooltip()
|
||||||
return cardData
|
return cardData
|
||||||
@ -518,11 +337,7 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
async toMessage(messageData = {}, { rollMode, create = true } = {}) {
|
async toMessage(messageData = {}, { rollMode, create = true } = {}) {
|
||||||
super.toMessage(
|
super.toMessage(
|
||||||
{
|
{
|
||||||
isSave: this.isSave,
|
|
||||||
isResource: this.isResource,
|
|
||||||
isDamage: this.isDamage,
|
|
||||||
isFailure: this.resultType === "failure",
|
isFailure: this.resultType === "failure",
|
||||||
avantages: this.avantages,
|
|
||||||
introText: this.introText,
|
introText: this.introText,
|
||||||
introTextTooltip: this.introTextTooltip,
|
introTextTooltip: this.introTextTooltip,
|
||||||
actingCharName: this.actorName,
|
actingCharName: this.actorName,
|
||||||
@ -538,45 +353,4 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used in the avantages select and with the rollAdvantage parameter: convert the selected value to the corresponding string
|
|
||||||
static _convertAvantages(value) {
|
|
||||||
switch (value) {
|
|
||||||
case "1":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.doubleDesavantage")
|
|
||||||
case "2":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.desavantage")
|
|
||||||
case "3":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.normal")
|
|
||||||
case "4":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.avantage")
|
|
||||||
case "5":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.doubleAvantage")
|
|
||||||
case "--":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.doubleDesavantage")
|
|
||||||
case "-":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.desavantage")
|
|
||||||
case "=":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.normal")
|
|
||||||
case "+":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.avantage")
|
|
||||||
case "++":
|
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Roll.doubleAvantage")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Used in the rollAdvantage parameter: convert the selected value to the corresponding range value
|
|
||||||
static _convertRollAdvantageToRange(value) {
|
|
||||||
switch (value) {
|
|
||||||
case "--":
|
|
||||||
return 1
|
|
||||||
case "-":
|
|
||||||
return 2
|
|
||||||
case "=":
|
|
||||||
return 3
|
|
||||||
case "+":
|
|
||||||
return 4
|
|
||||||
case "++":
|
|
||||||
return 5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -92,27 +92,18 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
|||||||
await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage)
|
await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Main roll function
|
||||||
* Rolls a dice for a character.
|
|
||||||
* @param {("save"|"resource|damage")} rollType The type of the roll.
|
|
||||||
* @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item.
|
|
||||||
* @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll.
|
|
||||||
* @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus.
|
|
||||||
* @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=).
|
|
||||||
* @returns {Promise<null>} - A promise that resolves to null if the roll is cancelled.
|
|
||||||
*/
|
*/
|
||||||
async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") {
|
async _roll(rollType, rollItem, opponentTarget = undefined) {
|
||||||
const hasTarget = opponentTarget !== undefined
|
const hasTarget = opponentTarget !== undefined
|
||||||
let roll = await CthulhuEternalRoll.prompt({
|
let roll = await CthulhuEternalRoll.prompt({
|
||||||
rollType,
|
rollType,
|
||||||
rollTarget,
|
rollItem,
|
||||||
rollValue,
|
|
||||||
actorId: this.parent.id,
|
actorId: this.parent.id,
|
||||||
actorName: this.parent.name,
|
actorName: this.parent.name,
|
||||||
actorImage: this.parent.img,
|
actorImage: this.parent.img,
|
||||||
hasTarget,
|
hasTarget,
|
||||||
target: opponentTarget,
|
target: opponentTarget
|
||||||
rollAdvantage,
|
|
||||||
})
|
})
|
||||||
if (!roll) return null
|
if (!roll) return null
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { SYSTEM } from "../config/system.mjs"
|
import { SYSTEM } from "../config/system.mjs"
|
||||||
export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
export default class CthulhuEternalSkill extends foundry.abstract.TypeDataModel {
|
||||||
static defineSchema() {
|
static defineSchema() {
|
||||||
const fields = foundry.data.fields
|
const fields = foundry.data.fields
|
||||||
const schema = {}
|
const schema = {}
|
||||||
@ -22,10 +22,10 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
|||||||
|
|
||||||
prepareDerivedData() {
|
prepareDerivedData() {
|
||||||
super.prepareDerivedData();
|
super.prepareDerivedData();
|
||||||
this.skillTotal = this.computeBase();
|
this.skillTotal = this.computeScore();
|
||||||
}
|
}
|
||||||
|
|
||||||
computeBase() {
|
computeScore() {
|
||||||
let actor = this.parent?.actor;
|
let actor = this.parent?.actor;
|
||||||
if (Number(this.base)) {
|
if (Number(this.base)) {
|
||||||
return Number(this.base) + this.bonus;
|
return Number(this.base) + this.bonus;
|
||||||
|
@ -2,14 +2,21 @@
|
|||||||
.sheet-common();
|
.sheet-common();
|
||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
flex: 10%;
|
flex: 10%;
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,13 @@
|
|||||||
.sheet-common();
|
.sheet-common();
|
||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
@ -2,7 +2,13 @@
|
|||||||
.sheet-common();
|
.sheet-common();
|
||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
@ -2,7 +2,13 @@
|
|||||||
.sheet-common();
|
.sheet-common();
|
||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
@ -1,40 +1,8 @@
|
|||||||
&.fortune {
|
|
||||||
img {
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
.intro-chat {
|
|
||||||
border-radius: 20px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
.intro-img {
|
|
||||||
padding: 5px;
|
|
||||||
width: 80px;
|
|
||||||
align-self: center;
|
|
||||||
}
|
|
||||||
.intro-right {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
.introText {
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.2);
|
|
||||||
width: 210px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.button.control, .fortune-accepted {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.ask-roll {
|
&.ask-roll {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
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.1);
|
||||||
}
|
}
|
@ -2,7 +2,13 @@
|
|||||||
.sheet-common();
|
.sheet-common();
|
||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
:root {
|
:root {
|
||||||
--font-size-standard: 0.9rem;
|
--font-size-standard: 0.9rem;
|
||||||
--background-image-base: url("../assets/parchment.jpg");
|
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)),
|
||||||
|
url("../assets/ui/jazzage_background_main.webp");
|
||||||
|
/*--background-image-base: url("../assets/ui/jazzage_background_main.webp");*/
|
||||||
--font-primary: "Georama";
|
--font-primary: "Georama";
|
||||||
--font-secondary: "Georama";
|
--font-secondary: "Georama";
|
||||||
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
|
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
|
||||||
@ -26,7 +28,7 @@
|
|||||||
left: calc(50% - 96px);
|
left: calc(50% - 96px);
|
||||||
}
|
}
|
||||||
|
|
||||||
i.lethalfantasy {
|
i.fvtt-cthulhu-eternal {
|
||||||
width: 36px;
|
width: 36px;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
background-image: var(--logo-standard);
|
background-image: var(--logo-standard);
|
||||||
@ -39,7 +41,7 @@ i.lethalfantasy {
|
|||||||
transition: 0.3s;
|
transition: 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.application.dialog.lethalfantasy {
|
.application.dialog.fvtt-cthulhu-eternal {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1.0);
|
||||||
background-image: var(--background-image-base);
|
background-image: var(--background-image-base);
|
||||||
@ -51,11 +53,6 @@ i.lethalfantasy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#tooltip.tooltip-avantages {
|
|
||||||
max-width: 550px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.chat-message,
|
.chat-message,
|
||||||
.chat-message.whisper {
|
.chat-message.whisper {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
|
@ -2,7 +2,13 @@
|
|||||||
.sheet-common();
|
.sheet-common();
|
||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
@ -2,7 +2,13 @@
|
|||||||
.sheet-common();
|
.sheet-common();
|
||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
@ -2,7 +2,13 @@
|
|||||||
.sheet-common();
|
.sheet-common();
|
||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
@ -4,12 +4,18 @@
|
|||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sheet-tabs {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
.protagonist-main {
|
.protagonist-main {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
|
|
||||||
.protagonist-pc {
|
.protagonist-pc {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
||||||
.protagonist-left {
|
.protagonist-left {
|
||||||
@ -21,7 +27,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 8px;
|
||||||
.protagonist-img {
|
.protagonist-img {
|
||||||
height: 140px;
|
height: 140px;
|
||||||
width: auto;
|
width: auto;
|
||||||
@ -63,7 +69,7 @@
|
|||||||
.protagonist-infos {
|
.protagonist-infos {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
|
|
||||||
label {
|
label {
|
||||||
min-width: 120px;
|
min-width: 120px;
|
||||||
@ -77,7 +83,7 @@
|
|||||||
.form-fields input {
|
.form-fields input {
|
||||||
flex: none;
|
flex: none;
|
||||||
width: 50px;
|
width: 50px;
|
||||||
margin-left: 10px;
|
margin-left: 4px;
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -114,6 +120,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.protagonist-characteristics {
|
.protagonist-characteristics {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
@ -135,32 +142,6 @@
|
|||||||
width: 70px;
|
width: 70px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.experience {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
margin-left: 10px;
|
|
||||||
input {
|
|
||||||
display: flex;
|
|
||||||
width: 70px;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0 5px 0 5px;
|
|
||||||
}
|
|
||||||
input[type="number"] {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
input[type="checkbox"] {
|
|
||||||
width: 20px;
|
|
||||||
}
|
|
||||||
input[type="checkbox"]:checked {
|
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
input[type="checkbox"]:checked::after {
|
|
||||||
color: rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,65 +153,10 @@
|
|||||||
min-width: 400px;
|
min-width: 400px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.protagonist-resources {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 5px;
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
.protagonist-resource {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor:
|
|
||||||
pointer;
|
|
||||||
}
|
|
||||||
.form-group {
|
|
||||||
flex: 1;
|
|
||||||
padding-left: 5px;
|
|
||||||
.form-fields {
|
|
||||||
flex: none;
|
|
||||||
width: 70px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.protagonist-resource-edit {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
margin-left: 10px;
|
|
||||||
input {
|
|
||||||
display: flex;
|
|
||||||
width: 70px;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0 5px 0 5px;
|
|
||||||
}
|
|
||||||
input[type="number"] {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.5);
|
|
||||||
text-align: center;
|
|
||||||
width: 75px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.protagonist-resources-play {
|
|
||||||
min-width: 235px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.protagonist-resources-edit {
|
|
||||||
min-width: 400px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.protagonist-biography {
|
.protagonist-biography {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
prose-mirror.inactive {
|
prose-mirror.inactive {
|
||||||
min-height: 40px;
|
min-height: 40px;
|
||||||
}
|
}
|
||||||
@ -240,6 +166,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tab.protagonist-skills {
|
.tab.protagonist-skills {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
legend {
|
legend {
|
||||||
@ -251,21 +178,37 @@
|
|||||||
.skills {
|
.skills {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
.skill {
|
.skill {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
|
min-width: 10rem;
|
||||||
|
max-width: 10rem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 50px;
|
width: 32px;
|
||||||
height: 50px;
|
height: 32px;
|
||||||
margin: 5px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.protagonist-equipment {
|
.tab.protagonist-equipment {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
legend {
|
legend {
|
||||||
@ -277,11 +220,11 @@
|
|||||||
.weapons {
|
.weapons {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(4, 1fr);
|
grid-template-columns: repeat(4, 1fr);
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
.weapon {
|
.weapon {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
@ -292,11 +235,11 @@
|
|||||||
.armors {
|
.armors {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
.armor {
|
.armor {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
@ -307,11 +250,11 @@
|
|||||||
.gears {
|
.gears {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
.gear {
|
.gear {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 4px;
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
.application.dialog.lethalfantasy {
|
.application.dialog.fvtt-cthulhu-eternal {
|
||||||
color: var(--color-dark-1);
|
color: var(--color-dark-1);
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
|
||||||
|
button {
|
||||||
|
background-image: none;
|
||||||
|
background-color: var(--color-dark-6);
|
||||||
|
color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
input,
|
input,
|
||||||
select {
|
select {
|
||||||
@ -9,17 +16,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.lethalfantasy-roll-dialog {
|
.fvtt-cthulhu-eternal-roll-dialog {
|
||||||
fieldset {
|
fieldset {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input[name="selectAvantages"] {
|
.dialog-modifier {
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog-aide-gene {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -32,31 +36,8 @@ input[name="selectAvantages"] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-modificateur {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
select {
|
|
||||||
border: none;
|
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
|
||||||
color: var(--color-dark-2);
|
|
||||||
width: 60px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog-avantages {
|
.dialog-damage {
|
||||||
#selectAvantages {
|
|
||||||
background-color: inherit;
|
|
||||||
text-align: center;
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog-damage,
|
|
||||||
.dialog-resource,
|
|
||||||
.dialog-save {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -82,6 +63,7 @@ input[name="selectAvantages"] {
|
|||||||
border: 0px;
|
border: 0px;
|
||||||
}
|
}
|
||||||
.intro-chat {
|
.intro-chat {
|
||||||
|
color:var(--color-dark-1);
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
@ -2,7 +2,13 @@
|
|||||||
.sheet-common();
|
.sheet-common();
|
||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
@ -10,6 +11,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
flex: 10%;
|
flex: 10%;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,9 @@
|
|||||||
{{formInput fields.name value=source.name}}
|
{{formInput fields.name value=source.name}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
{{formField systemFields.settings value=system.settings localize=true}}
|
{{formField systemFields.settings value=system.settings localize=true}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||||
|
@ -4,9 +4,12 @@
|
|||||||
{{formInput fields.name value=source.name}}
|
{{formInput fields.name value=source.name}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
{{formField systemFields.settings value=system.settings localize=true}}
|
{{formField systemFields.settings value=system.settings localize=true}}
|
||||||
{{formField systemFields.protection value=system.protection}}
|
{{formField systemFields.protection value=system.protection}}
|
||||||
{{formField systemFields.resourceLevel value=system.resourceLevel}}
|
{{formField systemFields.resourceLevel value=system.resourceLevel}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||||
|
@ -4,12 +4,15 @@
|
|||||||
{{formInput fields.name value=source.name}}
|
{{formInput fields.name value=source.name}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
{{formField systemFields.bondType value=system.bondType localize=true}}
|
{{formField systemFields.bondType value=system.bondType localize=true}}
|
||||||
{{formField systemFields.value value=system.value}}
|
{{formField systemFields.value value=system.value}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description"
|
||||||
|
toggled=true}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</section>
|
</section>
|
@ -1,43 +1,18 @@
|
|||||||
{{!log 'chat-message' this}}
|
{{!log 'chat-message' this}}
|
||||||
<div class="{{cssClass}}">
|
<div class="{{cssClass}}">
|
||||||
<div class="intro-chat">
|
<div class="intro-chat">
|
||||||
{{#if (ne actingCharImg "icons/svg/mystery-man.svg")}}
|
|
||||||
<div class="intro-img">
|
<div class="intro-img">
|
||||||
<img src="{{actingCharImg}}" data-tooltip="{{actingCharName}}" />
|
<img src="{{actingCharImg}}" data-tooltip="{{actingCharName}}" />
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
|
||||||
<div></div>
|
|
||||||
{{/if}}
|
|
||||||
<div class="intro-right">
|
<div class="intro-right">
|
||||||
<p class="introText" {{#if isSave}}data-tooltip="{{introTextTooltip}}"{{/if}}>{{{introText}}}
|
<p class="introText" {{#if isSave}}data-tooltip="{{introTextTooltip}}"{{/if}}>{{{introText}}}
|
||||||
{{#if isSave}}
|
{{#if (eq rollType "skill")}}
|
||||||
<br>
|
<span>{{rollItem.name}} : {{targetScore}}</span>
|
||||||
{{#if (eq avantages "avantage")}} {{localize "TENEBRIS.Roll.avantage"}}{{/if}}
|
<span>Modifier : {{modifier}}</span>
|
||||||
{{#if (eq avantages "desavantage")}} {{localize "TENEBRIS.Roll.desavantage"}}{{/if}}
|
|
||||||
{{#if (eq avantages "doubleAvantage")}} {{localize "TENEBRIS.Roll.doubleAvantage"}}{{/if}}
|
|
||||||
{{#if (eq avantages "doubleDesavantage")}} {{localize "TENEBRIS.Roll.doubleDesavantage"}}{{/if}}
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#if isSave}}
|
|
||||||
<div class="result">
|
|
||||||
{{#if (eq resultType "success")}}
|
|
||||||
{{#if isPrivate}}?{{else}}{{localize "TENEBRIS.Roll.success"}}{{/if}}
|
|
||||||
{{else}}
|
|
||||||
{{#if isPrivate}}?{{else}}{{localize "TENEBRIS.Roll.failure"}}{{/if}}
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
{{#if isResource}}
|
|
||||||
<div class="result">
|
|
||||||
{{#if (eq resultType "success")}}
|
|
||||||
{{#if isPrivate}}?{{else}}{{localize "TENEBRIS.Roll.success"}}{{/if}}
|
|
||||||
{{else}}
|
|
||||||
{{#if isPrivate}}?{{else}}{{localize "TENEBRIS.Roll.failure"}}{{#if isFailure}} ({{localize "TENEBRIS.Roll.resourceLost"}}){{/if}}{{/if}}
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
{{#if isDamage}}
|
{{#if isDamage}}
|
||||||
<div>
|
<div>
|
||||||
{{#if (and isGM hasTarget)}}
|
{{#if (and isGM hasTarget)}}
|
||||||
|
@ -4,12 +4,15 @@
|
|||||||
{{formInput fields.name value=source.name}}
|
{{formInput fields.name value=source.name}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
{{formField systemFields.settings value=system.settings localize=true}}
|
{{formField systemFields.settings value=system.settings localize=true}}
|
||||||
{{formField systemFields.resourceLevel value=system.resourceLevel}}
|
{{formField systemFields.resourceLevel value=system.resourceLevel}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
{{formInput systemFields.description enriched=description value=system.description name="system.description"
|
||||||
|
toggled=true}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</section>
|
</section>
|
@ -111,7 +111,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="protagonist-resources protagonist-resources-{{ifThen isPlayMode 'play' 'edit'}}">
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</section>
|
</section>
|
@ -4,10 +4,12 @@
|
|||||||
<legend data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.skills"}}" data-tooltip-direction="UP">{{localize "CTHULHUETERNAL.Label.skills"}}</legend>
|
<legend data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.skills"}}" data-tooltip-direction="UP">{{localize "CTHULHUETERNAL.Label.skills"}}</legend>
|
||||||
<div class="skills">
|
<div class="skills">
|
||||||
{{#each skills as |item|}}
|
{{#each skills as |item|}}
|
||||||
<div class="skill " data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
<div class="skill item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
<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}}
|
<div class="name rollable" data-roll-type="skill" data-tooltip="{{{item.description}}}" data-tooltip-direction="UP">{{item.name}}
|
||||||
<span data-tooltip="{{localize 'CTHULHUETERNAL.Label.progressionPossible'}}">{{item.system.skillTotal}}</span>
|
</div>
|
||||||
|
<div class="score" >
|
||||||
|
{{item.system.skillTotal}}
|
||||||
</div>
|
</div>
|
||||||
<div class="controls">
|
<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.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
@ -1,59 +1,20 @@
|
|||||||
{{log "roll-dialog" this}}
|
{{log "roll-dialog" this}}
|
||||||
<div class="tenebris-roll-dialog">
|
<div class="fvtt-cthulhu-eternal-roll-dialog">
|
||||||
{{#if isSave}}
|
{{#if (eq rollType "skill")}}
|
||||||
<fieldSet>
|
<fieldSet>
|
||||||
<legend>{{localize "TENEBRIS.Label.sauvegarde"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.skill"}}</legend>
|
||||||
<div class="dialog-save">{{formula}}</div>
|
<div class="dialog-skill">{{rollItem.name}} : {{targetScore}}</div>
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
<fieldSet class="dialog-avantages">
|
<fieldSet class="dialog-modifier">
|
||||||
<legend>{{localize "TENEBRIS.Roll.avantagesDesavantages"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.modifier"}}</legend>
|
||||||
<input
|
<select name="modifier" class="roll-skill-modifier">
|
||||||
type="range"
|
{{selectOptions choiceModifier selected=modifier}}
|
||||||
name="avantages"
|
|
||||||
min="1"
|
|
||||||
max="5"
|
|
||||||
value="{{rangeAdvantage}}"
|
|
||||||
data-tooltip="Double désavantage - Désavantage - Normal - Avantage - Double avantage"
|
|
||||||
data-tooltip-direction="UP"
|
|
||||||
data-tooltip-class="tooltip-avantages"
|
|
||||||
/>
|
|
||||||
<input id="selectAvantages" name="selectAvantages" readonly value="{{rollAdvantage}}">
|
|
||||||
</fieldSet>
|
|
||||||
<div class="dialog-aide-gene">
|
|
||||||
<fieldSet>
|
|
||||||
<legend>{{localize "TENEBRIS.Roll.aide"}}</legend>
|
|
||||||
<select name="aide">
|
|
||||||
{{selectOptions choiceAide}}
|
|
||||||
</select>
|
|
||||||
</fieldSet>
|
|
||||||
<fieldSet>
|
|
||||||
<legend>{{localize "TENEBRIS.Roll.gene"}}</legend>
|
|
||||||
<select name="gene">
|
|
||||||
{{selectOptions choiceGene}}
|
|
||||||
</select>
|
|
||||||
</fieldSet>
|
|
||||||
</div>
|
|
||||||
<fieldSet class="dialog-modificateur">
|
|
||||||
<legend>{{localize "TENEBRIS.Roll.adversite"}}</legend>
|
|
||||||
<select name="modificateur" {{#if hasTarget}}data-tooltip="Cible : {{targetName}}" data-tooltip-direction="UP"{{/if}}>
|
|
||||||
{{selectOptions choiceModificateur selected=malus}}
|
|
||||||
</select>
|
</select>
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (or isDamage isAttack)}}
|
|
||||||
<fieldSet>
|
<fieldSet>
|
||||||
<legend>{{localize "TENEBRIS.Label.degats"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.rollView"}}</legend>
|
||||||
<div class="dialog-damage">{{damageDice}} {{#if damageDiceLowered}}limités par les dégâts max à {{damageDiceFinal}} {{/if}}</div>
|
|
||||||
</fieldSet>
|
|
||||||
{{/if}}
|
|
||||||
{{#if isResource}}
|
|
||||||
<fieldSet>
|
|
||||||
<legend>{{localize "TENEBRIS.Label.ressource"}}</legend>
|
|
||||||
<div class="dialog-resource">{{formula}}</div>
|
|
||||||
</fieldSet>
|
|
||||||
{{/if}}
|
|
||||||
<fieldSet>
|
|
||||||
<legend>{{localize "TENEBRIS.Roll.visibilite"}}</legend>
|
|
||||||
<select name="visibility">
|
<select name="visibility">
|
||||||
{{selectOptions rollModes selected=visibility}}
|
{{selectOptions rollModes selected=visibility}}
|
||||||
</select>
|
</select>
|
||||||
|
@ -1,25 +1,29 @@
|
|||||||
<section>
|
<section>
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<img class="item-img era-icon-color" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
<img class="item-img era-icon-color" 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>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
{{formField systemFields.settings value=system.settings localize=true}}
|
{{formField systemFields.settings value=system.settings localize=true}}
|
||||||
{{formField systemFields.base value=system.base}}
|
{{formField systemFields.base value=system.base}}
|
||||||
{{formField systemFields.bonus value=system.bonus}}
|
{{formField systemFields.bonus value=system.bonus}}
|
||||||
|
<div class="total flexrow">
|
||||||
|
<legend>{{localize "CTHULHUETERNAL.Label.totalScore"}}</legend>
|
||||||
|
{{system.skillTotal}}
|
||||||
|
</div>
|
||||||
{{formField systemFields.diceEvolved value=system.diceEvolved}}
|
{{formField systemFields.diceEvolved value=system.diceEvolved}}
|
||||||
{{#if system.diceEvolved}}
|
{{#if system.diceEvolved}}
|
||||||
{{formField systemFields.rollFailed value=system.rollFailed}}
|
{{formField systemFields.rollFailed value=system.rollFailed}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<div class="total flexrow">
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.total"}}</legend>
|
|
||||||
{{system.skillTotal}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description"
|
||||||
|
toggled=true}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</section>
|
</section>
|
@ -4,6 +4,7 @@
|
|||||||
{{formInput fields.name value=source.name}}
|
{{formInput fields.name value=source.name}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
{{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")}}
|
{{#if (eq system.weaponType "rangedfirearm")}}
|
||||||
@ -19,6 +20,7 @@
|
|||||||
{{formField systemFields.armorPiercing value=system.armorPiercing}}
|
{{formField systemFields.armorPiercing value=system.armorPiercing}}
|
||||||
|
|
||||||
{{formField systemFields.resourceLevel value=system.resourceLevel}}
|
{{formField systemFields.resourceLevel value=system.resourceLevel}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user