Compare commits
No commits in common. "main" and "12.0.1" have entirely different histories.
@ -1,52 +0,0 @@
|
|||||||
name: Release Creation
|
|
||||||
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [published]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- run: echo "💡 The ${{ gitea.repository }} repository will cloned to the runner."
|
|
||||||
|
|
||||||
#- uses: actions/checkout@v3
|
|
||||||
- uses: RouxAntoine/checkout@v3.5.4
|
|
||||||
|
|
||||||
# get part of the tag after the `v`
|
|
||||||
- name: Extract tag version number
|
|
||||||
id: get_version
|
|
||||||
uses: battila7/get-version-action@v2
|
|
||||||
|
|
||||||
# Substitute the Manifest and Download URLs in the module.json
|
|
||||||
- name: Substitute Manifest and Download Links For Versioned Ones
|
|
||||||
id: sub_manifest_link_version
|
|
||||||
uses: microsoft/variable-substitution@v1
|
|
||||||
with:
|
|
||||||
files: 'system.json'
|
|
||||||
env:
|
|
||||||
version: ${{steps.get_version.outputs.version-without-v}}
|
|
||||||
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
|
|
||||||
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
|
|
||||||
- run: |
|
|
||||||
apt update -y
|
|
||||||
apt install -y zip
|
|
||||||
|
|
||||||
- run: zip -r ./fvtt-cthulhu-eternal.zip system.json README.md LICENSE assets/ css/ fonts/ lang/ module/ packs-system/ templates/ cthulhu-eternal.mjs
|
|
||||||
|
|
||||||
- name: setup go
|
|
||||||
uses: https://github.com/actions/setup-go@v4
|
|
||||||
with:
|
|
||||||
go-version: '>=1.20.1'
|
|
||||||
|
|
||||||
- name: Use Go Action
|
|
||||||
id: use-go-action
|
|
||||||
uses: https://gitea.com/actions/release-action@main
|
|
||||||
with:
|
|
||||||
files: |-
|
|
||||||
./fvtt-cthulhu-eternal.zip
|
|
||||||
system.json
|
|
||||||
api_key: '${{secrets.ALLOW_PUSH_RELEASE}}'
|
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -6,3 +6,6 @@ styles/*.css
|
|||||||
# Node Modules
|
# Node Modules
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
|
# Foundry VTT
|
||||||
|
packs/*
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 77 KiB |
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 12 KiB |
@ -34,17 +34,9 @@
|
|||||||
font-family: "Volkhov";
|
font-family: "Volkhov";
|
||||||
src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype");
|
src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype");
|
||||||
}
|
}
|
||||||
@font-face {
|
|
||||||
font-family: "ChantelliAntiqua";
|
|
||||||
src: url("../assets/fonts/Chantelli_Antiqua.ttf") format("truetype");
|
|
||||||
}
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "IMFell";
|
font-family: "IMFell";
|
||||||
src: url("../assets/fonts/IMFeDPrm28P.ttf") format("truetype");
|
src: url("../assets/fonts/IMFell.ttf") format("truetype");
|
||||||
}
|
|
||||||
@font-face {
|
|
||||||
font-family: "SailRegular";
|
|
||||||
src: url("../assets/fonts/Sail-Regular.ttf") format("truetype");
|
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Dominican";
|
font-family: "Dominican";
|
||||||
@ -112,26 +104,18 @@
|
|||||||
}
|
}
|
||||||
:root {
|
:root {
|
||||||
--font-size-standard: 0.9rem;
|
--font-size-standard: 0.9rem;
|
||||||
--font-size-result: 1.4rem;
|
|
||||||
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/jazz_background_main.webp");
|
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/jazz_background_main.webp");
|
||||||
|
/*--background-image-base: url("../assets/ui/jazzage_background_main.webp");*/
|
||||||
--font-primary: "RozhaOne";
|
--font-primary: "RozhaOne";
|
||||||
--font-secondary: "RozhaOne";
|
--font-secondary: "RozhaOne";
|
||||||
--font-title: "Broadway";
|
--font-title: "Broadway";
|
||||||
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
|
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
|
||||||
--color-success: #0f7a0f;
|
--color-success: darkgreen;
|
||||||
--color-failure: darkred;
|
--color-failure: darkred;
|
||||||
--color-warning: darkorange;
|
--color-critical-success: lightgreen;
|
||||||
--color-critical-success: #1527cc;
|
--color-critical-failure: lightcoral;
|
||||||
--color-critical-failure: #8d20e7;
|
|
||||||
--img-icon-color-filter: brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%);
|
--img-icon-color-filter: brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%);
|
||||||
}
|
}
|
||||||
.d100 {
|
|
||||||
width: 18px;
|
|
||||||
height: 18px;
|
|
||||||
color: black;
|
|
||||||
border-width: 0px;
|
|
||||||
filter: var(--img-icon-color-filter);
|
|
||||||
}
|
|
||||||
.item .thumbnail,
|
.item .thumbnail,
|
||||||
.item-img {
|
.item-img {
|
||||||
/*filter: invert(90%) sepia(10%) saturate(1215%) hue-rotate(55deg) brightness(93%) contrast(89%);*/
|
/*filter: invert(90%) sepia(10%) saturate(1215%) hue-rotate(55deg) brightness(93%) contrast(89%);*/
|
||||||
@ -184,14 +168,10 @@ i.fvtt-cthulhu-eternal {
|
|||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-sheet-common label {
|
.fvtt-cthulhu-eternal .protagonist-sheet-common label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-sheet-common label {
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .item-sheet-common .form-fields {
|
.fvtt-cthulhu-eternal .item-sheet-common .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .item-sheet-common label {
|
.fvtt-cthulhu-eternal .item-sheet-common label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -232,7 +212,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-content input[name="name"] {
|
.fvtt-cthulhu-eternal .protagonist-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -240,8 +220,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-content fieldset {
|
.fvtt-cthulhu-eternal .protagonist-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-content .form-fields input,
|
.fvtt-cthulhu-eternal .protagonist-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .protagonist-content .form-fields select {
|
.fvtt-cthulhu-eternal .protagonist-content .form-fields select {
|
||||||
@ -260,7 +240,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-content label {
|
.fvtt-cthulhu-eternal .protagonist-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .sheet-tabs {
|
.fvtt-cthulhu-eternal .sheet-tabs {
|
||||||
background-color: var(--color-light-1);
|
background-color: var(--color-light-1);
|
||||||
@ -313,85 +293,31 @@ i.fvtt-cthulhu-eternal {
|
|||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-name input {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-name input {
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-title);
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
width: 400px;
|
width: 400px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san {
|
|
||||||
align-content: flex-start;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san input {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san input {
|
||||||
min-width: 2.2rem;
|
min-width: 2.2rem;
|
||||||
max-width: 2.2rem;
|
|
||||||
margin-bottom: 4px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san select {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .rollable:hover,
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .button {
|
|
||||||
min-width: 4rem;
|
|
||||||
max-width: 4rem;
|
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .san-checkbox {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .san-checkbox {
|
||||||
min-width: 1rem;
|
min-width: 1rem;
|
||||||
max-width: 1rem;
|
max-width: 1rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .label-short-field {
|
|
||||||
font-size: 0.9rem;
|
|
||||||
max-width: 3rem;
|
|
||||||
min-width: 3rem;
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .label-recovery {
|
|
||||||
margin-left: 4px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .label-field {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .label-field {
|
||||||
font-size: 0.9rem;
|
flex-grow: 0;
|
||||||
max-width: 6rem;
|
|
||||||
min-width: 6rem;
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .label-bp {
|
|
||||||
flex-grow: 1;
|
|
||||||
max-width: 3rem;
|
|
||||||
min-width: 3rem;
|
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .label-insanity {
|
|
||||||
flex-grow: 1;
|
|
||||||
margin-left: 4px;
|
|
||||||
max-width: 8rem;
|
|
||||||
min-width: 8rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .spacing {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .spacing {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .d100 {
|
|
||||||
flex: 0;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower input {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower input {
|
||||||
min-width: 2.4rem;
|
min-width: 2.2rem;
|
||||||
max-width: 2.4rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower input[type="checkbox"] {
|
|
||||||
min-width: 1rem;
|
|
||||||
max-width: 1rem;
|
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower .label-field {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower .label-field {
|
||||||
flex-grow: 1;
|
flex-grow: 0;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
max-width: 5rem;
|
|
||||||
min-width: 5rem;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower .checkbox {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower .checkbox {
|
||||||
flex-grow: 0;
|
|
||||||
min-width: 1rem;
|
min-width: 1rem;
|
||||||
max-width: 1rem;
|
max-width: 1rem;
|
||||||
}
|
}
|
||||||
@ -455,21 +381,13 @@ i.fvtt-cthulhu-eternal {
|
|||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .rollable {
|
|
||||||
min-width: 3rem;
|
|
||||||
max-width: 3rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .char-text {
|
|
||||||
margin-left: 0.5rem;
|
|
||||||
}
|
|
||||||
.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: 1;
|
||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .form-group .form-fields {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .form-group .form-fields {
|
||||||
font-size: 1.1rem;
|
|
||||||
flex: none;
|
flex: none;
|
||||||
width: 40px;
|
width: 70px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-play {
|
.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-play {
|
||||||
min-width: 225px;
|
min-width: 225px;
|
||||||
@ -489,40 +407,11 @@ i.fvtt-cthulhu-eternal {
|
|||||||
.fvtt-cthulhu-eternal .protagonist-biography .field-label {
|
.fvtt-cthulhu-eternal .protagonist-biography .field-label {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .adapted {
|
.fvtt-cthulhu-eternal .protagonist-biography .biodata {
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .adapted label {
|
|
||||||
min-width: 20rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .resources {
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .resources label {
|
|
||||||
min-width: 8rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .features,
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .biodata {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .features label,
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .biodata label {
|
|
||||||
min-width: 3rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .features .feature,
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .biodata .feature {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .protagonist-biography .motivations {
|
.fvtt-cthulhu-eternal .protagonist-biography .motivations {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
@ -583,8 +472,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
max-width: 8rem;
|
max-width: 8rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status {
|
.fvtt-cthulhu-eternal .tab.protagonist-status {
|
||||||
@ -617,16 +506,16 @@ i.fvtt-cthulhu-eternal {
|
|||||||
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: 4rem;
|
||||||
max-width: 5rem;
|
max-width: 4rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .level {
|
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .level {
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders {
|
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders {
|
||||||
@ -650,8 +539,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries {
|
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries {
|
||||||
@ -675,8 +564,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment {
|
||||||
@ -698,7 +587,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 13rem;
|
min-width: 13rem;
|
||||||
max-width: 13rem;
|
max-width: 13srem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .rollable:hover,
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .rollable:hover,
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .rollable:focus {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .rollable:focus {
|
||||||
@ -710,16 +599,16 @@ i.fvtt-cthulhu-eternal {
|
|||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .damage {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .damage {
|
||||||
min-width: 6rem;
|
min-width: 5rem;
|
||||||
max-width: 6rem;
|
max-width: 5rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .name {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .name {
|
||||||
min-width: 10rem;
|
min-width: 8rem;
|
||||||
max-width: 10rem;
|
max-width: 8rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors {
|
||||||
@ -752,8 +641,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
max-width: 8rem;
|
max-width: 8rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears {
|
||||||
@ -786,8 +675,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
max-width: 8rem;
|
max-width: 8rem;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.inactive {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.inactive {
|
||||||
@ -796,253 +685,6 @@ i.fvtt-cthulhu-eternal {
|
|||||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.active {
|
.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.active {
|
||||||
min-height: 150px;
|
min-height: 150px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .vehicle-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%;
|
|
||||||
overflow: scroll;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-content input:disabled,
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-content select:disabled {
|
|
||||||
background-color: rgba(0, 0, 0, 0.2);
|
|
||||||
border-color: transparent;
|
|
||||||
color: var(--color-dark-3);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-content input,
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-content select {
|
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
|
||||||
border-color: var(--color-dark-6);
|
|
||||||
color: var(--color-dark-2);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-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 .vehicle-content fieldset {
|
|
||||||
margin-bottom: 4px;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-content .form-fields input,
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-content .form-fields select {
|
|
||||||
text-align: center;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-content .form-fields select {
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-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 .vehicle-content label {
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .sheet-tabs {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc {
|
|
||||||
display: flex;
|
|
||||||
gap: 4px;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-left {
|
|
||||||
min-width: 180px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-left .vehicle-left-image {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
padding-bottom: 8px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-left .vehicle-left-image .vehicle-img {
|
|
||||||
height: 140px;
|
|
||||||
width: auto;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 5px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right .vehicle-name {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right .vehicle-name input {
|
|
||||||
font-family: var(--font-title);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
width: 400px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right .vehicle-infos {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 4px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right .vehicle-infos label {
|
|
||||||
min-width: 120px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right .vehicle-infos .vehicle-hp {
|
|
||||||
display: flex;
|
|
||||||
gap: 2px;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right .vehicle-infos .vehicle-hp .vehicle-hp-value .form-fields input {
|
|
||||||
flex: none;
|
|
||||||
width: 50px;
|
|
||||||
margin-left: 4px;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right .vehicle-infos .vehicle-hp .vehicle-hp-max {
|
|
||||||
clear: both;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
margin: 3px 0;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right .vehicle-infos .vehicle-hp .vehicle-hp-max input {
|
|
||||||
width: 50px;
|
|
||||||
text-align: center;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc .vehicle-right .vehicle-infos .vehicle-hp .hp-separator {
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.2);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc-play {
|
|
||||||
min-width: 500px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-main .vehicle-pc-edit {
|
|
||||||
min-width: 650px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-biography {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-biography prose-mirror.inactive {
|
|
||||||
min-height: 40px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-biography prose-mirror.active {
|
|
||||||
min-height: 150px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-biography .field-label {
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-biography .biodata {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-biography .biodata label {
|
|
||||||
min-width: 3rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .vehicle-biography .biodata .feature {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment legend a {
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13srem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .rollable:hover,
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .controls {
|
|
||||||
min-width: 2rem;
|
|
||||||
max-width: 2rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .damage {
|
|
||||||
min-width: 5rem;
|
|
||||||
max-width: 5rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .name {
|
|
||||||
min-width: 8rem;
|
|
||||||
max-width: 8rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .item-img {
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13srem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .rollable:hover,
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .controls {
|
|
||||||
min-width: 2rem;
|
|
||||||
max-width: 2rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .damage {
|
|
||||||
min-width: 5rem;
|
|
||||||
max-width: 5rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .name {
|
|
||||||
min-width: 8rem;
|
|
||||||
max-width: 8rem;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .item-img {
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment prose-mirror.inactive {
|
|
||||||
min-height: 40px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment prose-mirror.active {
|
|
||||||
min-height: 150px;
|
|
||||||
}
|
|
||||||
.fvtt-cthulhu-eternal .skill-content {
|
.fvtt-cthulhu-eternal .skill-content {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1064,7 +706,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .skill-content input[name="name"] {
|
.fvtt-cthulhu-eternal .skill-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1072,8 +714,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .skill-content fieldset {
|
.fvtt-cthulhu-eternal .skill-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .skill-content .form-fields input,
|
.fvtt-cthulhu-eternal .skill-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .skill-content .form-fields select {
|
.fvtt-cthulhu-eternal .skill-content .form-fields select {
|
||||||
@ -1091,7 +733,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .skill-content .form-fields {
|
.fvtt-cthulhu-eternal .skill-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .skill-content label {
|
.fvtt-cthulhu-eternal .skill-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1154,7 +796,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .injury-content input[name="name"] {
|
.fvtt-cthulhu-eternal .injury-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1162,8 +804,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .injury-content fieldset {
|
.fvtt-cthulhu-eternal .injury-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .injury-content .form-fields input,
|
.fvtt-cthulhu-eternal .injury-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .injury-content .form-fields select {
|
.fvtt-cthulhu-eternal .injury-content .form-fields select {
|
||||||
@ -1181,7 +823,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .injury-content .form-fields {
|
.fvtt-cthulhu-eternal .injury-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .injury-content label {
|
.fvtt-cthulhu-eternal .injury-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1244,7 +886,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .weapon-content input[name="name"] {
|
.fvtt-cthulhu-eternal .weapon-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1252,8 +894,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .weapon-content fieldset {
|
.fvtt-cthulhu-eternal .weapon-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .weapon-content .form-fields input,
|
.fvtt-cthulhu-eternal .weapon-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .weapon-content .form-fields select {
|
.fvtt-cthulhu-eternal .weapon-content .form-fields select {
|
||||||
@ -1271,7 +913,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .weapon-content .form-fields {
|
.fvtt-cthulhu-eternal .weapon-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .weapon-content label {
|
.fvtt-cthulhu-eternal .weapon-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1326,7 +968,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .armor-content input[name="name"] {
|
.fvtt-cthulhu-eternal .armor-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1334,8 +976,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .armor-content fieldset {
|
.fvtt-cthulhu-eternal .armor-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .armor-content .form-fields input,
|
.fvtt-cthulhu-eternal .armor-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .armor-content .form-fields select {
|
.fvtt-cthulhu-eternal .armor-content .form-fields select {
|
||||||
@ -1353,7 +995,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .armor-content .form-fields {
|
.fvtt-cthulhu-eternal .armor-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .armor-content label {
|
.fvtt-cthulhu-eternal .armor-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1408,7 +1050,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .motivation-content input[name="name"] {
|
.fvtt-cthulhu-eternal .motivation-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1416,8 +1058,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .motivation-content fieldset {
|
.fvtt-cthulhu-eternal .motivation-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .motivation-content .form-fields input,
|
.fvtt-cthulhu-eternal .motivation-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .motivation-content .form-fields select {
|
.fvtt-cthulhu-eternal .motivation-content .form-fields select {
|
||||||
@ -1435,7 +1077,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .motivation-content .form-fields {
|
.fvtt-cthulhu-eternal .motivation-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .motivation-content label {
|
.fvtt-cthulhu-eternal .motivation-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1490,7 +1132,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .mentaldisorder-content input[name="name"] {
|
.fvtt-cthulhu-eternal .mentaldisorder-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1498,8 +1140,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .mentaldisorder-content fieldset {
|
.fvtt-cthulhu-eternal .mentaldisorder-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .mentaldisorder-content .form-fields input,
|
.fvtt-cthulhu-eternal .mentaldisorder-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .mentaldisorder-content .form-fields select {
|
.fvtt-cthulhu-eternal .mentaldisorder-content .form-fields select {
|
||||||
@ -1517,7 +1159,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .mentaldisorder-content .form-fields {
|
.fvtt-cthulhu-eternal .mentaldisorder-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .mentaldisorder-content label {
|
.fvtt-cthulhu-eternal .mentaldisorder-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1572,7 +1214,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .bond-content input[name="name"] {
|
.fvtt-cthulhu-eternal .bond-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1580,8 +1222,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .bond-content fieldset {
|
.fvtt-cthulhu-eternal .bond-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .bond-content .form-fields input,
|
.fvtt-cthulhu-eternal .bond-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .bond-content .form-fields select {
|
.fvtt-cthulhu-eternal .bond-content .form-fields select {
|
||||||
@ -1599,7 +1241,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .bond-content .form-fields {
|
.fvtt-cthulhu-eternal .bond-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .bond-content label {
|
.fvtt-cthulhu-eternal .bond-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1670,7 +1312,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .gear-content input[name="name"] {
|
.fvtt-cthulhu-eternal .gear-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1678,8 +1320,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .gear-content fieldset {
|
.fvtt-cthulhu-eternal .gear-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .gear-content .form-fields input,
|
.fvtt-cthulhu-eternal .gear-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .gear-content .form-fields select {
|
.fvtt-cthulhu-eternal .gear-content .form-fields select {
|
||||||
@ -1697,7 +1339,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .gear-content .form-fields {
|
.fvtt-cthulhu-eternal .gear-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .gear-content label {
|
.fvtt-cthulhu-eternal .gear-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1752,7 +1394,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .arcane-content input[name="name"] {
|
.fvtt-cthulhu-eternal .arcane-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1760,8 +1402,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .arcane-content fieldset {
|
.fvtt-cthulhu-eternal .arcane-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .arcane-content .form-fields input,
|
.fvtt-cthulhu-eternal .arcane-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .arcane-content .form-fields select {
|
.fvtt-cthulhu-eternal .arcane-content .form-fields select {
|
||||||
@ -1779,7 +1421,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .arcane-content .form-fields {
|
.fvtt-cthulhu-eternal .arcane-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .arcane-content label {
|
.fvtt-cthulhu-eternal .arcane-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1834,7 +1476,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .archetype-content input[name="name"] {
|
.fvtt-cthulhu-eternal .archetype-content input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -1842,8 +1484,8 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .archetype-content fieldset {
|
.fvtt-cthulhu-eternal .archetype-content fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .archetype-content .form-fields input,
|
.fvtt-cthulhu-eternal .archetype-content .form-fields input,
|
||||||
.fvtt-cthulhu-eternal .archetype-content .form-fields select {
|
.fvtt-cthulhu-eternal .archetype-content .form-fields select {
|
||||||
@ -1861,7 +1503,7 @@ i.fvtt-cthulhu-eternal {
|
|||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .archetype-content .form-fields {
|
.fvtt-cthulhu-eternal .archetype-content .form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.fvtt-cthulhu-eternal .archetype-content label {
|
.fvtt-cthulhu-eternal .archetype-content label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
@ -1923,15 +1565,9 @@ i.fvtt-cthulhu-eternal {
|
|||||||
border: none;
|
border: none;
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
width: 4rem;
|
width: 60px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.red-warning {
|
|
||||||
color: var(--color-failure);
|
|
||||||
}
|
|
||||||
.orange-warning {
|
|
||||||
color: var(--color-warning);
|
|
||||||
}
|
|
||||||
.dialog-damage {
|
.dialog-damage {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@ -1986,22 +1622,22 @@ i.fvtt-cthulhu-eternal {
|
|||||||
.dice-roll .intro-chat .intro-right ul .result-success {
|
.dice-roll .intro-chat .intro-right ul .result-success {
|
||||||
color: var(--color-success);
|
color: var(--color-success);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
}
|
||||||
.dice-roll .intro-chat .intro-right ul .result-critical-success {
|
.dice-roll .intro-chat .intro-right ul .result-critical-success {
|
||||||
color: var(--color-critical-success);
|
color: var(--color-critical-success);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
}
|
||||||
.dice-roll .intro-chat .intro-right ul .result-failure {
|
.dice-roll .intro-chat .intro-right ul .result-failure {
|
||||||
color: var(--color-failure);
|
color: var(--color-failure);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
}
|
||||||
.dice-roll .intro-chat .intro-right ul .result-critical-failure {
|
.dice-roll .intro-chat .intro-right ul .result-critical-failure {
|
||||||
color: var(--color-critical-failure);
|
color: var(--color-critical-failure);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
}
|
||||||
.dice-roll .intro-chat .intro-right .introText {
|
.dice-roll .intro-chat .intro-right .introText {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
|
@ -12,6 +12,8 @@ import * as documents from "./module/documents/_module.mjs"
|
|||||||
import * as applications from "./module/applications/_module.mjs"
|
import * as applications from "./module/applications/_module.mjs"
|
||||||
|
|
||||||
import { handleSocketEvent } from "./module/socket.mjs"
|
import { handleSocketEvent } from "./module/socket.mjs"
|
||||||
|
import { Macros } from "./module/macros.mjs"
|
||||||
|
import { setupTextEnrichers } from "./module/enrichers.mjs"
|
||||||
import CthulhuEternalUtils from "./module/utils.mjs"
|
import CthulhuEternalUtils from "./module/utils.mjs"
|
||||||
|
|
||||||
export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}}
|
export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}}
|
||||||
@ -32,8 +34,7 @@ Hooks.once("init", function () {
|
|||||||
|
|
||||||
CONFIG.Actor.documentClass = documents.CthulhuEternalActor
|
CONFIG.Actor.documentClass = documents.CthulhuEternalActor
|
||||||
CONFIG.Actor.dataModels = {
|
CONFIG.Actor.dataModels = {
|
||||||
protagonist: models.CthulhuEternalProtagonist,
|
protagonist: models.CthulhuEternalProtagonist
|
||||||
vehicle: models.CthulhuEternalVehicle
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CONFIG.Item.documentClass = documents.CthulhuEternalItem
|
CONFIG.Item.documentClass = documents.CthulhuEternalItem
|
||||||
@ -53,7 +54,6 @@ Hooks.once("init", function () {
|
|||||||
// Register sheet application classes
|
// Register sheet application classes
|
||||||
Actors.unregisterSheet("core", ActorSheet)
|
Actors.unregisterSheet("core", ActorSheet)
|
||||||
Actors.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalProtagonistSheet, { types: ["protagonist"], makeDefault: true })
|
Actors.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalProtagonistSheet, { types: ["protagonist"], makeDefault: true })
|
||||||
Actors.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalVehicleSheet, { types: ["vehicle"], makeDefault: true })
|
|
||||||
|
|
||||||
Items.unregisterSheet("core", ItemSheet)
|
Items.unregisterSheet("core", ItemSheet)
|
||||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalSkillSheet, { types: ["skill"], makeDefault: true })
|
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalSkillSheet, { types: ["skill"], makeDefault: true })
|
||||||
@ -84,10 +84,22 @@ Hooks.once("init", function () {
|
|||||||
// Activate socket handler
|
// Activate socket handler
|
||||||
game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent)
|
game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent)
|
||||||
|
|
||||||
|
setupTextEnrichers()
|
||||||
CthulhuEternalUtils.registerSettings()
|
CthulhuEternalUtils.registerSettings()
|
||||||
CthulhuEternalUtils.registerHandlebarsHelpers()
|
CthulhuEternalUtils.registerHandlebarsHelpers()
|
||||||
CthulhuEternalUtils.setupCSSRootVariables()
|
CthulhuEternalUtils.setupCSSRootVariables()
|
||||||
|
|
||||||
|
// Gestion des jets de dés depuis les journaux
|
||||||
|
document.addEventListener("click", (event) => {
|
||||||
|
const anchor = event.target.closest("a.ask-roll-journal")
|
||||||
|
if (!anchor) return
|
||||||
|
event.preventDefault()
|
||||||
|
event.stopPropagation()
|
||||||
|
const type = anchor.dataset.rollType
|
||||||
|
const target = anchor.dataset.rollTarget
|
||||||
|
const title = anchor.dataset.rollTitle
|
||||||
|
})
|
||||||
|
|
||||||
console.info("CTHULHU ETERNAL | System Initialized")
|
console.info("CTHULHU ETERNAL | System Initialized")
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -106,11 +118,15 @@ function preLocalizeConfig() {
|
|||||||
|
|
||||||
Hooks.once("ready", function () {
|
Hooks.once("ready", function () {
|
||||||
console.info("CTHULHU ETERNAL | Ready")
|
console.info("CTHULHU ETERNAL | Ready")
|
||||||
if (game.user.isGM) {
|
|
||||||
ClassCounter.registerUsageCount("fvtt-cthulhu-eternal", {})
|
ClassCounter.registerUsageCount("fvtt-cthulhu-eternal", {})
|
||||||
}
|
_showUserGuide()
|
||||||
preLocalizeConfig()
|
|
||||||
|
|
||||||
|
/* Display the user guide */
|
||||||
|
async function _showUserGuide() {
|
||||||
|
if (game.user.isGM) {
|
||||||
|
const newVer = game.system.version
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Hooks.on("renderChatMessage", (message, html, data) => {
|
Hooks.on("renderChatMessage", (message, html, data) => {
|
||||||
@ -136,6 +152,9 @@ Hooks.on("renderChatMessage", (message, html, data) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Hooks.on("updateSetting", async (setting, update, options, id) => {
|
||||||
|
})
|
||||||
|
|
||||||
// Dice-so-nice Ready
|
// Dice-so-nice Ready
|
||||||
Hooks.once("diceSoNiceReady", (dice3d) => {
|
Hooks.once("diceSoNiceReady", (dice3d) => {
|
||||||
configureDiceSoNice(dice3d)
|
configureDiceSoNice(dice3d)
|
||||||
@ -148,8 +167,18 @@ Hooks.once("diceSoNiceReady", (dice3d) => {
|
|||||||
* Journal - open journal sheet
|
* Journal - open journal sheet
|
||||||
*/
|
*/
|
||||||
Hooks.on("hotbarDrop", (bar, data, slot) => {
|
Hooks.on("hotbarDrop", (bar, data, slot) => {
|
||||||
if (["Actor", "Item", "JournalEntry", "skill", "weapon"].includes(data.type)) {
|
if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) {
|
||||||
// TODO -> Manage this
|
Macros.createCthulhuEternalMacro(data, slot);
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register world usage statistics
|
||||||
|
* @param {string} registerKey
|
||||||
|
*/
|
||||||
|
function registerWorldCount(registerKey) {
|
||||||
|
if (game.user.isGM) {
|
||||||
|
ClassCounter.registerUsageCount(game.system.id, {})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,17 +1,12 @@
|
|||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
const less = require('gulp-less');
|
const less = require('gulp-less');
|
||||||
|
|
||||||
function onError(err) {
|
|
||||||
util.log(util.colors.red.bold('[ERROR LESS]:'),util.colors.bgRed(err.message));
|
|
||||||
this.emit('end');
|
|
||||||
};
|
|
||||||
|
|
||||||
/* ----------------------------------------- */
|
/* ----------------------------------------- */
|
||||||
/* Compile LESS
|
/* Compile LESS
|
||||||
/* ----------------------------------------- */
|
/* ----------------------------------------- */
|
||||||
function compileLESS() {
|
function compileLESS() {
|
||||||
return gulp.src("styles/fvtt-cthulhu-eternal.less")
|
return gulp.src("styles/fvtt-cthulhu-eternal.less")
|
||||||
.pipe(less()).on('error',console.log.bind(console))
|
.pipe(less())
|
||||||
.pipe(gulp.dest("./css"))
|
.pipe(gulp.dest("./css"))
|
||||||
}
|
}
|
||||||
const css = gulp.series(compileLESS);
|
const css = gulp.series(compileLESS);
|
||||||
|
112
lang/en.json
112
lang/en.json
@ -1,8 +1,7 @@
|
|||||||
{
|
{
|
||||||
"TYPES": {
|
"TYPES": {
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"protagonist": "Protagonist",
|
"protagonist": "Protagonist"
|
||||||
"vehicle": "Vehicle"
|
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"skill": "Skill",
|
"skill": "Skill",
|
||||||
@ -19,8 +18,6 @@
|
|||||||
},
|
},
|
||||||
"CTHULHUETERNAL": {
|
"CTHULHUETERNAL": {
|
||||||
"Settings": {
|
"Settings": {
|
||||||
"era": "Select the era of your game",
|
|
||||||
"eraHint": "Select the era of your game",
|
|
||||||
"Common": "Common",
|
"Common": "Common",
|
||||||
"Classical": "Classical",
|
"Classical": "Classical",
|
||||||
"Medieval": "Medieval",
|
"Medieval": "Medieval",
|
||||||
@ -37,30 +34,7 @@
|
|||||||
},
|
},
|
||||||
"Protagonist": {
|
"Protagonist": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"resources": {
|
|
||||||
"permanentRating": {
|
|
||||||
"label": "Permanent Rating"
|
|
||||||
},
|
|
||||||
"hand": {
|
|
||||||
"label": "Hand"
|
|
||||||
},
|
|
||||||
"stowed": {
|
|
||||||
"label": "Stowed"
|
|
||||||
},
|
|
||||||
"storage": {
|
|
||||||
"label": "Storage"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"biodata": {
|
"biodata": {
|
||||||
"feature": {
|
|
||||||
"label": "Feature"
|
|
||||||
},
|
|
||||||
"adaptedToViolence": {
|
|
||||||
"label": "Adapted to violence"
|
|
||||||
},
|
|
||||||
"adaptedToHelplessness": {
|
|
||||||
"label": "Adapted to helplessness"
|
|
||||||
},
|
|
||||||
"harshness": {
|
"harshness": {
|
||||||
"label": "Harshness"
|
"label": "Harshness"
|
||||||
},
|
},
|
||||||
@ -109,12 +83,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Insanity": {
|
|
||||||
"None": "None",
|
|
||||||
"Flee": "Flee",
|
|
||||||
"Submit": "Submit",
|
|
||||||
"Struggle": "Struggle"
|
|
||||||
},
|
|
||||||
"Skill": {
|
"Skill": {
|
||||||
"Unnatural": "Unnatural",
|
"Unnatural": "Unnatural",
|
||||||
"Melee": "Melee Weapons",
|
"Melee": "Melee Weapons",
|
||||||
@ -152,9 +120,6 @@
|
|||||||
"resourceLevel": {
|
"resourceLevel": {
|
||||||
"label": "Resource level"
|
"label": "Resource level"
|
||||||
},
|
},
|
||||||
"state": {
|
|
||||||
"label": "State"
|
|
||||||
},
|
|
||||||
"settings": {
|
"settings": {
|
||||||
"label": "Settings era"
|
"label": "Settings era"
|
||||||
}
|
}
|
||||||
@ -183,9 +148,6 @@
|
|||||||
"riflecarabine": "Rifle/Carabine"
|
"riflecarabine": "Rifle/Carabine"
|
||||||
},
|
},
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"state": {
|
|
||||||
"label": "State"
|
|
||||||
},
|
|
||||||
"settings": {
|
"settings": {
|
||||||
"label": "Settings era"
|
"label": "Settings era"
|
||||||
},
|
},
|
||||||
@ -241,41 +203,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Vehicle": {
|
|
||||||
"FIELDS": {
|
|
||||||
"description": {
|
|
||||||
"label": "Description"
|
|
||||||
},
|
|
||||||
"notes": {
|
|
||||||
"label": "Notes"
|
|
||||||
},
|
|
||||||
"surfaceSpeed": {
|
|
||||||
"label": "Surface Speed"
|
|
||||||
},
|
|
||||||
"airSpeed": {
|
|
||||||
"label": "Air Speed"
|
|
||||||
},
|
|
||||||
"armor": {
|
|
||||||
"label": "Armor"
|
|
||||||
},
|
|
||||||
"settings": {
|
|
||||||
"label": "Settings era"
|
|
||||||
},
|
|
||||||
"crew": {
|
|
||||||
"label": "Crew"
|
|
||||||
},
|
|
||||||
"state": {
|
|
||||||
"label": "State"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"MentalDisorder": {
|
"MentalDisorder": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"description": {
|
"description": {
|
||||||
"label": "Description"
|
"label": "Description"
|
||||||
},
|
|
||||||
"cured": {
|
|
||||||
"label": "Cured"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -325,31 +256,8 @@
|
|||||||
"veryHarsh": "Very Harsh"
|
"veryHarsh": "Very Harsh"
|
||||||
},
|
},
|
||||||
"Label": {
|
"Label": {
|
||||||
"Hand": "Hand",
|
"titleSkill": "Skill",
|
||||||
"Stowed": "Stowed",
|
"titleWeapon": "Weapon",
|
||||||
"Storage": "Storage",
|
|
||||||
"resourceRating": "Resource rating",
|
|
||||||
"Resources": "Resources",
|
|
||||||
"multiplier": "Multiplier",
|
|
||||||
"setBP": "Set BP",
|
|
||||||
"Vehicle": "Vehicle",
|
|
||||||
"Speed": "Speed",
|
|
||||||
"Slow": "Slow",
|
|
||||||
"Fast": "Fast",
|
|
||||||
"Average": "Average",
|
|
||||||
"None": "None",
|
|
||||||
"Pristine": "Pristine",
|
|
||||||
"Worn": "Worn",
|
|
||||||
"Junk": "Junk",
|
|
||||||
"resources": "Resources",
|
|
||||||
"resourceChecks": "Resource Checks",
|
|
||||||
"sanBPShort": "BP",
|
|
||||||
"tempInsanity": "Temp. Insanity",
|
|
||||||
"distinguishingFeatures": "Distinguishing Features",
|
|
||||||
"titleSkill": "Skill Roll",
|
|
||||||
"titleWeapon": "Weapon Roll",
|
|
||||||
"titleCharacteristic": "Characteristic Roll",
|
|
||||||
"titleSAN": "SAN Roll",
|
|
||||||
"biodata": "Biodata",
|
"biodata": "Biodata",
|
||||||
"skill": "Skill",
|
"skill": "Skill",
|
||||||
"modifier": "Modifier",
|
"modifier": "Modifier",
|
||||||
@ -401,7 +309,6 @@
|
|||||||
"criticalSuccess": "Critical Success",
|
"criticalSuccess": "Critical Success",
|
||||||
"criticalFailure": "Critical Failure",
|
"criticalFailure": "Critical Failure",
|
||||||
"Characteristic": "Characteristic",
|
"Characteristic": "Characteristic",
|
||||||
"characteristic": "Characteristic",
|
|
||||||
"targetScore": "Target Score",
|
"targetScore": "Target Score",
|
||||||
"gears": "Gears",
|
"gears": "Gears",
|
||||||
"armors": "Armors",
|
"armors": "Armors",
|
||||||
@ -426,9 +333,6 @@
|
|||||||
"newArchetype": "New Archetype",
|
"newArchetype": "New Archetype",
|
||||||
"newSkill": "New Skill"
|
"newSkill": "New Skill"
|
||||||
},
|
},
|
||||||
"ChatMessage": {
|
|
||||||
"exhausted": "Your protagonist is exhausted. He loses [[/r 1d6]] Willpower Points."
|
|
||||||
},
|
|
||||||
"Edit": "Edit",
|
"Edit": "Edit",
|
||||||
"Delete": "Delete",
|
"Delete": "Delete",
|
||||||
"ToggleSheet": "Toggle Sheet",
|
"ToggleSheet": "Toggle Sheet",
|
||||||
@ -440,15 +344,11 @@
|
|||||||
"roll": "Roll"
|
"roll": "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."
|
||||||
"setBP": "Set the current Breaking Point based on the current SAN value"
|
},
|
||||||
|
"Setting": {
|
||||||
},
|
},
|
||||||
"Chat": {
|
"Chat": {
|
||||||
},
|
|
||||||
"Notitications": {
|
|
||||||
"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",
|
|
||||||
"skillAlreadyExists": "Skill already exists"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,4 +9,3 @@ 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 CthulhuEternalVehicleSheet } from "./sheets/vehicle-sheet.mjs"
|
|
||||||
|
@ -18,12 +18,4 @@ export default class CthulhuEternalMentalDisorderSheet extends CthulhuEternalIte
|
|||||||
template: "systems/fvtt-cthulhu-eternal/templates/mentaldisorder.hbs",
|
template: "systems/fvtt-cthulhu-eternal/templates/mentaldisorder.hbs",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @override */
|
|
||||||
async _prepareContext() {
|
|
||||||
const context = await super._prepareContext()
|
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
|
||||||
return context
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,6 @@ export default class CthulhuEternalMotivationSheet extends CthulhuEternalItemShe
|
|||||||
/** @override */
|
/** @override */
|
||||||
async _prepareContext() {
|
async _prepareContext() {
|
||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,14 +5,13 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
classes: ["protagonist"],
|
classes: ["protagonist"],
|
||||||
position: {
|
position: {
|
||||||
width: 860,
|
width: 848,
|
||||||
height: 620,
|
height: 620,
|
||||||
},
|
},
|
||||||
window: {
|
window: {
|
||||||
contentClasses: ["protagonist-content"],
|
contentClasses: ["protagonist-content"],
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
setBP: CthulhuEternalProtagonistSheet.#onSetBP,
|
|
||||||
createGear: CthulhuEternalProtagonistSheet.#onCreateGear,
|
createGear: CthulhuEternalProtagonistSheet.#onCreateGear,
|
||||||
createArmor: CthulhuEternalProtagonistSheet.#onCreateArmor,
|
createArmor: CthulhuEternalProtagonistSheet.#onCreateArmor,
|
||||||
createWeapon: CthulhuEternalProtagonistSheet.#onCreateWeapon,
|
createWeapon: CthulhuEternalProtagonistSheet.#onCreateWeapon,
|
||||||
@ -74,9 +73,6 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
context.tabs = this.#getTabs()
|
context.tabs = this.#getTabs()
|
||||||
|
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
|
||||||
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
|
|
||||||
|
|
||||||
context.tooltipsCharacteristic = {
|
context.tooltipsCharacteristic = {
|
||||||
str: game.i18n.localize("CTHULHUETERNAL.Characteristic.Str"),
|
str: game.i18n.localize("CTHULHUETERNAL.Characteristic.Str"),
|
||||||
dex: game.i18n.localize("CTHULHUETERNAL.Characteristic.Dex"),
|
dex: game.i18n.localize("CTHULHUETERNAL.Characteristic.Dex"),
|
||||||
@ -86,9 +82,23 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
cha: game.i18n.localize("CTHULHUETERNAL.Characteristic.Cha")
|
cha: game.i18n.localize("CTHULHUETERNAL.Characteristic.Cha")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context.tooltipsRessources = {
|
||||||
|
}
|
||||||
|
|
||||||
|
context.rollType = {
|
||||||
|
str: "characteristic",
|
||||||
|
dex: "characteristic",
|
||||||
|
con: "characteristic",
|
||||||
|
int: "characteristic",
|
||||||
|
pow: "characteristic",
|
||||||
|
cha: "characteristic"
|
||||||
|
}
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_generateTooltip(type, target) {
|
||||||
|
}
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
async _preparePartContext(partId, context) {
|
async _preparePartContext(partId, context) {
|
||||||
const doc = this.document
|
const doc = this.document
|
||||||
@ -98,30 +108,22 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
case "skills":
|
case "skills":
|
||||||
context.tab = context.tabs.skills
|
context.tab = context.tabs.skills
|
||||||
context.skills = doc.itemTypes.skill
|
context.skills = doc.itemTypes.skill
|
||||||
context.skills.sort((a, b) => a.name.localeCompare(b.name))
|
|
||||||
break
|
break
|
||||||
case "equipment":
|
case "equipment":
|
||||||
context.tab = context.tabs.equipment
|
context.tab = context.tabs.equipment
|
||||||
context.weapons = doc.itemTypes.weapon
|
context.weapons = doc.itemTypes.weapon
|
||||||
context.weapons.sort((a, b) => a.name.localeCompare(b.name))
|
|
||||||
context.armors = doc.itemTypes.armor
|
context.armors = doc.itemTypes.armor
|
||||||
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))
|
|
||||||
break
|
break
|
||||||
case "status":
|
case "status":
|
||||||
context.tab = context.tabs.status
|
context.tab = context.tabs.status
|
||||||
context.injuries = doc.itemTypes.injury
|
context.injuries = doc.itemTypes.injury
|
||||||
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.bonds = doc.itemTypes.bond
|
context.bonds = doc.itemTypes.bond
|
||||||
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 = 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
|
||||||
@ -134,10 +136,6 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
* @param {Event} event The initiating click event.
|
* @param {Event} event The initiating click event.
|
||||||
* @param {HTMLElement} target The current target of the event listener.
|
* @param {HTMLElement} target The current target of the event listener.
|
||||||
*/
|
*/
|
||||||
static #onSetBP(event, target) {
|
|
||||||
this.document.system.setBP()
|
|
||||||
}
|
|
||||||
|
|
||||||
static #onCreateGear(event, target) {
|
static #onCreateGear(event, target) {
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newGear"), type: "gear" }])
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newGear"), type: "gear" }])
|
||||||
}
|
}
|
||||||
@ -191,15 +189,10 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
// Debug : console.log(">>>>", event, target, rollType)
|
// Debug : console.log(">>>>", event, target, rollType)
|
||||||
// Deprecated : if (this.isEditMode) return
|
// Deprecated : if (this.isEditMode) return
|
||||||
switch (rollType) {
|
switch (rollType) {
|
||||||
case "resource":
|
|
||||||
item = foundry.utils.duplicate(this.actor.system.resources)
|
|
||||||
item.name = game.i18n.localize(`CTHULHUETERNAL.Label.Resources`)
|
|
||||||
item.targetScore = item.permanentRating
|
|
||||||
break
|
|
||||||
case "char":
|
case "char":
|
||||||
let charId = $(event.currentTarget).data("char-id")
|
let charId = $(event.currentTarget).data("char-id")
|
||||||
item = foundry.utils.duplicate(this.actor.system.characteristics[charId])
|
item = foundry.utils.duplicate(this.actor.system.characteristics[charId])
|
||||||
item.name = game.i18n.localize(`CTHULHUETERNAL.Label.${charId}Long`)
|
item.name = game.i18n.localize("CTHULHUETERNAL.Label." + charId + "Long")
|
||||||
item.targetScore = item.value * 5
|
item.targetScore = item.value * 5
|
||||||
break
|
break
|
||||||
case "skill":
|
case "skill":
|
||||||
@ -211,11 +204,6 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
|||||||
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"));
|
||||||
break
|
break
|
||||||
case "san":
|
|
||||||
item = foundry.utils.duplicate(this.actor.system.san)
|
|
||||||
item.name = game.i18n.localize("CTHULHUETERNAL.Label.SAN")
|
|
||||||
item.targetScore = item.value
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unknown roll type ${rollType}`)
|
throw new Error(`Unknown roll type ${rollType}`)
|
||||||
}
|
}
|
||||||
|
@ -1,117 +0,0 @@
|
|||||||
import CthulhuEternalActorSheet from "./base-actor-sheet.mjs"
|
|
||||||
|
|
||||||
export default class CthulhuEternalVehicleSheet extends CthulhuEternalActorSheet {
|
|
||||||
/** @override */
|
|
||||||
static DEFAULT_OPTIONS = {
|
|
||||||
classes: ["vehicle"],
|
|
||||||
position: {
|
|
||||||
width: 680,
|
|
||||||
height: 540,
|
|
||||||
},
|
|
||||||
window: {
|
|
||||||
contentClasses: ["vehicle-content"],
|
|
||||||
},
|
|
||||||
actions: {
|
|
||||||
createGear: CthulhuEternalVehicleSheet.#onCreateGear,
|
|
||||||
createWeapon: CthulhuEternalVehicleSheet.#onCreateWeapon,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
static PARTS = {
|
|
||||||
main: {
|
|
||||||
template: "systems/fvtt-cthulhu-eternal/templates/vehicle-main.hbs",
|
|
||||||
},
|
|
||||||
tabs: {
|
|
||||||
template: "templates/generic/tab-navigation.hbs",
|
|
||||||
},
|
|
||||||
equipment: {
|
|
||||||
template: "systems/fvtt-cthulhu-eternal/templates/vehicle-equipment.hbs",
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
template: "systems/fvtt-cthulhu-eternal/templates/vehicle-description.hbs",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
tabGroups = {
|
|
||||||
sheet: "equipment",
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepare an array of form header tabs.
|
|
||||||
* @returns {Record<string, Partial<ApplicationTab>>}
|
|
||||||
*/
|
|
||||||
#getTabs() {
|
|
||||||
const tabs = {
|
|
||||||
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Label.equipment" },
|
|
||||||
description: { id: "description", group: "sheet", icon: "fa-solid fa-book", label: "CTHULHUETERNAL.Label.description" },
|
|
||||||
}
|
|
||||||
for (const v of Object.values(tabs)) {
|
|
||||||
v.active = this.tabGroups[v.group] === v.id
|
|
||||||
v.cssClass = v.active ? "active" : ""
|
|
||||||
}
|
|
||||||
return tabs
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
async _prepareContext() {
|
|
||||||
const context = await super._prepareContext()
|
|
||||||
context.tabs = this.#getTabs()
|
|
||||||
|
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
|
||||||
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
|
|
||||||
|
|
||||||
return context
|
|
||||||
}
|
|
||||||
|
|
||||||
_generateTooltip(type, target) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
async _preparePartContext(partId, context) {
|
|
||||||
const doc = this.document
|
|
||||||
switch (partId) {
|
|
||||||
case "main":
|
|
||||||
break
|
|
||||||
case "equipment":
|
|
||||||
context.tab = context.tabs.equipment
|
|
||||||
context.weapons = doc.itemTypes.weapon
|
|
||||||
context.gears = doc.itemTypes.gear
|
|
||||||
break
|
|
||||||
case "description":
|
|
||||||
context.tab = context.tabs.description
|
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
|
||||||
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return context
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new attack item directly from the sheet and embeds it into the document.
|
|
||||||
* @param {Event} event The initiating click event.
|
|
||||||
* @param {HTMLElement} target The current target of the event listener.
|
|
||||||
*/
|
|
||||||
static #onCreateGear(event, target) {
|
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newGear"), type: "gear" }])
|
|
||||||
}
|
|
||||||
|
|
||||||
static #onCreateWeapon(event, target) {
|
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newWeapon"), type: "weapon" }])
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async _onDrop(event) {
|
|
||||||
if (!this.isEditable || !this.isEditMode) return
|
|
||||||
const data = TextEditor.getDragEventData(event)
|
|
||||||
|
|
||||||
// Handle different data types
|
|
||||||
switch (data.type) {
|
|
||||||
case "Item":
|
|
||||||
const item = await fromUuid(data.uuid)
|
|
||||||
return super._onDropItem(item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -34,26 +34,19 @@ export const AVAILABLE_SETTINGS = {
|
|||||||
postapo: "CTHULHUETERNAL.Settings.PostApo"
|
postapo: "CTHULHUETERNAL.Settings.PostApo"
|
||||||
}
|
}
|
||||||
|
|
||||||
export const INSANITY = {
|
|
||||||
"none": "CTHULHUETERNAL.Insanity.None",
|
|
||||||
"flee": "CTHULHUETERNAL.Insanity.Flee",
|
|
||||||
"struggle": "CTHULHUETERNAL.Insanity.Struggle",
|
|
||||||
"submit": "CTHULHUETERNAL.Insanity.Submit"
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ERA_CSS = {
|
export const ERA_CSS = {
|
||||||
jazz: { primaryFont: "RozhaOne", secondaryFont: "RozhaOne", titleFont: "Broadway", baseFontSize: "1.0rem", titleFontSize: "1.2rem", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%)" },
|
jazz: { primaryFont: "RozhaOne", secondaryFont: "RozhaOne", titleFont: "Broadway", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%)" },
|
||||||
modern: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "Georama", baseFontSize: "1.0rem", titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(92%) sepia(11%) saturate(1214%) hue-rotate(51deg) brightness(93%) contrast(86%)" },
|
modern: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "Georama", imgFilter: "brightness(0) saturate(100%) invert(92%) sepia(11%) saturate(1214%) hue-rotate(51deg) brightness(93%) contrast(86%)" },
|
||||||
future: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "Seabreed", baseFontSize: "1.0rem", titleFontSize: "2.0rem",imgFilter: "invert(90%) sepia(6%) saturate(1818%) hue-rotate(152deg) brightness(91%) contrast(91%)" },
|
future: { primaryFont: "Megrim", secondaryFont: "Megrim", titleFont: "Seabreed", imgFilter: "brightness(0) saturate(100%) invert(83%) sepia(30%) saturate(588%) hue-rotate(168deg) brightness(105%) contrast(103%)" },
|
||||||
victorian: { primaryFont: "Volkhov", secondaryFont: "Volkhov", titleFont: "Excelsior", baseFontSize: "1.0rem", titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(100%) sepia(59%) saturate(1894%) hue-rotate(337deg) brightness(88%) contrast(98%)" },
|
victorian: { primaryFont: "Volkhov", secondaryFont: "Volkhov", titleFont: "Excelsior", imgFilter: "brightness(0) saturate(100%) invert(100%) sepia(59%) saturate(1894%) hue-rotate(337deg) brightness(88%) contrast(98%)" },
|
||||||
coldwar: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "TopSecret", baseFontSize: "1.0rem", titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(14%) saturate(2508%) hue-rotate(202deg) brightness(99%) contrast(105%)"},
|
coldwar: { primaryFont: "BebasNeue", secondaryFont: "BebasNeue", titleFont: "TopSecret", imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(14%) saturate(2508%) hue-rotate(202deg) brightness(99%) contrast(105%)"},
|
||||||
revolution: { primaryFont: "IMFell", secondaryFont: "IMFell", titleFont: "Dominican", baseFontSize: "1.0rem",titleFontSize: "1.3rem",imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(25%) saturate(386%) hue-rotate(7deg) brightness(101%) contrast(84%)" },
|
revolution: { primaryFont: "IMFell", secondaryFont: "IMFell", titleFont: "Dominican", imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(25%) saturate(386%) hue-rotate(7deg) brightness(101%) contrast(84%)" },
|
||||||
medieval: { primaryFont: "UncialAntiqua", secondaryFont: "UncialAntiqua", titleFont: "Luminari", baseFontSize: "0.9rem",titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(93%) sepia(46%) saturate(354%) hue-rotate(321deg) brightness(93%) contrast(87%)"},
|
medieval: { primaryFont: "UncialAntiqua", secondaryFont: "UncialAntiqua", titleFont: "Luminari", imgFilter: "brightness(0) saturate(100%) invert(93%) sepia(46%) saturate(354%) hue-rotate(321deg) brightness(93%) contrast(87%)"},
|
||||||
ww2: { primaryFont: "SairaStencilOne", secondaryFont: "SairaStencilOne", titleFont: "Armalite", baseFontSize: "0.9rem",titleFontSize: "1.2rem",imgFilter: "filter: invert(44%) sepia(8%) saturate(2657%) hue-rotate(40deg) brightness(96%) contrast(75%)"},
|
ww2: { primaryFont: "SairaStencilOne", secondaryFont: "SairaStencilOne", titleFont: "Armalite", imgFilter: "brightness(0) saturate(100%) invert(95%) sepia(9%) saturate(1471%) hue-rotate(342deg) brightness(103%) contrast(107%)"},
|
||||||
ww1: { primaryFont: "CarterOne", secondaryFont: "CarterOne", titleFont: "SigmarOne", baseFontSize: "0.9rem",titleFontSize: "1.1rem",imgFilter: "invert(28%) sepia(27%) saturate(475%) hue-rotate(76deg) brightness(95%) contrast(93%)"},
|
ww1: { primaryFont: "CarterOne", secondaryFont: "CarterOne", titleFont: "SigmarOne", imgFilter: "brightness(0) saturate(100%) invert(90%) sepia(38%) saturate(341%) hue-rotate(21deg) brightness(105%) contrast(105%)"},
|
||||||
ageofsail: { primaryFont: "SailRegular", secondaryFont: "SailRegular", titleFont: "P22Operina", baseFontSize: "1.1rem",titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(43%) sepia(74%) saturate(3154%) hue-rotate(336deg) brightness(95%) contrast(83%)" },
|
ageofsail: { primaryFont: "Tangerine", secondaryFont: "Tangerine", titleFont: "P22Operina", imgFilter: "brightness(0) saturate(100%) invert(43%) sepia(74%) saturate(3154%) hue-rotate(336deg) brightness(95%) contrast(83%)" },
|
||||||
classical: { primaryFont: "ChantelliAntiqua", secondaryFont: "ChantelliAntiqua", titleFont: "TrajanPro", baseFontSize: "0.9rem",titleFontSize: "1.1rem",imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(32%) saturate(7492%) hue-rotate(265deg) brightness(89%) contrast(95%)" },
|
classical: { primaryFont: "SpectralSC", secondaryFont: "SpectralSC", titleFont: "TrajanPro", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(32%) saturate(7492%) hue-rotate(265deg) brightness(89%) contrast(95%)" },
|
||||||
postapo: { primaryFont: "Teko", secondaryFont: "Teko", titleFont: "Teko", baseFontSize: "1.25rem",titleFontSize: "1.5rem",imgFilter: "brightness(0) saturate(100%) invert(44%) sepia(55%) saturate(2341%) hue-rotate(329deg) brightness(122%) contrast(103%))" }
|
postapo: { primaryFont: "Teko", secondaryFont: "Teko", titleFont: "Teko", imgFilter: "brightness(0) saturate(100%) invert(44%) sepia(55%) saturate(2341%) hue-rotate(329deg) brightness(122%) contrast(103%))" }
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RESOURCE_RATING = {
|
export const RESOURCE_RATING = {
|
||||||
@ -89,43 +82,6 @@ export const RESOURCE_RATING = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RESOURCE_BREAKDOWN = [
|
|
||||||
{ value: 0, hand: 0, stowed: 0, storage: 0, checks: 0},
|
|
||||||
{ value: 1, hand: 1, stowed: 0, storage: 0, checks: 1},
|
|
||||||
{ value: 2, hand: 2, stowed: 0, storage: 0, checks: 1},
|
|
||||||
{ value: 3, hand: 3, stowed: 0, storage: 0, checks: 1},
|
|
||||||
{ value: 4, hand: 4, stowed: 0, storage: 0, checks: 1},
|
|
||||||
{ value: 5, hand: 5, stowed: 0, storage: 0, checks: 1},
|
|
||||||
{ value: 6, hand: 6, stowed: 0, storage: 0, checks: 1},
|
|
||||||
{ value: 7, hand: 6, stowed: 1, storage: 0, checks: 2},
|
|
||||||
{ value: 8, hand: 6, stowed: 2, storage: 0, checks: 2},
|
|
||||||
{ value: 9, hand: 6, stowed: 3, storage: 0, checks: 2},
|
|
||||||
{ value: 10, hand: 6, stowed: 4, storage: 0, checks: 2},
|
|
||||||
{ value: 11, hand: 6, stowed: 5, storage: 0, checks: 2},
|
|
||||||
{ value: 12, hand: 6, stowed: 6, storage: 0, checks: 2},
|
|
||||||
{ value: 13, hand: 6, stowed: 6, storage: 1, checks: 3},
|
|
||||||
{ value: 14, hand: 6, stowed: 6, storage: 2, checks: 3},
|
|
||||||
{ value: 15, hand: 6, stowed: 6, storage: 3, checks: 3},
|
|
||||||
{ value: 16, hand: 6, stowed: 6, storage: 4, checks: 3},
|
|
||||||
{ value: 17, hand: 6, stowed: 6, storage: 5, checks: 3},
|
|
||||||
{ value: 18, hand: 6, stowed: 6, storage: 6, checks: 3},
|
|
||||||
{ value: 19, hand: 6, stowed: 6, storage: 7, checks: 3},
|
|
||||||
{ value: 20, hand: 6, stowed: 6, storage: 8, checks: 3}
|
|
||||||
]
|
|
||||||
|
|
||||||
export const VEHICLE_SPEED = {
|
|
||||||
"none": "CTHULHUETERNAL.Label.None",
|
|
||||||
"slow": "CTHULHUETERNAL.Label.Slow",
|
|
||||||
"average": "CTHULHUETERNAL.Label.Average",
|
|
||||||
"fast": "CTHULHUETERNAL.Label.Fast"
|
|
||||||
}
|
|
||||||
|
|
||||||
export const EQUIPMENT_STATES = {
|
|
||||||
"pristine": "CTHULHUETERNAL.Label.Pristine",
|
|
||||||
"worn": "CTHULHUETERNAL.Label.Worn",
|
|
||||||
"junk": "CTHULHUETERNAL.Label.Junk"
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MENTAL_ILLNESS_CURE_SKILL = {
|
export const MENTAL_ILLNESS_CURE_SKILL = {
|
||||||
jazz: "CTHULHUETERNAL.Skill.Psychoanalyze",
|
jazz: "CTHULHUETERNAL.Skill.Psychoanalyze",
|
||||||
modern: "CTHULHUETERNAL.Skill.Psychoanalyze",
|
modern: "CTHULHUETERNAL.Skill.Psychoanalyze",
|
||||||
@ -209,26 +165,6 @@ export const WEAPON_SKILL_MAPPING = {
|
|||||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const MODIFIER_CHOICES = {
|
|
||||||
"-40": "-40",
|
|
||||||
"-20": "-20",
|
|
||||||
"-10": "-10",
|
|
||||||
"+0": "+0",
|
|
||||||
"+10": "+10",
|
|
||||||
"+20": "+20",
|
|
||||||
"+40": "+40",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MULTIPLIER_CHOICES = {
|
|
||||||
"0.25": "0.25",
|
|
||||||
"0.5": "0.5",
|
|
||||||
"1": "1",
|
|
||||||
"2": "2",
|
|
||||||
"4": "4",
|
|
||||||
"5": "5"
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Include all constant definitions within the SYSTEM global export
|
* Include all constant definitions within the SYSTEM global export
|
||||||
* @type {Object}
|
* @type {Object}
|
||||||
@ -245,11 +181,5 @@ export const SYSTEM = {
|
|||||||
RESOURCE_RATING,
|
RESOURCE_RATING,
|
||||||
MENTAL_ILLNESS_CURE_SKILL,
|
MENTAL_ILLNESS_CURE_SKILL,
|
||||||
ERA_CSS,
|
ERA_CSS,
|
||||||
INSANITY,
|
|
||||||
EQUIPMENT_STATES,
|
|
||||||
RESOURCE_BREAKDOWN,
|
|
||||||
VEHICLE_SPEED,
|
|
||||||
MODIFIER_CHOICES,
|
|
||||||
MULTIPLIER_CHOICES,
|
|
||||||
ASCII
|
ASCII
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ export default class CthulhuEternalActor extends Actor {
|
|||||||
const skills = await CthulhuEternalUtils.loadCompendium("fvtt-cthulhu-eternal.skills")
|
const skills = await CthulhuEternalUtils.loadCompendium("fvtt-cthulhu-eternal.skills")
|
||||||
data.items = data.items || []
|
data.items = data.items || []
|
||||||
for (let skill of skills) {
|
for (let skill of skills) {
|
||||||
if (skill.system.settings === era) {
|
if (skill.system.settings === era ) {
|
||||||
data.items.push(skill.toObject())
|
data.items.push(skill.toObject())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -28,36 +28,6 @@ export default class CthulhuEternalActor extends Actor {
|
|||||||
return super.create(data, options);
|
return super.create(data, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onUpdate(changed, options, userId) {
|
|
||||||
// DEBUG : console.log("CthulhuEternalActor.update", changed, options, userId)
|
|
||||||
if (changed?.system?.wp?.exhausted) {
|
|
||||||
ChatMessage.create({
|
|
||||||
user: userId,
|
|
||||||
speaker: { alias: this.name },
|
|
||||||
rollMode: "selfroll",
|
|
||||||
content: game.i18n.localize("CTHULHUETERNAL.ChatMessage.exhausted"),
|
|
||||||
type: CONST.CHAT_MESSAGE_STYLES.OTHER
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return super._onUpdate(changed, options, userId)
|
|
||||||
}
|
|
||||||
|
|
||||||
async createEmbeddedDocuments(embeddedName, data, operation) {
|
|
||||||
let newData = []
|
|
||||||
if (embeddedName === "Item") {
|
|
||||||
for (let i of data) {
|
|
||||||
if (i.type === "skill") {
|
|
||||||
if (this.items.find(item => item.name.toLowerCase() === i.name.toLowerCase())) {
|
|
||||||
ui.notifications.warn(game.i18n.localize("CTHULHUETERNAL.Notifications.skillAlreadyExists"))
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
newData.push(i)
|
|
||||||
}
|
|
||||||
return super.createEmbeddedDocuments(embeddedName, newData, operation)
|
|
||||||
}
|
|
||||||
return super.createEmbeddedDocuments(embeddedName, data, operation)
|
|
||||||
}
|
|
||||||
|
|
||||||
async _preCreate(data, options, user) {
|
async _preCreate(data, options, user) {
|
||||||
await super._preCreate(data, options, user)
|
await super._preCreate(data, options, user)
|
||||||
@ -72,6 +42,6 @@ export default class CthulhuEternalActor extends Actor {
|
|||||||
})
|
})
|
||||||
this.updateSource({ prototypeToken })
|
this.updateSource({ prototypeToken })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,18 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
return this.options.hasTarget
|
return this.options.hasTarget
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get targetName() {
|
||||||
|
return this.options.targetName
|
||||||
|
}
|
||||||
|
|
||||||
|
get targetArmor() {
|
||||||
|
return this.options.targetArmor
|
||||||
|
}
|
||||||
|
|
||||||
|
get targetMalus() {
|
||||||
|
return this.options.targetMalus
|
||||||
|
}
|
||||||
|
|
||||||
get realDamage() {
|
get realDamage() {
|
||||||
return this.options.realDamage
|
return this.options.realDamage
|
||||||
}
|
}
|
||||||
@ -67,35 +79,6 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
return this.options.weapon
|
return this.options.weapon
|
||||||
}
|
}
|
||||||
|
|
||||||
get isLowWP() {
|
|
||||||
return this.options.isLowWP
|
|
||||||
}
|
|
||||||
|
|
||||||
get isZeroWP() {
|
|
||||||
return this.options.isZeroWP
|
|
||||||
}
|
|
||||||
|
|
||||||
get isExhausted() {
|
|
||||||
return this.options.isExhausted
|
|
||||||
}
|
|
||||||
|
|
||||||
static updateResourceDialog(options) {
|
|
||||||
let rating = 0
|
|
||||||
if (options.rollItem.enableHand) {
|
|
||||||
rating += options.rollItem.hand
|
|
||||||
}
|
|
||||||
if (options.rollItem.enableStowed) {
|
|
||||||
rating += options.rollItem.stowed
|
|
||||||
}
|
|
||||||
if (options.rollItem.enableStorage) {
|
|
||||||
rating += options.rollItem.storage
|
|
||||||
}
|
|
||||||
let multiplier = Number($(`.roll-skill-multiplier`).val())
|
|
||||||
options.initialScore = rating
|
|
||||||
options.percentScore = rating * multiplier
|
|
||||||
$(".resource-score").text(`${rating} (${options.percentScore}%)`)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prompt the user with a dialog to configure and execute a roll.
|
* Prompt the user with a dialog to configure and execute a roll.
|
||||||
*
|
*
|
||||||
@ -112,28 +95,14 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
*/
|
*/
|
||||||
static async prompt(options = {}) {
|
static async prompt(options = {}) {
|
||||||
let formula = "1d100"
|
let formula = "1d100"
|
||||||
let hasModifier = true
|
|
||||||
let hasMultiplier = false
|
|
||||||
|
|
||||||
switch (options.rollType) {
|
switch (options.rollType) {
|
||||||
case "skill":
|
case "skill":
|
||||||
console.log(options.rollItem)
|
console.log(options.rollItem)
|
||||||
options.initialScore = options.rollItem.system.computeScore()
|
options.initialScore = options.rollItem.system.computeScore()
|
||||||
break
|
break
|
||||||
case "san":
|
|
||||||
case "char":
|
case "char":
|
||||||
options.initialScore = options.rollItem.targetScore
|
options.initialScore = options.rollItem.targetScore
|
||||||
break
|
break
|
||||||
case "resource":
|
|
||||||
hasModifier = false
|
|
||||||
hasMultiplier = true
|
|
||||||
options.initialScore = options.rollItem.targetScore
|
|
||||||
options.totalRating = options.rollItem.targetScore
|
|
||||||
options.percentScore = options.rollItem.targetScore * 5
|
|
||||||
options.rollItem.enableHand = true
|
|
||||||
options.rollItem.enableStowed = true
|
|
||||||
options.rollItem.enableStorage = true
|
|
||||||
break
|
|
||||||
case "damage":
|
case "damage":
|
||||||
let formula = options.rollItem.system.damage
|
let formula = options.rollItem.system.damage
|
||||||
let damageRoll = new Roll(formula)
|
let damageRoll = new Roll(formula)
|
||||||
@ -142,7 +111,7 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
flavor: `${options.rollItem.name} - Damage Roll`
|
flavor: `${options.rollItem.name} - Damage Roll`
|
||||||
});
|
});
|
||||||
let isLethal = false
|
let isLethal = 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()
|
||||||
isLethal = (lethalityRoll.total <= options.rollItem.system.lethality)
|
isLethal = (lethalityRoll.total <= options.rollItem.system.lethality)
|
||||||
@ -153,18 +122,10 @@ 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 (!SYSTEM.WEAPON_SKILL_MAPPING[era] || !SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) {
|
|
||||||
ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponType"))
|
|
||||||
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])
|
||||||
let actor = game.actors.get(options.actorId)
|
let actor = game.actors.get(options.actorId)
|
||||||
options.weapon = options.rollItem
|
options.weapon = options.rollItem
|
||||||
options.rollItem = actor.items.find(i => i.type === "skill" && i.name.toLowerCase() === skillName.toLowerCase())
|
options.rollItem = actor.items.find(i => i.type === "skill" && i.name.toLowerCase() === skillName.toLowerCase())
|
||||||
if (!options.rollItem) {
|
|
||||||
ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponSkill"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
options.initialScore = options.rollItem.system.computeScore()
|
options.initialScore = options.rollItem.system.computeScore()
|
||||||
console.log("WEAPON", skillName, era, options.rollItem)
|
console.log("WEAPON", skillName, era, options.rollItem)
|
||||||
break
|
break
|
||||||
@ -180,11 +141,20 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
default: "public",
|
default: "public",
|
||||||
})
|
})
|
||||||
|
|
||||||
const choiceModifier = SYSTEM.MODIFIER_CHOICES
|
const choiceModifier = {
|
||||||
const choiceMultiplier = SYSTEM.MULTIPLIER_CHOICES
|
"-10": "-10",
|
||||||
|
"-20": "-20",
|
||||||
|
"-40": "-40",
|
||||||
|
"0": "0",
|
||||||
|
"+10": "+10",
|
||||||
|
"+20": "+20",
|
||||||
|
"+40": "+40",
|
||||||
|
}
|
||||||
|
|
||||||
let modifier = "+0"
|
let modifier = "0"
|
||||||
let multiplier = "5"
|
let targetMalus = "0"
|
||||||
|
let targetName
|
||||||
|
let targetArmor
|
||||||
|
|
||||||
let dialogContext = {
|
let dialogContext = {
|
||||||
rollType: options.rollType,
|
rollType: options.rollType,
|
||||||
@ -194,20 +164,14 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
targetScore: options.initialScore,
|
targetScore: options.initialScore,
|
||||||
isLowWP: options.isLowWP,
|
isLowWP: options.isLowWP,
|
||||||
isZeroWP: options.isZeroWP,
|
isZeroWP: options.isZeroWP,
|
||||||
isExhausted: options.isExhausted,
|
|
||||||
enableHand: options.rollItem.enableHand,
|
|
||||||
enableStowed: options.rollItem.enableStowed,
|
|
||||||
enableStorage: options.rollItem.enableStorage,
|
|
||||||
rollModes,
|
rollModes,
|
||||||
fieldRollMode,
|
fieldRollMode,
|
||||||
choiceModifier,
|
choiceModifier,
|
||||||
choiceMultiplier,
|
|
||||||
formula,
|
formula,
|
||||||
hasTarget: options.hasTarget,
|
hasTarget: options.hasTarget,
|
||||||
hasModifier,
|
|
||||||
hasMultiplier,
|
|
||||||
modifier,
|
modifier,
|
||||||
multiplier
|
targetName,
|
||||||
|
targetArmor
|
||||||
}
|
}
|
||||||
const content = await renderTemplate("systems/fvtt-cthulhu-eternal/templates/roll-dialog.hbs", dialogContext)
|
const content = await renderTemplate("systems/fvtt-cthulhu-eternal/templates/roll-dialog.hbs", dialogContext)
|
||||||
|
|
||||||
@ -229,27 +193,9 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
actions: {
|
|
||||||
"selectHand": (event, button, dialog) => {
|
|
||||||
options.rollItem.enableHand = !options.rollItem.enableHand
|
|
||||||
this.updateResourceDialog(options)
|
|
||||||
},
|
|
||||||
"selectStowed": (event, button, dialog) => {
|
|
||||||
options.rollItem.enableStowed = !options.rollItem.enableStowed
|
|
||||||
this.updateResourceDialog(options)
|
|
||||||
},
|
|
||||||
"selectStorage": (event, button, dialog) => {
|
|
||||||
options.rollItem.enableStorage = !options.rollItem.enableStorage
|
|
||||||
this.updateResourceDialog(options)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
rejectClose: false, // Click on Close button will not launch an error
|
rejectClose: false, // Click on Close button will not launch an error
|
||||||
render: (event, dialog) => {
|
render: (event, dialog) => {
|
||||||
$(".roll-skill-multiplier").change(event => {
|
},
|
||||||
options.multiplier = Number(event.target.value)
|
|
||||||
this.updateResourceDialog(options)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// If the user cancels the dialog, exit
|
// If the user cancels the dialog, exit
|
||||||
@ -257,21 +203,20 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
|
|
||||||
let rollData = foundry.utils.mergeObject(foundry.utils.duplicate(options), rollContext)
|
let rollData = foundry.utils.mergeObject(foundry.utils.duplicate(options), rollContext)
|
||||||
rollData.rollMode = rollContext.visibility
|
rollData.rollMode = rollContext.visibility
|
||||||
|
rollData.targetName = targetName
|
||||||
|
rollData.targetArmor = targetArmor
|
||||||
|
rollData.targetMalus = targetMalus
|
||||||
|
|
||||||
// Update target score
|
// Update target score
|
||||||
console.log(rollData)
|
console.log(rollData)
|
||||||
if (options.rollType === "resource" ) {
|
rollData.targetScore = Math.min( Math.max(options.initialScore + Number(rollData.modifier), 0), 100)
|
||||||
rollData.targetScore = options.initialScore * Number(rollContext.multiplier)
|
if ( rollData.isLowWP ) {
|
||||||
} else {
|
|
||||||
rollData.targetScore = Math.min(Math.max(options.initialScore + Number(rollData.modifier), 0), 100)
|
|
||||||
if (rollData.isLowWP || rollData.isExhausted) {
|
|
||||||
rollData.targetScore -= 20
|
rollData.targetScore -= 20
|
||||||
}
|
}
|
||||||
if (rollData.isZeroWP) {
|
if ( rollData.isZeroWP ) {
|
||||||
rollData.targetScore = 0
|
rollData.targetScore = 0
|
||||||
}
|
}
|
||||||
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.
|
* A hook event that fires before the roll is made.
|
||||||
@ -283,8 +228,8 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
|
|
||||||
// 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(roll.total/10)
|
||||||
let unit = roll.total - (dec * 10)
|
let unit = roll.total - (dec*10)
|
||||||
if (roll.total <= rollData.targetScore) {
|
if (roll.total <= rollData.targetScore) {
|
||||||
resultType = "success"
|
resultType = "success"
|
||||||
// Detect if decimal == unit in the dire total result
|
// Detect if decimal == unit in the dire total result
|
||||||
@ -302,9 +247,6 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
roll.options.isSuccess = resultType === "success" || resultType === "successCritical"
|
roll.options.isSuccess = resultType === "success" || resultType === "successCritical"
|
||||||
roll.options.isFailure = resultType === "failure" || resultType === "failureCritical"
|
roll.options.isFailure = resultType === "failure" || resultType === "failureCritical"
|
||||||
roll.options.isCritical = resultType === "successCritical" || resultType === "failureCritical"
|
roll.options.isCritical = resultType === "successCritical" || resultType === "failureCritical"
|
||||||
roll.options.isLowWP = rollData.isLowWP
|
|
||||||
roll.options.isZeroWP = rollData.isZeroWP
|
|
||||||
roll.options.isExhausted = rollData.isExhausted
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A hook event that fires after the roll has been made.
|
* A hook event that fires after the roll has been made.
|
||||||
@ -327,10 +269,6 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
return `${game.i18n.localize("CTHULHUETERNAL.Label.titleSkill")}`
|
return `${game.i18n.localize("CTHULHUETERNAL.Label.titleSkill")}`
|
||||||
case "weapon":
|
case "weapon":
|
||||||
return `${game.i18n.localize("CTHULHUETERNAL.Label.titleWeapon")}`
|
return `${game.i18n.localize("CTHULHUETERNAL.Label.titleWeapon")}`
|
||||||
case "char":
|
|
||||||
return `${game.i18n.localize("CTHULHUETERNAL.Label.titleCharacteristic")}`
|
|
||||||
case "san":
|
|
||||||
return `${game.i18n.localize("CTHULHUETERNAL.Label.titleSAN")}`
|
|
||||||
default:
|
default:
|
||||||
return game.i18n.localize("CTHULHUETERNAL.Label.titleStandard")
|
return game.i18n.localize("CTHULHUETERNAL.Label.titleStandard")
|
||||||
}
|
}
|
||||||
@ -384,10 +322,6 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
cardData.realDamage = this.realDamage
|
cardData.realDamage = this.realDamage
|
||||||
cardData.isPrivate = isPrivate
|
cardData.isPrivate = isPrivate
|
||||||
cardData.weapon = this.weapon
|
cardData.weapon = this.weapon
|
||||||
cardData.isLowWP = this.isLowWP
|
|
||||||
cardData.isZeroWP = this.isZeroWP
|
|
||||||
cardData.isExhausted = this.isExhausted
|
|
||||||
|
|
||||||
|
|
||||||
console.log(cardData)
|
console.log(cardData)
|
||||||
|
|
||||||
@ -412,6 +346,9 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
actingCharName: this.actorName,
|
actingCharName: this.actorName,
|
||||||
actingCharImg: this.actorImage,
|
actingCharImg: this.actorImage,
|
||||||
hasTarget: this.hasTarget,
|
hasTarget: this.hasTarget,
|
||||||
|
targetName: this.targetName,
|
||||||
|
targetArmor: this.targetArmor,
|
||||||
|
targetMalus: this.targetMalus,
|
||||||
realDamage: this.realDamage,
|
realDamage: this.realDamage,
|
||||||
...messageData,
|
...messageData,
|
||||||
},
|
},
|
||||||
|
80
module/enrichers.mjs
Normal file
80
module/enrichers.mjs
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
/**
|
||||||
|
* Enricher qui permet de transformer un texte en un lien de lancer de dés
|
||||||
|
* Pour une syntaxe de type @jet[x]{y}(z) avec x la caractéristique, y le titre et z l'avantage
|
||||||
|
* x de type rob, dex, int, per, vol pour les caractéristiques
|
||||||
|
* et de type oeil, verbe, san, bourse, magie pour les ressources
|
||||||
|
* y est le titre du jet et permet de décrire l'action
|
||||||
|
* z est l'avantage du jet, avec pour valeurs possibles : --, -, +, ++
|
||||||
|
*/
|
||||||
|
export function setupTextEnrichers() {
|
||||||
|
CONFIG.TextEditor.enrichers = CONFIG.TextEditor.enrichers.concat([
|
||||||
|
{
|
||||||
|
// eslint-disable-next-line no-useless-escape
|
||||||
|
pattern: /\@jet\[(.+?)\]{(.*?)}\((.*?)\)/gm,
|
||||||
|
enricher: async (match, options) => {
|
||||||
|
const a = document.createElement("a")
|
||||||
|
a.classList.add("ask-roll-journal")
|
||||||
|
const target = match[1]
|
||||||
|
const title = match[2]
|
||||||
|
const avantage = match[3]
|
||||||
|
|
||||||
|
let type = "resource"
|
||||||
|
if (["rob", "dex", "int", "per", "vol"].includes(target)) {
|
||||||
|
type = "save"
|
||||||
|
}
|
||||||
|
|
||||||
|
let rollAvantage = "normal"
|
||||||
|
if (avantage) {
|
||||||
|
switch (avantage) {
|
||||||
|
case "++":
|
||||||
|
rollAvantage = "++"
|
||||||
|
break
|
||||||
|
case "+":
|
||||||
|
rollAvantage = "+"
|
||||||
|
break
|
||||||
|
case "-":
|
||||||
|
rollAvantage = "-"
|
||||||
|
break
|
||||||
|
case "--":
|
||||||
|
rollAvantage = "--"
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a.dataset.rollType = type
|
||||||
|
a.dataset.rollTarget = target
|
||||||
|
a.dataset.rollTitle = title
|
||||||
|
a.dataset.rollAvantage = rollAvantage
|
||||||
|
a.innerHTML = `
|
||||||
|
<i class="fas fa-dice-d20"></i> ${getLibelle(target)}${rollAvantage !== "normal" ? rollAvantage : ""}
|
||||||
|
`
|
||||||
|
return a
|
||||||
|
},
|
||||||
|
},
|
||||||
|
])
|
||||||
|
}
|
||||||
|
const mapLibelles = {
|
||||||
|
rob: "ROB",
|
||||||
|
dex: "DEX",
|
||||||
|
int: "INT",
|
||||||
|
per: "PER",
|
||||||
|
vol: "VOL",
|
||||||
|
oeil: "OEIL",
|
||||||
|
verbe: "VERBE",
|
||||||
|
san: "SANTE MENTALE",
|
||||||
|
bourse: "BOURSE",
|
||||||
|
magie: "MAGIE",
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retourne le libellé associé à la valeur qui sera affiché dans le journal
|
||||||
|
* @param {string} value
|
||||||
|
*/
|
||||||
|
function getLibelle(value) {
|
||||||
|
if (mapLibelles[value]) {
|
||||||
|
return mapLibelles[value]
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
82
module/macros.mjs
Normal file
82
module/macros.mjs
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
export class Macros {
|
||||||
|
/**
|
||||||
|
* Creates a macro based on the type of data dropped onto the hotbar.
|
||||||
|
*
|
||||||
|
* @param {Object} dropData The data object representing the item dropped.
|
||||||
|
* @param {string} dropData.type The type of the dropped item (e.g., "Actor", "JournalEntry", "roll").
|
||||||
|
* @param {string} dropData.uuid The UUID of the dropped item.
|
||||||
|
* @param {string} [dropData.actorId] The ID of the actor (required if type is "roll").
|
||||||
|
* @param {string} [dropData.rollType] The type of roll (required if type is "roll").
|
||||||
|
* @param {string} [dropData.rollTarget] The target of the roll (required if type is "roll").
|
||||||
|
* @param {string} [dropData.value] The value of the roll (required if type is "roll").
|
||||||
|
* @param {number} slot The hotbar slot where the macro will be created.
|
||||||
|
*
|
||||||
|
* @returns {Promise<void>} A promise that resolves when the macro is created.
|
||||||
|
*/
|
||||||
|
static createCthulhuEternalMacro = async function (dropData, slot) {
|
||||||
|
switch (dropData.type) {
|
||||||
|
case "Actor":
|
||||||
|
const actor = await fromUuid(dropData.uuid)
|
||||||
|
const actorCommand = `game.actors.get("${actor.id}").sheet.render(true)`
|
||||||
|
this.createMacro(slot, actor.name, actorCommand, actor.img)
|
||||||
|
break
|
||||||
|
|
||||||
|
case "JournalEntry":
|
||||||
|
const journal = await fromUuid(dropData.uuid)
|
||||||
|
const journalCommand = `game.journal.get("${journal.id}").sheet.render(true)`
|
||||||
|
this.createMacro(slot, journal.name, journalCommand, journal.img ? journal.img : "icons/svg/book.svg")
|
||||||
|
break
|
||||||
|
|
||||||
|
case "roll":
|
||||||
|
const rollCommand =
|
||||||
|
dropData.rollType === "save"
|
||||||
|
? `game.actors.get('${dropData.actorId}').system.roll('${dropData.rollType}', '${dropData.rollTarget}', '=');`
|
||||||
|
: `game.actors.get('${dropData.actorId}').system.roll('${dropData.rollType}', '${dropData.rollTarget}');`
|
||||||
|
const rollName = `${game.i18n.localize("TENEBRIS.Label.jet")} ${game.i18n.localize(`TENEBRIS.Manager.${dropData.rollTarget}`)}`
|
||||||
|
this.createMacro(slot, rollName, rollCommand, "icons/svg/d20-grey.svg")
|
||||||
|
break
|
||||||
|
|
||||||
|
case "rollDamage":
|
||||||
|
const weapon = game.actors.get(dropData.actorId).items.get(dropData.rollTarget)
|
||||||
|
const rollDamageCommand = `game.actors.get('${dropData.actorId}').system.roll('${dropData.rollType}', '${dropData.rollTarget}');`
|
||||||
|
const rollDamageName = `${game.i18n.localize("TENEBRIS.Label.jet")} ${weapon.name}`
|
||||||
|
this.createMacro(slot, rollDamageName, rollDamageCommand, weapon.img)
|
||||||
|
break
|
||||||
|
|
||||||
|
case "rollAttack":
|
||||||
|
const rollAttackCommand = `game.actors.get('${dropData.actorId}').system.roll('${dropData.rollValue}', '${dropData.rollTarget}');`
|
||||||
|
const rollAttackName = `${game.i18n.localize("TENEBRIS.Label.jet")} ${dropData.rollTarget}`
|
||||||
|
this.createMacro(slot, rollAttackName, rollAttackCommand, "icons/svg/d20-grey.svg")
|
||||||
|
break
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Handle other cases or do nothing
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a macro
|
||||||
|
* All macros are flaged with a tenebris.macro flag at true
|
||||||
|
* @param {*} slot
|
||||||
|
* @param {*} name
|
||||||
|
* @param {*} command
|
||||||
|
* @param {*} img
|
||||||
|
*/
|
||||||
|
static createMacro = async function (slot, name, command, img) {
|
||||||
|
let macro = game.macros.contents.find((m) => m.name === name && m.command === command)
|
||||||
|
if (!macro) {
|
||||||
|
macro = await Macro.create(
|
||||||
|
{
|
||||||
|
name: name,
|
||||||
|
type: "script",
|
||||||
|
img: img,
|
||||||
|
command: command,
|
||||||
|
flags: { "tenebris.macro": true },
|
||||||
|
},
|
||||||
|
{ displaySheet: false },
|
||||||
|
)
|
||||||
|
game.user.assignHotbarMacro(macro, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -9,5 +9,3 @@ 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 CthulhuEternalVehicle } from "./vehicle.mjs"
|
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ export default class CthulhuEternalGHear extends foundry.abstract.TypeDataModel
|
|||||||
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 })
|
schema.settings = new fields.StringField({ required: true, initial: "modern", 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 })
|
|
||||||
|
|
||||||
return schema
|
return schema
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@ export default class CthulhuEternalMentalDisorder extends foundry.abstract.TypeD
|
|||||||
const schema = {}
|
const schema = {}
|
||||||
|
|
||||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
schema.cured = new fields.BooleanField({ required: true, initial: false })
|
|
||||||
|
|
||||||
return schema
|
return schema
|
||||||
}
|
}
|
||||||
|
@ -33,8 +33,8 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
|||||||
})
|
})
|
||||||
|
|
||||||
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: 0, min: 0 }),
|
||||||
max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
stunned: new fields.BooleanField({ required: true, initial: false })
|
stunned: new fields.BooleanField({ required: true, initial: false })
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -44,23 +44,16 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
|||||||
recovery: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
recovery: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
violence: new fields.ArrayField(new fields.BooleanField(), { required: true, initial: [false, false, false], min:3, max:3}),
|
violence: new fields.ArrayField(new fields.BooleanField(), { required: true, initial: [false, false, false], min:3, max:3}),
|
||||||
helplessness: new fields.ArrayField(new fields.BooleanField(), { required: true, initial: [false, false, false], min:3, max:3 }),
|
helplessness: new fields.ArrayField(new fields.BooleanField(), { required: true, initial: [false, false, false], min:3, max:3 }),
|
||||||
breakingPoint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
breakingPoint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||||
insanity: new fields.StringField({ required: true, nullable: false, initial: "none", choices:SYSTEM.INSANITY }),
|
|
||||||
})
|
})
|
||||||
|
|
||||||
schema.damageBonus = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
schema.damageBonus = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||||
|
|
||||||
schema.resources = new fields.SchemaField({
|
schema.resources = new fields.SchemaField({
|
||||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), // Unused but kept for compatibility
|
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
permanentRating: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
|
||||||
hand: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
hand: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
currentHand: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
|
||||||
stowed: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
stowed: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
currentStowed: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
storage: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||||
storage: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
|
||||||
currentStorage: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
|
||||||
checks: new fields.ArrayField(new fields.BooleanField(), { required: true, initial: [false, false, false], min:3, max:3 }),
|
|
||||||
nbValidChecks: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
|
||||||
})
|
})
|
||||||
|
|
||||||
schema.biodata = new fields.SchemaField({
|
schema.biodata = new fields.SchemaField({
|
||||||
@ -73,8 +66,6 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
|||||||
eyes: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
eyes: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
hair: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
hair: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
harshness: new fields.StringField({ required: true, nullable: false, initial: "normal", choices:SYSTEM.HARSHNESS }),
|
harshness: new fields.StringField({ required: true, nullable: false, initial: "normal", choices:SYSTEM.HARSHNESS }),
|
||||||
adaptedToViolence: new fields.BooleanField({ required: true, initial: false }),
|
|
||||||
adaptedToHelplessness: new fields.BooleanField({ required: true, initial: false })
|
|
||||||
})
|
})
|
||||||
|
|
||||||
return schema
|
return schema
|
||||||
@ -99,13 +90,18 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
|||||||
let unnatural = this.parent.items.find(i => i.type === "skill" && i.name.toLowerCase() === game.i18n.localize("CTHULHUETERNAL.Skill.Unnatural").toLowerCase())
|
let unnatural = this.parent.items.find(i => i.type === "skill" && i.name.toLowerCase() === game.i18n.localize("CTHULHUETERNAL.Skill.Unnatural").toLowerCase())
|
||||||
let minus = 0
|
let minus = 0
|
||||||
if (unnatural) {
|
if (unnatural) {
|
||||||
minus = unnatural.system.skillTotal
|
minus = unnatural.data.skillTotal
|
||||||
}
|
}
|
||||||
let maxSan = Math.max(99 - minus, 0)
|
let maxSan = Math.max(99 - minus, 0)
|
||||||
if ( this.san.max !== maxSan) {
|
if ( this.san.max !== maxSan) {
|
||||||
updates[`system.san.max`] = maxSan
|
updates[`system.san.max`] = maxSan
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let bp = Math.max(this.san.value - this.characteristics.pow.value, 0)
|
||||||
|
if ( this.san.breakingPoint !== bp) {
|
||||||
|
updates[`system.san.breakingPoint`] = bp
|
||||||
|
}
|
||||||
|
|
||||||
let recoverySan = this.characteristics.pow.value * 5
|
let recoverySan = this.characteristics.pow.value * 5
|
||||||
if (recoverySan > this.san.max) {
|
if (recoverySan > this.san.max) {
|
||||||
recoverySan = this.san.max
|
recoverySan = this.san.max
|
||||||
@ -141,25 +137,6 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
|||||||
updates[`system.hp.value`] = this.hp.max
|
updates[`system.hp.value`] = this.hp.max
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.resources.permanentRating < 0) {
|
|
||||||
updates[`system.resources.permanentRating`] = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
let resourceIndex = Math.max(Math.min(this.resources.permanentRating, 20), 0)
|
|
||||||
let breakdown = SYSTEM.RESOURCE_BREAKDOWN[resourceIndex]
|
|
||||||
if (this.resources.hand !== breakdown.hand) {
|
|
||||||
updates[`system.resources.hand`] = breakdown.hand
|
|
||||||
}
|
|
||||||
if (this.resources.stowed !== breakdown.stowed) {
|
|
||||||
updates[`system.resources.stowed`] = breakdown.stowed
|
|
||||||
}
|
|
||||||
if (this.resources.storage !== breakdown.storage) {
|
|
||||||
updates[`system.resources.storage`] = breakdown.storage + (this.resources.permanentRating - resourceIndex)
|
|
||||||
}
|
|
||||||
if (this.resources.nbValidChecks !== breakdown.checks) {
|
|
||||||
updates[`system.resources.nbValidChecks`] = breakdown.checks
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(updates).length > 0) {
|
if (Object.keys(updates).length > 0) {
|
||||||
this.parent.update(updates)
|
this.parent.update(updates)
|
||||||
}
|
}
|
||||||
@ -174,21 +151,6 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
|||||||
return this.wp.value === 0
|
return this.wp.value === 0
|
||||||
}
|
}
|
||||||
|
|
||||||
isExhausted() {
|
|
||||||
return this.wp.exhausted
|
|
||||||
}
|
|
||||||
|
|
||||||
setBP() {
|
|
||||||
let updates = {}
|
|
||||||
let bp = Math.max(this.san.value - this.characteristics.pow.value, 0)
|
|
||||||
if ( this.san.breakingPoint !== bp) {
|
|
||||||
updates[`system.san.breakingPoint`] = bp
|
|
||||||
}
|
|
||||||
if (Object.keys(updates).length > 0) {
|
|
||||||
this.parent.update(updates)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
/**
|
/**
|
||||||
* Rolls a dice for a character.
|
* Rolls a dice for a character.
|
||||||
@ -205,7 +167,6 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
|||||||
rollItem,
|
rollItem,
|
||||||
isLowWP: this.isLowWP(),
|
isLowWP: this.isLowWP(),
|
||||||
isZeroWP: this.isZeroWP(),
|
isZeroWP: this.isZeroWP(),
|
||||||
isExhausted: this.isExhausted(),
|
|
||||||
actorId: this.parent.id,
|
actorId: this.parent.id,
|
||||||
actorName: this.parent.name,
|
actorName: this.parent.name,
|
||||||
actorImage: this.parent.img,
|
actorImage: this.parent.img,
|
||||||
|
@ -20,6 +20,7 @@ export default class CthulhuEternalSkill extends foundry.abstract.TypeDataModel
|
|||||||
/** @override */
|
/** @override */
|
||||||
static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Skill"]
|
static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Skill"]
|
||||||
|
|
||||||
|
|
||||||
prepareDerivedData() {
|
prepareDerivedData() {
|
||||||
super.prepareDerivedData();
|
super.prepareDerivedData();
|
||||||
this.skillTotal = this.computeScore();
|
this.skillTotal = this.computeScore();
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
import { SYSTEM } from "../config/system.mjs"
|
|
||||||
import CthulhuEternalRoll from "../documents/roll.mjs"
|
|
||||||
|
|
||||||
export default class CthulhuEternalVehicle extends foundry.abstract.TypeDataModel {
|
|
||||||
static defineSchema() {
|
|
||||||
const fields = foundry.data.fields
|
|
||||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
|
||||||
const schema = {}
|
|
||||||
|
|
||||||
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
|
|
||||||
|
|
||||||
schema.hp = new fields.SchemaField({
|
|
||||||
value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
|
||||||
max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 })
|
|
||||||
})
|
|
||||||
|
|
||||||
schema.armor = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
|
||||||
schema.surfaceSpeed = new fields.StringField({ required: true, initial: "slow", choices: SYSTEM.VEHICLE_SPEED })
|
|
||||||
schema.airSpeed = new fields.StringField({ required: true, initial: "none", choices: SYSTEM.VEHICLE_SPEED })
|
|
||||||
schema.state = new fields.StringField({ required: true, initial: "pristine", choices: SYSTEM.EQUIPMENT_STATES })
|
|
||||||
|
|
||||||
schema.crew = new fields.ArrayField(new fields.StringField(), { required: false, initial: [], min:0 })
|
|
||||||
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
|
||||||
|
|
||||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
|
||||||
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
|
||||||
|
|
||||||
return schema
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Vehicle"]
|
|
||||||
|
|
||||||
}
|
|
@ -17,7 +17,6 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
|||||||
schema.killRadius = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
schema.killRadius = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||||
schema.armorPiercing = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
schema.armorPiercing = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||||
schema.weaponSubtype = new fields.StringField({ required: true, initial: "basicfirearm", choices: SYSTEM.WEAPON_SUBTYPE })
|
schema.weaponSubtype = new fields.StringField({ required: true, initial: "basicfirearm", choices: SYSTEM.WEAPON_SUBTYPE })
|
||||||
schema.state = new fields.StringField({ required: true, initial: "pristine", choices: SYSTEM.EQUIPMENT_STATES })
|
|
||||||
|
|
||||||
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||||
|
|
||||||
|
@ -9,5 +9,24 @@
|
|||||||
*/
|
*/
|
||||||
export function handleSocketEvent({ action = null, data = {} } = {}) {
|
export function handleSocketEvent({ action = null, data = {} } = {}) {
|
||||||
console.debug("handleSocketEvent", action, data)
|
console.debug("handleSocketEvent", action, data)
|
||||||
|
switch (action) {
|
||||||
|
case "fortune":
|
||||||
|
return CthulhuEternalFortune.handleSocketEvent(data)
|
||||||
|
case "askRoll":
|
||||||
|
return _askRoll(data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the socket event to ask for a roll.
|
||||||
|
*
|
||||||
|
* @param {Object} [options={}] The options object.
|
||||||
|
* @param {string} [options.userId] The ID of the user who initiated the roll.
|
||||||
|
*/
|
||||||
|
export function _askRoll({ userId } = {}) {
|
||||||
|
console.debug(`handleSocketEvent _askRoll from ${userId} !`)
|
||||||
|
const currentUser = game.user._id
|
||||||
|
if (userId === currentUser) {
|
||||||
|
foundry.audio.AudioHelper.play({ src: "/systems/fvtt-cthulhu-eternal/sounds/drums.wav", volume: 0.8, autoplay: true, loop: false }, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -3,9 +3,9 @@ export default class CthulhuEternalUtils {
|
|||||||
|
|
||||||
static registerSettings() {
|
static registerSettings() {
|
||||||
game.settings.register("fvtt-cthulhu-eternal", "settings-era", {
|
game.settings.register("fvtt-cthulhu-eternal", "settings-era", {
|
||||||
name: game.i18n.localize("CTHULHUETERNAL.Settings.era"),
|
name: game.i18n.localize("CHTUHLUETERNAL.Settings.era"),
|
||||||
hint: game.i18n.localize("CTHULHUETERNAL.Settings.eraHint"),
|
hint: game.i18n.localize("CHTUHLUETERNAL.Settings.eraHint"),
|
||||||
default: "jazz",
|
default: true,
|
||||||
scope: "world",
|
scope: "world",
|
||||||
type: String,
|
type: String,
|
||||||
choices: SYSTEM.AVAILABLE_SETTINGS,
|
choices: SYSTEM.AVAILABLE_SETTINGS,
|
||||||
@ -183,9 +183,6 @@ export default class CthulhuEternalUtils {
|
|||||||
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);
|
||||||
|
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
MANIFEST-000092
|
|
@ -1,8 +0,0 @@
|
|||||||
2025/01/28-13:40:46.388286 7fc73affd6c0 Recovering log #90
|
|
||||||
2025/01/28-13:40:46.486338 7fc73affd6c0 Delete type=3 #88
|
|
||||||
2025/01/28-13:40:46.486413 7fc73affd6c0 Delete type=0 #90
|
|
||||||
2025/01/28-14:21:23.579080 7fc738ff96c0 Level-0 table #95: started
|
|
||||||
2025/01/28-14:21:23.579113 7fc738ff96c0 Level-0 table #95: 0 bytes OK
|
|
||||||
2025/01/28-14:21:23.585685 7fc738ff96c0 Delete type=0 #93
|
|
||||||
2025/01/28-14:21:23.595091 7fc738ff96c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
|
|
||||||
2025/01/28-14:21:23.607394 7fc738ff96c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
|
|
@ -1,8 +0,0 @@
|
|||||||
2025/01/28-11:42:23.420912 7fc7397fa6c0 Recovering log #86
|
|
||||||
2025/01/28-11:42:23.492812 7fc7397fa6c0 Delete type=3 #84
|
|
||||||
2025/01/28-11:42:23.492907 7fc7397fa6c0 Delete type=0 #86
|
|
||||||
2025/01/28-11:56:09.681552 7fc738ff96c0 Level-0 table #91: started
|
|
||||||
2025/01/28-11:56:09.681584 7fc738ff96c0 Level-0 table #91: 0 bytes OK
|
|
||||||
2025/01/28-11:56:09.688279 7fc738ff96c0 Delete type=0 #89
|
|
||||||
2025/01/28-11:56:09.688435 7fc738ff96c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
|
|
||||||
2025/01/28-11:56:09.699103 7fc738ff96c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
|
|
Binary file not shown.
@ -44,19 +44,9 @@
|
|||||||
src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype");
|
src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype");
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "ChantelliAntiqua";
|
|
||||||
src: url("../assets/fonts/Chantelli_Antiqua.ttf") format("truetype");
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "IMFell";
|
font-family: "IMFell";
|
||||||
src: url("../assets/fonts/IMFeDPrm28P.ttf") format("truetype");
|
src: url("../assets/fonts/IMFell.ttf") format("truetype");
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "SailRegular";
|
|
||||||
src: url("../assets/fonts/Sail-Regular.ttf") format("truetype");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
.fvtt-cthulhu-eternal {
|
.fvtt-cthulhu-eternal {
|
||||||
@import "mixins.less";
|
@import "mixins.less";
|
||||||
@import "protagonist.less";
|
@import "protagonist.less";
|
||||||
@import "vehicle.less";
|
|
||||||
@import "skill.less";
|
@import "skill.less";
|
||||||
@import "injury.less";
|
@import "injury.less";
|
||||||
@import "weapon.less";
|
@import "weapon.less";
|
||||||
|
@ -1,28 +1,19 @@
|
|||||||
:root {
|
:root {
|
||||||
--font-size-standard: 0.9rem;
|
--font-size-standard: 0.9rem;
|
||||||
--font-size-result: 1.4rem;
|
|
||||||
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)),
|
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)),
|
||||||
url("../assets/ui/jazz_background_main.webp");
|
url("../assets/ui/jazz_background_main.webp");
|
||||||
|
/*--background-image-base: url("../assets/ui/jazzage_background_main.webp");*/
|
||||||
--font-primary: "RozhaOne";
|
--font-primary: "RozhaOne";
|
||||||
--font-secondary: "RozhaOne";
|
--font-secondary: "RozhaOne";
|
||||||
--font-title: "Broadway";
|
--font-title: "Broadway";
|
||||||
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
|
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
|
||||||
--color-success: rgb(15, 122, 15);
|
--color-success: darkgreen;
|
||||||
--color-failure: darkred;
|
--color-failure: darkred;
|
||||||
--color-warning: darkorange;
|
--color-critical-success: lightgreen;
|
||||||
--color-critical-success: rgb(21, 39, 204);
|
--color-critical-failure: lightcoral;
|
||||||
--color-critical-failure: rgb(141, 32, 231);
|
|
||||||
--img-icon-color-filter: brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%);
|
--img-icon-color-filter: brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.d100 {
|
|
||||||
width: 18px;
|
|
||||||
height: 18px;
|
|
||||||
color: black;
|
|
||||||
border-width: 0px;
|
|
||||||
filter: var(--img-icon-color-filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
.item .thumbnail,
|
.item .thumbnail,
|
||||||
.item-img {
|
.item-img {
|
||||||
/*filter: invert(90%) sepia(10%) saturate(1215%) hue-rotate(55deg) brightness(93%) contrast(89%);*/
|
/*filter: invert(90%) sepia(10%) saturate(1215%) hue-rotate(55deg) brightness(93%) contrast(89%);*/
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
input[name="name"] {
|
input[name="name"] {
|
||||||
height: 40px;
|
height: 50px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@ -30,8 +30,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 5px;
|
||||||
border-radius: 4px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-fields {
|
.form-fields {
|
||||||
@ -57,20 +57,13 @@
|
|||||||
.protagonist-sheet-common {
|
.protagonist-sheet-common {
|
||||||
label {
|
label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vehicle-sheet-common {
|
|
||||||
label {
|
|
||||||
font-family: var(--font-secondary);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-sheet-common {
|
.item-sheet-common {
|
||||||
.form-fields {
|
.form-fields {
|
||||||
padding-top: 4px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
|
@ -62,87 +62,35 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
input {
|
input {
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-title);
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
width: 400px;
|
width: 400px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.san {
|
.san {
|
||||||
align-content: flex-start;
|
|
||||||
input {
|
input {
|
||||||
min-width: 2.2rem;
|
min-width: 2.2rem;
|
||||||
max-width: 2.2rem;
|
|
||||||
margin-bottom: 4px;
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
|
||||||
.button {
|
|
||||||
min-width: 4rem;
|
|
||||||
max-width: 4rem;
|
|
||||||
}
|
}
|
||||||
.san-checkbox {
|
.san-checkbox {
|
||||||
min-width: 1rem;
|
min-width: 1rem;
|
||||||
max-width: 1rem;
|
max-width: 1rem;
|
||||||
}
|
}
|
||||||
.label-short-field {
|
|
||||||
font-size: 0.9rem;
|
|
||||||
max-width: 3rem;
|
|
||||||
min-width: 3rem;
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
.label-recovery {
|
|
||||||
margin-left: 4px;
|
|
||||||
}
|
|
||||||
.label-field {
|
.label-field {
|
||||||
font-size: 0.9rem;
|
flex-grow: 0;
|
||||||
max-width: 6rem;
|
|
||||||
min-width: 6rem;
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
.label-bp {
|
|
||||||
flex-grow: 1;
|
|
||||||
max-width: 3rem;
|
|
||||||
min-width: 3rem;
|
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
.label-insanity {
|
|
||||||
flex-grow: 1;
|
|
||||||
margin-left: 4px;
|
|
||||||
max-width: 8rem;
|
|
||||||
min-width: 8rem;
|
|
||||||
}
|
|
||||||
.spacing {
|
.spacing {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
.d100 {
|
|
||||||
flex: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.willpower {
|
.willpower {
|
||||||
input {
|
input {
|
||||||
min-width: 2.4rem;
|
min-width: 2.2rem;
|
||||||
max-width: 2.4rem;
|
|
||||||
}
|
|
||||||
input[type="checkbox"] {
|
|
||||||
min-width: 1rem;
|
|
||||||
max-width: 1rem;
|
|
||||||
}
|
}
|
||||||
.label-field {
|
.label-field {
|
||||||
flex-grow: 1;
|
flex-grow: 0;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
max-width: 5rem;
|
|
||||||
min-width: 5rem;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
}
|
||||||
.checkbox {
|
.checkbox {
|
||||||
flex-grow: 0;
|
|
||||||
min-width: 1rem;
|
min-width: 1rem;
|
||||||
max-width: 1rem;
|
max-width: 1rem;
|
||||||
}
|
}
|
||||||
@ -216,20 +164,12 @@
|
|||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.rollable {
|
|
||||||
min-width: 3rem;
|
|
||||||
max-width: 3rem;
|
|
||||||
}
|
|
||||||
.char-text {
|
|
||||||
margin-left: 0.5rem;
|
|
||||||
}
|
|
||||||
.form-group {
|
.form-group {
|
||||||
flex: 0;
|
flex: 1;
|
||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
.form-fields {
|
.form-fields {
|
||||||
font-size: 1.1rem;
|
|
||||||
flex: none;
|
flex: none;
|
||||||
width: 40px;
|
width: 70px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -255,42 +195,11 @@
|
|||||||
.field-label {
|
.field-label {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
.biodata {
|
||||||
.adapted {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 20rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.resources {
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
label {
|
|
||||||
min-width: 8rem;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.features,
|
|
||||||
.biodata {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 3.0rem;
|
|
||||||
}
|
|
||||||
.feature {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.motivations {
|
.motivations {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
@ -352,8 +261,8 @@
|
|||||||
max-width: 8rem;
|
max-width: 8rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -389,16 +298,16 @@
|
|||||||
max-width: 12rem;
|
max-width: 12rem;
|
||||||
}
|
}
|
||||||
.type {
|
.type {
|
||||||
min-width: 5rem;
|
min-width: 4rem;
|
||||||
max-width: 5rem;
|
max-width: 4rem;
|
||||||
}
|
}
|
||||||
.level {
|
.level {
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -422,8 +331,8 @@
|
|||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -447,8 +356,8 @@
|
|||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -474,7 +383,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 13rem;
|
min-width: 13rem;
|
||||||
max-width: 13rem;
|
max-width: 13srem;
|
||||||
.rollable:hover,
|
.rollable:hover,
|
||||||
.rollable:focus {
|
.rollable:focus {
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
@ -485,16 +394,16 @@
|
|||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
}
|
}
|
||||||
.damage {
|
.damage {
|
||||||
min-width: 6rem;
|
min-width: 5rem;
|
||||||
max-width: 6rem;
|
max-width: 5rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 10rem;
|
min-width: 8rem;
|
||||||
max-width: 10rem;
|
max-width: 8rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -527,8 +436,8 @@
|
|||||||
max-width: 8rem;
|
max-width: 8rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -561,8 +470,8 @@
|
|||||||
max-width: 8rem;
|
max-width: 8rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 32px;
|
||||||
height: 24px;
|
height: 32px;
|
||||||
margin: 4px 0 0 0;
|
margin: 4px 0 0 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,18 +31,11 @@
|
|||||||
border: none;
|
border: none;
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
width: 4rem;
|
width: 60px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.red-warning {
|
|
||||||
color: var(--color-failure);
|
|
||||||
}
|
|
||||||
|
|
||||||
.orange-warning {
|
|
||||||
color: var(--color-warning);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog-damage {
|
.dialog-damage {
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -96,22 +89,22 @@
|
|||||||
.result-success {
|
.result-success {
|
||||||
color: var(--color-success);
|
color: var(--color-success);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
}
|
||||||
.result-critical-success {
|
.result-critical-success {
|
||||||
color: var(--color-critical-success);
|
color: var(--color-critical-success);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
}
|
||||||
.result-failure {
|
.result-failure {
|
||||||
color: var(--color-failure);
|
color: var(--color-failure);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
}
|
||||||
.result-critical-failure {
|
.result-critical-failure {
|
||||||
color: var(--color-critical-failure);
|
color: var(--color-critical-failure);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.introText {
|
.introText {
|
||||||
|
@ -1,223 +0,0 @@
|
|||||||
.vehicle-content {
|
|
||||||
.sheet-common();
|
|
||||||
.vehicle-sheet-common();
|
|
||||||
overflow: scroll;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sheet-tabs {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.vehicle-main {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
.vehicle-pc {
|
|
||||||
display: flex;
|
|
||||||
gap: 4px;
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
.vehicle-left {
|
|
||||||
min-width: 180px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.vehicle-left-image {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
padding-bottom: 8px;
|
|
||||||
.vehicle-img {
|
|
||||||
height: 140px;
|
|
||||||
width: auto;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.vehicle-right {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 5px;
|
|
||||||
|
|
||||||
.vehicle-name {
|
|
||||||
display: flex;
|
|
||||||
input {
|
|
||||||
font-family: var(--font-title);
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
width: 400px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vehicle-infos {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 4px;
|
|
||||||
|
|
||||||
label {
|
|
||||||
min-width: 120px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vehicle-hp {
|
|
||||||
display: flex;
|
|
||||||
gap: 2px;
|
|
||||||
align-items: center;
|
|
||||||
.vehicle-hp-value {
|
|
||||||
.form-fields input {
|
|
||||||
flex: none;
|
|
||||||
width: 50px;
|
|
||||||
margin-left: 4px;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.vehicle-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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vehicle-pc-play {
|
|
||||||
min-width: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vehicle-pc-edit {
|
|
||||||
min-width: 650px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vehicle-biography {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
prose-mirror.inactive {
|
|
||||||
min-height: 40px;
|
|
||||||
}
|
|
||||||
prose-mirror.active {
|
|
||||||
min-height: 150px;
|
|
||||||
}
|
|
||||||
.field-label {
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.biodata {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 3.0rem;
|
|
||||||
}
|
|
||||||
.feature {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab.vehicle-equipment {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
legend {
|
|
||||||
a {
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.weapons {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.weapon {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13srem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
min-width: 2rem;
|
|
||||||
max-width: 2rem;
|
|
||||||
}
|
|
||||||
.damage {
|
|
||||||
min-width: 5rem;
|
|
||||||
max-width: 5rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 8rem;
|
|
||||||
max-width: 8rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.gears {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.gear {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13srem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
min-width: 2rem;
|
|
||||||
max-width: 2rem;
|
|
||||||
}
|
|
||||||
.damage {
|
|
||||||
min-width: 5rem;
|
|
||||||
max-width: 5rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 8rem;
|
|
||||||
max-width: 8rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
prose-mirror.inactive {
|
|
||||||
min-height: 40px;
|
|
||||||
}
|
|
||||||
prose-mirror.active {
|
|
||||||
min-height: 150px;
|
|
||||||
}
|
|
||||||
}
|
|
11
system.json
11
system.json
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"id": "fvtt-cthulhu-eternal",
|
"id": "fvtt-cthulhu-eternal",
|
||||||
"title": "Cthulhu Eternal RPG",
|
"title": "Cthulhu Eternal RPG",
|
||||||
"description": "The OGL Cthulhu Eternal RPG system for Foundry VTT",
|
"description": "",
|
||||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-cthulhu-eternal/raw/branch/main/system.json",
|
"manifest": "https://www.uberwald.me/gitea/public/fvtt-cthulhu-eternal/raw/branch/main/system.json",
|
||||||
"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.1",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Uberwald",
|
"name": "Uberwald",
|
||||||
@ -34,8 +34,7 @@
|
|||||||
],
|
],
|
||||||
"documentTypes": {
|
"documentTypes": {
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"protagonist": { "htmlFields": ["description", "notes"] },
|
"protagonist": { "htmlFields": ["description", "notes"] }
|
||||||
"vehicle": { "htmlFields": ["description", "notes"] }
|
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"skill": { "htmlFields": ["description"] },
|
"skill": { "htmlFields": ["description"] },
|
||||||
@ -56,7 +55,7 @@
|
|||||||
"banner": "",
|
"banner": "",
|
||||||
"label": "Skills",
|
"label": "Skills",
|
||||||
"system": "fvtt-cthulhu-eternal",
|
"system": "fvtt-cthulhu-eternal",
|
||||||
"path": "packs-system/skills",
|
"path": "packs/skills",
|
||||||
"type": "Item"
|
"type": "Item"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -66,5 +65,5 @@
|
|||||||
},
|
},
|
||||||
"primaryTokenAttribute": "hp",
|
"primaryTokenAttribute": "hp",
|
||||||
"socket": true,
|
"socket": true,
|
||||||
"background": "systems/fvtt-cthulhu-eternal/assets/ui/background_01.webp"
|
"background": "systems/fvtt-cthulhu-eternal/assets/background.webp"
|
||||||
}
|
}
|
||||||
|
6
templates/chat-ask-roll.hbs
Normal file
6
templates/chat-ask-roll.hbs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<div class="tenebris ask-roll">
|
||||||
|
<h4 class="ask-roll-title">{{title}}<br>{{text}}</h4>
|
||||||
|
<a class="ask-roll-dice" data-type="{{rollType}}" data-value="{{value}}" data-avantage="{{avantage}}">
|
||||||
|
<i class="fas fa-dice-d20" title="{{localize 'TENEBRIS.Manager.roll'}}"></i> {{localize 'TENEBRIS.Manager.roll'}}
|
||||||
|
</a>
|
||||||
|
</div>
|
@ -18,30 +18,8 @@
|
|||||||
<li><strong>Weapon : {{weapon.name}}</strong></li>
|
<li><strong>Weapon : {{weapon.name}}</strong></li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if (eq rollType "resource")}}
|
|
||||||
<li><strong>{{rollItem.name}} : {{initialScore}}</strong></li>
|
|
||||||
{{else}}
|
|
||||||
<li><strong>{{rollItem.name}} : {{initialScore}}%</strong></li>
|
<li><strong>{{rollItem.name}} : {{initialScore}}%</strong></li>
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if isZeroWP}}
|
|
||||||
<li class="red-warning">Zero WP : Automatic failure (ie 0%)</li>
|
|
||||||
{{else}}
|
|
||||||
{{#if isLowWP}}
|
|
||||||
<li class="orange-warning">Low WP : -20%</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if isExhausted}}
|
|
||||||
<li class="orange-warning">Exhausted : -20%</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if (eq rollType "resource")}}
|
|
||||||
<li>{{localize "CTHULHUETERNAL.Label.multiplier"}} : {{multiplier}}</li>
|
|
||||||
{{else}}
|
|
||||||
<li>{{localize "CTHULHUETERNAL.Label.modifier"}} : {{modifier}}%</li>
|
<li>{{localize "CTHULHUETERNAL.Label.modifier"}} : {{modifier}}%</li>
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<li>{{localize "CTHULHUETERNAL.Label.targetScore"}} : {{targetScore}}%</li>
|
<li>{{localize "CTHULHUETERNAL.Label.targetScore"}} : {{targetScore}}%</li>
|
||||||
{{#if isSuccess}}
|
{{#if isSuccess}}
|
||||||
{{#if isCritical}}
|
{{#if isCritical}}
|
||||||
@ -63,8 +41,7 @@
|
|||||||
{{#if isDamage}}
|
{{#if isDamage}}
|
||||||
<div>
|
<div>
|
||||||
{{#if (and isGM hasTarget)}}
|
{{#if (and isGM hasTarget)}}
|
||||||
{{{localize "CTHULHUETERNAL.Roll.displayArmor" targetName=targetName targetArmor=targetArmor
|
{{{localize "CTHULHUETERNAL.Roll.displayArmor" targetName=targetName targetArmor=targetArmor realDamage=realDamage}}}
|
||||||
realDamage=realDamage}}}
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
<fieldset>
|
<fieldset>
|
||||||
{{formField systemFields.settings value=system.settings localize=true}}
|
{{formField systemFields.settings value=system.settings localize=true}}
|
||||||
{{formField systemFields.resourceLevel value=system.resourceLevel}}
|
{{formField systemFields.resourceLevel value=system.resourceLevel}}
|
||||||
{{formField systemFields.state value=system.state localize=true}}
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
39
templates/manager.hbs
Normal file
39
templates/manager.hbs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<table class="tenebris-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{{localize "TENEBRIS.Manager.player"}}</th>
|
||||||
|
<th>{{localize "TENEBRIS.Manager.character"}}</th>
|
||||||
|
<th>{{localize "TENEBRIS.Manager.pv"}}</th>
|
||||||
|
<td data-action="saveAll" data-save="rob">{{localize "TENEBRIS.Manager.rob"}}</td>
|
||||||
|
<td data-action="saveAll" data-save="dex">{{localize "TENEBRIS.Manager.dex"}}</td>
|
||||||
|
<td data-action="saveAll" data-save="int">{{localize "TENEBRIS.Manager.int"}}</td>
|
||||||
|
<td data-action="saveAll" data-save="per">{{localize "TENEBRIS.Manager.per"}}</td>
|
||||||
|
<td data-action="saveAll" data-save="vol">{{localize "TENEBRIS.Manager.vol"}}</td>
|
||||||
|
<td data-action="resourceAll" data-resource="san">{{localize "TENEBRIS.Manager.san"}}</td>
|
||||||
|
<td data-action="resourceAll" data-resource="oeil">{{localize "TENEBRIS.Manager.oeil"}}</td>
|
||||||
|
<td data-action="resourceAll" data-resource="verbe">{{localize "TENEBRIS.Manager.verbe"}}</td>
|
||||||
|
<td data-action="resourceAll" data-resource="bourse">{{localize "TENEBRIS.Manager.bourse"}}</td>
|
||||||
|
<td data-action="resourceAll" data-resource="magie">{{localize "TENEBRIS.Manager.magie"}}</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{{#each players as |player|}}
|
||||||
|
{{!log "player" this}}
|
||||||
|
<tr class="player" data-user-id="{{player.id}}" data-character-name="{{player.character.name}}" data-character-id="{{player.character.id}}">
|
||||||
|
<td>{{player.name}}</td>
|
||||||
|
<td data-action="openSheet" data-character-id="{{player.character.id}}">{{player.character.name}}</td>
|
||||||
|
<td>{{player.character.system.pv.value}}</td>
|
||||||
|
<td data-action="saveOne" data-save="rob">{{player.character.system.caracteristiques.rob.valeur}}</td>
|
||||||
|
<td data-action="saveOne" data-save="dex">{{player.character.system.caracteristiques.dex.valeur}}</td>
|
||||||
|
<td data-action="saveOne" data-save="int">{{player.character.system.caracteristiques.int.valeur}}</td>
|
||||||
|
<td data-action="saveOne" data-save="per">{{player.character.system.caracteristiques.per.valeur}}</td>
|
||||||
|
<td data-action="saveOne" data-save="vol">{{player.character.system.caracteristiques.vol.valeur}}</td>
|
||||||
|
<td data-action="resourceOne" data-resource="san">{{player.character.system.ressources.san.valeur}}</td>
|
||||||
|
<td data-action="resourceOne" data-resource="oeil">{{player.character.system.ressources.oeil.valeur}}</td>
|
||||||
|
<td data-action="resourceOne" data-resource="verbe">{{player.character.system.ressources.verbe.valeur}}</td>
|
||||||
|
<td data-action="resourceOne" data-resource="bourse">{{player.character.system.ressources.bourse.valeur}}</td>
|
||||||
|
<td data-action="resourceOne" data-resource="magie">{{player.character.system.ressources.magie.valeur}}</td>
|
||||||
|
</tr>
|
||||||
|
{{/each}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
@ -4,10 +4,6 @@
|
|||||||
{{formInput fields.name value=source.name}}
|
{{formInput fields.name value=source.name}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
{{formField systemFields.cured value=system.cured localize=true}}
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||||
{{formInput
|
{{formInput
|
||||||
|
@ -1,29 +1,7 @@
|
|||||||
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.resources"}}</legend>
|
|
||||||
<div class="resources">
|
|
||||||
{{formField systemFields.resources.fields.permanentRating value=system.resources.permanentRating name="system.resources.permanentRating" localize=true}}
|
|
||||||
<div>
|
|
||||||
<span class="label-field">{{localize "CTHULHUETERNAL.Label.resourceChecks"}}</span>
|
|
||||||
{{#each system.resources.checks as |check idx|}}
|
|
||||||
<input class="san-checkbox" type="checkbox" data-action="updateCheckResource" data-index="{{@index}}"
|
|
||||||
data-name="checks" {{#if check}} checked {{/if}} {{#if (gte @index @root.system.resources.nbValidChecks)}} disabled {{/if}}>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
<button class="resource-roll rollable" data-roll-type="resource"><img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />Resource roll</button>
|
|
||||||
{{formField systemFields.resources.fields.hand value=system.resources.hand name="system.resources.hand" localize=true disabled=true}}
|
|
||||||
{{formField systemFields.resources.fields.stowed value=system.resources.stowed name="system.resources.stowed" localize=true disabled=true}}
|
|
||||||
{{formField systemFields.resources.fields.storage value=system.resources.storage name="system.resources.storage" localize=true disabled=true}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.biodata"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.biodata"}}</legend>
|
||||||
<div class="adapted">
|
|
||||||
{{formField systemFields.biodata.fields.adaptedToViolence value=system.biodata.adaptedToViolence name="system.biodata.adaptedToViolence" localize=true}}
|
|
||||||
{{formField systemFields.biodata.fields.adaptedToHelplessness value=system.biodata.adaptedToHelplessness name="system.biodata.adaptedToHelplessness" localize=true}}
|
|
||||||
</div>
|
|
||||||
<div class="biodata">
|
<div class="biodata">
|
||||||
{{formField systemFields.biodata.fields.harshness value=system.biodata.harshness name="system.biodata.harshness" localize=true}}
|
{{formField systemFields.biodata.fields.harshness value=system.biodata.harshness name="system.biodata.harshness" localize=true}}
|
||||||
{{formField systemFields.biodata.fields.age value=system.biodata.age name="system.biodata.age" localize=true classes="field-label"}}
|
{{formField systemFields.biodata.fields.age value=system.biodata.age name="system.biodata.age" localize=true classes="field-label"}}
|
||||||
@ -31,49 +9,38 @@
|
|||||||
{{formField systemFields.biodata.fields.height value=system.biodata.height name="system.biodata.height" localize=true classes="field-label"}}
|
{{formField systemFields.biodata.fields.height value=system.biodata.height name="system.biodata.height" localize=true classes="field-label"}}
|
||||||
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes name="system.biodata.eyes" localize=true classes="field-label"}}
|
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes name="system.biodata.eyes" localize=true classes="field-label"}}
|
||||||
{{formField systemFields.biodata.fields.hair value=system.biodata.hair name="system.biodata.hair" localize=true classes="field-label"}}
|
{{formField systemFields.biodata.fields.hair value=system.biodata.hair name="system.biodata.hair" localize=true classes="field-label"}}
|
||||||
{{formField systemFields.biodata.fields.home value=system.biodata.home name="system.biodata.home" localize=true classes="field-label"}}
|
{{formField systemFields.biodata.fields.gender value=system.biodata.gender name="system.biodata.gender" localize=true classes="field-label"}}
|
||||||
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace name="system.biodata.birthplace" localize=true classes="field-label"}}
|
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace name="system.biodata.birthplace" localize=true classes="field-label"}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.distinguishingFeatures"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.motivations"}}{{#if isEditMode}}
|
||||||
<div class="features">
|
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addMotivation"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createMotivation"></i></a>{{/if}}</legend>
|
||||||
<div class="feature">
|
<div class="motivations">
|
||||||
<label>{{localize "CTHULHUETERNAL.Label.strShort"}}</label>
|
{{#each motivations as |item|}}
|
||||||
{{formInput systemFields.characteristics.fields.str.fields.feature value=system.characteristics.str.feature localize=true}}
|
{{!log 'armor' this}}
|
||||||
|
<div class="motivation" 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>
|
||||||
<div class="feature">
|
<div class="controls">
|
||||||
<label>{{localize "CTHULHUETERNAL.Label.dexShort"}}</label>
|
<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>
|
||||||
{{formInput systemFields.characteristics.fields.dex.fields.feature value=system.characteristics.dex.feature localize=true}}
|
<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>
|
||||||
<div class="feature">
|
|
||||||
<label>{{localize "CTHULHUETERNAL.Label.conShort"}}</label>
|
|
||||||
{{formInput systemFields.characteristics.fields.con.fields.feature value=system.characteristics.con.feature localize=true}}
|
|
||||||
</div>
|
|
||||||
<div class="feature">
|
|
||||||
<label>{{localize "CTHULHUETERNAL.Label.intShort"}}</label>
|
|
||||||
{{formInput systemFields.characteristics.fields.int.fields.feature value=system.characteristics.int.feature localize=true}}
|
|
||||||
</div>
|
|
||||||
<div class="feature">
|
|
||||||
<label>{{localize "CTHULHUETERNAL.Label.powShort"}}</label>
|
|
||||||
{{formInput systemFields.characteristics.fields.pow.fields.feature value=system.characteristics.pow.feature localize=true}}
|
|
||||||
</div>
|
|
||||||
<div class="feature">
|
|
||||||
<label>{{localize "CTHULHUETERNAL.Label.chaShort"}}</label>
|
|
||||||
{{formInput systemFields.characteristics.fields.cha.fields.feature value=system.characteristics.cha.feature localize=true}}
|
|
||||||
</div>
|
</div>
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.notes"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.notes"}}</legend>
|
||||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
{{formInput systemFields.notes enriched=notes value=system.notes name="system.notes" toggled=true}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</section>
|
</section>
|
@ -2,30 +2,19 @@
|
|||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.weapons"}}{{#if isEditMode}}
|
<legend>{{localize "CTHULHUETERNAL.Label.weapons"}}{{#if isEditMode}}
|
||||||
<a class="action" data-tooltip="{{localize " CTHULHUETERNAL.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}</legend>
|
||||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="weapons">
|
<div class="weapons">
|
||||||
{{#each weapons as |item|}}
|
{{#each weapons as |item|}}
|
||||||
{{!log 'weapon' this}}
|
{{!log 'weapon' this}}
|
||||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true" >
|
||||||
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
|
||||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||||
{{item.name}}
|
{{item.name}}
|
||||||
</div>
|
</div>
|
||||||
|
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage" data-roll-value="{{item.system.damage}}">{{localize "CTHULHUETERNAL.Label.damageShort"}} : {{item.system.damage}}</a>
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
|
||||||
data-roll-value="{{item.system.damage}}">
|
|
||||||
{{localize "CTHULHUETERNAL.Label.damageShort"}} :
|
|
||||||
{{item.system.damage}}</a>
|
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
<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>
|
||||||
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>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@ -34,9 +23,7 @@
|
|||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.armors"}}{{#if isEditMode}}
|
<legend>{{localize "CTHULHUETERNAL.Label.armors"}}{{#if isEditMode}}
|
||||||
<a class="action" data-tooltip="{{localize " CTHULHUETERNAL.Tooltip.addArmor"}}" data-tooltip-direction="UP"><i
|
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addArmor"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createArmor"></i></a>{{/if}}</legend>
|
||||||
class="fas fa-plus" data-action="createArmor"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="armors">
|
<div class="armors">
|
||||||
{{#each armors as |item|}}
|
{{#each armors as |item|}}
|
||||||
{{!log 'armor' this}}
|
{{!log 'armor' this}}
|
||||||
@ -47,10 +34,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<span class="protection">{{localize "CTHULHUETERNAL.Label.armor"}} : {{item.system.protection}}</span>
|
<span class="protection">{{localize "CTHULHUETERNAL.Label.armor"}} : {{item.system.protection}}</span>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
<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>
|
||||||
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>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@ -59,9 +44,7 @@
|
|||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.gears"}}{{#if isEditMode}}
|
<legend>{{localize "CTHULHUETERNAL.Label.gears"}}{{#if isEditMode}}
|
||||||
<a class="action" data-tooltip="{{localize " CTHULHUETERNAL.Tooltip.addGear"}}" data-tooltip-direction="UP"><i
|
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addGear"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createGear"></i></a>{{/if}}</legend>
|
||||||
class="fas fa-plus" data-action="createGear"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="gears">
|
<div class="gears">
|
||||||
{{#each gears as |item|}}
|
{{#each gears as |item|}}
|
||||||
{{!log 'armor' this}}
|
{{!log 'armor' this}}
|
||||||
@ -71,10 +54,8 @@
|
|||||||
{{item.name}}
|
{{item.name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
<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>
|
||||||
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>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -32,63 +32,41 @@
|
|||||||
<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" />
|
<span class="label-field">{{localize "CTHULHUETERNAL.Label.current"}}</span>
|
||||||
<label class="label-field rollable" data-roll-type="san" >{{localize "CTHULHUETERNAL.Label.current"}}</label>
|
{{formField systemFields.san.fields.value value=system.san.value}}
|
||||||
{{formInput systemFields.san.fields.value value=system.san.value}}
|
<span class="label-field">{{localize "CTHULHUETERNAL.Label.max"}}</span>
|
||||||
|
{{formField systemFields.san.fields.max value=system.san.max rootId=partId disabled=true}}
|
||||||
<span class="label-field label-recovery">{{localize "CTHULHUETERNAL.Label.recovery"}}</span>
|
<span class="label-field">{{localize "CTHULHUETERNAL.Label.recovery"}}</span>
|
||||||
{{formInput systemFields.san.fields.recovery value=system.san.recovery disabled=true}}
|
{{formField systemFields.san.fields.recovery value=system.san.recovery disabled=true}}
|
||||||
|
<span class="label-field" data-tooltip='{{localize "CTHULHUETERNAL.Tooltip.sanBP"}}'>{{localize
|
||||||
<span class="label-bp" data-tooltip='{{localize "CTHULHUETERNAL.Tooltip.sanBPShort"}}'>{{localize
|
"CTHULHUETERNAL.Label.breakingPoint"}}</span>
|
||||||
"CTHULHUETERNAL.Label.sanBPShort"}}</span>
|
{{formField systemFields.san.fields.breakingPoint value=system.san.breakingPoint disabled=true}}
|
||||||
{{formInput systemFields.san.fields.breakingPoint value=system.san.breakingPoint disabled=true}}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flexrow">
|
|
||||||
|
|
||||||
<div class="flexrow">
|
|
||||||
<span class="label-short-field">{{localize "CTHULHUETERNAL.Label.max"}}</span>
|
|
||||||
{{formInput systemFields.san.fields.max value=system.san.max rootId=partId disabled=true}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<span class="label-insanity" >
|
|
||||||
{{localize "CTHULHUETERNAL.Label.tempInsanity"}}
|
|
||||||
</span>
|
|
||||||
{{formInput systemFields.san.fields.insanity value=system.san.insanity localize=true}}
|
|
||||||
|
|
||||||
{{#if (not isPlayMode)}}
|
|
||||||
<button data-action="setBP" class="button" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.setBP"}}">{{localize "CTHULHUETERNAL.Label.setBP"}}</button>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
|
{{localize "CTHULHUETERNAL.Label.violence"}}
|
||||||
<span class="label-field">{{localize "CTHULHUETERNAL.Label.violence"}}</span>
|
|
||||||
{{#each system.san.violence as |violence idx|}}
|
{{#each system.san.violence as |violence idx|}}
|
||||||
<input class="san-checkbox" type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}"
|
<input class="san-checkbox" type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}"
|
||||||
data-name="violence" {{#if violence}} checked {{/if}}>
|
data-name="violence" {{#if violence}} checked {{/if}}>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
<span class="spacing"></span>
|
||||||
<span class="label-field">{{localize "CTHULHUETERNAL.Label.helplessness"}}</span>
|
{{localize "CTHULHUETERNAL.Label.helplessness"}}
|
||||||
{{#each system.san.helplessness as |helplessness idx|}}
|
{{#each system.san.helplessness as |helplessness idx|}}
|
||||||
<input class="san-checkbox" type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}"
|
<input class="san-checkbox" type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}"
|
||||||
data-name="helplessness" {{#if helplessness}} checked {{/if}}>
|
data-name="helplessness" {{#if helplessness}} checked {{/if}}>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="willpower">
|
<fieldset class="willpower">
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.willpower"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.willpower"}}</legend>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<label class="label-field">{{localize "CTHULHUETERNAL.Label.current"}}</label>
|
<span class="label-field">{{localize "CTHULHUETERNAL.Label.current"}}</span>
|
||||||
{{formInput systemFields.wp.fields.value value=system.wp.value}}
|
{{formField systemFields.wp.fields.value value=system.wp.value}}
|
||||||
<label class="label-field">{{localize "CTHULHUETERNAL.Label.max"}}</label>
|
<span class="label-field">{{localize "CTHULHUETERNAL.Label.max"}}</span>
|
||||||
{{formInput systemFields.wp.fields.max value=system.wp.max rootId=partId disabled=true}}
|
{{formField systemFields.wp.fields.max value=system.wp.max rootId=partId disabled=true}}
|
||||||
<label class="label-field">{{localize "CTHULHUETERNAL.Label.exhausted"}}</label>
|
<span class="label-field">{{localize "CTHULHUETERNAL.Label.exhausted"}}</span>
|
||||||
{{formInput systemFields.wp.fields.exhausted value=system.wp.exhausted classes="checkbox"}}
|
{{formField systemFields.wp.fields.exhausted value=system.wp.exhausted classes=checkbox}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
@ -98,53 +76,47 @@
|
|||||||
|
|
||||||
<fieldset class="protagonist-characteristics protagonist-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
|
<fieldset class="protagonist-characteristics protagonist-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.characteristics"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.characteristics"}}</legend>
|
||||||
<div class="protagonist-characteristic" >
|
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
<label class="rollable" data-roll-type="char" data-char-id="str">{{localize
|
||||||
<label class="rollable" data-roll-type="char" data-char-id="str" data-tooltip="{{system.characteristics.str.feature}}">{{localize
|
|
||||||
"CTHULHUETERNAL.Label.strShort"}}</label>
|
"CTHULHUETERNAL.Label.strShort"}}</label>
|
||||||
{{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value
|
{{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value
|
||||||
rootId=partId disabled=isPlayMode }}
|
rootId=partId disabled=isPlayMode }}
|
||||||
<label class="char-text">{{mul system.characteristics.str.value 5}}</label>
|
{{mul system.characteristics.str.value 5}}
|
||||||
</div>
|
</div>
|
||||||
<div class="protagonist-characteristic">
|
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
<label class="rollable" data-roll-type="char" data-char-id="dex">{{localize
|
||||||
<label class="rollable" data-roll-type="char" data-char-id="dex" data-tooltip="{{system.characteristics.dex.feature}}">{{localize
|
|
||||||
"CTHULHUETERNAL.Label.dexShort"}}</label>
|
"CTHULHUETERNAL.Label.dexShort"}}</label>
|
||||||
{{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value
|
{{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value
|
||||||
rootId=partId disabled=isPlayMode }}
|
rootId=partId disabled=isPlayMode }}
|
||||||
<label class="char-text">{{mul system.characteristics.dex.value 5}}</label>
|
{{mul system.characteristics.dex.value 5}}
|
||||||
</div>
|
</div>
|
||||||
<div class="protagonist-characteristic" >
|
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
<label class="rollable" data-roll-type="char" data-char-id="con">{{localize
|
||||||
<label class="rollable" data-roll-type="char" data-char-id="con" data-tooltip="{{system.characteristics.con.feature}}">{{localize
|
|
||||||
"CTHULHUETERNAL.Label.conShort"}}</label>
|
"CTHULHUETERNAL.Label.conShort"}}</label>
|
||||||
{{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value
|
{{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value
|
||||||
rootId=partId disabled=isPlayMode }}
|
rootId=partId disabled=isPlayMode }}
|
||||||
<label class="char-text">{{mul system.characteristics.con.value 5}}</label>
|
{{mul system.characteristics.con.value 5}}
|
||||||
</div>
|
</div>
|
||||||
<div class="protagonist-characteristic" >
|
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
<label class="rollable" data-roll-type="char" data-char-id="int">{{localize
|
||||||
<label class="rollable" data-roll-type="char" data-char-id="int" data-tooltip="{{system.characteristics.int.feature}}">{{localize
|
|
||||||
"CTHULHUETERNAL.Label.intShort"}}</label>
|
"CTHULHUETERNAL.Label.intShort"}}</label>
|
||||||
{{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value
|
{{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value
|
||||||
rootId=partId disabled=isPlayMode }}
|
rootId=partId disabled=isPlayMode }}
|
||||||
<label class="char-text">{{mul system.characteristics.int.value 5}}</label>
|
{{mul system.characteristics.int.value 5}}
|
||||||
</div>
|
</div>
|
||||||
<div class="protagonist-characteristic" >
|
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
<label class="rollable" data-roll-type="char" data-char-id="pow">{{localize
|
||||||
<label class="rollable" data-roll-type="char" data-char-id="pow" data-tooltip="{{system.characteristics.pow.feature}}">{{localize
|
|
||||||
"CTHULHUETERNAL.Label.powShort"}}</label>
|
"CTHULHUETERNAL.Label.powShort"}}</label>
|
||||||
{{formField systemFields.characteristics.fields.pow.fields.value value=system.characteristics.pow.value
|
{{formField systemFields.characteristics.fields.pow.fields.value value=system.characteristics.pow.value
|
||||||
rootId=partId disabled=isPlayMode }}
|
rootId=partId disabled=isPlayMode }}
|
||||||
<label class="char-text">{{mul system.characteristics.pow.value 5}}</label>
|
{{mul system.characteristics.pow.value 5}}
|
||||||
</div>
|
</div>
|
||||||
<div class="protagonist-characteristic" >
|
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
<label class="rollable" data-roll-type="char" data-char-id="cha">{{localize
|
||||||
<label class="rollable" data-roll-type="char" data-char-id="cha" data-tooltip="{{system.characteristics.cha.feature}}">{{localize
|
|
||||||
"CTHULHUETERNAL.Label.chaShort"}}</label>
|
"CTHULHUETERNAL.Label.chaShort"}}</label>
|
||||||
{{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value
|
{{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value
|
||||||
rootId=partId disabled=isPlayMode }}
|
rootId=partId disabled=isPlayMode }}
|
||||||
<label class="char-text">{{mul system.characteristics.cha.value 5}}</label>
|
{{mul system.characteristics.cha.value 5}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
{{#each skills as |item|}}
|
{{#each skills as |item|}}
|
||||||
<div class="skill item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
<div class="skill item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
|
||||||
<div class="name rollable" data-roll-type="skill" data-tooltip="{{{item.description}}}" data-tooltip-direction="UP">{{item.name}}
|
<div class="name rollable" data-roll-type="skill" data-tooltip="{{{item.description}}}" data-tooltip-direction="UP">{{item.name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="score" >
|
<div class="score" >
|
||||||
|
@ -65,24 +65,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.motivations"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addMotivation"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createMotivation"></i></a>{{/if}}</legend>
|
|
||||||
<div class="motivations">
|
|
||||||
{{#each motivations as |item|}}
|
|
||||||
{{!log 'armor' this}}
|
|
||||||
<div class="motivation" 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>
|
|
||||||
|
|
||||||
</section>
|
</section>
|
@ -8,52 +8,27 @@
|
|||||||
<legend>{{localize "CTHULHUETERNAL.Label.characteristic"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.characteristic"}}</legend>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if (eq rollType "resource")}}
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.resourceRating"}}</legend>
|
|
||||||
<div class="dialog-skill">{{rollItem.name}} : <span class="resource-score">{{initialScore}} ({{mul initialScore 5}}%)</span></div>
|
|
||||||
<div class="dialog-skill">{{localize "CTHULHUETERNAL.Label.Hand"}} : {{rollItem.hand}} <input type="checkbox" data-action="selectHand" {{checked rollItem.enableHand}}></div>
|
|
||||||
<div class="dialog-skill">{{localize "CTHULHUETERNAL.Label.Stowed"}} : {{rollItem.stowed}} <input type="checkbox" data-action="selectStowed" {{checked rollItem.enableStowed}}></div>
|
|
||||||
<div class="dialog-skill">{{localize "CTHULHUETERNAL.Label.Storage"}} : {{rollItem.storage}} <input type="checkbox" data-action="selectStorage" {{checked rollItem.enableStorage}}></div>
|
|
||||||
{{else}}
|
|
||||||
<div class="dialog-skill">{{rollItem.name}} : {{initialScore}}%</div>
|
<div class="dialog-skill">{{rollItem.name}} : {{initialScore}}%</div>
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if weapon}}
|
{{#if weapon}}
|
||||||
<div class="dialog-skill">Weapon : {{weapon.name}}</div>
|
<div class="dialog-skill">Weapon : {{weapon.name}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if isZeroWP}}
|
{{#if isZeroWP}}
|
||||||
<div class="dialog-skill red-warning">Zero WP : Automatic failure (ie 0%)</div>
|
<div class="dialog-skill">Zero WP : Automatic failure (ie 0%)</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#if isLowWP}}
|
{{#if isLowWP}}
|
||||||
<div class="dialog-skill orange-warning">Low WP : -20%</div>
|
<div class="dialog-skill">Low WP : -20%</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if isExhausted}}
|
|
||||||
<div class="dialog-skill orange-warning">Exhausted : -20%</div>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
|
|
||||||
{{#if hasModifier}}
|
|
||||||
<fieldSet class="dialog-modifier">
|
<fieldSet class="dialog-modifier">
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.modifier"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.modifier"}}</legend>
|
||||||
<select name="modifier" class="roll-skill-modifier">
|
<select name="modifier" class="roll-skill-modifier">
|
||||||
{{selectOptions choiceModifier selected=modifier}}
|
{{selectOptions choiceModifier selected=modifier}}
|
||||||
</select>
|
</select>
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if hasMultiplier}}
|
|
||||||
<fieldSet class="dialog-modifier">
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.multiplier"}}</legend>
|
|
||||||
<select name="multiplier" class="roll-skill-modifier roll-skill-multiplier">
|
|
||||||
{{selectOptions choiceMultiplier selected=multiplier}}
|
|
||||||
</select>
|
|
||||||
</fieldSet>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<fieldSet>
|
<fieldSet>
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.rollView"}}</legend>
|
<legend>{{localize "CTHULHUETERNAL.Label.rollView"}}</legend>
|
||||||
<select name="visibility">
|
<select name="visibility">
|
||||||
|
@ -15,12 +15,9 @@
|
|||||||
</div>
|
</div>
|
||||||
{{formField systemFields.isAdversary value=system.isAdversary}}
|
{{formField systemFields.isAdversary value=system.isAdversary}}
|
||||||
{{formField systemFields.diceEvolved value=system.diceEvolved}}
|
{{formField systemFields.diceEvolved value=system.diceEvolved}}
|
||||||
|
{{#if system.diceEvolved}}
|
||||||
<!-- {{#if system.diceEvolved}}
|
|
||||||
{{formField systemFields.rollFailed value=system.rollFailed}}
|
{{formField systemFields.rollFailed value=system.rollFailed}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
-->
|
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.notes"}}</legend>
|
|
||||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
|
||||||
</fieldset>
|
|
||||||
</section>
|
|
@ -1,54 +0,0 @@
|
|||||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.weapons"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize " CTHULHUETERNAL.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
|
||||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="weapons">
|
|
||||||
{{#each weapons as |item|}}
|
|
||||||
{{!log 'weapon' this}}
|
|
||||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
|
||||||
data-roll-value="{{item.system.damage}}">{{localize "CTHULHUETERNAL.Label.damageShort"}} :
|
|
||||||
{{item.system.damage}}</a>
|
|
||||||
<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>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.gears"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize " CTHULHUETERNAL.Tooltip.addGear"}}" data-tooltip-direction="UP"><i
|
|
||||||
class="fas fa-plus" data-action="createGear"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="gears">
|
|
||||||
{{#each gears as |item|}}
|
|
||||||
{{!log 'armor' this}}
|
|
||||||
<div class="gear" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</section>
|
|
@ -1,52 +0,0 @@
|
|||||||
<section class="vehicle-main vehicle-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.vehicle"}}</legend>
|
|
||||||
<div class="vehicle-pc vehicle-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
|
||||||
<div class="vehicle-left">
|
|
||||||
<div class="vehicle-left-image">
|
|
||||||
<img class="vehicle-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
|
||||||
data-tooltip="{{actor.name}}" />
|
|
||||||
</div>
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.HP"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
{{formField systemFields.hp.fields.value value=system.hp.value}}
|
|
||||||
/
|
|
||||||
{{formField systemFields.hp.fields.max value=system.hp.max rootId=partId disabled=true}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="vehicle-right">
|
|
||||||
<div class="vehicle-name">
|
|
||||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
|
||||||
<a class="control" data-action="toggleSheet" data-tooltip="CTHULHUETERNAL.ToggleSheet"
|
|
||||||
data-tooltip-direction="UP">
|
|
||||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<fieldset class="speed">
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.Speed"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
{{formField systemFields.surfaceSpeed value=system.surfaceSpeed localize=true}}
|
|
||||||
{{formField systemFields.airSpeed value=system.airSpeed localize=true}}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset class="armr ">
|
|
||||||
<legend>{{localize "CTHULHUETERNAL.Label.armor"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
{{formField systemFields.armor value=system.armor localize=true}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</section>
|
|
@ -11,8 +11,6 @@
|
|||||||
{{formField systemFields.weaponSubtype value=system.weaponSubtype localize=true}}
|
{{formField systemFields.weaponSubtype value=system.weaponSubtype localize=true}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{formField systemFields.state value=system.state localize=true}}
|
|
||||||
|
|
||||||
{{formField systemFields.damage value=system.damage}}
|
{{formField systemFields.damage value=system.damage}}
|
||||||
{{formField systemFields.baseRange value=system.baseRange}}
|
{{formField systemFields.baseRange value=system.baseRange}}
|
||||||
{{formField systemFields.rangeUnit value=system.rangeUnit localize=true}}
|
{{formField systemFields.rangeUnit value=system.rangeUnit localize=true}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user