Compare commits

..

No commits in common. "main" and "main" have entirely different histories.
main ... main

55 changed files with 433 additions and 1248 deletions

View File

@ -27,7 +27,7 @@ jobs:
env: env:
version: ${{steps.get_version.outputs.version-without-v}} version: ${{steps.get_version.outputs.version-without-v}}
url: https://www.uberwald.me/gitea/${{gitea.repository}} url: https://www.uberwald.me/gitea/${{gitea.repository}}
manifest: https://www.uberwald.me/gitea/public/${{gitea.repository}}/releases/download/latest/system.json manifest: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/system.json
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-cthulhu-eternal.zip download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-cthulhu-eternal.zip
# Create a zip file with all files required by the module to add to the release # Create a zip file with all files required by the module to add to the release

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1 +0,0 @@
<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(255, 255, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="15" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" style="" transform="translate(0,0)"><path d="M227.227 21.777c-1.845 0-3.704.05-5.567.157-15.314.875-30.76 5.305-39.494 10.863l-.008 73.15c2.884-.094 5.777-.147 8.676-.142 23.382.036 47.104 3.286 68.47 9.513l.01-87.507c-7.034-3.518-19.178-6.03-32.087-6.033zm80.74 9.16c-11.925.15-23.077 2.364-29.967 5.596l-.008 77.602v7.658c38.486 15.67 64.814 42.48 58.735 78.764l-.96 5.73-5.562 1.674c-17.45 5.253-34.872 9.703-52.225 13.335V246.53c25.562-.704 51.327-2.687 77.145-6.098l.02-197.928c-8.284-5.563-23.508-10.243-38.842-11.328-2.792-.198-5.584-.273-8.336-.238zM143.223 46.294c-1.176-.015-2.374-.01-3.588.02-4.175.1-8.533.468-12.903 1.152-15.67 2.454-31.477 8.565-40.406 15.402l-.01 72.955c18.808-15.81 46.704-25.143 77.15-28.54l.007-57.966c-4.82-1.752-12.018-2.916-20.25-3.023zm258.394 3.46c-10.804.117-20.722 1.93-27.043 4.655l-.02 183.182c25.074-4.02 50.16-9.412 75.122-16.358l1.99-158.447c-8.352-5.9-23.648-11.025-39.05-12.553-3.698-.366-7.398-.517-11-.478zm-222.775 74.202c-53.72.702-101.407 20.365-97.887 66.6 15.836-3.918 30.84-5.893 44.94-6.1 34.84-.51 64.213 9.704 87.318 27.613 34.608-3.11 69.852-10 105.412-20.314.14-41.287-74.098-68.657-139.783-67.8zm-48.877 78.65c-1.296-.003-2.603.012-3.92.045-17.256.436-36.45 4.03-57.566 11.037 5.79 53.808 26.325 106.41 58.5 143.346 6.226 7.15 12.856 13.712 19.875 19.615 29.303 9.282 69.26 12.917 110.534 12.14 3.777-55.805-8.717-108.357-36.193-142.74-21.265-26.61-51.064-43.39-91.232-43.444zm129.326 22.282c-9.358 1.637-18.69 3.016-27.995 4.15 1.54 1.74 3.043 3.52 4.502 5.346 3.146 3.937 6.094 8.062 8.873 12.334 9.916.144 19.868.125 29.857-.106H259.29v-21.723zm191.817 15.343c-65.406 17.826-131.462 25.41-195.85 25.315 16.998 35.144 23.828 78.093 21.013 122.6 42.482-2.08 85.03-8.23 118.187-15.983 26.693-32.78 47.37-77.118 56.65-131.932zM400.51 389.9c-38.334 9.145-87.95 16.056-136.873 17.454-47.67 1.36-94.336-2.228-129.448-15.262l-.01 78.93c27.187 12.568 76.414 20.205 127.318 20.298 51.224.094 104.214-7.173 139-20.773l.012-80.647z" fill="#a7de9a" fill-opacity="1" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -1 +0,0 @@
<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(255, 255, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="15" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" style="" transform="translate(0,0)"><path d="M245.813 23.188c-1.228-.006-2.455.027-3.657.093-10.103.56-19.646 3.682-30.156 11.25l20.72 196.782c-8.394 2.127-16.676 4.47-24.814 7.094L137.72 57.812c-7.032-1.706-17.442-.3-27.126 4.626-10.248 5.213-19.034 13.84-22.813 22.937L155.03 261.5c-7.414 4.345-14.59 9.137-21.5 14.47l-74.343-94.25c-16.34.698-34.965 14.455-37.562 32.655C28.89 222.693 93.978 297.77 126 357.405c10.3 19.184 29.543 50.725 39.188 70.064 5.83 11.693 16.004 24.238 27.843 32.342 11.84 8.104 24.7 11.82 37.907 8.282l112.907-30.22c5.493-1.47 9.196-5.39 13.22-11.937 4.02-6.545 7.535-15.137 12.905-23 20.61-30.185 50.432-76.085 115.186-112.062-2.696-15.053-7.405-24.57-12.72-29.563-6.03-5.667-13.198-7.372-23.686-5.843-18.062 2.63-43.498 17.063-69.594 36.874-1.68 1.39-3.318 2.802-4.937 4.22l-7-61.252 42.5-155.718c-4.478-7.355-13.806-13.258-24.845-15.97-10.874-2.67-22.506-1.698-30.28 1.595l-38.75 149.874c-9.365 1.58-18.732 3.17-28.064 4.812L273.69 27.5c-10.057-2.52-19.284-4.272-27.875-4.313zM234.343 255l30.157 56.625 54.406-33.906-33.78 54.186L341.562 362l-64.157-2.188 2.188 64.032-30.03-56.344-54.283 33.813 33.97-54.438-56.53-30.125 63.78 2.156L234.344 255z" fill="#a7de9a" fill-opacity="1" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1 +0,0 @@
<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(255, 255, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="15" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" style="" transform="translate(0,0)"><path d="M102.5 26.03l90.03 345.75 289.22 23.25-90.063-345.75L102.5 26.03zm-18.906 1.564c-30.466 11.873-55.68 53.098-49.75 75.312l3.25 11.78c.667-1.76 1.36-3.522 2.093-5.28C49.097 85.7 65.748 62.64 89.564 50.5l-5.97-22.906zm10.844 41.593c-16.657 10.012-29.92 28.077-38 47.407-5.247 12.55-8.038 25.63-8.75 36.53L112.5 388.407c.294-.55.572-1.106.875-1.656 10.603-19.252 27.823-37.695 51.125-48.47L94.437 69.19zm74.874 287.594c-17.677 9.078-31.145 23.717-39.562 39-4.464 8.107-7.27 16.364-8.688 23.75l11.688 42.408 1.625.125c-3.84-27.548 11.352-60.504 41.25-81.094l-6.313-24.19zm26.344 34c-32.567 17.27-46.51 52.44-41.844 72.94l289.844 24.5c-5.34-7.79-8.673-17.947-8.594-28.5l-22.406-9L459 443.436l-13.5-12.875c5.604-6.917 13.707-13.05 24.813-17.687L195.656 390.78z" fill="#a7de9a" fill-opacity="1" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -34,17 +34,9 @@
font-family: "Volkhov"; font-family: "Volkhov";
src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype"); src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype");
} }
@font-face {
font-family: "ChantelliAntiqua";
src: url("../assets/fonts/Chantelli_Antiqua.ttf") format("truetype");
}
@font-face { @font-face {
font-family: "IMFell"; font-family: "IMFell";
src: url("../assets/fonts/IMFeDPrm28P.ttf") format("truetype"); src: url("../assets/fonts/IMFell.ttf") format("truetype");
}
@font-face {
font-family: "SailRegular";
src: url("../assets/fonts/Sail-Regular.ttf") format("truetype");
} }
@font-face { @font-face {
font-family: "Dominican"; font-family: "Dominican";
@ -112,13 +104,13 @@
} }
:root { :root {
--font-size-standard: 0.9rem; --font-size-standard: 0.9rem;
--font-size-result: 1.4rem;
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/jazz_background_main.webp"); --background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/jazz_background_main.webp");
/*--background-image-base: url("../assets/ui/jazzage_background_main.webp");*/
--font-primary: "RozhaOne"; --font-primary: "RozhaOne";
--font-secondary: "RozhaOne"; --font-secondary: "RozhaOne";
--font-title: "Broadway"; --font-title: "Broadway";
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp"); --logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
--color-success: #0f7a0f; --color-success: #12e912;
--color-failure: darkred; --color-failure: darkred;
--color-warning: darkorange; --color-warning: darkorange;
--color-critical-success: #1527cc; --color-critical-success: #1527cc;
@ -290,24 +282,6 @@ i.fvtt-cthulhu-eternal {
width: auto; width: auto;
border: none; border: none;
} }
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-hp {
gap: 2px;
align-items: center;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-hp input {
flex: none;
width: 2rem;
margin-left: 4px;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-hp .damage-bonus {
font-size: calc(var(--font-size-standard) * 0.8);
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-hp .hp-separator {
font-size: calc(var(--font-size-standard) * 1.2);
display: flex;
align-items: center;
justify-content: center;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dv .form-fields, .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dv .form-fields,
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dmax .form-fields { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dmax .form-fields {
flex: none; flex: none;
@ -331,7 +305,7 @@ i.fvtt-cthulhu-eternal {
} }
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-name input { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-name input {
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-title); font-size: calc(var(--font-size-standard) * 1.4);
width: 400px; width: 400px;
} }
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san {
@ -413,9 +387,44 @@ i.fvtt-cthulhu-eternal {
min-width: 1rem; min-width: 1rem;
max-width: 1rem; max-width: 1rem;
} }
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right label { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos {
display: flex;
flex-direction: column;
gap: 4px;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos label {
min-width: 120px; min-width: 120px;
} }
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp {
display: flex;
gap: 2px;
align-items: center;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-value .form-fields input {
flex: none;
width: 50px;
margin-left: 4px;
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 {
clear: both;
display: flex;
flex-direction: row;
flex-wrap: wrap;
margin: 3px 0;
align-items: center;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-max input {
width: 50px;
text-align: center;
font-size: calc(var(--font-size-standard) * 1.4);
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .hp-separator {
font-size: calc(var(--font-size-standard) * 1.2);
display: flex;
align-items: center;
justify-content: center;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc-play { .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc-play {
min-width: 500px; min-width: 500px;
} }
@ -445,10 +454,6 @@ i.fvtt-cthulhu-eternal {
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .char-text { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .char-text {
margin-left: 0.5rem; margin-left: 0.5rem;
} }
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .d100 {
flex: 0;
max-width: 0.6rem;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .form-group { .fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .form-group {
flex: 0; flex: 0;
padding-left: 5px; padding-left: 5px;
@ -510,6 +515,31 @@ i.fvtt-cthulhu-eternal {
min-width: 18rem; min-width: 18rem;
max-width: 18rem; max-width: 18rem;
} }
.fvtt-cthulhu-eternal .protagonist-biography .motivations {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
}
.fvtt-cthulhu-eternal .protagonist-biography .motivations .motivation {
display: flex;
align-items: center;
gap: 4px;
min-width: 14rem;
max-width: 14rem;
}
.fvtt-cthulhu-eternal .protagonist-biography .motivations .motivation .controls {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-cthulhu-eternal .protagonist-biography .motivations .motivation .name {
min-width: 8rem;
max-width: 8rem;
}
.fvtt-cthulhu-eternal .protagonist-biography .motivations .motivation .item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-skills { .fvtt-cthulhu-eternal .tab.protagonist-skills {
background-color: var(--color-light-1); background-color: var(--color-light-1);
display: grid; display: grid;
@ -528,9 +558,8 @@ i.fvtt-cthulhu-eternal {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 4px;
margin-left: 4px; min-width: 10rem;
min-width: 12.3rem; max-width: 10rem;
max-width: 12.3rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .rollable:hover, .fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .rollable:hover,
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .rollable:focus { .fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .rollable:focus {
@ -538,17 +567,12 @@ i.fvtt-cthulhu-eternal {
cursor: pointer; cursor: pointer;
} }
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .controls { .fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .score {
min-width: 1.2rem;
max-width: 1.2rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .name { .fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .name {
min-width: 10rem; min-width: 8rem;
max-width: 10rem; max-width: 8rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img { .fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img {
width: 24px; width: 24px;
@ -573,21 +597,20 @@ i.fvtt-cthulhu-eternal {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 4px;
min-width: 18rem; min-width: 16rem;
max-width: 18rem; max-width: 16rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .controls { .fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .name { .fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .name {
min-width: 12rem; min-width: 12rem;
max-width: 12rem; max-width: 12rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .type { .fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .type {
min-width: 6rem; min-width: 5rem;
max-width: 6rem; max-width: 5rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .level { .fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .level {
min-width: 2rem; min-width: 2rem;
@ -598,32 +621,6 @@ i.fvtt-cthulhu-eternal {
height: 24px; height: 24px;
margin: 4px 0 0 0; margin: 4px 0 0 0;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations .motivation {
display: flex;
align-items: center;
gap: 4px;
min-width: 14rem;
max-width: 14rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations .motivation .controls {
font-size: 0.7rem;
min-width: 1.8rem;
max-width: 1.8rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations .motivation .name {
min-width: 12rem;
max-width: 12rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations .motivation .item-img {
width: 24px;
height: 24px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders { .fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders {
display: grid; display: grid;
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
@ -633,22 +630,17 @@ i.fvtt-cthulhu-eternal {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 4px;
min-width: 18rem; min-width: 16rem;
max-width: 18rem; max-width: 16rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .controls { .fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .name { .fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .name {
min-width: 14rem; min-width: 14rem;
max-width: 14rem; max-width: 14rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .cured {
min-width: 5rem;
max-width: 5rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .item-img { .fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .item-img {
width: 24px; width: 24px;
height: 24px; height: 24px;
@ -667,9 +659,8 @@ i.fvtt-cthulhu-eternal {
max-width: 16rem; max-width: 16rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .controls { .fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .name { .fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .name {
min-width: 14rem; min-width: 14rem;
@ -707,9 +698,8 @@ i.fvtt-cthulhu-eternal {
cursor: pointer; cursor: pointer;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .controls { .fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .damage { .fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .damage {
min-width: 6rem; min-width: 6rem;
@ -734,7 +724,7 @@ i.fvtt-cthulhu-eternal {
align-items: center; align-items: center;
gap: 4px; gap: 4px;
min-width: 13rem; min-width: 13rem;
max-width: 13rem; max-width: 13srem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .rollable:hover, .fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .rollable:hover,
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .rollable:focus { .fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .rollable:focus {
@ -742,9 +732,8 @@ i.fvtt-cthulhu-eternal {
cursor: pointer; cursor: pointer;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .controls { .fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .protection { .fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .protection {
min-width: 5rem; min-width: 5rem;
@ -769,7 +758,7 @@ i.fvtt-cthulhu-eternal {
align-items: center; align-items: center;
gap: 4px; gap: 4px;
min-width: 13rem; min-width: 13rem;
max-width: 13rem; max-width: 13srem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .rollable:hover, .fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .rollable:hover,
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .rollable:focus { .fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .rollable:focus {
@ -777,81 +766,22 @@ i.fvtt-cthulhu-eternal {
cursor: pointer; cursor: pointer;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .controls { .fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem; }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .damage {
min-width: 5rem;
max-width: 5rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .name { .fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .name {
min-width: 10rem; min-width: 8rem;
max-width: 10rem; max-width: 8rem;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img { .fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img {
width: 24px; width: 24px;
height: 24px; height: 24px;
margin: 4px 0 0 0; margin: 4px 0 0 0;
} }
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual {
display: flex;
align-items: center;
gap: 4px;
min-width: 20rem;
max-width: 20rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .rollable:hover,
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .controls {
font-size: 0.7rem;
min-width: 1.8rem;
max-width: 1.8rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .name {
min-width: 17rem;
max-width: 17rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .item-img {
width: 24px;
height: 24px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome {
display: flex;
align-items: center;
gap: 4px;
min-width: 20rem;
max-width: 20rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .rollable:hover,
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .controls {
font-size: 0.7rem;
min-width: 1.8rem;
max-width: 1.8rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .name {
min-width: 17rem;
max-width: 17rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .item-img {
width: 24px;
height: 24px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.inactive { .fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.inactive {
min-height: 40px; min-height: 40px;
} }
@ -1957,170 +1887,6 @@ i.fvtt-cthulhu-eternal {
.fvtt-cthulhu-eternal .archetype-content label { .fvtt-cthulhu-eternal .archetype-content label {
flex: 10%; flex: 10%;
} }
.fvtt-cthulhu-eternal .ritual-content {
font-family: var(--font-primary);
font-size: calc(var(--font-size-standard) * 1);
color: var(--color-dark-1);
background-image: var(--background-image-base);
background-repeat: no-repeat;
background-size: 100% 100%;
}
.fvtt-cthulhu-eternal .ritual-content input:disabled,
.fvtt-cthulhu-eternal .ritual-content select:disabled {
background-color: rgba(0, 0, 0, 0.2);
border-color: transparent;
color: var(--color-dark-3);
}
.fvtt-cthulhu-eternal .ritual-content input,
.fvtt-cthulhu-eternal .ritual-content select {
background-color: rgba(0, 0, 0, 0.1);
border-color: var(--color-dark-6);
color: var(--color-dark-2);
}
.fvtt-cthulhu-eternal .ritual-content input[name="name"] {
height: 40px;
margin-right: 10px;
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.fvtt-cthulhu-eternal .ritual-content fieldset {
margin-bottom: 4px;
border-radius: 4px;
}
.fvtt-cthulhu-eternal .ritual-content .form-fields input,
.fvtt-cthulhu-eternal .ritual-content .form-fields select {
text-align: center;
font-size: calc(var(--font-size-standard) * 1);
}
.fvtt-cthulhu-eternal .ritual-content .form-fields select {
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1);
}
.fvtt-cthulhu-eternal .ritual-content legend {
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
.fvtt-cthulhu-eternal .ritual-content .form-fields {
padding-top: 4px;
}
.fvtt-cthulhu-eternal .ritual-content label {
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
.fvtt-cthulhu-eternal .ritual-content .align-top {
align-self: flex-start;
padding: 0.1rem;
margin-right: 0.2rem;
/*border-color: black;
border-width: 1px;
border-style: solid;
border-radius: 2%;*/
}
.fvtt-cthulhu-eternal .ritual-content .shift-right {
margin-left: 2rem;
}
.fvtt-cthulhu-eternal .ritual-content fieldset {
margin-top: 8px;
background-color: var(--color-light-1);
}
.fvtt-cthulhu-eternal .ritual-content .header {
background-color: var(--color-light-1);
display: flex;
}
.fvtt-cthulhu-eternal .ritual-content .header img {
width: 50px;
height: 50px;
}
.fvtt-cthulhu-eternal .ritual-content label {
flex: 10%;
}
.fvtt-cthulhu-eternal .tome-content {
font-family: var(--font-primary);
font-size: calc(var(--font-size-standard) * 1);
color: var(--color-dark-1);
background-image: var(--background-image-base);
background-repeat: no-repeat;
background-size: 100% 100%;
}
.fvtt-cthulhu-eternal .tome-content input:disabled,
.fvtt-cthulhu-eternal .tome-content select:disabled {
background-color: rgba(0, 0, 0, 0.2);
border-color: transparent;
color: var(--color-dark-3);
}
.fvtt-cthulhu-eternal .tome-content input,
.fvtt-cthulhu-eternal .tome-content select {
background-color: rgba(0, 0, 0, 0.1);
border-color: var(--color-dark-6);
color: var(--color-dark-2);
}
.fvtt-cthulhu-eternal .tome-content input[name="name"] {
height: 40px;
margin-right: 10px;
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1);
font-weight: bold;
border: none;
}
.fvtt-cthulhu-eternal .tome-content fieldset {
margin-bottom: 4px;
border-radius: 4px;
}
.fvtt-cthulhu-eternal .tome-content .form-fields input,
.fvtt-cthulhu-eternal .tome-content .form-fields select {
text-align: center;
font-size: calc(var(--font-size-standard) * 1);
}
.fvtt-cthulhu-eternal .tome-content .form-fields select {
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1);
}
.fvtt-cthulhu-eternal .tome-content legend {
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.2);
font-weight: bold;
letter-spacing: 1px;
}
.fvtt-cthulhu-eternal .tome-content .form-fields {
padding-top: 4px;
}
.fvtt-cthulhu-eternal .tome-content label {
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1);
flex: 50%;
}
.fvtt-cthulhu-eternal .tome-content .align-top {
align-self: flex-start;
padding: 0.1rem;
margin-right: 0.2rem;
/*border-color: black;
border-width: 1px;
border-style: solid;
border-radius: 2%;*/
}
.fvtt-cthulhu-eternal .tome-content .shift-right {
margin-left: 2rem;
}
.fvtt-cthulhu-eternal .tome-content fieldset {
margin-top: 8px;
background-color: var(--color-light-1);
}
.fvtt-cthulhu-eternal .tome-content .header {
background-color: var(--color-light-1);
display: flex;
}
.fvtt-cthulhu-eternal .tome-content .header img {
width: 50px;
height: 50px;
}
.fvtt-cthulhu-eternal .tome-content label {
flex: 10%;
}
.application.dialog.fvtt-cthulhu-eternal { .application.dialog.fvtt-cthulhu-eternal {
color: var(--color-dark-1); color: var(--color-dark-1);
background-color: var(--color-light-1); background-color: var(--color-light-1);
@ -2149,7 +1915,7 @@ i.fvtt-cthulhu-eternal {
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: 4rem; width: 60px;
text-align: center; text-align: center;
} }
.red-warning { .red-warning {
@ -2209,30 +1975,25 @@ i.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);
} }
.dice-roll .intro-chat .intro-right ul .nudge-roll {
font-size: calc(var(--font-size-standard) * 1);
margin-left: 4rem;
display: none;
}
.dice-roll .intro-chat .intro-right ul .result-success { .dice-roll .intro-chat .intro-right ul .result-success {
color: var(--color-success); color: var(--color-success);
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-result); font-size: calc(var(--font-size-standard) * 1.2);
} }
.dice-roll .intro-chat .intro-right ul .result-critical-success { .dice-roll .intro-chat .intro-right ul .result-critical-success {
color: var(--color-critical-success); color: var(--color-critical-success);
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-result); font-size: calc(var(--font-size-standard) * 1.2);
} }
.dice-roll .intro-chat .intro-right ul .result-failure { .dice-roll .intro-chat .intro-right ul .result-failure {
color: var(--color-failure); color: var(--color-failure);
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-result); font-size: calc(var(--font-size-standard) * 1.2);
} }
.dice-roll .intro-chat .intro-right ul .result-critical-failure { .dice-roll .intro-chat .intro-right ul .result-critical-failure {
color: var(--color-critical-failure); color: var(--color-critical-failure);
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-result); font-size: calc(var(--font-size-standard) * 1.2);
} }
.dice-roll .intro-chat .intro-right .introText { .dice-roll .intro-chat .intro-right .introText {
font-family: var(--font-secondary); font-family: var(--font-secondary);

View File

@ -47,9 +47,7 @@ Hooks.once("init", function () {
bond: models.CthulhuEternalBond, bond: models.CthulhuEternalBond,
arcane: models.CthulhuEternalArcane, arcane: models.CthulhuEternalArcane,
gear: models.CthulhuEternalGear, gear: models.CthulhuEternalGear,
archetype: models.CthulhuEternalArchetype, archetype: models.CthulhuEternalArchetype
ritual: models.CthulhuEternalRitual,
tome: models.CthulhuEternalTome
} }
// Register sheet application classes // Register sheet application classes
@ -68,8 +66,6 @@ Hooks.once("init", function () {
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalBondSheet, { types: ["bond"], makeDefault: true }) Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalBondSheet, { types: ["bond"], makeDefault: true })
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalGearSheet, { types: ["gear"], makeDefault: true }) Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalGearSheet, { types: ["gear"], makeDefault: true })
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalArchetypeSheet, { types: ["archetype"], makeDefault: true }) Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalArchetypeSheet, { types: ["archetype"], makeDefault: true })
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalRitualSheet, { types: ["ritual"], makeDefault: true })
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalTomeSheet, { types: ["tome"], makeDefault: true })
// Other Document Configuration // Other Document Configuration
CONFIG.ChatMessage.documentClass = documents.CthulhuEternalChatMessage CONFIG.ChatMessage.documentClass = documents.CthulhuEternalChatMessage
@ -118,15 +114,26 @@ Hooks.once("ready", function () {
}) })
Hooks.on("renderChatMessage", (message, html, data) => { Hooks.on("renderChatMessage", (message, html, data) => {
const typeMessage = data.message.flags.CthulhuEternal?.typeMessage
// Message de demande de jet de dés
if (typeMessage === "askRoll") {
// Affichage des boutons de jet de dés uniquement pour les joueurs // Affichage des boutons de jet de dés uniquement pour les joueurs
if (message.author.id === game.user.id) { if (game.user.isGM) {
html.find(".nudge-roll").each((i, btn) => { html.find(".ask-roll-dice").each((i, btn) => {
btn.style.display = "inline" btn.style.display = "none"
}) })
html.find(".nudge-roll").click((event) => { } else {
CthulhuEternalUtils.nudgeRoll(message) html.find(".ask-roll-dice").click((event) => {
const btn = $(event.currentTarget)
const type = btn.data("type")
const value = btn.data("value")
const avantage = btn.data("avantage") ?? "="
const character = game.user.character
if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value)
else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage)
}) })
} }
}
}) })
// Dice-so-nice Ready // Dice-so-nice Ready

View File

@ -14,9 +14,7 @@
"mentaldisorder": "Mental Disorder", "mentaldisorder": "Mental Disorder",
"bond": "Bond" , "bond": "Bond" ,
"arcane": "Arcane", "arcane": "Arcane",
"archetype": "Archetype", "archetype": "Archetype"
"ritual": "Ritual",
"tome": "Tome"
} }
}, },
"CTHULHUETERNAL": { "CTHULHUETERNAL": {
@ -39,9 +37,6 @@
}, },
"Protagonist": { "Protagonist": {
"FIELDS": { "FIELDS": {
"damageBonus": {
"label": "Dmg.Bonus"
},
"resources": { "resources": {
"permanentRating": { "permanentRating": {
"label": "Permanent Rating" "label": "Permanent Rating"
@ -329,84 +324,7 @@
"harsh": "Harsh", "harsh": "Harsh",
"veryHarsh": "Very Harsh" "veryHarsh": "Very Harsh"
}, },
"Tome": {
"FIELDS": {
"language": {
"label": "Language"
},
"settings": {
"label": "Settings"
},
"studyTime": {
"label": "Study Time"
},
"sanLoss": {
"label": "SAN Loss"
},
"unnaturalSkill": {
"label": "Unnatural Skill"
},
"rituals": {
"label": "Rituals"
},
"minimumEra": {
"label": "Minimum Era"
},
"otherBenefits": {
"label": "Other Benefits"
},
"creationDate": {
"label": "Creation Date"
},
"description": {
"label": "Description"
}
},
"Label": { "Label": {
"tomeDetails": "Tome Details"
},
"Button": {
"addRitual": "Add Ritual"
}
},
"Ritual": {
"Simple": "Simple",
"Complex": "Complex",
"Elaborate": "Elaborate",
"FIELDS": {
"ritualType": {
"label": "Type"
},
"studyTime": {
"label": "Study time"
},
"studySAN": {
"label": "Study SAN"
},
"activationTime": {
"label": "Activation time"
},
"activationSAN": {
"label": "Activation SAN"
},
"activationWP": {
"label": "Activation WP"
},
"description": {
"label": "Description"
}
}
},
"Label": {
"Rituals": "Rituals",
"Tomes": "Tomes",
"otherBenefits": "Other Benefits",
"Unarmed": "Unarmed",
"Cured": "Cured",
"Uncured": "Uncured",
"nudgedRoll": "Nudged Roll",
"selectNewValue": "Select the new value",
"wpCost": "WP Cost",
"Hand": "Hand", "Hand": "Hand",
"Stowed": "Stowed", "Stowed": "Stowed",
"Storage": "Storage", "Storage": "Storage",
@ -506,9 +424,7 @@
"newGear": "New Gear", "newGear": "New Gear",
"newArcane": "New Arcane", "newArcane": "New Arcane",
"newArchetype": "New Archetype", "newArchetype": "New Archetype",
"newSkill": "New Skill", "newSkill": "New Skill"
"newTome": "New Tome",
"newRitual": "New Ritual"
}, },
"ChatMessage": { "ChatMessage": {
"exhausted": "Your protagonist is exhausted. He loses [[/r 1d6]] Willpower Points." "exhausted": "Your protagonist is exhausted. He loses [[/r 1d6]] Willpower Points."
@ -521,10 +437,7 @@
}, },
"Roll": { "Roll": {
"skill": "Skill", "skill": "Skill",
"roll": "Roll", "roll": "Roll"
"applyNudge": "Apply",
"cancel": "Cancel",
"nudgeRoll": "Nudge Roll"
}, },
"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.",
@ -532,11 +445,10 @@
}, },
"Chat": { "Chat": {
}, },
"Notifications": { "Notitications": {
"NoWeaponSkill": "No weapon skill found for this weapon. Check Weapon definition or available skills/era", "NoWeaponSkill": "No weapon skill found for this weapon. Check Weapon definition or available skills/era",
"NoWeaponType": "No weapon type found for this weapon subtype. Check Weapon definition or available skills/era", "NoWeaponType": "No weapon type found for this weapon subtype. Check Weapon definition or available skills/era",
"skillAlreadyExists": "Skill already exists", "skillAlreadyExists": "Skill already exists"
"WrongEra": "The era of the item does not match the ear of the system"
} }
} }
} }

View File

@ -9,6 +9,4 @@ export { default as CthulhuEternalMentalDisorderSheet } from "./sheets/mentaldis
export { default as CthulhuEternalGearSheet } from "./sheets/gear-sheet.mjs" export { default as CthulhuEternalGearSheet } from "./sheets/gear-sheet.mjs"
export { default as CthulhuEternalMotivationSheet } from "./sheets/motivation-sheet.mjs" export { default as CthulhuEternalMotivationSheet } from "./sheets/motivation-sheet.mjs"
export { default as CthulhuEternalArchetypeSheet } from "./sheets/archetype-sheet.mjs" export { default as CthulhuEternalArchetypeSheet } from "./sheets/archetype-sheet.mjs"
export { default as CthulhuEternalRitualSheet } from "./sheets/ritual-sheet.mjs"
export { default as CthulhuEternalVehicleSheet } from "./sheets/vehicle-sheet.mjs" export { default as CthulhuEternalVehicleSheet } from "./sheets/vehicle-sheet.mjs"
export { default as CthulhuEternalTomeSheet } from "./sheets/tome-sheet.mjs"

View File

@ -96,6 +96,7 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin
drop: this._canDragDrop.bind(this), drop: this._canDragDrop.bind(this),
} }
d.callbacks = { d.callbacks = {
dragstart: this._onDragStart.bind(this),
dragover: this._onDragOver.bind(this), dragover: this._onDragOver.bind(this),
drop: this._onDrop.bind(this), drop: this._onDrop.bind(this),
} }
@ -132,6 +133,70 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin
return true //this.isEditable && this.document.isOwner return true //this.isEditable && this.document.isOwner
} }
/**
* Callback actions which occur at the beginning of a drag start workflow.
* @param {DragEvent} event The originating DragEvent
* @protected
*/
_onDragStart(event) {
if ("link" in event.target.dataset) return
const el = event.currentTarget.closest('[data-drag="true"]')
const dragType = el.dataset.dragType
let dragData = {}
let target
switch (dragType) {
case "save":
target = event.currentTarget.querySelector("input")
dragData = {
actorId: this.document.id,
type: "roll",
rollType: target.dataset.rollType,
rollTarget: target.dataset.rollTarget,
value: target.value,
}
break
case "resource":
target = event.currentTarget.querySelector("select")
dragData = {
actorId: this.document.id,
type: "roll",
rollType: target.dataset.rollType,
rollTarget: target.dataset.rollTarget,
value: target.value,
}
break
case "damage":
dragData = {
actorId: this.document.id,
type: "rollDamage",
rollType: el.dataset.dragType,
rollTarget: el.dataset.itemId,
}
break
case "attack":
dragData = {
actorId: this.document.id,
type: "rollAttack",
rollValue: el.dataset.rollValue,
rollTarget: el.dataset.rollTarget,
}
break
default:
// Handle other cases or do nothing
break
}
// Extract the data you need
if (!dragData) return
// Set data transfer
event.dataTransfer.setData("text/plain", JSON.stringify(dragData))
}
/** /**
* Callback actions which occur when a dragged element is over a drop target. * Callback actions which occur when a dragged element is over a drop target.
* @param {DragEvent} event The originating DragEvent * @param {DragEvent} event The originating DragEvent

View File

@ -20,9 +20,7 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
createInjury: CthulhuEternalProtagonistSheet.#onCreateInjury, createInjury: CthulhuEternalProtagonistSheet.#onCreateInjury,
createMentalDisorder: CthulhuEternalProtagonistSheet.#onCreateMentalDisorder, createMentalDisorder: CthulhuEternalProtagonistSheet.#onCreateMentalDisorder,
createMotivation: CthulhuEternalProtagonistSheet.#onCreateMotivation, createMotivation: CthulhuEternalProtagonistSheet.#onCreateMotivation,
createSkill: CthulhuEternalProtagonistSheet.#onCreateSkill, createSkill: CthulhuEternalProtagonistSheet.#onCreateSkill
createRitual: CthulhuEternalProtagonistSheet.#onCreateRitual,
createTome: CthulhuEternalProtagonistSheet.#onCreateTome,
}, },
} }
@ -110,10 +108,6 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
context.armors.sort((a, b) => a.name.localeCompare(b.name)) context.armors.sort((a, b) => a.name.localeCompare(b.name))
context.gears = doc.itemTypes.gear context.gears = doc.itemTypes.gear
context.gears.sort((a, b) => a.name.localeCompare(b.name)) context.gears.sort((a, b) => a.name.localeCompare(b.name))
context.rituals = doc.itemTypes.ritual
context.rituals.sort((a, b) => a.name.localeCompare(b.name))
context.tomes = doc.itemTypes.tome
context.tomes.sort((a, b) => a.name.localeCompare(b.name))
break break
case "status": case "status":
context.tab = context.tabs.status context.tab = context.tabs.status
@ -121,13 +115,13 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
context.injuries.sort((a, b) => a.name.localeCompare(b.name)) context.injuries.sort((a, b) => a.name.localeCompare(b.name))
context.mentaldisorders = doc.itemTypes.mentaldisorder context.mentaldisorders = doc.itemTypes.mentaldisorder
context.mentaldisorders.sort((a, b) => a.name.localeCompare(b.name)) context.mentaldisorders.sort((a, b) => a.name.localeCompare(b.name))
context.motivations = doc.itemTypes.motivation
context.motivations.sort((a, b) => a.name.localeCompare(b.name))
context.bonds = doc.itemTypes.bond context.bonds = doc.itemTypes.bond
context.bonds.sort((a, b) => a.name.localeCompare(b.name)) context.bonds.sort((a, b) => a.name.localeCompare(b.name))
break break
case "biography": case "biography":
context.tab = context.tabs.biography context.tab = context.tabs.biography
context.motivations = doc.itemTypes.motivation
context.motivations.sort((a, b) => a.name.localeCompare(b.name))
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
break break
@ -176,14 +170,6 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newSkill"), type: "skill" }]) this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newSkill"), type: "skill" }])
} }
static #onCreateRitual(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newRitual"), type: "ritual" }])
}
static #onCreateTome(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newTome"), type: "tome" }])
}
/** /**
* Handles the roll action triggered by user interaction. * Handles the roll action triggered by user interaction.
* *
@ -224,7 +210,6 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
case "damage": case "damage":
li = $(event.currentTarget).parents(".item"); li = $(event.currentTarget).parents(".item");
item = this.actor.items.get(li.data("item-id")); item = this.actor.items.get(li.data("item-id"));
item.damageBonus = this.actor.system.damageBonus
break break
case "san": case "san":
item = foundry.utils.duplicate(this.actor.system.san) item = foundry.utils.duplicate(this.actor.system.san)
@ -249,4 +234,5 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
} }
} }
// #endregion
} }

View File

@ -1,28 +0,0 @@
import CthulhuEternalItemSheet from "./base-item-sheet.mjs"
export default class CthulhuEternalRitualSheet extends CthulhuEternalItemSheet {
/** @override */
static DEFAULT_OPTIONS = {
classes: ["ritual"],
position: {
width: 600,
},
window: {
contentClasses: ["ritual-content"],
},
}
/** @override */
static PARTS = {
main: {
template: "systems/fvtt-cthulhu-eternal/templates/ritual.hbs",
},
}
/** @override */
async _prepareContext() {
const context = await super._prepareContext()
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
return context
}
}

View File

@ -1,28 +0,0 @@
import CthulhuEternalItemSheet from "./base-item-sheet.mjs"
export default class CthulhuEternalTomeSheet extends CthulhuEternalItemSheet {
/** @override */
static DEFAULT_OPTIONS = {
classes: ["tome"],
position: {
width: 600,
},
window: {
contentClasses: ["tome-content"],
},
}
/** @override */
static PARTS = {
main: {
template: "systems/fvtt-cthulhu-eternal/templates/tome.hbs",
},
}
/** @override */
async _prepareContext() {
const context = await super._prepareContext()
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
return context
}
}

View File

@ -42,18 +42,18 @@ export const INSANITY = {
} }
export const ERA_CSS = { export const ERA_CSS = {
jazz: { primaryFont: "RozhaOne", secondaryFont: "RozhaOne", titleFont: "Broadway", baseFontSize: "0.95rem", titleFontSize: "1.2rem", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%)" }, jazz: { primaryFont: "RozhaOne", secondaryFont: "RozhaOne", titleFont: "Broadway", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%)" },
modern: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "Georama", baseFontSize: "1.0rem", titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(92%) sepia(11%) saturate(1214%) hue-rotate(51deg) brightness(93%) contrast(86%)" }, modern: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "Georama", imgFilter: "brightness(0) saturate(100%) invert(92%) sepia(11%) saturate(1214%) hue-rotate(51deg) brightness(93%) contrast(86%)" },
future: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "Seabreed", baseFontSize: "1.0rem", titleFontSize: "2.0rem",imgFilter: "invert(90%) sepia(6%) saturate(1818%) hue-rotate(152deg) brightness(91%) contrast(91%)" }, future: { primaryFont: "Megrim", secondaryFont: "Megrim", titleFont: "Seabreed", imgFilter: "brightness(0) saturate(100%) invert(83%) sepia(30%) saturate(588%) hue-rotate(168deg) brightness(105%) contrast(103%)" },
victorian: { primaryFont: "Volkhov", secondaryFont: "Volkhov", titleFont: "Excelsior", baseFontSize: "1.0rem", titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(100%) sepia(59%) saturate(1894%) hue-rotate(337deg) brightness(88%) contrast(98%)" }, victorian: { primaryFont: "Volkhov", secondaryFont: "Volkhov", titleFont: "Excelsior", imgFilter: "brightness(0) saturate(100%) invert(100%) sepia(59%) saturate(1894%) hue-rotate(337deg) brightness(88%) contrast(98%)" },
coldwar: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "TopSecret", baseFontSize: "1.0rem", titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(14%) saturate(2508%) hue-rotate(202deg) brightness(99%) contrast(105%)"}, coldwar: { primaryFont: "BebasNeue", secondaryFont: "BebasNeue", titleFont: "TopSecret", imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(14%) saturate(2508%) hue-rotate(202deg) brightness(99%) contrast(105%)"},
revolution: { primaryFont: "IMFell", secondaryFont: "IMFell", titleFont: "Dominican", baseFontSize: "1.0rem",titleFontSize: "1.3rem",imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(25%) saturate(386%) hue-rotate(7deg) brightness(101%) contrast(84%)" }, revolution: { primaryFont: "IMFell", secondaryFont: "IMFell", titleFont: "Dominican", imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(25%) saturate(386%) hue-rotate(7deg) brightness(101%) contrast(84%)" },
medieval: { primaryFont: "UncialAntiqua", secondaryFont: "UncialAntiqua", titleFont: "Luminari", baseFontSize: "0.9rem",titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(93%) sepia(46%) saturate(354%) hue-rotate(321deg) brightness(93%) contrast(87%)"}, medieval: { primaryFont: "UncialAntiqua", secondaryFont: "UncialAntiqua", titleFont: "Luminari", imgFilter: "brightness(0) saturate(100%) invert(93%) sepia(46%) saturate(354%) hue-rotate(321deg) brightness(93%) contrast(87%)"},
ww2: { primaryFont: "SairaStencilOne", secondaryFont: "SairaStencilOne", titleFont: "Armalite", baseFontSize: "0.9rem",titleFontSize: "1.2rem",imgFilter: "filter: invert(44%) sepia(8%) saturate(2657%) hue-rotate(40deg) brightness(96%) contrast(75%)"}, ww2: { primaryFont: "SairaStencilOne", secondaryFont: "SairaStencilOne", titleFont: "Armalite", imgFilter: "brightness(0) saturate(100%) invert(95%) sepia(9%) saturate(1471%) hue-rotate(342deg) brightness(103%) contrast(107%)"},
ww1: { primaryFont: "CarterOne", secondaryFont: "CarterOne", titleFont: "SigmarOne", baseFontSize: "0.9rem",titleFontSize: "1.1rem",imgFilter: "invert(28%) sepia(27%) saturate(475%) hue-rotate(76deg) brightness(95%) contrast(93%)"}, ww1: { primaryFont: "CarterOne", secondaryFont: "CarterOne", titleFont: "SigmarOne", imgFilter: "brightness(0) saturate(100%) invert(90%) sepia(38%) saturate(341%) hue-rotate(21deg) brightness(105%) contrast(105%)"},
ageofsail: { primaryFont: "SailRegular", secondaryFont: "SailRegular", titleFont: "P22Operina", baseFontSize: "1.1rem",titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(43%) sepia(74%) saturate(3154%) hue-rotate(336deg) brightness(95%) contrast(83%)" }, ageofsail: { primaryFont: "Tangerine", secondaryFont: "Tangerine", titleFont: "P22Operina", imgFilter: "brightness(0) saturate(100%) invert(43%) sepia(74%) saturate(3154%) hue-rotate(336deg) brightness(95%) contrast(83%)" },
classical: { primaryFont: "ChantelliAntiqua", secondaryFont: "ChantelliAntiqua", titleFont: "TrajanPro", baseFontSize: "0.9rem",titleFontSize: "1.1rem",imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(32%) saturate(7492%) hue-rotate(265deg) brightness(89%) contrast(95%)" }, classical: { primaryFont: "SpectralSC", secondaryFont: "SpectralSC", titleFont: "TrajanPro", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(32%) saturate(7492%) hue-rotate(265deg) brightness(89%) contrast(95%)" },
postapo: { primaryFont: "Teko", secondaryFont: "Teko", titleFont: "Teko", baseFontSize: "1.25rem",titleFontSize: "1.5rem",imgFilter: "brightness(0) saturate(100%) invert(44%) sepia(55%) saturate(2341%) hue-rotate(329deg) brightness(122%) contrast(103%))" } postapo: { primaryFont: "Teko", secondaryFont: "Teko", titleFont: "Teko", imgFilter: "brightness(0) saturate(100%) invert(44%) sepia(55%) saturate(2341%) hue-rotate(329deg) brightness(122%) contrast(103%))" }
} }
export const RESOURCE_RATING = { export const RESOURCE_RATING = {
@ -113,8 +113,6 @@ export const RESOURCE_BREAKDOWN = [
{ value: 20, hand: 6, stowed: 6, storage: 8, checks: 3} { value: 20, hand: 6, stowed: 6, storage: 8, checks: 3}
] ]
export const DAMAGE_BONUS = [ -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]
export const VEHICLE_SPEED = { export const VEHICLE_SPEED = {
"none": "CTHULHUETERNAL.Label.None", "none": "CTHULHUETERNAL.Label.None",
"slow": "CTHULHUETERNAL.Label.Slow", "slow": "CTHULHUETERNAL.Label.Slow",
@ -142,13 +140,6 @@ export const WEAPON_SKILL_MAPPING = {
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms", "rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat" "unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
}, },
postapo: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
jazz: { jazz: {
"melee": "CTHULHUETERNAL.Skill.Melee", "melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms", "rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
@ -220,9 +211,9 @@ export const WEAPON_SKILL_MAPPING = {
} }
export const MODIFIER_CHOICES = { export const MODIFIER_CHOICES = {
"-40": "-40",
"-20": "-20",
"-10": "-10", "-10": "-10",
"-20": "-20",
"-40": "-40",
"+0": "+0", "+0": "+0",
"+10": "+10", "+10": "+10",
"+20": "+20", "+20": "+20",
@ -238,12 +229,6 @@ export const MULTIPLIER_CHOICES = {
"5": "5" "5": "5"
} }
export const RITUAL_TYPES = {
"simple": "CTHULHUETERNAL.Ritual.Simple",
"complex": "CTHULHUETERNAL.Ritual.Complex",
"elaborate": "CTHULHUETERNAL.Ritual.Elaborate"
}
/** /**
* Include all constant definitions within the SYSTEM global export * Include all constant definitions within the SYSTEM global export
* @type {Object} * @type {Object}
@ -266,7 +251,5 @@ export const SYSTEM = {
VEHICLE_SPEED, VEHICLE_SPEED,
MODIFIER_CHOICES, MODIFIER_CHOICES,
MULTIPLIER_CHOICES, MULTIPLIER_CHOICES,
ASCII, ASCII
DAMAGE_BONUS,
RITUAL_TYPES
} }

View File

@ -23,8 +23,6 @@ export default class CthulhuEternalActor extends Actor {
data.items.push(skill.toObject()) data.items.push(skill.toObject())
} }
} }
data.items.push({ type:"weapon", img: "systems/fvtt-cthulhu-eternal/assets/icons/icon_fist.svg",
name: game.i18n.localize("CTHULHUETERNAL.Label.Unarmed"), system: { damage: "1d4-1", weaponType: "unarmed" } })
} }
return super.create(data, options); return super.create(data, options);
@ -54,13 +52,6 @@ export default class CthulhuEternalActor extends Actor {
continue continue
} }
} }
if (i.type === "bond") {
if (i.system.bondType === "individual") {
i.system.value = this.system.characteristics.cha.value
} else {
i.system.value = Math.floor(this.system.resources.permanentRating / 2)
}
}
newData.push(i) newData.push(i)
} }
return super.createEmbeddedDocuments(embeddedName, newData, operation) return super.createEmbeddedDocuments(embeddedName, newData, operation)

View File

@ -1,7 +1,7 @@
export const defaultItemImg = { export const defaultItemImg = {
weapon: "systems/fvtt-cthulhu-eternal/assets/icons/icon_weapon.svg", weapon: "systems/fvtt-cthulhu-eternal/assets/icons/icon_weapon.svg",
armor: "systems/fvtt-cthulhu-eternal/assets/icons/icon_armor.svg", armor: "systems/fvtt-cthulhu-eternal/assets/icons/icon_armor.svg",
gear: "systems/fvtt-cthulhu-eternal/assets/icons/icon_equipment.svg", gear: "systems/fvtt-cthulhu-eternal/assets/icons/icon_gear.svg",
skill: "systems/fvtt-cthulhu-eternal/assets/icons/icon_skill.svg", skill: "systems/fvtt-cthulhu-eternal/assets/icons/icon_skill.svg",
archetype: "systems/fvtt-cthulhu-eternal/assets/icons/icon_archetype.svg", archetype: "systems/fvtt-cthulhu-eternal/assets/icons/icon_archetype.svg",
bond: "systems/fvtt-cthulhu-eternal/assets/icons/icon_bond.svg", bond: "systems/fvtt-cthulhu-eternal/assets/icons/icon_bond.svg",
@ -9,8 +9,6 @@ export const defaultItemImg = {
arcane: "systems/fvtt-cthulhu-eternal/assets/icons/icon_arcane.svg", arcane: "systems/fvtt-cthulhu-eternal/assets/icons/icon_arcane.svg",
injury: "systems/fvtt-cthulhu-eternal/assets/icons/icon_injury.svg", injury: "systems/fvtt-cthulhu-eternal/assets/icons/icon_injury.svg",
motivation: "systems/fvtt-cthulhu-eternal/assets/icons/icon_motivation.svg", motivation: "systems/fvtt-cthulhu-eternal/assets/icons/icon_motivation.svg",
ritual: "systems/fvtt-cthulhu-eternal/assets/icons/icon_ritual.svg",
tome: "systems/fvtt-cthulhu-eternal/assets/icons/icon_tome.svg",
} }
export default class CthulhuEternalItem extends Item { export default class CthulhuEternalItem extends Item {

View File

@ -79,14 +79,6 @@ export default class CthulhuEternalRoll extends Roll {
return this.options.isExhausted return this.options.isExhausted
} }
get isNudgedRoll() {
return this.options.isNudgedRoll
}
get wpCost() {
return this.options.wpCost
}
static updateResourceDialog(options) { static updateResourceDialog(options) {
let rating = 0 let rating = 0
if (options.rollItem.enableHand) { if (options.rollItem.enableHand) {
@ -122,7 +114,6 @@ export default class CthulhuEternalRoll extends Roll {
let formula = "1d100" let formula = "1d100"
let hasModifier = true let hasModifier = true
let hasMultiplier = false let hasMultiplier = false
options.isNudge = true
switch (options.rollType) { switch (options.rollType) {
case "skill": case "skill":
@ -132,7 +123,6 @@ export default class CthulhuEternalRoll extends Roll {
case "san": case "san":
case "char": case "char":
options.initialScore = options.rollItem.targetScore options.initialScore = options.rollItem.targetScore
options.isNudge = (options.rollType !== "san")
break break
case "resource": case "resource":
hasModifier = false hasModifier = false
@ -143,20 +133,15 @@ export default class CthulhuEternalRoll extends Roll {
options.rollItem.enableHand = true options.rollItem.enableHand = true
options.rollItem.enableStowed = true options.rollItem.enableStowed = true
options.rollItem.enableStorage = true options.rollItem.enableStorage = true
options.isNudge = false
break break
case "damage": case "damage":
let formula = options.rollItem.system.damage let formula = options.rollItem.system.damage
if ( options.rollItem.system.weaponType === "melee" || options.rollItem.system.weaponType === "unarmed") {
formula += ` + ${options.rollItem.damageBonus}`
}
let damageRoll = new Roll(formula) let damageRoll = new Roll(formula)
await damageRoll.evaluate() await damageRoll.evaluate()
await damageRoll.toMessage({ await damageRoll.toMessage({
flavor: `${options.rollItem.name} - Damage Roll` flavor: `${options.rollItem.name} - Damage Roll`
}); });
let isLethal = false let isLethal = false
options.isNudge = false
if (options.rollItem.system.lethality > 0) { if (options.rollItem.system.lethality > 0) {
let lethalityRoll = new Roll("1d100") let lethalityRoll = new Roll("1d100")
await lethalityRoll.evaluate() await lethalityRoll.evaluate()
@ -168,14 +153,8 @@ export default class CthulhuEternalRoll extends Roll {
return return
case "weapon": case "weapon":
let era = game.settings.get("fvtt-cthulhu-eternal", "settings-era") let era = game.settings.get("fvtt-cthulhu-eternal", "settings-era")
if (era !== options.rollItem.system.settings) {
ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.WrongEra"))
console.log("WP Wrong Era", era, options.rollItem.system.weaponType)
return
}
if (!SYSTEM.WEAPON_SKILL_MAPPING[era] || !SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) { if (!SYSTEM.WEAPON_SKILL_MAPPING[era] || !SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) {
ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponType")) ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponType"))
console.log("WP Not found", era, options.rollItem.system.weaponType)
return return
} }
let skillName = game.i18n.localize(SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) let skillName = game.i18n.localize(SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType])
@ -280,7 +259,7 @@ export default class CthulhuEternalRoll extends Roll {
rollData.rollMode = rollContext.visibility rollData.rollMode = rollContext.visibility
// Update target score // Update target score
console.log("Rolldata", rollData, options) console.log(rollData)
if (options.rollType === "resource" ) { if (options.rollType === "resource" ) {
rollData.targetScore = options.initialScore * Number(rollContext.multiplier) rollData.targetScore = options.initialScore * Number(rollContext.multiplier)
} else { } else {
@ -294,51 +273,45 @@ export default class CthulhuEternalRoll extends Roll {
rollData.targetScore = Math.min(Math.max(rollData.targetScore, 0), 100) rollData.targetScore = Math.min(Math.max(rollData.targetScore, 0), 100)
} }
/**
* A hook event that fires before the roll is made.
*/
if (Hooks.call("fvtt-cthulhu-eternal.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()
roll.displayRollResult(roll, options, rollData)
if (Hooks.call("fvtt-cthulhu-eternal.Roll", options, rollData, roll) === false) return
return roll
}
displayRollResult(formula, options, rollData) {
// Compute the result quality // Compute the result quality
let resultType = "failure" let resultType = "failure"
let dec = Math.floor(this.total / 10) let dec = Math.floor(roll.total / 10)
let unit = this.total - (dec * 10) let unit = roll.total - (dec * 10)
if (this.total <= rollData.targetScore) { if (roll.total <= rollData.targetScore) {
resultType = "success" resultType = "success"
// Detect if decimal == unit in the dire total result // Detect if decimal == unit in the dire total result
if (dec === unit || this.total === 1) { if (dec === unit || roll.total === 1) {
resultType = "successCritical" resultType = "successCritical"
} }
} else { } else {
// Detect if decimal == unit in the dire total result // Detect if decimal == unit in the dire total result
if (dec === unit || this.total === 100) { if (dec === unit || roll.total === 100) {
resultType = "failureCritical" resultType = "failureCritical"
} }
} }
this.options.resultType = resultType roll.options.resultType = resultType
if (this.options.isNudgedRoll) { roll.options.isSuccess = resultType === "success" || resultType === "successCritical"
this.options.isSuccess = resultType === "success" || resultType === "successCritical" roll.options.isFailure = resultType === "failure" || resultType === "failureCritical"
this.options.isFailure = resultType === "failure" || resultType === "failureCritical" roll.options.isCritical = resultType === "successCritical" || resultType === "failureCritical"
this.options.isCritical = false roll.options.isLowWP = rollData.isLowWP
} else { roll.options.isZeroWP = rollData.isZeroWP
this.options.isSuccess = resultType === "success" || resultType === "successCritical" roll.options.isExhausted = rollData.isExhausted
this.options.isFailure = resultType === "failure" || resultType === "failureCritical"
this.options.isCritical = resultType === "successCritical" || resultType === "failureCritical" /**
} * A hook event that fires after the roll has been made.
this.options.isLowWP = rollData.isLowWP */
this.options.isZeroWP = rollData.isZeroWP if (Hooks.call("fvtt-cthulhu-eternal.Roll", options, rollData, roll) === false) return
this.options.isExhausted = rollData.isExhausted
this.options.rollData = foundry.utils.duplicate(rollData) return roll
} }
/** /**
@ -414,8 +387,9 @@ export default class CthulhuEternalRoll extends Roll {
cardData.isLowWP = this.isLowWP cardData.isLowWP = this.isLowWP
cardData.isZeroWP = this.isZeroWP cardData.isZeroWP = this.isZeroWP
cardData.isExhausted = this.isExhausted cardData.isExhausted = this.isExhausted
cardData.isNudgedRoll = this.isNudgedRoll
cardData.wpCost = this.wpCost
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()

View File

@ -9,7 +9,5 @@ export { default as CthulhuEternalBond } from "./bond.mjs"
export { default as CthulhuEternalGear } from "./gear.mjs" export { default as CthulhuEternalGear } from "./gear.mjs"
export { default as CthulhuEternalMotivation } from "./motivation.mjs" export { default as CthulhuEternalMotivation } from "./motivation.mjs"
export { default as CthulhuEternalArchetype } from "./archetype.mjs" export { default as CthulhuEternalArchetype } from "./archetype.mjs"
export { default as CthulhuEternalRitual } from "./ritual.mjs"
export { default as CthulhuEternalVehicle } from "./vehicle.mjs" export { default as CthulhuEternalVehicle } from "./vehicle.mjs"
export { default as CthulhuEternalTome } from "./tome.mjs"

View File

@ -5,8 +5,7 @@ export default class CthulhuEternalArchetype extends foundry.abstract.TypeDataMo
const requiredInteger = { required: true, nullable: false, integer: true } const requiredInteger = { required: true, nullable: false, integer: true }
const schema = {} const schema = {}
let setting = game.settings.get("fvtt-cthulhu-eternal", "settings-era") || "modern" schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.settings = new fields.StringField({ required: true, initial: setting, choices: SYSTEM.AVAILABLE_SETTINGS })
schema.description = new fields.HTMLField({ schema.description = new fields.HTMLField({
required: false, required: false,
@ -20,5 +19,4 @@ export default class CthulhuEternalArchetype extends foundry.abstract.TypeDataMo
/** @override */ /** @override */
static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Archetype"] static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Archetype"]
} }

View File

@ -6,10 +6,7 @@ export default class CthulhuEternalArmor extends foundry.abstract.TypeDataModel
const requiredInteger = { required: true, nullable: false, integer: true } const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true }) schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
let setting = game.settings.get("fvtt-cthulhu-eternal", "settings-era") || "modern"
schema.settings = new fields.StringField({ required: true, initial: setting, choices: SYSTEM.AVAILABLE_SETTINGS })
schema.protection = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) schema.protection = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })

View File

@ -7,10 +7,7 @@ export default class CthulhuEternalGHear extends foundry.abstract.TypeDataModel
const requiredInteger = { required: true, nullable: false, integer: true } const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true }) schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
let setting = game.settings.get("fvtt-cthulhu-eternal", "settings-era") || "modern"
schema.settings = new fields.StringField({ required: true, initial: setting, choices: SYSTEM.AVAILABLE_SETTINGS })
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })
schema.state = new fields.StringField({ required: true, initial: "pristine", choices: SYSTEM.EQUIPMENT_STATES }) schema.state = new fields.StringField({ required: true, initial: "pristine", choices: SYSTEM.EQUIPMENT_STATES })

View File

@ -165,6 +165,7 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
} }
} }
isLowWP() { isLowWP() {
return this.wp.value <= 2 return this.wp.value <= 2
} }
@ -177,17 +178,6 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
return this.wp.exhausted return this.wp.exhausted
} }
modifyWP(value) {
let updates = {}
let wp = Math.max(Math.min(this.wp.value + value, this.wp.max), 0)
if ( this.wp.value !== wp) {
updates[`system.wp.value`] = wp
}
if (Object.keys(updates).length > 0) {
this.parent.update(updates)
}
}
setBP() { setBP() {
let updates = {} let updates = {}
let bp = Math.max(this.san.value - this.characteristics.pow.value, 0) let bp = Math.max(this.san.value - this.characteristics.pow.value, 0)

View File

@ -1,24 +0,0 @@
import { SYSTEM } from "../config/system.mjs"
export default class CthulhuEternalRitual extends foundry.abstract.TypeDataModel {
static defineSchema() {
const fields = foundry.data.fields
const requiredInteger = { required: true, nullable: false, integer: true }
const schema = {}
schema.ritualType = new fields.StringField({ required: true, initial: "simple", choices: SYSTEM.RITUAL_TYPES })
schema.studyTime = new fields.StringField({ required: true, initial: "X days", textSearch: true })
schema.studySAN = new fields.StringField({ required: true, initial: "1d4", textSearch: true })
schema.activationTime = new fields.StringField({ required: true, initial: "X turns", textSearch: true })
schema.activationWP = new fields.StringField({ required: true, initial: "1d4", textSearch: true })
schema.activationSAN = new fields.StringField({ required: true, initial: "1d6", textSearch: true })
schema.description = new fields.HTMLField({ required: true, textSearch: true })
return schema
}
/** @override */
static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Ritual"]
}

View File

@ -6,9 +6,7 @@ export default class CthulhuEternalSkill extends foundry.abstract.TypeDataModel
const requiredInteger = { required: true, nullable: false, integer: true } const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true }) schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
let setting = game.settings.get("fvtt-cthulhu-eternal", "settings-era") || "modern"
schema.settings = new fields.StringField({ required: true, initial: setting, choices: SYSTEM.AVAILABLE_SETTINGS })
schema.base = new fields.StringField({ required: true, initial: "0" }) schema.base = new fields.StringField({ required: true, initial: "0" })
schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })

View File

@ -1,64 +0,0 @@
import { SYSTEM } from "../config/system.mjs";
export default class CthulhuEternalTome extends foundry.abstract.TypeDataModel {
static defineSchema() {
const fields = foundry.data.fields;
const schema = {};
let setting = game.settings.get("fvtt-cthulhu-eternal", "settings-era") || "modern"
schema.minimumEra = new fields.StringField({ required: true, initial: setting, choices: SYSTEM.AVAILABLE_SETTINGS })
schema.creationDate = new fields.StringField({
required: true,
initial: "",
textSearch: true
});
// Language field
schema.language = new fields.StringField({
required: true,
initial: "Latin",
textSearch: true
});
// studyTime field
schema.studyTime = new fields.StringField({
required: true,
initial: "X days",
textSearch: true
});
// SAN loss field
schema.sanLoss = new fields.StringField({
required: true,
initial: "1d4",
textSearch: true
});
// Unnatural skill field
schema.unnaturalSkill = new fields.StringField({
required: true,
initial: "1d4",
textSearch: true
});
schema.rituals = new fields.StringField({
required: true,
initial: "",
textSearch: true
});
schema.otherBenefits = new fields.StringField({
required: true,
initial: "",
textSearch: true
});
schema.description = new fields.HTMLField({ required: true, textSearch: true })
return schema;
}
/** @override */
static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Tome"];
}

View File

@ -7,8 +7,7 @@ export default class CthulhuEternalVehicle extends foundry.abstract.TypeDataMode
const requiredInteger = { required: true, nullable: false, integer: true } const requiredInteger = { required: true, nullable: false, integer: true }
const schema = {} const schema = {}
let setting = game.settings.get("fvtt-cthulhu-eternal", "settings-era") || "modern" schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.settings = new fields.StringField({ required: true, initial: setting, choices: SYSTEM.AVAILABLE_SETTINGS })
schema.hp = new fields.SchemaField({ schema.hp = new fields.SchemaField({
value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),

View File

@ -7,9 +7,7 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
const requiredInteger = { required: true, nullable: false, integer: true } const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true }) schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
let setting = game.settings.get("fvtt-cthulhu-eternal", "settings-era") || "modern"
schema.settings = new fields.StringField({ required: true, initial: setting, choices: SYSTEM.AVAILABLE_SETTINGS })
schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE })
schema.damage = new fields.StringField({required: true, initial: "1d6"}) schema.damage = new fields.StringField({required: true, initial: "1d6"})

View File

@ -1,6 +1,4 @@
import CthulhuEternalRoll from "./documents/roll.mjs"
export default class CthulhuEternalUtils { export default class CthulhuEternalUtils {
static registerSettings() { static registerSettings() {
@ -179,82 +177,12 @@ export default class CthulhuEternalUtils {
} }
static async nudgeRoll(rollMessage) {
let dialogContext = rollMessage.rolls[0]?.options
let actor = game.actors.get(dialogContext.actorId)
dialogContext.wpValue = actor.system.wp.value
dialogContext.rollResultIndex = rollMessage.rolls[0].total - 1
dialogContext.minValue = Math.max(rollMessage.rolls[0].total - (dialogContext.wpValue * 5), 1)
dialogContext.maxValue = Math.min(rollMessage.rolls[0].total + (dialogContext.wpValue * 5), 100)
dialogContext.wpCost = 0
// Build options table for the select operator between minValue and maxValue
dialogContext.nudgeOptions = Array.from({ length: dialogContext.maxValue - dialogContext.minValue + 1 }, (_, i) => dialogContext.minValue + i)
console.log(dialogContext)
const content = await renderTemplate("systems/fvtt-cthulhu-eternal/templates/nudge-dialog.hbs", dialogContext)
const title = game.i18n.localize("CTHULHUETERNAL.Roll.nudgeRoll")
const rollContext = await foundry.applications.api.DialogV2.wait({
window: { title: title },
classes: ["fvtt-cthulhu-eternal"],
content,
buttons: [
{
action: "apply",
label: game.i18n.localize("CTHULHUETERNAL.Roll.applyNudge"),
callback: (event, button, dialog) => {
const output = Array.from(button.form.elements).reduce((obj, input) => {
if (input.name) obj[input.name] = input.value
return obj
}, {})
return output
},
},
{
action: "cancel",
label: game.i18n.localize("CTHULHUETERNAL.Roll.cancel"),
callback: (event, button, dialog) => { }
}
],
actions: {
},
rejectClose: false, // Click on Close button will not launch an error
render: (event, dialog) => {
$(".nudged-score-select").change(event => {
dialogContext.nudgedValue = Number(event.target.value)+1
dialogContext.wpCost = Math.ceil(Math.abs(rollMessage.rolls[0].total - dialogContext.nudgedValue) / 5)
$("#nudged-wp-cost").val(dialogContext.wpCost)
})
}
})
// If the user cancels the dialog, exit
if (rollContext === null || dialogContext.wpCost === 0) {
return
}
const roll = new CthulhuEternalRoll(String(dialogContext.nudgedValue))
await roll.evaluate()
roll.options = dialogContext
roll.options.isNudgedRoll = true
roll.options.isNudge = false
roll.displayRollResult(roll, dialogContext, dialogContext.rollData)
roll.toMessage()
actor.system.modifyWP(-dialogContext.wpCost)
}
static setupCSSRootVariables() { static setupCSSRootVariables() {
const era = game.settings.get("fvtt-cthulhu-eternal", "settings-era") const era = game.settings.get("fvtt-cthulhu-eternal", "settings-era")
let eraCSS = SYSTEM.ERA_CSS[era]; let eraCSS = SYSTEM.ERA_CSS[era];
if (!eraCSS) eraCSS = SYSTEM.ERA_CSS["jazz"]; if (!eraCSS) eraCSS = SYSTEM.ERA_CSS["jazz"];
document.documentElement.style.setProperty('--font-size-standard', eraCSS.baseFontSize);
document.documentElement.style.setProperty('--font-size-title', eraCSS.titleFontSize);
document.documentElement.style.setProperty('--font-size-result', eraCSS.titleFontSize);
document.documentElement.style.setProperty('--font-primary', eraCSS.primaryFont); document.documentElement.style.setProperty('--font-primary', eraCSS.primaryFont);
document.documentElement.style.setProperty('--font-secondary', eraCSS.secondaryFont); document.documentElement.style.setProperty('--font-secondary', eraCSS.secondaryFont);
document.documentElement.style.setProperty('--font-title', eraCSS.titleFont); document.documentElement.style.setProperty('--font-title', eraCSS.titleFont);

View File

@ -1 +1 @@
MANIFEST-000128 MANIFEST-000076

View File

@ -1,8 +1,8 @@
2025/02/07-07:58:04.988627 7ffae7fff6c0 Recovering log #126 2025/01/25-20:17:02.992814 7f697a7fc6c0 Recovering log #74
2025/02/07-07:58:04.998629 7ffae7fff6c0 Delete type=3 #124 2025/01/25-20:17:03.002900 7f697a7fc6c0 Delete type=3 #72
2025/02/07-07:58:04.998698 7ffae7fff6c0 Delete type=0 #126 2025/01/25-20:17:03.002968 7f697a7fc6c0 Delete type=0 #74
2025/02/07-08:34:42.926911 7ffae6bff6c0 Level-0 table #131: started 2025/01/25-20:19:31.386247 7f6978bff6c0 Level-0 table #79: started
2025/02/07-08:34:42.926943 7ffae6bff6c0 Level-0 table #131: 0 bytes OK 2025/01/25-20:19:31.386288 7f6978bff6c0 Level-0 table #79: 0 bytes OK
2025/02/07-08:34:42.933490 7ffae6bff6c0 Delete type=0 #129 2025/01/25-20:19:31.417028 7f6978bff6c0 Delete type=0 #77
2025/02/07-08:34:42.933666 7ffae6bff6c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) 2025/01/25-20:19:31.593890 7f6978bff6c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
2025/02/07-08:34:42.944681 7ffae6bff6c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) 2025/01/25-20:19:31.593942 7f6978bff6c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2025/02/06-23:17:39.180197 7ffaecbf96c0 Recovering log #122 2025/01/25-20:09:49.585129 7f697a7fc6c0 Recovering log #70
2025/02/06-23:17:39.191385 7ffaecbf96c0 Delete type=3 #120 2025/01/25-20:09:49.662901 7f697a7fc6c0 Delete type=3 #68
2025/02/06-23:17:39.191461 7ffaecbf96c0 Delete type=0 #122 2025/01/25-20:09:49.662960 7f697a7fc6c0 Delete type=0 #70
2025/02/07-00:19:54.566098 7ffae6bff6c0 Level-0 table #127: started 2025/01/25-20:11:19.050068 7f6978bff6c0 Level-0 table #75: started
2025/02/07-00:19:54.566176 7ffae6bff6c0 Level-0 table #127: 0 bytes OK 2025/01/25-20:11:19.050103 7f6978bff6c0 Level-0 table #75: 0 bytes OK
2025/02/07-00:19:54.572437 7ffae6bff6c0 Delete type=0 #125 2025/01/25-20:11:19.078755 7f6978bff6c0 Delete type=0 #73
2025/02/07-00:19:54.583220 7ffae6bff6c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) 2025/01/25-20:11:19.078917 7f6978bff6c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
2025/02/07-00:19:54.596307 7ffae6bff6c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) 2025/01/25-20:11:19.078946 7f6978bff6c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -44,19 +44,9 @@
src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype"); src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype");
} }
@font-face {
font-family: "ChantelliAntiqua";
src: url("../assets/fonts/Chantelli_Antiqua.ttf") format("truetype");
}
@font-face { @font-face {
font-family: "IMFell"; font-family: "IMFell";
src: url("../assets/fonts/IMFeDPrm28P.ttf") format("truetype"); src: url("../assets/fonts/IMFell.ttf") format("truetype");
}
@font-face {
font-family: "SailRegular";
src: url("../assets/fonts/Sail-Regular.ttf") format("truetype");
} }
@font-face { @font-face {

View File

@ -16,8 +16,6 @@
@import "gear.less"; @import "gear.less";
@import "arcane.less"; @import "arcane.less";
@import "archetype.less"; @import "archetype.less";
@import "ritual.less";
@import "tome.less";
} }
@import "roll.less"; @import "roll.less";

View File

@ -1,13 +1,13 @@
:root { :root {
--font-size-standard: 0.9rem; --font-size-standard: 0.9rem;
--font-size-result: 1.4rem;
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), --background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)),
url("../assets/ui/jazz_background_main.webp"); url("../assets/ui/jazz_background_main.webp");
/*--background-image-base: url("../assets/ui/jazzage_background_main.webp");*/
--font-primary: "RozhaOne"; --font-primary: "RozhaOne";
--font-secondary: "RozhaOne"; --font-secondary: "RozhaOne";
--font-title: "Broadway"; --font-title: "Broadway";
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp"); --logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
--color-success: rgb(15, 122, 15); --color-success: rgb(18, 233, 18);
--color-failure: darkred; --color-failure: darkred;
--color-warning: darkorange; --color-warning: darkorange;
--color-critical-success: rgb(21, 39, 204); --color-critical-success: rgb(21, 39, 204);

View File

@ -34,25 +34,6 @@
} }
} }
.protagonist-hp {
gap: 2px;
align-items: center;
input {
flex: none;
width: 2rem;
margin-left: 4px;
}
.damage-bonus {
font-size: calc(var(--font-size-standard) * 0.8);
}
.hp-separator {
font-size: calc(var(--font-size-standard) * 1.2);
display: flex;
align-items: center;
justify-content: center;
}
}
.protagonist-dv, .protagonist-dv,
.protagonist-dmax { .protagonist-dmax {
.form-fields { .form-fields {
@ -81,7 +62,7 @@
display: flex; display: flex;
input { input {
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-title); font-size: calc(var(--font-size-standard) * 1.4);
width: 400px; width: 400px;
} }
} }
@ -165,10 +146,50 @@
min-width: 1rem; min-width: 1rem;
max-width: 1rem; max-width: 1rem;
} }
} }
.protagonist-infos {
display: flex;
flex-direction: column;
gap: 4px;
label { label {
min-width: 120px; min-width: 120px;
} }
.protagonist-hp {
display: flex;
gap: 2px;
align-items: center;
.protagonist-hp-value {
.form-fields input {
flex: none;
width: 50px;
margin-left: 4px;
font-size: calc(var(--font-size-standard) * 1.4);
}
}
.protagonist-hp-max {
clear: both;
display: flex;
flex-direction: row;
flex-wrap: wrap;
margin: 3px 0;
align-items: center;
input {
width: 50px;
text-align: center;
font-size: calc(var(--font-size-standard) * 1.4);
}
}
.hp-separator {
font-size: calc(var(--font-size-standard) * 1.2);
display: flex;
align-items: center;
justify-content: center;
}
}
}
} }
} }
@ -202,10 +223,6 @@
.char-text { .char-text {
margin-left: 0.5rem; margin-left: 0.5rem;
} }
.d100 {
flex: 0;
max-width: 0.6rem;
}
.form-group { .form-group {
flex: 0; flex: 0;
padding-left: 5px; padding-left: 5px;
@ -263,7 +280,7 @@
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
gap: 8px; gap: 8px;
label { label {
min-width: 3rem; min-width: 3.0rem;
} }
.feature { .feature {
display: flex; display: flex;
@ -273,6 +290,32 @@
max-width: 18rem; max-width: 18rem;
} }
} }
.motivations {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
.motivation {
display: flex;
align-items: center;
gap: 4px;
min-width: 14rem;
max-width: 14rem;
.controls {
min-width: 2rem;
max-width: 2rem;
}
.name {
min-width: 8rem;
max-width: 8rem;
}
.item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
}
}
} }
.tab.protagonist-skills { .tab.protagonist-skills {
@ -293,26 +336,20 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 4px;
margin-left: 4px; min-width: 10rem;
min-width: 12.3rem; max-width: 10rem;
max-width: 12.3rem;
.rollable:hover, .rollable:hover,
.rollable:focus { .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary); text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer; cursor: pointer;
} }
.controls { .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
}
.score {
min-width: 1.2rem;
max-width: 1.2rem;
} }
.name { .name {
min-width: 10rem; min-width: 8rem;
max-width: 10rem; max-width: 8rem;
} }
.item-img { .item-img {
width: 24px; width: 24px;
@ -333,7 +370,6 @@
padding-left: 5px; padding-left: 5px;
} }
} }
.bonds { .bonds {
display: grid; display: grid;
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
@ -342,20 +378,19 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 4px;
min-width: 18rem; min-width: 16rem;
max-width: 18rem; max-width: 16rem;
.controls { .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.name { .name {
min-width: 12rem; min-width: 12rem;
max-width: 12rem; max-width: 12rem;
} }
.type { .type {
min-width: 6rem; min-width: 5rem;
max-width: 6rem; max-width: 5rem;
} }
.level { .level {
min-width: 2rem; min-width: 2rem;
@ -368,34 +403,6 @@
} }
} }
} }
.motivations {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
.motivation {
display: flex;
align-items: center;
gap: 4px;
min-width: 14rem;
max-width: 14rem;
.controls {
font-size: 0.7rem;
min-width: 1.8rem;
max-width: 1.8rem;
}
.name {
min-width: 12rem;
max-width: 12rem;
}
.item-img {
width: 24px;
height: 24px;
margin: 4px 0 0 0;
}
}
}
.mentaldisorders { .mentaldisorders {
display: grid; display: grid;
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
@ -404,21 +411,16 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 4px;
min-width: 18rem; min-width: 16rem;
max-width: 18rem; max-width: 16rem;
.controls { .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.name { .name {
min-width: 14rem; min-width: 14rem;
max-width: 14rem; max-width: 14rem;
} }
.cured {
min-width: 5rem;
max-width: 5rem;
}
.item-img { .item-img {
width: 24px; width: 24px;
height: 24px; height: 24px;
@ -426,7 +428,6 @@
} }
} }
} }
.injuries { .injuries {
display: grid; display: grid;
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
@ -438,9 +439,8 @@
min-width: 16rem; min-width: 16rem;
max-width: 16rem; max-width: 16rem;
.controls { .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.name { .name {
min-width: 14rem; min-width: 14rem;
@ -481,9 +481,8 @@
cursor: pointer; cursor: pointer;
} }
.controls { .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.damage { .damage {
min-width: 6rem; min-width: 6rem;
@ -509,16 +508,15 @@
align-items: center; align-items: center;
gap: 4px; gap: 4px;
min-width: 13rem; min-width: 13rem;
max-width: 13rem; max-width: 13srem;
.rollable:hover, .rollable:hover,
.rollable:focus { .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary); text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer; cursor: pointer;
} }
.controls { .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem;
} }
.protection { .protection {
min-width: 5rem; min-width: 5rem;
@ -535,7 +533,6 @@
} }
} }
} }
.gears { .gears {
display: grid; display: grid;
grid-template-columns: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr);
@ -545,84 +542,23 @@
align-items: center; align-items: center;
gap: 4px; gap: 4px;
min-width: 13rem; min-width: 13rem;
max-width: 13rem; max-width: 13srem;
.rollable:hover, .rollable:hover,
.rollable:focus { .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary); text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer; cursor: pointer;
} }
.controls { .controls {
font-size: 0.7rem; min-width: 2rem;
min-width: 1.8rem; max-width: 2rem;
max-width: 1.8rem; }
.damage {
min-width: 5rem;
max-width: 5rem;
} }
.name { .name {
min-width: 10rem; min-width: 8rem;
max-width: 10rem; max-width: 8rem;
}
.item-img {
width: 24px;
height: 24px;
margin: 4px 0 0 0;
}
}
}
.rituals {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
.ritual {
display: flex;
align-items: center;
gap: 4px;
min-width: 20rem;
max-width: 20rem;
.rollable:hover,
.rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.controls {
font-size: 0.7rem;
min-width: 1.8rem;
max-width: 1.8rem;
}
.name {
min-width: 17rem;
max-width: 17rem;
}
.item-img {
width: 24px;
height: 24px;
margin: 4px 0 0 0;
}
}
}
.tomes {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
.tome {
display: flex;
align-items: center;
gap: 4px;
min-width: 20rem;
max-width: 20rem;
.rollable:hover,
.rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.controls {
font-size: 0.7rem;
min-width: 1.8rem;
max-width: 1.8rem;
}
.name {
min-width: 17rem;
max-width: 17rem;
} }
.item-img { .item-img {
width: 24px; width: 24px;

View File

@ -1,22 +0,0 @@
.ritual-content {
.sheet-common();
.item-sheet-common();
fieldset {
margin-top: 8px;
background-color: var(--color-light-1);
}
.header {
background-color: var(--color-light-1);
display: flex;
img {
width: 50px;
height: 50px;
}
}
label {
flex: 10%;
}
}

View File

@ -31,7 +31,7 @@
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: 4rem; width: 60px;
text-align: center; text-align: center;
} }
} }
@ -93,30 +93,25 @@
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);
} }
.nudge-roll {
font-size: calc(var(--font-size-standard) * 1.0);
margin-left: 4rem;
display: none;
}
.result-success { .result-success {
color: var(--color-success); color: var(--color-success);
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-result); font-size: calc(var(--font-size-standard) * 1.2);
} }
.result-critical-success { .result-critical-success {
color: var(--color-critical-success); color: var(--color-critical-success);
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-result); font-size: calc(var(--font-size-standard) * 1.2);
} }
.result-failure { .result-failure {
color: var(--color-failure); color: var(--color-failure);
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-result); font-size: calc(var(--font-size-standard) * 1.2);
} }
.result-critical-failure { .result-critical-failure {
color: var(--color-critical-failure); color: var(--color-critical-failure);
font-family: var(--font-title); font-family: var(--font-title);
font-size: var(--font-size-result); font-size: calc(var(--font-size-standard) * 1.2);
} }
} }
.introText { .introText {

View File

@ -1,22 +0,0 @@
.tome-content {
.sheet-common();
.item-sheet-common();
fieldset {
margin-top: 8px;
background-color: var(--color-light-1);
}
.header {
background-color: var(--color-light-1);
display: flex;
img {
width: 50px;
height: 50px;
}
}
label {
flex: 10%;
}
}

View File

@ -6,7 +6,7 @@
"download": "#{DOWNLOAD}#", "download": "#{DOWNLOAD}#",
"url": "https://www.uberwald.me/gitea/public/fvtt-cthulhu-eternal", "url": "https://www.uberwald.me/gitea/public/fvtt-cthulhu-eternal",
"license": "LICENSE", "license": "LICENSE",
"version": "12.0.5", "version": "12.0.4",
"authors": [ "authors": [
{ {
"name": "Uberwald", "name": "Uberwald",
@ -47,9 +47,7 @@
"motivation": { "htmlFields": ["description"] }, "motivation": { "htmlFields": ["description"] },
"arcane": { "htmlFields": ["description"] }, "arcane": { "htmlFields": ["description"] },
"gear": { "htmlFields": ["description"] }, "gear": { "htmlFields": ["description"] },
"archetype": { "htmlFields": ["description"] }, "archetype": { "htmlFields": ["description"] }
"ritual": { "htmlFields": ["description"] },
"tome": { "htmlFields": ["description"] }
} }
}, },
"packs": [ "packs": [

View File

@ -14,10 +14,6 @@
<li><strong>{{localize "CTHULHUETERNAL.Label.skillRoll"}}</strong></li> <li><strong>{{localize "CTHULHUETERNAL.Label.skillRoll"}}</strong></li>
{{/if}} {{/if}}
{{#if isNudgedRoll}}
<li><strong>{{localize "CTHULHUETERNAL.Label.nudgedRoll"}} : {{wpCost}} WP spent</strong></li>
{{/if}}
{{#if weapon}} {{#if weapon}}
<li><strong>Weapon : {{weapon.name}}</strong></li> <li><strong>Weapon : {{weapon.name}}</strong></li>
{{/if}} {{/if}}
@ -51,24 +47,14 @@
{{#if isCritical}} {{#if isCritical}}
<li class="result-critical-success">{{localize "CTHULHUETERNAL.Label.criticalSuccess"}}</li> <li class="result-critical-success">{{localize "CTHULHUETERNAL.Label.criticalSuccess"}}</li>
{{else}} {{else}}
<li class="result-success"> <li class="result-success">{{localize "CTHULHUETERNAL.Label.success"}}</li>
{{localize "CTHULHUETERNAL.Label.success"}}
{{#if isNudge}}
<a class="nudge-roll"><i class="fa-solid fa-circle-sort-down"></i></a>
{{/if}}
</li>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if isFailure}} {{#if isFailure}}
{{#if isCritical}} {{#if isCritical}}
<li class="result-critical-failure">{{localize "CTHULHUETERNAL.Label.criticalFailure"}}</li> <li class="result-critical-failure">{{localize "CTHULHUETERNAL.Label.criticalFailure"}}</li>
{{else}} {{else}}
<li class="result-failure"> <li class="result-failure">{{localize "CTHULHUETERNAL.Label.failure"}}</li>
{{localize "CTHULHUETERNAL.Label.failure"}}
{{#if isNudge}}
<a class="nudge-roll"><i class="fa-solid fa-circle-sort-down"></i></a>
{{/if}}
</li>
{{/if}} {{/if}}
{{/if}} {{/if}}
</ul> </ul>

39
templates/manager.hbs Normal file
View File

@ -0,0 +1,39 @@
<table class="tenebris-table">
<thead>
<tr>
<th>{{localize "TENEBRIS.Manager.player"}}</th>
<th>{{localize "TENEBRIS.Manager.character"}}</th>
<th>{{localize "TENEBRIS.Manager.pv"}}</th>
<td data-action="saveAll" data-save="rob">{{localize "TENEBRIS.Manager.rob"}}</td>
<td data-action="saveAll" data-save="dex">{{localize "TENEBRIS.Manager.dex"}}</td>
<td data-action="saveAll" data-save="int">{{localize "TENEBRIS.Manager.int"}}</td>
<td data-action="saveAll" data-save="per">{{localize "TENEBRIS.Manager.per"}}</td>
<td data-action="saveAll" data-save="vol">{{localize "TENEBRIS.Manager.vol"}}</td>
<td data-action="resourceAll" data-resource="san">{{localize "TENEBRIS.Manager.san"}}</td>
<td data-action="resourceAll" data-resource="oeil">{{localize "TENEBRIS.Manager.oeil"}}</td>
<td data-action="resourceAll" data-resource="verbe">{{localize "TENEBRIS.Manager.verbe"}}</td>
<td data-action="resourceAll" data-resource="bourse">{{localize "TENEBRIS.Manager.bourse"}}</td>
<td data-action="resourceAll" data-resource="magie">{{localize "TENEBRIS.Manager.magie"}}</td>
</tr>
</thead>
<tbody>
{{#each players as |player|}}
{{!log "player" this}}
<tr class="player" data-user-id="{{player.id}}" data-character-name="{{player.character.name}}" data-character-id="{{player.character.id}}">
<td>{{player.name}}</td>
<td data-action="openSheet" data-character-id="{{player.character.id}}">{{player.character.name}}</td>
<td>{{player.character.system.pv.value}}</td>
<td data-action="saveOne" data-save="rob">{{player.character.system.caracteristiques.rob.valeur}}</td>
<td data-action="saveOne" data-save="dex">{{player.character.system.caracteristiques.dex.valeur}}</td>
<td data-action="saveOne" data-save="int">{{player.character.system.caracteristiques.int.valeur}}</td>
<td data-action="saveOne" data-save="per">{{player.character.system.caracteristiques.per.valeur}}</td>
<td data-action="saveOne" data-save="vol">{{player.character.system.caracteristiques.vol.valeur}}</td>
<td data-action="resourceOne" data-resource="san">{{player.character.system.ressources.san.valeur}}</td>
<td data-action="resourceOne" data-resource="oeil">{{player.character.system.ressources.oeil.valeur}}</td>
<td data-action="resourceOne" data-resource="verbe">{{player.character.system.ressources.verbe.valeur}}</td>
<td data-action="resourceOne" data-resource="bourse">{{player.character.system.ressources.bourse.valeur}}</td>
<td data-action="resourceOne" data-resource="magie">{{player.character.system.ressources.magie.valeur}}</td>
</tr>
{{/each}}
</tbody>
</table>

View File

@ -1,18 +0,0 @@
<div class="fvtt-cthulhu-eternal-roll-dialog">
<fieldSet class="dialog-modifier">
<legend>{{localize "CTHULHUETERNAL.Label.selectNewValue"}}</legend>
<select name="modifiedValue" class="nudged-score-select">
{{selectOptions nudgeOptions selected=rollResultIndex}}
</select>
</fieldSet>
<fieldSet>
<legend>{{localize "CTHULHUETERNAL.Label.wpCost"}}</legend>
<div>
Willpower points cost :
<input class="text" value="0" id="nudged-wp-cost" disabled >
</div>
</fieldSet>
</div>

View File

@ -81,55 +81,4 @@
</div> </div>
</fieldset> </fieldset>
{{#if (count tomes)}}
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.Tomes"}}{{#if isEditMode}}
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addTome"}}" data-tooltip-direction="UP"><i
class="fas fa-plus" data-action="createTome"></i></a>{{/if}}
</legend>
<div class="tomes">
{{#each tomes as |item|}}
<div class="tome" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
</div>
</fieldset>
{{/if}}
{{#if (count rituals)}}
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.Rituals"}}{{#if isEditMode}}
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addRitual"}}" data-tooltip-direction="UP"><i
class="fas fa-plus" data-action="createRitual"></i></a>{{/if}}
</legend>
<div class="rituals">
{{#each rituals as |item|}}
<div class="ritual" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
</div>
</fieldset>
{{/if}}
</section> </section>

View File

@ -9,16 +9,13 @@
<img class="protagonist-img" src="{{actor.img}}" data-edit="img" data-action="editImage" <img class="protagonist-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
data-tooltip="{{actor.name}}" /> data-tooltip="{{actor.name}}" />
</div> </div>
<fieldset class="protagonist-hp"> <fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.HP"}}</legend> <legend>{{localize "CTHULHUETERNAL.Label.HP"}}</legend>
<div class="flexrow"> <div class="flexrow">
{{formField systemFields.hp.fields.value value=system.hp.value}} {{formField systemFields.hp.fields.value value=system.hp.value}}
<span class="hp-separator">/</span> /
{{formField systemFields.hp.fields.max value=system.hp.max rootId=partId disabled=true}} {{formField systemFields.hp.fields.max value=system.hp.max rootId=partId disabled=true}}
</div> </div>
<div class="flexrow ">
{{formField systemFields.damageBonus value=system.damageBonus classes="damage-bonus"}}
</div>
</fieldset> </fieldset>
</div> </div>
@ -35,9 +32,8 @@
<fieldset class="san"> <fieldset class="san">
<legend>{{localize "CTHULHUETERNAL.Label.SAN"}}</legend> <legend>{{localize "CTHULHUETERNAL.Label.SAN"}}</legend>
<div class="flexrow"> <div class="flexrow">
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
<label class="label-field rollable" data-roll-type="san" ><img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" /> <label class="label-field rollable" data-roll-type="san" >{{localize "CTHULHUETERNAL.Label.current"}}</label>
{{localize "CTHULHUETERNAL.Label.current"}}</label>
{{formInput systemFields.san.fields.value value=system.san.value}} {{formInput systemFields.san.fields.value value=system.san.value}}
<span class="label-field label-recovery">{{localize "CTHULHUETERNAL.Label.recovery"}}</span> <span class="label-field label-recovery">{{localize "CTHULHUETERNAL.Label.recovery"}}</span>

View File

@ -12,7 +12,7 @@
{{item.name}} {{item.name}}
</div> </div>
<div class="type"> <div class="type">
{{upperFirst item.system.bondType}} {{item.system.bondType}}
</div> </div>
<div class="level"> <div class="level">
{{item.system.value}} {{item.system.value}}
@ -56,13 +56,6 @@
<div class="name" data-tooltip="{{{item.system.description}}}"> <div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}} {{item.name}}
</div> </div>
<div class="cured">
{{#if item.system.cured}}
{{localize 'CTHULHUETERNAL.Label.Cured'}}
{{else}}
{{localize 'CTHULHUETERNAL.Label.Uncured'}}
{{/if}}
</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>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a> <a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>

View File

@ -1,23 +0,0 @@
<section>
<div class="header">
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
{{formInput fields.name value=source.name}}
</div>
<fieldset>
{{formField systemFields.ritualType value=system.ritualType localize=true}}
{{formField systemFields.studyTime value=system.studyTime}}
{{formField systemFields.studySAN value=system.studySAN}}
{{formField systemFields.activationTime value=system.activationTime}}
{{formField systemFields.activationSAN value=system.activationSAN}}
{{formField systemFields.activationWP value=system.activationWP}}
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
</fieldset>
</section>

View File

@ -1,3 +1,4 @@
{{log "roll-dialog" this}}
<div class="fvtt-cthulhu-eternal-roll-dialog"> <div class="fvtt-cthulhu-eternal-roll-dialog">
<fieldSet> <fieldSet>
{{#if (eq rollType "skill")}} {{#if (eq rollType "skill")}}

View File

@ -1,42 +0,0 @@
<section>
<div class="header">
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
{{formInput fields.name value=source.name}}
</div>
<fieldset>
<div class="form-group">
{{formField systemFields.language value=system.language }}
</div>
<div class="form-group">
{{formField systemFields.minimumEra value=system.minimumEra localize=true }}
</div>
<div class="form-group">
{{formField systemFields.creationDate value=system.creationDate }}
</div>
<div class="form-group">
{{formField systemFields.studyTime value=system.studyTime }}
</div>
<div class="form-group">
{{formField systemFields.sanLoss value=system.sanLoss }}
</div>
<div class="form-group">
{{formField systemFields.unnaturalSkill value=system.unnaturalSkill }}
</div>
<div class="form-group">
<label>{{localize "CTHULHUETERNAL.Label.Rituals"}} </label>
<textarea class="form-control" rows="3" name="system.rituals" data-tooltip="{{localize "CTHULHUETERNAL.Label.Rituals"}}">{{system.rituals}}</textarea>
</div>
<div class="form-group">
<label>{{localize "CTHULHUETERNAL.Label.otherBenefits"}} </label>
<textarea class="form-control" rows="3" name="system.otherBenefits" data-tooltip="{{localize "CTHULHUETERNAL.Label.otherBenefits"}}">{{system.otherBenefits}}</textarea>
</div>
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
</fieldset>
</section>