Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
2ac0f53c4f | |||
270471f137 | |||
da9d0e41a5 | |||
42f25aa186 | |||
5f9057db37 | |||
82731c2d40 | |||
a75a3bf157 | |||
e6e6de35df | |||
7341580a7b | |||
75a81e589b | |||
74f237c30f | |||
440e5c0b66 | |||
554220a812 | |||
e7ea8138c9 | |||
6a18f7fa29 | |||
7070d4c1da |
@ -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/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/system.json
|
manifest: https://www.uberwald.me/gitea/public/${{gitea.repository}}/releases/download/latest/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
|
||||||
|
BIN
assets/fonts/Chantelli_Antiqua.ttf
Normal file
BIN
assets/fonts/Chantelli_Antiqua.ttf
Normal file
Binary file not shown.
BIN
assets/fonts/FeFCrm2.ttf
Normal file
BIN
assets/fonts/FeFCrm2.ttf
Normal file
Binary file not shown.
BIN
assets/fonts/FeGPrm2.ttf
Normal file
BIN
assets/fonts/FeGPrm2.ttf
Normal file
Binary file not shown.
BIN
assets/fonts/IMFeDPrm28P.ttf
Normal file
BIN
assets/fonts/IMFeDPrm28P.ttf
Normal file
Binary file not shown.
BIN
assets/fonts/Sail-Regular.ttf
Normal file
BIN
assets/fonts/Sail-Regular.ttf
Normal file
Binary file not shown.
1
assets/icons/icon_fist.svg
Normal file
1
assets/icons/icon_fist.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<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>
|
After Width: | Height: | Size: 2.6 KiB |
1
assets/icons/icon_ritual.svg
Normal file
1
assets/icons/icon_ritual.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<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>
|
After Width: | Height: | Size: 1.8 KiB |
1
assets/icons/icon_tome.svg
Normal file
1
assets/icons/icon_tome.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<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>
|
After Width: | Height: | Size: 1.4 KiB |
BIN
assets/ui/background_01.webp
Normal file
BIN
assets/ui/background_01.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 77 KiB |
@ -34,9 +34,17 @@
|
|||||||
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/IMFell.ttf") format("truetype");
|
src: url("../assets/fonts/IMFeDPrm28P.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";
|
||||||
@ -104,13 +112,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: #12e912;
|
--color-success: #0f7a0f;
|
||||||
--color-failure: darkred;
|
--color-failure: darkred;
|
||||||
--color-warning: darkorange;
|
--color-warning: darkorange;
|
||||||
--color-critical-success: #1527cc;
|
--color-critical-success: #1527cc;
|
||||||
@ -282,6 +290,24 @@ 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;
|
||||||
@ -305,7 +331,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: calc(var(--font-size-standard) * 1.4);
|
font-size: var(--font-size-title);
|
||||||
width: 400px;
|
width: 400px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san {
|
||||||
@ -387,44 +413,9 @@ 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 .protagonist-infos {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right label {
|
||||||
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;
|
||||||
}
|
}
|
||||||
@ -454,6 +445,10 @@ 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;
|
||||||
@ -515,31 +510,6 @@ 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;
|
||||||
@ -558,8 +528,9 @@ i.fvtt-cthulhu-eternal {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 10rem;
|
margin-left: 4px;
|
||||||
max-width: 10rem;
|
min-width: 12.3rem;
|
||||||
|
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 {
|
||||||
@ -567,12 +538,17 @@ 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 {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
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: 8rem;
|
min-width: 10rem;
|
||||||
max-width: 8rem;
|
max-width: 10rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
@ -597,20 +573,21 @@ i.fvtt-cthulhu-eternal {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 16rem;
|
min-width: 18rem;
|
||||||
max-width: 16rem;
|
max-width: 18rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .controls {
|
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .controls {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
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: 5rem;
|
min-width: 6rem;
|
||||||
max-width: 5rem;
|
max-width: 6rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .level {
|
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .level {
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
@ -621,6 +598,32 @@ 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);
|
||||||
@ -630,17 +633,22 @@ i.fvtt-cthulhu-eternal {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 16rem;
|
min-width: 18rem;
|
||||||
max-width: 16rem;
|
max-width: 18rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .controls {
|
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .controls {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
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;
|
||||||
@ -659,8 +667,9 @@ 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 {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
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;
|
||||||
@ -698,8 +707,9 @@ 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 {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
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;
|
||||||
@ -724,7 +734,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 13rem;
|
min-width: 13rem;
|
||||||
max-width: 13srem;
|
max-width: 13rem;
|
||||||
}
|
}
|
||||||
.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 {
|
||||||
@ -732,8 +742,9 @@ 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 {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
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;
|
||||||
@ -758,7 +769,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 13rem;
|
min-width: 13rem;
|
||||||
max-width: 13srem;
|
max-width: 13rem;
|
||||||
}
|
}
|
||||||
.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 {
|
||||||
@ -766,22 +777,81 @@ 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 {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
}
|
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: 8rem;
|
min-width: 10rem;
|
||||||
max-width: 8rem;
|
max-width: 10rem;
|
||||||
}
|
}
|
||||||
.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;
|
||||||
}
|
}
|
||||||
@ -1887,6 +1957,170 @@ 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);
|
||||||
@ -1915,7 +2149,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: 60px;
|
width: 4rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.red-warning {
|
.red-warning {
|
||||||
@ -1975,25 +2209,30 @@ 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: calc(var(--font-size-standard) * 1.2);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
.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: calc(var(--font-size-standard) * 1.2);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
.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: calc(var(--font-size-standard) * 1.2);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
.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: calc(var(--font-size-standard) * 1.2);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
.dice-roll .intro-chat .intro-right .introText {
|
.dice-roll .intro-chat .intro-right .introText {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
|
@ -47,7 +47,9 @@ 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
|
||||||
@ -66,6 +68,8 @@ 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
|
||||||
@ -114,25 +118,14 @@ Hooks.once("ready", function () {
|
|||||||
})
|
})
|
||||||
|
|
||||||
Hooks.on("renderChatMessage", (message, html, data) => {
|
Hooks.on("renderChatMessage", (message, html, data) => {
|
||||||
const typeMessage = data.message.flags.CthulhuEternal?.typeMessage
|
// Affichage des boutons de jet de dés uniquement pour les joueurs
|
||||||
// Message de demande de jet de dés
|
if (message.author.id === game.user.id) {
|
||||||
if (typeMessage === "askRoll") {
|
html.find(".nudge-roll").each((i, btn) => {
|
||||||
// Affichage des boutons de jet de dés uniquement pour les joueurs
|
btn.style.display = "inline"
|
||||||
if (game.user.isGM) {
|
})
|
||||||
html.find(".ask-roll-dice").each((i, btn) => {
|
html.find(".nudge-roll").click((event) => {
|
||||||
btn.style.display = "none"
|
CthulhuEternalUtils.nudgeRoll(message)
|
||||||
})
|
})
|
||||||
} else {
|
|
||||||
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)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
98
lang/en.json
98
lang/en.json
@ -14,7 +14,9 @@
|
|||||||
"mentaldisorder": "Mental Disorder",
|
"mentaldisorder": "Mental Disorder",
|
||||||
"bond": "Bond" ,
|
"bond": "Bond" ,
|
||||||
"arcane": "Arcane",
|
"arcane": "Arcane",
|
||||||
"archetype": "Archetype"
|
"archetype": "Archetype",
|
||||||
|
"ritual": "Ritual",
|
||||||
|
"tome": "Tome"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"CTHULHUETERNAL": {
|
"CTHULHUETERNAL": {
|
||||||
@ -37,6 +39,9 @@
|
|||||||
},
|
},
|
||||||
"Protagonist": {
|
"Protagonist": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
|
"damageBonus": {
|
||||||
|
"label": "Dmg.Bonus"
|
||||||
|
},
|
||||||
"resources": {
|
"resources": {
|
||||||
"permanentRating": {
|
"permanentRating": {
|
||||||
"label": "Permanent Rating"
|
"label": "Permanent Rating"
|
||||||
@ -324,7 +329,84 @@
|
|||||||
"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": {
|
||||||
|
"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": {
|
"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",
|
||||||
@ -424,7 +506,9 @@
|
|||||||
"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."
|
||||||
@ -437,7 +521,10 @@
|
|||||||
},
|
},
|
||||||
"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.",
|
||||||
@ -445,10 +532,11 @@
|
|||||||
},
|
},
|
||||||
"Chat": {
|
"Chat": {
|
||||||
},
|
},
|
||||||
"Notitications": {
|
"Notifications": {
|
||||||
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,4 +9,6 @@ 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"
|
||||||
|
@ -96,7 +96,6 @@ 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),
|
||||||
}
|
}
|
||||||
@ -133,70 +132,6 @@ 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
|
||||||
|
@ -20,7 +20,9 @@ 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,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,6 +110,10 @@ 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
|
||||||
@ -115,13 +121,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
|
||||||
@ -170,6 +176,14 @@ 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.
|
||||||
*
|
*
|
||||||
@ -210,6 +224,7 @@ 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)
|
||||||
@ -234,5 +249,4 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// #endregion
|
|
||||||
}
|
}
|
||||||
|
28
module/applications/sheets/ritual-sheet.mjs
Normal file
28
module/applications/sheets/ritual-sheet.mjs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
28
module/applications/sheets/tome-sheet.mjs
Normal file
28
module/applications/sheets/tome-sheet.mjs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
@ -42,18 +42,18 @@ export const INSANITY = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const ERA_CSS = {
|
export const ERA_CSS = {
|
||||||
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%)" },
|
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%)" },
|
||||||
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%)" },
|
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%)" },
|
||||||
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%)" },
|
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%)" },
|
||||||
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%)" },
|
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%)" },
|
||||||
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%)"},
|
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%)"},
|
||||||
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%)" },
|
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%)" },
|
||||||
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%)"},
|
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%)"},
|
||||||
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%)"},
|
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%)"},
|
||||||
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%)"},
|
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%)"},
|
||||||
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%)" },
|
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%)" },
|
||||||
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%)" },
|
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%)" },
|
||||||
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%))" }
|
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%))" }
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RESOURCE_RATING = {
|
export const RESOURCE_RATING = {
|
||||||
@ -113,6 +113,8 @@ 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",
|
||||||
@ -140,6 +142,13 @@ 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",
|
||||||
@ -211,9 +220,9 @@ export const WEAPON_SKILL_MAPPING = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const MODIFIER_CHOICES = {
|
export const MODIFIER_CHOICES = {
|
||||||
"-10": "-10",
|
|
||||||
"-20": "-20",
|
|
||||||
"-40": "-40",
|
"-40": "-40",
|
||||||
|
"-20": "-20",
|
||||||
|
"-10": "-10",
|
||||||
"+0": "+0",
|
"+0": "+0",
|
||||||
"+10": "+10",
|
"+10": "+10",
|
||||||
"+20": "+20",
|
"+20": "+20",
|
||||||
@ -229,6 +238,12 @@ 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}
|
||||||
@ -251,5 +266,7 @@ export const SYSTEM = {
|
|||||||
VEHICLE_SPEED,
|
VEHICLE_SPEED,
|
||||||
MODIFIER_CHOICES,
|
MODIFIER_CHOICES,
|
||||||
MULTIPLIER_CHOICES,
|
MULTIPLIER_CHOICES,
|
||||||
ASCII
|
ASCII,
|
||||||
|
DAMAGE_BONUS,
|
||||||
|
RITUAL_TYPES
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,8 @@ 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);
|
||||||
@ -52,6 +54,13 @@ 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)
|
||||||
|
@ -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_gear.svg",
|
gear: "systems/fvtt-cthulhu-eternal/assets/icons/icon_equipment.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,6 +9,8 @@ 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 {
|
||||||
|
@ -79,6 +79,14 @@ 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) {
|
||||||
@ -114,6 +122,7 @@ 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":
|
||||||
@ -123,6 +132,7 @@ 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
|
||||||
@ -133,15 +143,20 @@ 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()
|
||||||
@ -153,8 +168,14 @@ 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])
|
||||||
@ -259,8 +280,8 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
rollData.rollMode = rollContext.visibility
|
rollData.rollMode = rollContext.visibility
|
||||||
|
|
||||||
// Update target score
|
// Update target score
|
||||||
console.log(rollData)
|
console.log("Rolldata", rollData, options)
|
||||||
if (options.rollType === "resource" ) {
|
if (options.rollType === "resource") {
|
||||||
rollData.targetScore = options.initialScore * Number(rollContext.multiplier)
|
rollData.targetScore = options.initialScore * Number(rollContext.multiplier)
|
||||||
} else {
|
} else {
|
||||||
rollData.targetScore = Math.min(Math.max(options.initialScore + Number(rollData.modifier), 0), 100)
|
rollData.targetScore = Math.min(Math.max(options.initialScore + Number(rollData.modifier), 0), 100)
|
||||||
@ -273,45 +294,51 @@ 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(roll.total / 10)
|
let dec = Math.floor(this.total / 10)
|
||||||
let unit = roll.total - (dec * 10)
|
let unit = this.total - (dec * 10)
|
||||||
if (roll.total <= rollData.targetScore) {
|
if (this.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 || roll.total === 1) {
|
if (dec === unit || this.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 || roll.total === 100) {
|
if (dec === unit || this.total === 100) {
|
||||||
resultType = "failureCritical"
|
resultType = "failureCritical"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
roll.options.resultType = resultType
|
this.options.resultType = resultType
|
||||||
roll.options.isSuccess = resultType === "success" || resultType === "successCritical"
|
if (this.options.isNudgedRoll) {
|
||||||
roll.options.isFailure = resultType === "failure" || resultType === "failureCritical"
|
this.options.isSuccess = resultType === "success" || resultType === "successCritical"
|
||||||
roll.options.isCritical = resultType === "successCritical" || resultType === "failureCritical"
|
this.options.isFailure = resultType === "failure" || resultType === "failureCritical"
|
||||||
roll.options.isLowWP = rollData.isLowWP
|
this.options.isCritical = false
|
||||||
roll.options.isZeroWP = rollData.isZeroWP
|
} else {
|
||||||
roll.options.isExhausted = rollData.isExhausted
|
this.options.isSuccess = resultType === "success" || resultType === "successCritical"
|
||||||
|
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
|
||||||
if (Hooks.call("fvtt-cthulhu-eternal.Roll", options, rollData, roll) === false) return
|
this.options.isZeroWP = rollData.isZeroWP
|
||||||
|
this.options.isExhausted = rollData.isExhausted
|
||||||
return roll
|
this.options.rollData = foundry.utils.duplicate(rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -387,9 +414,8 @@ 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()
|
||||||
|
@ -9,5 +9,7 @@ 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"
|
||||||
|
|
||||||
|
@ -5,7 +5,8 @@ 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 = {}
|
||||||
|
|
||||||
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.description = new fields.HTMLField({
|
schema.description = new fields.HTMLField({
|
||||||
required: false,
|
required: false,
|
||||||
@ -19,4 +20,5 @@ export default class CthulhuEternalArchetype extends foundry.abstract.TypeDataMo
|
|||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Archetype"]
|
static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Archetype"]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,10 @@ 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 })
|
||||||
|
|
||||||
|
@ -7,7 +7,10 @@ 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 })
|
||||||
|
|
||||||
|
@ -165,7 +165,6 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
isLowWP() {
|
isLowWP() {
|
||||||
return this.wp.value <= 2
|
return this.wp.value <= 2
|
||||||
}
|
}
|
||||||
@ -178,6 +177,17 @@ 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)
|
||||||
|
24
module/models/ritual.mjs
Normal file
24
module/models/ritual.mjs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
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"]
|
||||||
|
|
||||||
|
}
|
@ -6,7 +6,9 @@ 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 })
|
||||||
|
64
module/models/tome.mjs
Normal file
64
module/models/tome.mjs
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
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"];
|
||||||
|
}
|
@ -7,7 +7,8 @@ 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 = {}
|
||||||
|
|
||||||
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.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 }),
|
||||||
|
@ -7,7 +7,9 @@ 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"})
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
|
|
||||||
|
import CthulhuEternalRoll from "./documents/roll.mjs"
|
||||||
|
|
||||||
export default class CthulhuEternalUtils {
|
export default class CthulhuEternalUtils {
|
||||||
|
|
||||||
static registerSettings() {
|
static registerSettings() {
|
||||||
@ -177,12 +179,82 @@ 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);
|
||||||
|
0
packs-system/skills/000130.log
Normal file
0
packs-system/skills/000130.log
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000076
|
MANIFEST-000128
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/01/25-20:17:02.992814 7f697a7fc6c0 Recovering log #74
|
2025/02/07-07:58:04.988627 7ffae7fff6c0 Recovering log #126
|
||||||
2025/01/25-20:17:03.002900 7f697a7fc6c0 Delete type=3 #72
|
2025/02/07-07:58:04.998629 7ffae7fff6c0 Delete type=3 #124
|
||||||
2025/01/25-20:17:03.002968 7f697a7fc6c0 Delete type=0 #74
|
2025/02/07-07:58:04.998698 7ffae7fff6c0 Delete type=0 #126
|
||||||
2025/01/25-20:19:31.386247 7f6978bff6c0 Level-0 table #79: started
|
2025/02/07-08:34:42.926911 7ffae6bff6c0 Level-0 table #131: started
|
||||||
2025/01/25-20:19:31.386288 7f6978bff6c0 Level-0 table #79: 0 bytes OK
|
2025/02/07-08:34:42.926943 7ffae6bff6c0 Level-0 table #131: 0 bytes OK
|
||||||
2025/01/25-20:19:31.417028 7f6978bff6c0 Delete type=0 #77
|
2025/02/07-08:34:42.933490 7ffae6bff6c0 Delete type=0 #129
|
||||||
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.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.593942 7f6978bff6c0 Manual compaction at level-1 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)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/01/25-20:09:49.585129 7f697a7fc6c0 Recovering log #70
|
2025/02/06-23:17:39.180197 7ffaecbf96c0 Recovering log #122
|
||||||
2025/01/25-20:09:49.662901 7f697a7fc6c0 Delete type=3 #68
|
2025/02/06-23:17:39.191385 7ffaecbf96c0 Delete type=3 #120
|
||||||
2025/01/25-20:09:49.662960 7f697a7fc6c0 Delete type=0 #70
|
2025/02/06-23:17:39.191461 7ffaecbf96c0 Delete type=0 #122
|
||||||
2025/01/25-20:11:19.050068 7f6978bff6c0 Level-0 table #75: started
|
2025/02/07-00:19:54.566098 7ffae6bff6c0 Level-0 table #127: started
|
||||||
2025/01/25-20:11:19.050103 7f6978bff6c0 Level-0 table #75: 0 bytes OK
|
2025/02/07-00:19:54.566176 7ffae6bff6c0 Level-0 table #127: 0 bytes OK
|
||||||
2025/01/25-20:11:19.078755 7f6978bff6c0 Delete type=0 #73
|
2025/02/07-00:19:54.572437 7ffae6bff6c0 Delete type=0 #125
|
||||||
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.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.078946 7f6978bff6c0 Manual compaction at level-1 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)
|
||||||
|
BIN
packs-system/skills/MANIFEST-000128
Normal file
BIN
packs-system/skills/MANIFEST-000128
Normal file
Binary file not shown.
@ -44,9 +44,19 @@
|
|||||||
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/IMFell.ttf") format("truetype");
|
src: url("../assets/fonts/IMFeDPrm28P.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "SailRegular";
|
||||||
|
src: url("../assets/fonts/Sail-Regular.ttf") format("truetype");
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
@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";
|
@ -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(18, 233, 18);
|
--color-success: rgb(15, 122, 15);
|
||||||
--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);
|
||||||
|
@ -34,6 +34,25 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.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 {
|
||||||
@ -62,7 +81,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
input {
|
input {
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
font-size: var(--font-size-title);
|
||||||
width: 400px;
|
width: 400px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -146,49 +165,9 @@
|
|||||||
min-width: 1rem;
|
min-width: 1rem;
|
||||||
max-width: 1rem;
|
max-width: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
.protagonist-infos {
|
label {
|
||||||
display: flex;
|
min-width: 120px;
|
||||||
flex-direction: column;
|
|
||||||
gap: 4px;
|
|
||||||
|
|
||||||
label {
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -223,6 +202,10 @@
|
|||||||
.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;
|
||||||
@ -280,40 +263,14 @@
|
|||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
label {
|
label {
|
||||||
min-width: 3.0rem;
|
min-width: 3rem;
|
||||||
}
|
}
|
||||||
.feature {
|
.feature {
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.motivations {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.motivation {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 14rem;
|
min-width: 18rem;
|
||||||
max-width: 14rem;
|
max-width: 18rem;
|
||||||
.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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -336,20 +293,26 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 10rem;
|
margin-left: 4px;
|
||||||
max-width: 10rem;
|
min-width: 12.3rem;
|
||||||
|
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 {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
|
}
|
||||||
|
.score {
|
||||||
|
min-width: 1.2rem;
|
||||||
|
max-width: 1.2rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 8rem;
|
min-width: 10rem;
|
||||||
max-width: 8rem;
|
max-width: 10rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
@ -370,6 +333,7 @@
|
|||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bonds {
|
.bonds {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
@ -378,19 +342,20 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 16rem;
|
min-width: 18rem;
|
||||||
max-width: 16rem;
|
max-width: 18rem;
|
||||||
.controls {
|
.controls {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 12rem;
|
min-width: 12rem;
|
||||||
max-width: 12rem;
|
max-width: 12rem;
|
||||||
}
|
}
|
||||||
.type {
|
.type {
|
||||||
min-width: 5rem;
|
min-width: 6rem;
|
||||||
max-width: 5rem;
|
max-width: 6rem;
|
||||||
}
|
}
|
||||||
.level {
|
.level {
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
@ -403,23 +368,25 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.mentaldisorders {
|
|
||||||
|
.motivations {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
.mentaldisorder {
|
.motivation {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 16rem;
|
min-width: 14rem;
|
||||||
max-width: 16rem;
|
max-width: 14rem;
|
||||||
.controls {
|
.controls {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 14rem;
|
min-width: 12rem;
|
||||||
max-width: 14rem;
|
max-width: 12rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
@ -428,6 +395,38 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mentaldisorders {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.mentaldisorder {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
min-width: 18rem;
|
||||||
|
max-width: 18rem;
|
||||||
|
.controls {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 14rem;
|
||||||
|
max-width: 14rem;
|
||||||
|
}
|
||||||
|
.cured {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
.item-img {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.injuries {
|
.injuries {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
@ -439,8 +438,9 @@
|
|||||||
min-width: 16rem;
|
min-width: 16rem;
|
||||||
max-width: 16rem;
|
max-width: 16rem;
|
||||||
.controls {
|
.controls {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 14rem;
|
min-width: 14rem;
|
||||||
@ -481,8 +481,9 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.controls {
|
.controls {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
.damage {
|
.damage {
|
||||||
min-width: 6rem;
|
min-width: 6rem;
|
||||||
@ -508,15 +509,16 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 13rem;
|
min-width: 13rem;
|
||||||
max-width: 13srem;
|
max-width: 13rem;
|
||||||
.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 {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
.protection {
|
.protection {
|
||||||
min-width: 5rem;
|
min-width: 5rem;
|
||||||
@ -533,6 +535,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.gears {
|
.gears {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
@ -542,23 +545,84 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 13rem;
|
min-width: 13rem;
|
||||||
max-width: 13srem;
|
max-width: 13rem;
|
||||||
.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 {
|
||||||
min-width: 2rem;
|
font-size: 0.7rem;
|
||||||
max-width: 2rem;
|
min-width: 1.8rem;
|
||||||
}
|
max-width: 1.8rem;
|
||||||
.damage {
|
|
||||||
min-width: 5rem;
|
|
||||||
max-width: 5rem;
|
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 8rem;
|
min-width: 10rem;
|
||||||
max-width: 8rem;
|
max-width: 10rem;
|
||||||
|
}
|
||||||
|
.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;
|
||||||
|
22
styles/ritual.less
Normal file
22
styles/ritual.less
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
.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%;
|
||||||
|
}
|
||||||
|
}
|
@ -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: 60px;
|
width: 4rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,25 +93,30 @@
|
|||||||
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: calc(var(--font-size-standard) * 1.2);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
.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: calc(var(--font-size-standard) * 1.2);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
.result-failure {
|
.result-failure {
|
||||||
color: var(--color-failure);
|
color: var(--color-failure);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: calc(var(--font-size-standard) * 1.2);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
.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: calc(var(--font-size-standard) * 1.2);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.introText {
|
.introText {
|
||||||
|
22
styles/tome.less
Normal file
22
styles/tome.less
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
.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%;
|
||||||
|
}
|
||||||
|
}
|
@ -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.4",
|
"version": "12.0.5",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Uberwald",
|
"name": "Uberwald",
|
||||||
@ -47,7 +47,9 @@
|
|||||||
"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": [
|
||||||
|
@ -14,6 +14,10 @@
|
|||||||
<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}}
|
||||||
@ -47,14 +51,24 @@
|
|||||||
{{#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">{{localize "CTHULHUETERNAL.Label.success"}}</li>
|
<li class="result-success">
|
||||||
|
{{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">{{localize "CTHULHUETERNAL.Label.failure"}}</li>
|
<li class="result-failure">
|
||||||
|
{{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>
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
<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>
|
|
18
templates/nudge-dialog.hbs
Normal file
18
templates/nudge-dialog.hbs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<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>
|
@ -81,4 +81,55 @@
|
|||||||
</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>
|
@ -9,13 +9,16 @@
|
|||||||
<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>
|
<fieldset class="protagonist-hp">
|
||||||
<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>
|
||||||
@ -32,8 +35,9 @@
|
|||||||
<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" >{{localize "CTHULHUETERNAL.Label.current"}}</label>
|
<label class="label-field rollable" data-roll-type="san" ><img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||||
|
{{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>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
{{item.name}}
|
{{item.name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="type">
|
<div class="type">
|
||||||
{{item.system.bondType}}
|
{{upperFirst item.system.bondType}}
|
||||||
</div>
|
</div>
|
||||||
<div class="level">
|
<div class="level">
|
||||||
{{item.system.value}}
|
{{item.system.value}}
|
||||||
@ -56,6 +56,13 @@
|
|||||||
<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>
|
||||||
|
23
templates/ritual.hbs
Normal file
23
templates/ritual.hbs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<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>
|
@ -1,4 +1,3 @@
|
|||||||
{{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")}}
|
||||||
|
42
templates/tome.hbs
Normal file
42
templates/tome.hbs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<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>
|
Loading…
x
Reference in New Issue
Block a user