Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
ecb7fc2757 | |||
1fde7e4d2c | |||
b5a0405403 | |||
36279aa6eb | |||
d5eba47ab6 | |||
b21c5ac9bb | |||
a43bebc63b | |||
2b418695c4 | |||
5dbb168891 | |||
009024296c | |||
968c7da5c5 | |||
67ff06f953 | |||
24c5c685d0 | |||
d62b5472fe | |||
a1ef74a3ad | |||
ff89b62133 |
@ -27,7 +27,7 @@ jobs:
|
||||
env:
|
||||
version: ${{steps.get_version.outputs.version-without-v}}
|
||||
url: https://www.uberwald.me/gitea/${{gitea.repository}}
|
||||
manifest: https://www.uberwald.me/gitea/public/${{gitea.repository}}/releases/download/latest/system.json
|
||||
manifest: https://www.uberwald.me/gitea/public/fvtt-cthulhu-eternal/releases/download/latest/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
|
||||
@ -50,3 +50,14 @@ jobs:
|
||||
./fvtt-cthulhu-eternal.zip
|
||||
system.json
|
||||
api_key: '${{secrets.ALLOW_PUSH_RELEASE}}'
|
||||
|
||||
- name: Publish to Foundry server
|
||||
uses: djlechuck/foundryvtt-publish-package-action@v1
|
||||
with:
|
||||
token: ${{ secrets.FOUNDRYVTT_RELEASE_TOKEN }}
|
||||
id: 'fvtt-cthulhu-eternal'
|
||||
version: ${{github.event.release.tag_name}}
|
||||
manifest: 'https://www.uberwald.me/gitea/public/fvtt-cthulhu-eternal/releases/download/latest/system.json'
|
||||
notes: 'https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-cthulhu-eternal.zip'
|
||||
compatibility-minimum: '12'
|
||||
compatibility-verified: '12'
|
15
README.md
15
README.md
@ -1,6 +1,15 @@
|
||||
|
||||
<h2><em>Cthulhu Eternal RPG</em> for Foundry Virtual TableTop</h2>
|
||||
# Cthulhu Eternal RPG for FoundryVTT
|
||||
|
||||
<div align="center">
|
||||
Cthulhu Eternal : https://cthulhueternal.com/
|
||||
|
||||
</div>
|
||||
The system contains :
|
||||
|
||||
- Protagonist, Creature and Vehicle sheet
|
||||
- Arcane, Archetype, Armor, Bond, Gear, Injury, Mental Disorder, Motivation, Ritual, Skill, Tome, Weapon items
|
||||
- Support for all available eras
|
||||
- Pre-filled compendium for each era
|
||||
- Specific look&fell for each era
|
||||
- And much more !
|
||||
|
||||
Discord Contact : LeRatierBretonnien (at Official Foundry Discord of French Foundry Discord)
|
||||
|
BIN
assets/fonts/Skranji-Bold.ttf
Normal file
BIN
assets/fonts/Skranji-Bold.ttf
Normal file
Binary file not shown.
BIN
assets/fonts/Skranji-Regular.ttf
Normal file
BIN
assets/fonts/Skranji-Regular.ttf
Normal file
Binary file not shown.
258
assets/fonts/Skranji.g2n
Normal file
258
assets/fonts/Skranji.g2n
Normal file
@ -0,0 +1,258 @@
|
||||
GLYPHID 0 PSNAME .notdef
|
||||
GLYPHID 146 PSNAME Eth UNICODE 00D0
|
||||
GLYPHID 178 PSNAME eth UNICODE 00F0
|
||||
GLYPHID 206 PSNAME Lslash UNICODE 0141
|
||||
GLYPHID 207 PSNAME lslash UNICODE 0142
|
||||
GLYPHID 217 PSNAME Scaron UNICODE 0160
|
||||
GLYPHID 218 PSNAME scaron UNICODE 0161
|
||||
GLYPHID 159 PSNAME Yacute UNICODE 00DD
|
||||
GLYPHID 191 PSNAME yacute UNICODE 00FD
|
||||
GLYPHID 160 PSNAME Thorn UNICODE 00DE
|
||||
GLYPHID 192 PSNAME thorn UNICODE 00FE
|
||||
GLYPHID 220 PSNAME Zcaron UNICODE 017D
|
||||
GLYPHID 221 PSNAME zcaron UNICODE 017E
|
||||
GLYPHID 127 PSNAME onehalf UNICODE 00BD
|
||||
GLYPHID 126 PSNAME onequarter UNICODE 00BC
|
||||
GLYPHID 123 PSNAME onesuperior UNICODE 00B9
|
||||
GLYPHID 128 PSNAME threequarters UNICODE 00BE
|
||||
GLYPHID 117 PSNAME threesuperior UNICODE 00B3
|
||||
GLYPHID 116 PSNAME twosuperior UNICODE 00B2
|
||||
GLYPHID 104 PSNAME brokenbar UNICODE 00A6
|
||||
GLYPHID 251 PSNAME minus UNICODE 2212
|
||||
GLYPHID 153 PSNAME multiply UNICODE 00D7
|
||||
GLYPHID 3 PSNAME space UNICODE 0020
|
||||
GLYPHID 4 PSNAME exclam UNICODE 0021
|
||||
GLYPHID 5 PSNAME quotedbl UNICODE 0022
|
||||
GLYPHID 6 PSNAME numbersign UNICODE 0023
|
||||
GLYPHID 7 PSNAME dollar UNICODE 0024
|
||||
GLYPHID 8 PSNAME percent UNICODE 0025
|
||||
GLYPHID 9 PSNAME ampersand UNICODE 0026
|
||||
GLYPHID 10 PSNAME quotesingle UNICODE 0027
|
||||
GLYPHID 11 PSNAME parenleft UNICODE 0028
|
||||
GLYPHID 12 PSNAME parenright UNICODE 0029
|
||||
GLYPHID 13 PSNAME asterisk UNICODE 002A
|
||||
GLYPHID 14 PSNAME plus UNICODE 002B
|
||||
GLYPHID 15 PSNAME comma UNICODE 002C
|
||||
GLYPHID 16 PSNAME hyphen UNICODE 002D
|
||||
GLYPHID 17 PSNAME period UNICODE 002E
|
||||
GLYPHID 18 PSNAME slash UNICODE 002F
|
||||
GLYPHID 19 PSNAME zero UNICODE 0030
|
||||
GLYPHID 20 PSNAME one UNICODE 0031
|
||||
GLYPHID 21 PSNAME two UNICODE 0032
|
||||
GLYPHID 22 PSNAME three UNICODE 0033
|
||||
GLYPHID 23 PSNAME four UNICODE 0034
|
||||
GLYPHID 24 PSNAME five UNICODE 0035
|
||||
GLYPHID 25 PSNAME six UNICODE 0036
|
||||
GLYPHID 26 PSNAME seven UNICODE 0037
|
||||
GLYPHID 27 PSNAME eight UNICODE 0038
|
||||
GLYPHID 28 PSNAME nine UNICODE 0039
|
||||
GLYPHID 29 PSNAME colon UNICODE 003A
|
||||
GLYPHID 30 PSNAME semicolon UNICODE 003B
|
||||
GLYPHID 31 PSNAME less UNICODE 003C
|
||||
GLYPHID 32 PSNAME equal UNICODE 003D
|
||||
GLYPHID 33 PSNAME greater UNICODE 003E
|
||||
GLYPHID 34 PSNAME question UNICODE 003F
|
||||
GLYPHID 35 PSNAME at UNICODE 0040
|
||||
GLYPHID 36 PSNAME A UNICODE 0041
|
||||
GLYPHID 37 PSNAME B UNICODE 0042
|
||||
GLYPHID 38 PSNAME C UNICODE 0043
|
||||
GLYPHID 39 PSNAME D UNICODE 0044
|
||||
GLYPHID 40 PSNAME E UNICODE 0045
|
||||
GLYPHID 41 PSNAME F UNICODE 0046
|
||||
GLYPHID 42 PSNAME G UNICODE 0047
|
||||
GLYPHID 43 PSNAME H UNICODE 0048
|
||||
GLYPHID 44 PSNAME I UNICODE 0049
|
||||
GLYPHID 45 PSNAME J UNICODE 004A
|
||||
GLYPHID 46 PSNAME K UNICODE 004B
|
||||
GLYPHID 47 PSNAME L UNICODE 004C
|
||||
GLYPHID 48 PSNAME M UNICODE 004D
|
||||
GLYPHID 49 PSNAME N UNICODE 004E
|
||||
GLYPHID 50 PSNAME O UNICODE 004F
|
||||
GLYPHID 51 PSNAME P UNICODE 0050
|
||||
GLYPHID 52 PSNAME Q UNICODE 0051
|
||||
GLYPHID 53 PSNAME R UNICODE 0052
|
||||
GLYPHID 54 PSNAME S UNICODE 0053
|
||||
GLYPHID 55 PSNAME T UNICODE 0054
|
||||
GLYPHID 56 PSNAME U UNICODE 0055
|
||||
GLYPHID 57 PSNAME V UNICODE 0056
|
||||
GLYPHID 58 PSNAME W UNICODE 0057
|
||||
GLYPHID 59 PSNAME X UNICODE 0058
|
||||
GLYPHID 60 PSNAME Y UNICODE 0059
|
||||
GLYPHID 61 PSNAME Z UNICODE 005A
|
||||
GLYPHID 62 PSNAME bracketleft UNICODE 005B
|
||||
GLYPHID 63 PSNAME backslash UNICODE 005C
|
||||
GLYPHID 64 PSNAME bracketright UNICODE 005D
|
||||
GLYPHID 65 PSNAME asciicircum UNICODE 005E
|
||||
GLYPHID 66 PSNAME underscore UNICODE 005F
|
||||
GLYPHID 67 PSNAME grave UNICODE 0060
|
||||
GLYPHID 68 PSNAME a UNICODE 0061
|
||||
GLYPHID 69 PSNAME b UNICODE 0062
|
||||
GLYPHID 70 PSNAME c UNICODE 0063
|
||||
GLYPHID 71 PSNAME d UNICODE 0064
|
||||
GLYPHID 72 PSNAME e UNICODE 0065
|
||||
GLYPHID 73 PSNAME f UNICODE 0066
|
||||
GLYPHID 74 PSNAME g UNICODE 0067
|
||||
GLYPHID 75 PSNAME h UNICODE 0068
|
||||
GLYPHID 76 PSNAME i UNICODE 0069
|
||||
GLYPHID 77 PSNAME j UNICODE 006A
|
||||
GLYPHID 78 PSNAME k UNICODE 006B
|
||||
GLYPHID 79 PSNAME l UNICODE 006C
|
||||
GLYPHID 80 PSNAME m UNICODE 006D
|
||||
GLYPHID 81 PSNAME n UNICODE 006E
|
||||
GLYPHID 82 PSNAME o UNICODE 006F
|
||||
GLYPHID 83 PSNAME p UNICODE 0070
|
||||
GLYPHID 84 PSNAME q UNICODE 0071
|
||||
GLYPHID 85 PSNAME r UNICODE 0072
|
||||
GLYPHID 86 PSNAME s UNICODE 0073
|
||||
GLYPHID 87 PSNAME t UNICODE 0074
|
||||
GLYPHID 88 PSNAME u UNICODE 0075
|
||||
GLYPHID 89 PSNAME v UNICODE 0076
|
||||
GLYPHID 90 PSNAME w UNICODE 0077
|
||||
GLYPHID 91 PSNAME x UNICODE 0078
|
||||
GLYPHID 92 PSNAME y UNICODE 0079
|
||||
GLYPHID 93 PSNAME z UNICODE 007A
|
||||
GLYPHID 94 PSNAME braceleft UNICODE 007B
|
||||
GLYPHID 95 PSNAME bar UNICODE 007C
|
||||
GLYPHID 96 PSNAME braceright UNICODE 007D
|
||||
GLYPHID 97 PSNAME asciitilde UNICODE 007E
|
||||
GLYPHID 134 PSNAME Adieresis UNICODE 00C4
|
||||
GLYPHID 135 PSNAME Aring UNICODE 00C5
|
||||
GLYPHID 137 PSNAME Ccedilla UNICODE 00C7
|
||||
GLYPHID 139 PSNAME Eacute UNICODE 00C9
|
||||
GLYPHID 147 PSNAME Ntilde UNICODE 00D1
|
||||
GLYPHID 152 PSNAME Odieresis UNICODE 00D6
|
||||
GLYPHID 158 PSNAME Udieresis UNICODE 00DC
|
||||
GLYPHID 163 PSNAME aacute UNICODE 00E1
|
||||
GLYPHID 162 PSNAME agrave UNICODE 00E0
|
||||
GLYPHID 164 PSNAME acircumflex UNICODE 00E2
|
||||
GLYPHID 166 PSNAME adieresis UNICODE 00E4
|
||||
GLYPHID 165 PSNAME atilde UNICODE 00E3
|
||||
GLYPHID 167 PSNAME aring UNICODE 00E5
|
||||
GLYPHID 169 PSNAME ccedilla UNICODE 00E7
|
||||
GLYPHID 171 PSNAME eacute UNICODE 00E9
|
||||
GLYPHID 170 PSNAME egrave UNICODE 00E8
|
||||
GLYPHID 172 PSNAME ecircumflex UNICODE 00EA
|
||||
GLYPHID 173 PSNAME edieresis UNICODE 00EB
|
||||
GLYPHID 175 PSNAME iacute UNICODE 00ED
|
||||
GLYPHID 174 PSNAME igrave UNICODE 00EC
|
||||
GLYPHID 176 PSNAME icircumflex UNICODE 00EE
|
||||
GLYPHID 177 PSNAME idieresis UNICODE 00EF
|
||||
GLYPHID 179 PSNAME ntilde UNICODE 00F1
|
||||
GLYPHID 181 PSNAME oacute UNICODE 00F3
|
||||
GLYPHID 180 PSNAME ograve UNICODE 00F2
|
||||
GLYPHID 182 PSNAME ocircumflex UNICODE 00F4
|
||||
GLYPHID 184 PSNAME odieresis UNICODE 00F6
|
||||
GLYPHID 183 PSNAME otilde UNICODE 00F5
|
||||
GLYPHID 188 PSNAME uacute UNICODE 00FA
|
||||
GLYPHID 187 PSNAME ugrave UNICODE 00F9
|
||||
GLYPHID 189 PSNAME ucircumflex UNICODE 00FB
|
||||
GLYPHID 190 PSNAME udieresis UNICODE 00FC
|
||||
GLYPHID 240 PSNAME dagger UNICODE 2020
|
||||
GLYPHID 114 PSNAME degree UNICODE 00B0
|
||||
GLYPHID 100 PSNAME cent UNICODE 00A2
|
||||
GLYPHID 101 PSNAME sterling UNICODE 00A3
|
||||
GLYPHID 105 PSNAME section UNICODE 00A7
|
||||
GLYPHID 242 PSNAME bullet UNICODE 2022
|
||||
GLYPHID 120 PSNAME paragraph UNICODE 00B6
|
||||
GLYPHID 161 PSNAME germandbls UNICODE 00DF
|
||||
GLYPHID 112 PSNAME registered UNICODE 00AE
|
||||
GLYPHID 107 PSNAME copyright UNICODE 00A9
|
||||
GLYPHID 249 PSNAME trademark UNICODE 2122
|
||||
GLYPHID 118 PSNAME acute UNICODE 00B4
|
||||
GLYPHID 106 PSNAME dieresis UNICODE 00A8
|
||||
GLYPHID 253 PSNAME notequal UNICODE 2260
|
||||
GLYPHID 136 PSNAME AE UNICODE 00C6
|
||||
GLYPHID 154 PSNAME Oslash UNICODE 00D8
|
||||
GLYPHID 115 PSNAME plusminus UNICODE 00B1
|
||||
GLYPHID 254 PSNAME lessequal UNICODE 2264
|
||||
GLYPHID 255 PSNAME greaterequal UNICODE 2265
|
||||
GLYPHID 103 PSNAME yen UNICODE 00A5
|
||||
GLYPHID 119 PSNAME mu UNICODE 00B5
|
||||
GLYPHID 250 PSNAME partialdiff UNICODE 2202
|
||||
GLYPHID 108 PSNAME ordfeminine UNICODE 00AA
|
||||
GLYPHID 124 PSNAME ordmasculine UNICODE 00BA
|
||||
GLYPHID 168 PSNAME ae UNICODE 00E6
|
||||
GLYPHID 186 PSNAME oslash UNICODE 00F8
|
||||
GLYPHID 129 PSNAME questiondown UNICODE 00BF
|
||||
GLYPHID 99 PSNAME exclamdown UNICODE 00A1
|
||||
GLYPHID 110 PSNAME logicalnot UNICODE 00AC
|
||||
GLYPHID 222 PSNAME florin UNICODE 0192
|
||||
GLYPHID 252 PSNAME approxequal UNICODE 2248
|
||||
GLYPHID 109 PSNAME guillemotleft UNICODE 00AB
|
||||
GLYPHID 125 PSNAME guillemotright UNICODE 00BB
|
||||
GLYPHID 243 PSNAME ellipsis UNICODE 2026
|
||||
GLYPHID 98 PSNAME uni00A0 UNICODE 00A0
|
||||
GLYPHID 130 PSNAME Agrave UNICODE 00C0
|
||||
GLYPHID 133 PSNAME Atilde UNICODE 00C3
|
||||
GLYPHID 151 PSNAME Otilde UNICODE 00D5
|
||||
GLYPHID 210 PSNAME OE UNICODE 0152
|
||||
GLYPHID 211 PSNAME oe UNICODE 0153
|
||||
GLYPHID 232 PSNAME endash UNICODE 2013
|
||||
GLYPHID 233 PSNAME emdash UNICODE 2014
|
||||
GLYPHID 237 PSNAME quotedblleft UNICODE 201C
|
||||
GLYPHID 238 PSNAME quotedblright UNICODE 201D
|
||||
GLYPHID 234 PSNAME quoteleft UNICODE 2018
|
||||
GLYPHID 235 PSNAME quoteright UNICODE 2019
|
||||
GLYPHID 185 PSNAME divide UNICODE 00F7
|
||||
GLYPHID 256 PSNAME lozenge UNICODE 25CA
|
||||
GLYPHID 193 PSNAME ydieresis UNICODE 00FF
|
||||
GLYPHID 219 PSNAME Ydieresis UNICODE 0178
|
||||
GLYPHID 247 PSNAME fraction UNICODE 2044
|
||||
GLYPHID 248 PSNAME Euro UNICODE 20AC
|
||||
GLYPHID 245 PSNAME guilsinglleft UNICODE 2039
|
||||
GLYPHID 246 PSNAME guilsinglright UNICODE 203A
|
||||
GLYPHID 258 PSNAME fi UNICODE FB01
|
||||
GLYPHID 259 PSNAME fl UNICODE FB02
|
||||
GLYPHID 241 PSNAME daggerdbl UNICODE 2021
|
||||
GLYPHID 121 PSNAME periodcentered UNICODE 00B7
|
||||
GLYPHID 236 PSNAME quotesinglbase UNICODE 201A
|
||||
GLYPHID 239 PSNAME quotedblbase UNICODE 201E
|
||||
GLYPHID 244 PSNAME perthousand UNICODE 2030
|
||||
GLYPHID 132 PSNAME Acircumflex UNICODE 00C2
|
||||
GLYPHID 140 PSNAME Ecircumflex UNICODE 00CA
|
||||
GLYPHID 131 PSNAME Aacute UNICODE 00C1
|
||||
GLYPHID 141 PSNAME Edieresis UNICODE 00CB
|
||||
GLYPHID 138 PSNAME Egrave UNICODE 00C8
|
||||
GLYPHID 143 PSNAME Iacute UNICODE 00CD
|
||||
GLYPHID 144 PSNAME Icircumflex UNICODE 00CE
|
||||
GLYPHID 145 PSNAME Idieresis UNICODE 00CF
|
||||
GLYPHID 142 PSNAME Igrave UNICODE 00CC
|
||||
GLYPHID 149 PSNAME Oacute UNICODE 00D3
|
||||
GLYPHID 150 PSNAME Ocircumflex UNICODE 00D4
|
||||
GLYPHID 148 PSNAME Ograve UNICODE 00D2
|
||||
GLYPHID 156 PSNAME Uacute UNICODE 00DA
|
||||
GLYPHID 157 PSNAME Ucircumflex UNICODE 00DB
|
||||
GLYPHID 155 PSNAME Ugrave UNICODE 00D9
|
||||
GLYPHID 197 PSNAME dotlessi UNICODE 0131
|
||||
GLYPHID 224 PSNAME circumflex UNICODE 02C6
|
||||
GLYPHID 230 PSNAME tilde UNICODE 02DC
|
||||
GLYPHID 113 PSNAME macron UNICODE 00AF
|
||||
GLYPHID 226 PSNAME breve UNICODE 02D8
|
||||
GLYPHID 227 PSNAME dotaccent UNICODE 02D9
|
||||
GLYPHID 228 PSNAME ring UNICODE 02DA
|
||||
GLYPHID 122 PSNAME cedilla UNICODE 00B8
|
||||
GLYPHID 231 PSNAME hungarumlaut UNICODE 02DD
|
||||
GLYPHID 229 PSNAME ogonek UNICODE 02DB
|
||||
GLYPHID 225 PSNAME caron UNICODE 02C7
|
||||
GLYPHID 102 PSNAME currency UNICODE 00A4
|
||||
GLYPHID 194 PSNAME hbar UNICODE 0127
|
||||
GLYPHID 223 PSNAME dotlessj UNICODE 0237
|
||||
GLYPHID 195 PSNAME Itilde UNICODE 0128
|
||||
GLYPHID 196 PSNAME itilde UNICODE 0129
|
||||
GLYPHID 198 PSNAME IJ UNICODE 0132
|
||||
GLYPHID 199 PSNAME ij UNICODE 0133
|
||||
GLYPHID 200 PSNAME Jcircumflex UNICODE 0134
|
||||
GLYPHID 201 PSNAME jcircumflex UNICODE 0135
|
||||
GLYPHID 204 PSNAME Ldot UNICODE 013F
|
||||
GLYPHID 203 PSNAME kgreenlandic UNICODE 0138
|
||||
GLYPHID 205 PSNAME ldotaccent UNICODE 0140
|
||||
GLYPHID 202 PSNAME kcommaaccent UNICODE 0137
|
||||
GLYPHID 208 PSNAME Nacute UNICODE 0143
|
||||
GLYPHID 209 PSNAME nacute UNICODE 0144
|
||||
GLYPHID 212 PSNAME Racute UNICODE 0154
|
||||
GLYPHID 213 PSNAME Rcommaaccent UNICODE 0156
|
||||
GLYPHID 214 PSNAME rcommaaccent UNICODE 0157
|
||||
GLYPHID 215 PSNAME Rcaron UNICODE 0158
|
||||
GLYPHID 216 PSNAME rcaron UNICODE 0159
|
||||
GLYPHID 257 PSNAME commaaccent UNICODE F6C3
|
||||
GLYPHID 111 PSNAME sfthyphen UNICODE 00AD
|
BIN
assets/fonts/Skranji.ttf
Normal file
BIN
assets/fonts/Skranji.ttf
Normal file
Binary file not shown.
BIN
assets/fonts/Skranji.woff
Normal file
BIN
assets/fonts/Skranji.woff
Normal file
Binary file not shown.
BIN
assets/fonts/Skranji.woff2
Normal file
BIN
assets/fonts/Skranji.woff2
Normal file
Binary file not shown.
13
changelog.md
Normal file
13
changelog.md
Normal file
@ -0,0 +1,13 @@
|
||||
# 13.0.0
|
||||
|
||||
- Foundry v13 support
|
||||
- New font for medieval era
|
||||
|
||||
# 12.0.12
|
||||
|
||||
- Add missing skills for WW1, WW2, future and post-apocalyptic
|
||||
- Fix packaging
|
||||
|
||||
# 12.0.11
|
||||
|
||||
- Initial release
|
@ -95,20 +95,8 @@
|
||||
src: url("../assets/fonts/broadway.woff2") format("woff2");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Caslon";
|
||||
src: url("../fonts/caslonpro-regular.otf") format("truetype");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Caslon Bold";
|
||||
src: url("../fonts/caslonpro-bold.otf") format("truetype");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Caslon Bold Italic";
|
||||
src: url("../fonts/caslonpro-bolditalic.otf") format("truetype");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Caslon Italic";
|
||||
src: url("../fonts/caslonpro-italic.otf") format("truetype");
|
||||
font-family: "Skranji";
|
||||
src: url("../assets/fonts/Skranji.woff") format("woff");
|
||||
}
|
||||
:root {
|
||||
--font-size-standard: 0.9rem;
|
||||
@ -514,21 +502,21 @@ i.fvtt-cthulhu-eternal {
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills legend a {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div .skills {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div .skills .skill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
@ -536,330 +524,330 @@ i.fvtt-cthulhu-eternal {
|
||||
min-width: 12.3rem;
|
||||
max-width: 12.3rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div .skills .skill .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div .skills .skill .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div .skills .skill .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .score {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div .skills .skill .score {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div .skills .skill .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-skills .main-div .skills .skill .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status legend a {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .bonds {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .bonds .bond {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .bonds .bond .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .bonds .bond .name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .type {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .bonds .bond .type {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .level {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .bonds .bond .level {
|
||||
min-width: 2rem;
|
||||
max-width: 2rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .bonds .bond .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .motivations {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations .motivation {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .motivations .motivation {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations .motivation .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .motivations .motivation .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations .motivation .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .motivations .motivation .name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .motivations .motivation .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .motivations .motivation .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .mentaldisorders {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .mentaldisorders .mentaldisorder {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .mentaldisorders .mentaldisorder .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .mentaldisorders .mentaldisorder .name {
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .cured {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .mentaldisorders .mentaldisorder .cured {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .mentaldisorders .mentaldisorder .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .injuries {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .injuries .injury {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 16rem;
|
||||
max-width: 16rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .injuries .injury .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .injuries .injury .name {
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-status .main-div .injuries .injury .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment legend a {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .weapons .weapon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.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 .main-div .weapons .weapon .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .weapons .weapon .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .weapons .weapon .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .damage {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .weapons .weapon .damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .weapons .weapon .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .weapons .weapon .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .protection {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .protection {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .name {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .gears {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .gears .gear {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .gears .gear .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .gears .gear .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .gears .gear .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .gears .gear .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .gears .gear .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .rituals {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .rituals .ritual {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 20rem;
|
||||
max-width: 20rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .rituals .ritual .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .rituals .ritual .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .rituals .ritual .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .rituals .ritual .name {
|
||||
min-width: 17rem;
|
||||
max-width: 17rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .rituals .ritual .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .rituals .ritual .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .tomes {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .tomes .tome {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 20rem;
|
||||
max-width: 20rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .tomes .tome .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .tomes .tome .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .controls {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .tomes .tome .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .name {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .tomes .tome .name {
|
||||
min-width: 17rem;
|
||||
max-width: 17rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .tomes .tome .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .tomes .tome .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.inactive {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.active {
|
||||
.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .vehicle-content {
|
||||
@ -1026,87 +1014,87 @@ i.fvtt-cthulhu-eternal {
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment legend a {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .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 {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .weapons .weapon .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .weapons .weapon .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .controls {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .weapons .weapon .controls {
|
||||
min-width: 2rem;
|
||||
max-width: 2rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .damage {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .weapons .weapon .damage {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .name {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .weapons .weapon .name {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .weapons .weapon .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .weapons .weapon .item-img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .gears {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .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 {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .gears .gear .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .gears .gear .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .controls {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .gears .gear .controls {
|
||||
min-width: 2rem;
|
||||
max-width: 2rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .damage {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .gears .gear .damage {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .name {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .gears .gear .name {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .gears .gear .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div .gears .gear .item-img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment prose-mirror.inactive {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment prose-mirror.active {
|
||||
.fvtt-cthulhu-eternal .tab.vehicle-equipment .main-div prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .creature-content {
|
||||
@ -1409,91 +1397,91 @@ i.fvtt-cthulhu-eternal {
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills legend a {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .armors {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .armors {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .armors .armor {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .armors .armor {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .armors .armor .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .armors .armor .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .armors .armor .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .armors .armor .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .armors .armor .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .armors .armor .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .armors .armor .protection {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .armors .armor .protection {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .armors .armor .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .armors .armor .name {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .armors .armor .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .armors .armor .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .weapons {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .weapons .weapon {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .weapons .weapon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .weapons .weapon .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .weapons .weapon .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .weapons .weapon .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .weapons .weapon .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .weapons .weapon .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .weapons .weapon .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .weapons .weapon .damage {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .weapons .weapon .damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .weapons .weapon .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .weapons .weapon .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .weapons .weapon .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .weapons .weapon .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .skills {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .skills {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .skills .skill {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .skills .skill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
@ -1501,260 +1489,260 @@ i.fvtt-cthulhu-eternal {
|
||||
min-width: 12.3rem;
|
||||
max-width: 12.3rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .skills .skill .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .skills .skill .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .skills .skill .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .skills .skill .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .skills .skill .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .skills .skill .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .skills .skill .score {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .skills .skill .score {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .skills .skill .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .skills .skill .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .skills .skill .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-skills .main-div .skills .skill .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status legend a {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .bonds {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .bonds {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .bonds .bond {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .bonds .bond {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .bonds .bond .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .bonds .bond .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .bonds .bond .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .bonds .bond .name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .bonds .bond .type {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .bonds .bond .type {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .bonds .bond .level {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .bonds .bond .level {
|
||||
min-width: 2rem;
|
||||
max-width: 2rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .bonds .bond .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .bonds .bond .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .motivations {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .motivations {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .motivations .motivation {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .motivations .motivation {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .motivations .motivation .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .motivations .motivation .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .motivations .motivation .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .motivations .motivation .name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .motivations .motivation .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .motivations .motivation .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .mentaldisorders {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .mentaldisorders {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .mentaldisorders .mentaldisorder {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .mentaldisorders .mentaldisorder {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .mentaldisorders .mentaldisorder .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .mentaldisorders .mentaldisorder .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .mentaldisorders .mentaldisorder .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .mentaldisorders .mentaldisorder .name {
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .mentaldisorders .mentaldisorder .cured {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .mentaldisorders .mentaldisorder .cured {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .mentaldisorders .mentaldisorder .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .mentaldisorders .mentaldisorder .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .injuries {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .injuries {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .injuries .injury {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .injuries .injury {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 16rem;
|
||||
max-width: 16rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .injuries .injury .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .injuries .injury .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .injuries .injury .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .injuries .injury .name {
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .injuries .injury .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-status .main-div .injuries .injury .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment legend a {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .gears {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .gears {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .gears .gear {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .gears .gear {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .gears .gear .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .gears .gear .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .gears .gear .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .gears .gear .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .gears .gear .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .gears .gear .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .gears .gear .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .gears .gear .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .gears .gear .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .gears .gear .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .rituals {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .rituals {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .rituals .ritual {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .rituals .ritual {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 20rem;
|
||||
max-width: 20rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .rituals .ritual .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .rituals .ritual .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .rituals .ritual .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .rituals .ritual .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .rituals .ritual .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .rituals .ritual .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .rituals .ritual .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .rituals .ritual .name {
|
||||
min-width: 17rem;
|
||||
max-width: 17rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .rituals .ritual .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .rituals .ritual .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .tomes {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .tomes {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .tomes .tome {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .tomes .tome {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 20rem;
|
||||
max-width: 20rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .tomes .tome .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .tomes .tome .rollable:focus {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .tomes .tome .rollable:hover,
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .tomes .tome .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .tomes .tome .controls {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .tomes .tome .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .tomes .tome .name {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .tomes .tome .name {
|
||||
min-width: 17rem;
|
||||
max-width: 17rem;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .tomes .tome .item-img {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div .tomes .tome .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment prose-mirror.inactive {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment prose-mirror.active {
|
||||
.fvtt-cthulhu-eternal .tab.creature-equipment .main-div prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .skill-content {
|
||||
@ -2680,6 +2668,14 @@ i.fvtt-cthulhu-eternal {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
}
|
||||
.fvtt-cthulhu-eternal .ritual-content fieldset .editor-content {
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .ritual-content fieldset .editor-container {
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.fvtt-cthulhu-eternal .ritual-content .header {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
|
@ -54,24 +54,24 @@ Hooks.once("init", function () {
|
||||
}
|
||||
|
||||
// Register sheet application classes
|
||||
Actors.unregisterSheet("core", ActorSheet)
|
||||
Actors.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalProtagonistSheet, { types: ["protagonist"], makeDefault: true })
|
||||
Actors.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalVehicleSheet, { types: ["vehicle"], makeDefault: true })
|
||||
Actors.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet)
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalProtagonistSheet, { types: ["protagonist"], makeDefault: true })
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalVehicleSheet, { types: ["vehicle"], makeDefault: true })
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||
|
||||
Items.unregisterSheet("core", ItemSheet)
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalSkillSheet, { types: ["skill"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalInjurySheet, { types: ["injury"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalMotivationSheet, { types: ["motivation"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalMentalDisorderSheet, { types: ["mentaldisorder"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalWeaponSheet, { types: ["weapon"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalArcaneSheet, { types: ["arcane"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalArmorSheet, { types: ["armor"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalBondSheet, { types: ["bond"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalGearSheet, { types: ["gear"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalArchetypeSheet, { types: ["archetype"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalRitualSheet, { types: ["ritual"], makeDefault: true })
|
||||
Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalTomeSheet, { types: ["tome"], makeDefault: true })
|
||||
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet)
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalSkillSheet, { types: ["skill"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalInjurySheet, { types: ["injury"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalMotivationSheet, { types: ["motivation"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalMentalDisorderSheet, { types: ["mentaldisorder"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalWeaponSheet, { types: ["weapon"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalArcaneSheet, { types: ["arcane"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalArmorSheet, { types: ["armor"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalBondSheet, { types: ["bond"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalGearSheet, { types: ["gear"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalArchetypeSheet, { types: ["archetype"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalRitualSheet, { types: ["ritual"], makeDefault: true })
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-cthulhu-eternal", applications.CthulhuEternalTomeSheet, { types: ["tome"], makeDefault: true })
|
||||
|
||||
// Other Document Configuration
|
||||
CONFIG.ChatMessage.documentClass = documents.CthulhuEternalChatMessage
|
||||
@ -97,6 +97,7 @@ Hooks.once("init", function () {
|
||||
console.info("CTHULHU ETERNAL | System Initialized")
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* Perform one-time configuration of system configuration objects.
|
||||
*/
|
||||
@ -119,13 +120,13 @@ Hooks.once("ready", function () {
|
||||
|
||||
})
|
||||
|
||||
Hooks.on("renderChatMessage", (message, html, data) => {
|
||||
Hooks.on("renderChatMessageHTML", (message, html, data) => {
|
||||
// Affichage des boutons de jet de dés uniquement pour les joueurs
|
||||
if (message.author.id === game.user.id) {
|
||||
html.find(".nudge-roll").each((i, btn) => {
|
||||
$(html).find(".nudge-roll").each((i, btn) => {
|
||||
btn.style.display = "inline"
|
||||
})
|
||||
html.find(".nudge-roll").click((event) => {
|
||||
$(html).find(".nudge-roll").click((event) => {
|
||||
CthulhuEternalUtils.nudgeRoll(message)
|
||||
})
|
||||
}
|
||||
@ -133,7 +134,7 @@ Hooks.on("renderChatMessage", (message, html, data) => {
|
||||
|
||||
// Dice-so-nice Ready
|
||||
Hooks.once("diceSoNiceReady", (dice3d) => {
|
||||
configureDiceSoNice(dice3d)
|
||||
//configureDiceSoNice(dice3d)
|
||||
})
|
||||
|
||||
/**
|
||||
|
13
lang/en.json
13
lang/en.json
@ -265,6 +265,12 @@
|
||||
"submachinegun": "Submachinegun",
|
||||
"riflecarabine": "Rifle/Carabine"
|
||||
},
|
||||
"SelectiveFire": {
|
||||
"shortburst": "Short Burst",
|
||||
"longburst": "Long Burst",
|
||||
"shortspray": "Short Spray",
|
||||
"longspray": "Long Spray"
|
||||
},
|
||||
"FIELDS": {
|
||||
"hasDirectSkill": {
|
||||
"label": "Has direct skill"
|
||||
@ -284,6 +290,12 @@
|
||||
"weaponSubtype": {
|
||||
"label": "Firearm Subtype"
|
||||
},
|
||||
"hasSelectiveFire": {
|
||||
"label": "Has selective fire"
|
||||
},
|
||||
"applyDamageBonus": {
|
||||
"label": "Add damage bonus"
|
||||
},
|
||||
"damage": {
|
||||
"label": "Damage"
|
||||
},
|
||||
@ -457,6 +469,7 @@
|
||||
"Simple": "Simple",
|
||||
"Complex": "Complex",
|
||||
"Elaborate": "Elaborate",
|
||||
"Difficult": "Difficult",
|
||||
"FIELDS": {
|
||||
"ritualType": {
|
||||
"label": "Type"
|
||||
|
294
module/applications/hud/action-handler.js
Normal file
294
module/applications/hud/action-handler.js
Normal file
@ -0,0 +1,294 @@
|
||||
// System Module Imports
|
||||
import { Utils } from './utils.js'
|
||||
import { SYSTEM } from "../../config/system.mjs"
|
||||
export let ActionHandler = null
|
||||
|
||||
Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => {
|
||||
/**
|
||||
* Extends Token Action HUD Core's ActionHandler class and builds system-defined actions for the HUD
|
||||
*/
|
||||
ActionHandler = class ActionHandler extends coreModule.api.ActionHandler {
|
||||
/**
|
||||
* Build system actions
|
||||
* Called by Token Action HUD Core
|
||||
* @override
|
||||
* @param {array} groupIds
|
||||
*/
|
||||
async buildSystemActions(groupIds) {
|
||||
// Set actor and token variables
|
||||
this.actors = (!this.actor) ? this._getActors() : [this.actor]
|
||||
this.actorType = this.actor?.type
|
||||
|
||||
// Set items variable
|
||||
if (this.actor) {
|
||||
let items = this.actor.items
|
||||
items = coreModule.api.Utils.sortItemsByName(items)
|
||||
this.items = items
|
||||
}
|
||||
|
||||
if (this.actorType !== 'vehicle') {
|
||||
this.#buildCharacterActions()
|
||||
} else if (!this.actor) {
|
||||
this.#buildMultipleTokenActions()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Build character actions
|
||||
* @private
|
||||
*/
|
||||
#buildCharacterActions() {
|
||||
this.buildAttributes()
|
||||
this.buildOther()
|
||||
this.buildLuck()
|
||||
this.buildSkills()
|
||||
this.buildEquipment()
|
||||
}
|
||||
|
||||
#showValue() {
|
||||
return game.settings.get('token-action-hud-core', 'tooltips') === 'none'
|
||||
}
|
||||
|
||||
async buildAttributes() {
|
||||
const actions = []
|
||||
for (const key in this.actor.system.characteristics) {
|
||||
const encodedValue = [coreModule.api.Utils.i18n('attributes'), key].join(this.delimiter)
|
||||
const tooltip = {
|
||||
content: String(this.actor.system.characteristics[key].value * 5),
|
||||
class: 'tah-system-tooltip',
|
||||
direction: 'LEFT'
|
||||
}
|
||||
actions.push({
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.' + key),
|
||||
id: key,
|
||||
info1: this.#showValue() ? { text: tooltip.content } : null,
|
||||
tooltip,
|
||||
encodedValue
|
||||
})
|
||||
}
|
||||
await this.addActions(actions, {
|
||||
id: 'attributes',
|
||||
type: 'system'
|
||||
})
|
||||
}
|
||||
|
||||
async buildLuck() {
|
||||
const actions = []
|
||||
const tooltip = {
|
||||
content: '50',
|
||||
class: 'tah-system-tooltip',
|
||||
direction: 'LEFT'
|
||||
}
|
||||
actions.push({
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.Luck'),
|
||||
id: 'luck',
|
||||
info1: this.#showValue() ? { text: '50' } : null,
|
||||
tooltip,
|
||||
encodedValue: ['attributes', 'luck'].join(this.delimiter)
|
||||
})
|
||||
await this.addActions(actions, { id: 'luck', type: 'system' })
|
||||
}
|
||||
|
||||
async buildOther() {
|
||||
if (typeof this.actor.system.sanity.value !== 'undefined') {
|
||||
const actions = []
|
||||
const groupData = {
|
||||
id: 'other_sanity',
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.SAN'),
|
||||
type: 'system'
|
||||
}
|
||||
this.addGroup(groupData, { id: 'other', type: 'system' }, true)
|
||||
const tooltip = {
|
||||
content: String(this.actor.system.san.value + '/' + this.actor.system.san.max),
|
||||
class: 'tah-system-tooltip',
|
||||
direction: 'LEFT'
|
||||
}
|
||||
actions.push({
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.SAN'),
|
||||
id: 'sanity',
|
||||
info1: this.#showValue() ? { text: tooltip.content } : null,
|
||||
tooltip,
|
||||
encodedValue: ['attributes', 'sanity'].join(this.delimiter)
|
||||
},
|
||||
{
|
||||
name: '+',
|
||||
id: 'sanity_add',
|
||||
encodedValue: ['attributes', 'sanity_add'].join(this.delimiter)
|
||||
},
|
||||
{
|
||||
name: '-',
|
||||
id: 'sanity_subtract',
|
||||
encodedValue: ['attributes', 'sanity_subtract'].join(this.delimiter)
|
||||
})
|
||||
await this.addActions(actions, { id: 'other_sanity', type: 'system' })
|
||||
}
|
||||
if (typeof this.actor.system.hp.value !== 'undefined') {
|
||||
const actions = []
|
||||
const groupData = {
|
||||
id: 'other_health',
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.HP'),
|
||||
type: 'system'
|
||||
}
|
||||
this.addGroup(groupData, { id: 'other', type: 'system' }, true)
|
||||
const tooltip = {
|
||||
content: String(this.actor.system.hp.value + '/' + this.actor.system.hp.max),
|
||||
class: 'tah-system-tooltip',
|
||||
direction: 'LEFT'
|
||||
}
|
||||
actions.push({
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.HP'),
|
||||
id: 'health',
|
||||
info1: this.#showValue() ? { text: tooltip.content } : null,
|
||||
tooltip,
|
||||
encodedValue: ['attributes', 'health'].join(this.delimiter)
|
||||
},
|
||||
{
|
||||
name: '+',
|
||||
id: 'health_add',
|
||||
encodedValue: ['attributes', 'health_add'].join(this.delimiter)
|
||||
},
|
||||
{
|
||||
name: '-',
|
||||
id: 'health_subtract',
|
||||
encodedValue: ['attributes', 'health_subtract'].join(this.delimiter)
|
||||
})
|
||||
await this.addActions(actions, { id: 'other_health', type: 'system' })
|
||||
}
|
||||
if (typeof this.actor.system.wp.value !== 'undefined') {
|
||||
const actions = []
|
||||
const groupData = {
|
||||
id: 'other_wp',
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.WP'),
|
||||
type: 'system'
|
||||
}
|
||||
this.addGroup(groupData, { id: 'other', type: 'system' }, true)
|
||||
const tooltip = {
|
||||
content: String(this.actor.system.wp.value + '/' + this.actor.system.wp.max),
|
||||
class: 'tah-system-tooltip',
|
||||
direction: 'LEFT'
|
||||
}
|
||||
actions.push({
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.WP'),
|
||||
id: 'wp',
|
||||
info1: this.#showValue() ? { text: tooltip.content } : null,
|
||||
tooltip,
|
||||
encodedValue: ['attributes', 'wp'].join(this.delimiter)
|
||||
},
|
||||
{
|
||||
name: '+',
|
||||
id: 'wp_add',
|
||||
encodedValue: ['attributes', 'wp_add'].join(this.delimiter)
|
||||
},
|
||||
{
|
||||
name: '-',
|
||||
id: 'wp_subtract',
|
||||
encodedValue: ['attributes', 'wp_subtract'].join(this.delimiter)
|
||||
})
|
||||
await this.addActions(actions, { id: 'other_wp', type: 'system' })
|
||||
}
|
||||
}
|
||||
|
||||
async buildSkills() {
|
||||
const actions = []
|
||||
let actorSkills = this.actor.items.filter(item => item.type === 'skill')
|
||||
for (const skill in actorSkills) {
|
||||
if (skill.system.computeScore() > 0) {
|
||||
const tooltip = {
|
||||
content: String(skill.skill.system.computeScore()),
|
||||
direction: 'LEFT'
|
||||
}
|
||||
actions.push({
|
||||
name: skill.name,
|
||||
id: skill.id,
|
||||
info1: this.#showValue() ? { text: tooltip.content } : null,
|
||||
tooltip,
|
||||
encodedValue: ['skills', s].join(this.delimiter)
|
||||
})
|
||||
}
|
||||
}
|
||||
await this.addActions(actions, { id: 'skills', type: 'system' })
|
||||
}
|
||||
|
||||
async buildEquipment() {
|
||||
let weapons = this.actor.items.filter(item => item.type === 'weapon')
|
||||
let skills = this.actor.items.filter(item => item.type === 'skill')
|
||||
for (const item of weapons) {
|
||||
// Push the weapon name as a new group
|
||||
const groupData = {
|
||||
id: 'weapons_' + item._id,
|
||||
name: item.name,
|
||||
type: 'system'
|
||||
}
|
||||
if (!SYSTEM.WEAPON_SKILL_MAPPING[era] || !SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) {
|
||||
continue
|
||||
}
|
||||
let skillName = game.i18n.localize(SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType])
|
||||
let skill = skills.find(skill => skill.name.toLowerCase() === skillName.toLowerCase())
|
||||
this.addGroup(groupData, { id: 'weapons', type: 'system' }, true)
|
||||
if (item.type === 'weapon') {
|
||||
const weapons = []
|
||||
const tooltip = {
|
||||
content: String(skill.system.computeScore()),
|
||||
direction: 'LEFT'
|
||||
}
|
||||
weapons.push({
|
||||
name: skill.name,
|
||||
id: skill._id,
|
||||
info1: this.#showValue() ? { text: tooltip.content } : null,
|
||||
encodedValue: ['weapons', item._id].join(this.delimiter),
|
||||
tooltip
|
||||
})
|
||||
const damageTooltip = {
|
||||
content: String(item.system.damage),
|
||||
direction: 'LEFT'
|
||||
}
|
||||
if (item.system.damage !== '') {
|
||||
weapons.push({
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.Damage'),
|
||||
id: item._id,
|
||||
info1: this.#showValue() ? { text: damageTooltip.content } : null,
|
||||
encodedValue: ['damage', item._id].join(this.delimiter),
|
||||
tooltip: damageTooltip
|
||||
})
|
||||
}
|
||||
if (item.system.isLethal) {
|
||||
const lethalityTooltip = {
|
||||
content: String(item.system.lethality),
|
||||
direction: 'LEFT'
|
||||
}
|
||||
weapons.push({
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.Lethality'),
|
||||
id: item._id,
|
||||
info1: this.#showValue() ? { text: lethalityTooltip.content } : null,
|
||||
encodedValue: ['lethality', item._id].join(this.delimiter),
|
||||
tooltip: lethalityTooltip
|
||||
})
|
||||
}
|
||||
await this.addActions(weapons, {
|
||||
id: 'weapons_' + item._id,
|
||||
type: 'system'
|
||||
})
|
||||
}/* else if (item.type === 'ritual') {
|
||||
rituals.push({
|
||||
name: item.name,
|
||||
id: item._id,
|
||||
encodedValue: ['rituals', item.name].join(this.delimiter)
|
||||
})
|
||||
} */
|
||||
|
||||
/* await this.addActions(rituals, {
|
||||
id: 'rituals',
|
||||
type: 'system'
|
||||
}) */
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Build multiple token actions
|
||||
* @private
|
||||
* @returns {object}
|
||||
*/
|
||||
#buildMultipleTokenActions() {
|
||||
}
|
||||
}
|
||||
})
|
38
module/applications/hud/constants.js
Normal file
38
module/applications/hud/constants.js
Normal file
@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Module-based constants
|
||||
*/
|
||||
export const SYSTEM = {
|
||||
ID: 'fvtt-cthulhu-eternal'
|
||||
}
|
||||
|
||||
/**
|
||||
* Core module
|
||||
*/
|
||||
export const CORE_MODULE = {
|
||||
ID: 'token-action-hud-core'
|
||||
}
|
||||
|
||||
/**
|
||||
* Core module version required by the system module
|
||||
*/
|
||||
export const REQUIRED_CORE_MODULE_VERSION = '2.0'
|
||||
|
||||
/**
|
||||
* Action types
|
||||
*/
|
||||
export const ACTION_TYPE = {
|
||||
attributes: 'CTHULHUETERNAL.Label.Characteristics',
|
||||
skills: 'CTHULHUETERNAL.Label.Skill',
|
||||
equipment: 'CTHULHUETERNAL.Label.Gear'
|
||||
}
|
||||
|
||||
/**
|
||||
* Groups
|
||||
*/
|
||||
export const GROUP = {
|
||||
attributes: { id: 'attributes', name: 'CTHULHUETERNAL.Label.Characteristics', type: 'system' },
|
||||
luck: { id: 'luck', name: 'CTHULHUETERNAL.Label.Luck', type: 'system'},
|
||||
skills: { id: 'skills', name: 'CTHULHUETERNAL.Label.Skills', type: 'system' },
|
||||
weapons: { id: 'weapons', name: 'CTHULHUETERNAL.Label.Weapons', type: 'system' },
|
||||
rituals: { id: 'rituals', name: 'CTHULHUETERNAL.Label.Rituals', type: 'system' }
|
||||
}
|
49
module/applications/hud/defaults.js
Normal file
49
module/applications/hud/defaults.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { GROUP } from './constants.js'
|
||||
|
||||
/**
|
||||
* Default layout and groups
|
||||
*/
|
||||
export let DEFAULTS = null
|
||||
|
||||
Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => {
|
||||
const groups = GROUP
|
||||
Object.values(groups).forEach(group => {
|
||||
group.name = coreModule.api.Utils.i18n(group.name)
|
||||
group.listName = `Group: ${coreModule.api.Utils.i18n(group.listName ?? group.name)}`
|
||||
})
|
||||
const groupsArray = Object.values(groups)
|
||||
DEFAULTS = {
|
||||
layout: [
|
||||
{
|
||||
nestId: 'statistics',
|
||||
id: 'statistics',
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.Characteristics'),
|
||||
groups: [
|
||||
{ ...groups.attributes, nestId: 'statistics_attributes' },
|
||||
{ ...groups.other, nestId: 'statistics_other' },
|
||||
{ ...groups.luck, nestId: 'statistics_luck' }
|
||||
]
|
||||
},
|
||||
{
|
||||
nestId: 'skills',
|
||||
id: 'skills',
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.Skills'),
|
||||
groups: [
|
||||
{ ...groups.skills, nestId: 'skills_skills' },
|
||||
{ ...groups.typedSkills, nestId: 'skills_typed' },
|
||||
{ ...groups.specialTraining, nestId: 'skills_special' }
|
||||
]
|
||||
},
|
||||
{
|
||||
nestId: 'equipment',
|
||||
id: 'equipment',
|
||||
name: coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.Gear'),
|
||||
groups: [
|
||||
{ ...groups.weapons, nestId: 'equipment_weapons' },
|
||||
{ ...groups.rituals, nestId: 'equipment_rituals' }
|
||||
]
|
||||
}
|
||||
],
|
||||
groups: groupsArray
|
||||
}
|
||||
})
|
304
module/applications/hud/roll-handler.js
Normal file
304
module/applications/hud/roll-handler.js
Normal file
@ -0,0 +1,304 @@
|
||||
import { SYSTEM } from "../../config/system.mjs"
|
||||
import CthulhuEternalRoll from '../../documents/roll.mjs'
|
||||
|
||||
export let RollHandler = null
|
||||
|
||||
Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => {
|
||||
/**
|
||||
* Extends Token Action HUD Core's RollHandler class and handles action events triggered when an action is clicked
|
||||
*/
|
||||
RollHandler = class RollHandler extends coreModule.api.RollHandler {
|
||||
/**
|
||||
* Handle action click
|
||||
* Called by Token Action HUD Core when an action is left or right-clicked
|
||||
* @override
|
||||
* @param {object} event The event
|
||||
* @param {string} encodedValue The encoded value
|
||||
*/
|
||||
async handleActionClick (event, encodedValue) {
|
||||
const [actionTypeId, actionId] = encodedValue.split('|')
|
||||
|
||||
const knownCharacters = ['character']
|
||||
|
||||
// If single actor is selected
|
||||
if (this.actor) {
|
||||
await this.#handleAction(event, this.actor, this.token, actionTypeId, actionId)
|
||||
return
|
||||
}
|
||||
|
||||
const controlledTokens = canvas.tokens.controlled
|
||||
.filter((token) => knownCharacters.includes(token.actor?.type))
|
||||
|
||||
// If multiple actors are selected
|
||||
for (const token of controlledTokens) {
|
||||
const actor = token.actor
|
||||
await this.#handleAction(event, actor, token, actionTypeId, actionId)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle action hover
|
||||
* Called by Token Action HUD Core when an action is hovered on or off
|
||||
* @override
|
||||
* @param {object} event The event
|
||||
* @param {string} encodedValue The encoded value
|
||||
*/
|
||||
async handleActionHover (event, encodedValue) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle group click
|
||||
* Called by Token Action HUD Core when a group is right-clicked while the HUD is locked
|
||||
* @override
|
||||
* @param {object} event The event
|
||||
* @param {object} group The group
|
||||
*/
|
||||
async handleGroupClick (event, group) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle action
|
||||
* @private
|
||||
* @param {object} event The event
|
||||
* @param {object} actor The actor
|
||||
* @param {object} token The token
|
||||
* @param {string} actionTypeId The action type id
|
||||
* @param {string} actionId The actionId
|
||||
*/
|
||||
async #handleAction (event, actor, token, actionTypeId, actionId) {
|
||||
switch (actionTypeId) {
|
||||
case 'attributes':
|
||||
await this.#handleAttributesAction(event, actor, actionId)
|
||||
break
|
||||
case 'skills':
|
||||
await this.#handleSkillsAction(event, actor, actionId)
|
||||
break
|
||||
case 'weapons':
|
||||
await this.#handleWeaponsAction(event, actor, actionId)
|
||||
break
|
||||
case 'damage':
|
||||
await this.#handleDamageAction(event, actor, actionId)
|
||||
break
|
||||
case 'lethality':
|
||||
await this.#handleLethalityAction(event, actor, actionId)
|
||||
break
|
||||
case 'specialTraining':
|
||||
await this.#handleSpecialTrainingAction(event, actor, actionId)
|
||||
break
|
||||
case 'typedSkills':
|
||||
await this.#handleCustomTypedAction(event, actor, actionId)
|
||||
break
|
||||
/* case 'rituals':
|
||||
await this.#handleRitualsAction(event, actor, actionId)
|
||||
break */
|
||||
case 'utility':
|
||||
await this.#handleUtilityAction(token, actionId)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Attribute action
|
||||
* @private
|
||||
* @param {object} event The event
|
||||
* @param {object} actor The actor
|
||||
* @param {string} actionId The action id
|
||||
*/
|
||||
async #handleAttributesAction (event, actor, actionId) {
|
||||
let rollType
|
||||
if (actionId === 'wp' || actionId === 'health') return
|
||||
if (actionId.includes('_add') || actionId.includes('_subtract')) {
|
||||
const attr = actionId.split('_')[0]
|
||||
const action = actionId.split('_')[1]
|
||||
const update = {}
|
||||
update.system = {}
|
||||
update.system[attr] = {}
|
||||
update.system[attr].value = action === 'add' ? this.actor.system[attr].value + 1 : this.actor.system[attr].value - 1
|
||||
if (update.system[attr].value > this.actor.system[attr].max || update.system[attr].value < this.actor.system[attr].min) return
|
||||
return await this.actor.update(update)
|
||||
}
|
||||
if (actionId === 'sanity') {
|
||||
rollType = actionId
|
||||
} else if (actionId === 'luck') {
|
||||
rollType = actionId
|
||||
} else {
|
||||
rollType = 'stat'
|
||||
}
|
||||
const options = {
|
||||
actor: this.actor,
|
||||
rollType,
|
||||
key: actionId
|
||||
}
|
||||
|
||||
const roll = new DGPercentileRoll('1D100', {}, options)
|
||||
return await this.actor.sheet.processRoll(event, roll)
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Skill action
|
||||
* @private
|
||||
* @param {object} event The event
|
||||
* @param {object} actor The actor
|
||||
* @param {string} actionId The action id
|
||||
*/
|
||||
async #handleSkillsAction (event, actor, actionId) {
|
||||
const options = {
|
||||
actor: this.actor,
|
||||
rollType: 'skill',
|
||||
key: actionId
|
||||
}
|
||||
|
||||
const skill = this.actor.system.skills[actionId]
|
||||
if (!skill) return ui.notifications.warn('Bad skill name in HUD.')
|
||||
|
||||
const roll = new DGPercentileRoll('1D100', {}, options)
|
||||
await this.actor.sheet.processRoll(event, roll)
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Typed/Custom skills action
|
||||
* @private
|
||||
* @param {object} event The event
|
||||
* @param {object} actor The actor
|
||||
* @param {string} actionId The action id
|
||||
*/
|
||||
async #handleCustomTypedAction (event, actor, actionId) {
|
||||
const options = {
|
||||
actor: this.actor,
|
||||
rollType: 'skill',
|
||||
key: actionId
|
||||
}
|
||||
const roll = new DGPercentileRoll('1D100', {}, options)
|
||||
await this.actor.sheet.processRoll(event, roll)
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle SoecialTraining action
|
||||
* @private
|
||||
* @param {object} event The event
|
||||
* @param {object} actor The actor
|
||||
* @param {string} actionId The action id
|
||||
*/
|
||||
async #handleSpecialTrainingAction (event, actor, actionId) {
|
||||
const attr = this.actor.system.specialTraining.find(a => a.name === actionId).attribute
|
||||
let target = 0
|
||||
if (DG.statistics.includes(attr)) {
|
||||
target = this.actor.system.statistics[attr].x5
|
||||
} else if (DG.skills.includes(attr)) {
|
||||
target = this.actor.system.skills[attr].proficiency
|
||||
} else {
|
||||
target = this.actor.system.typedSkills[attr].proficiency
|
||||
}
|
||||
const options = {
|
||||
actor: this.actor,
|
||||
rollType: 'special-training',
|
||||
key: attr,
|
||||
specialTrainingName: actionId,
|
||||
target
|
||||
}
|
||||
const roll = new DGPercentileRoll('1D100', {}, options)
|
||||
await this.actor.sheet.processRoll(event, roll)
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Weapon action
|
||||
* @private
|
||||
* @param {object} event The event
|
||||
* @param {object} actor The actor
|
||||
* @param {string} actionId The action id
|
||||
*/
|
||||
async #handleWeaponsAction (event, actor, actionId) {
|
||||
const item = this.actor.items.get(actionId)
|
||||
const options = {
|
||||
actor: this.actor,
|
||||
rollType: 'weapon',
|
||||
key: item.system.skill,
|
||||
item
|
||||
}
|
||||
const roll = new DGPercentileRoll('1D100', {}, options)
|
||||
await this.actor.sheet.processRoll(event, roll)
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Damage action
|
||||
* @private
|
||||
* @param {object} event The event
|
||||
* @param {object} actor The actor
|
||||
* @param {string} actionId The action id
|
||||
*/
|
||||
async #handleDamageAction (event, actor, actionId) {
|
||||
const item = this.actor.items.get(actionId)
|
||||
if (item.system.lethality > 0 && event.ctrlKey) {
|
||||
// Toggle on/off lethality
|
||||
const isLethal = !item.system.isLethal
|
||||
await item.update({ 'system.isLethal': isLethal })
|
||||
} else {
|
||||
const options = {
|
||||
actor: this.actor,
|
||||
rollType: 'damage',
|
||||
key: item.system.damage,
|
||||
item
|
||||
}
|
||||
const roll = new DGDamageRoll(item.system.damage, {}, options)
|
||||
await this.actor.sheet.processRoll(event, roll)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Lethality action
|
||||
* @private
|
||||
* @param {object} event The event
|
||||
* @param {object} actor The actor
|
||||
* @param {string} actionId The action id
|
||||
*/
|
||||
async #handleLethalityAction (event, actor, actionId) {
|
||||
const item = await this.actor.items.get(actionId)
|
||||
if (item.system.damage !== '' && event.ctrlKey) {
|
||||
const isLethal = !item.system.isLethal
|
||||
await item.update({ 'system.isLethal': isLethal })
|
||||
} else {
|
||||
const options = {
|
||||
actor: this.actor,
|
||||
rollType: 'lethality',
|
||||
key: item.system.lethality,
|
||||
item
|
||||
}
|
||||
const roll = new DGLethalityRoll(item.system.damage, {}, options)
|
||||
await this.actor.sheet.processRoll(event, roll)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Ritual action
|
||||
* @private
|
||||
* @param {object} event The event
|
||||
* @param {object} actor The actor
|
||||
* @param {string} actionId The action id
|
||||
*/
|
||||
async #handleRitualsAction (event, actor, actionId) {
|
||||
const options = {
|
||||
actor: this.actor,
|
||||
rollType: 'ritual',
|
||||
key: actionId
|
||||
}
|
||||
const roll = new DGPercentileRoll('1D100', {}, options)
|
||||
await this.actor.sheet.processRoll(event, roll)
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle utility action
|
||||
* @private
|
||||
* @param {object} token The token
|
||||
* @param {string} actionId The action id
|
||||
*/
|
||||
async #handleUtilityAction (token, actionId) {
|
||||
switch (actionId) {
|
||||
case 'endTurn':
|
||||
if (game.combat?.current?.tokenId === token.id) {
|
||||
await game.combat?.nextTurn()
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
91
module/applications/hud/system-manager.js
Normal file
91
module/applications/hud/system-manager.js
Normal file
@ -0,0 +1,91 @@
|
||||
// System Module Imports
|
||||
import { ActionHandler } from './action-handler.js'
|
||||
import { RollHandler as Core } from './roll-handler.js'
|
||||
import { SYSTEM } from './constants.js'
|
||||
import { DEFAULTS } from './defaults.js'
|
||||
|
||||
export let SystemManager = null
|
||||
|
||||
Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => {
|
||||
/**
|
||||
* Extends Token Action HUD Core's SystemManager class
|
||||
*/
|
||||
SystemManager = class SystemManager extends coreModule.api.SystemManager {
|
||||
/**
|
||||
* Returns an instance of the ActionHandler to Token Action HUD Core
|
||||
* Called by Token Action HUD Core
|
||||
* @override
|
||||
* @returns {class} The ActionHandler instance
|
||||
*/
|
||||
getActionHandler () {
|
||||
return new ActionHandler()
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of roll handlers to Token Action HUD Core
|
||||
* Used to populate the Roll Handler module setting choices
|
||||
* Called by Token Action HUD Core
|
||||
* @override
|
||||
* @returns {object} The available roll handlers
|
||||
*/
|
||||
getAvailableRollHandlers () {
|
||||
const coreTitle = 'Core Template'
|
||||
const choices = { core: coreTitle }
|
||||
return choices
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an instance of the RollHandler to Token Action HUD Core
|
||||
* Called by Token Action HUD Core
|
||||
* @override
|
||||
* @param {string} rollHandlerId The roll handler ID
|
||||
* @returns {class} The RollHandler instance
|
||||
*/
|
||||
getRollHandler (rollHandlerId) {
|
||||
let rollHandler
|
||||
switch (rollHandlerId) {
|
||||
case 'core':
|
||||
default:
|
||||
rollHandler = new Core()
|
||||
break
|
||||
}
|
||||
return rollHandler
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default layout and groups to Token Action HUD Core
|
||||
* Called by Token Action HUD Core
|
||||
* @returns {object} The default layout and groups
|
||||
*/
|
||||
async registerDefaults () {
|
||||
return DEFAULTS
|
||||
}
|
||||
|
||||
/**
|
||||
* Register Token Action HUD system module settings
|
||||
* Called by Token Action HUD Core
|
||||
* @override
|
||||
* @param {function} coreUpdate The Token Action HUD Core update function
|
||||
*/
|
||||
registerSettings (coreUpdate) {
|
||||
/*systemSettings.register(coreUpdate)*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns styles to Token Action HUD Core
|
||||
* Called by Token Action HUD Core
|
||||
* @override
|
||||
* @returns {object} The TAH system styles
|
||||
*/
|
||||
registerStyles () {
|
||||
return {
|
||||
template: {
|
||||
class: 'tah-style-template-style', // The class to add to first DIV element
|
||||
file: 'tah-template-style', // The file without the css extension
|
||||
moduleId: SYSTEM.ID, // The module ID
|
||||
name: 'Template Style' // The name to display in the Token Action HUD Core 'Style' module setting
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
55
module/applications/hud/utils.js
Normal file
55
module/applications/hud/utils.js
Normal file
@ -0,0 +1,55 @@
|
||||
import { SYSTEM } from './constants.js'
|
||||
|
||||
export let Utils = null
|
||||
|
||||
function registerHUD() {
|
||||
Hooks.on('tokenActionHudCoreApiReady', async () => {
|
||||
/**
|
||||
* Return the SystemManager and requiredCoreModuleVersion to Token Action HUD Core
|
||||
*/
|
||||
const module = game.system
|
||||
module.api = {
|
||||
requiredCoreModuleVersion: "2.0",
|
||||
SystemManager
|
||||
}
|
||||
Hooks.call('tokenActionHudSystemReady', module)
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => {
|
||||
/**
|
||||
* Utility functions
|
||||
*/
|
||||
Utils = class Utils {
|
||||
/**
|
||||
* Get setting
|
||||
* @param {string} key The key
|
||||
* @param {string=null} defaultValue The default value
|
||||
* @returns {string} The setting value
|
||||
*/
|
||||
static getSetting(key, defaultValue = null) {
|
||||
let value = defaultValue ?? null
|
||||
try {
|
||||
value = game.settings.get(SYSTEM.ID, key)
|
||||
} catch {
|
||||
coreModule.api.Logger.debug(`Setting '${key}' not found`)
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
/**
|
||||
* Set setting
|
||||
* @param {string} key The key
|
||||
* @param {string} value The value
|
||||
*/
|
||||
static async setSetting(key, value) {
|
||||
try {
|
||||
value = await game.settings.set(MODULE.ID, key, value)
|
||||
coreModule.api.Logger.debug(`Setting '${key}' set to '${value}'`)
|
||||
} catch {
|
||||
coreModule.api.Logger.debug(`Setting '${key}' not found`)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
@ -22,7 +22,7 @@ export default class CthulhuEternalArcaneSheet extends CthulhuEternalItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ export default class CthulhuEternalArchetypeSheet extends CthulhuEternalItemShee
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin
|
||||
actor: this.document,
|
||||
system: this.document.system,
|
||||
source: this.document.toObject(),
|
||||
enrichedDescription: await TextEditor.enrichHTML(this.document.system.description, { async: true }),
|
||||
enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true }),
|
||||
isEditMode: this.isEditMode,
|
||||
isPlayMode: this.isPlayMode,
|
||||
isEditable: this.isEditable,
|
||||
@ -99,7 +99,7 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin
|
||||
dragover: this._onDragOver.bind(this),
|
||||
drop: this._onDrop.bind(this),
|
||||
}
|
||||
return new DragDrop(d)
|
||||
return new foundry.applications.ux.DragDrop.implementation(d)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ export default class CthulhuEternalItemSheet extends HandlebarsApplicationMixin(
|
||||
item: this.document,
|
||||
system: this.document.system,
|
||||
source: this.document.toObject(),
|
||||
enrichedDescription: await TextEditor.enrichHTML(this.document.system.description, { async: true }),
|
||||
enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true }),
|
||||
isEditMode: this.isEditMode,
|
||||
isPlayMode: this.isPlayMode,
|
||||
isEditable: this.isEditable,
|
||||
|
@ -22,7 +22,7 @@ export default class CthulhuEternalGiftSheet extends CthulhuEternalItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
@ -93,8 +93,8 @@ export default class CthulhuEternalCreatureSheet extends CthulhuEternalActorShee
|
||||
break
|
||||
case "biography":
|
||||
context.tab = context.tabs.biography
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
||||
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.description, { async: true })
|
||||
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.notes, { async: true })
|
||||
break
|
||||
}
|
||||
return context
|
||||
|
@ -22,7 +22,7 @@ export default class CthulhuEternalInjurySheet extends CthulhuEternalItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ export default class CthulhuEternalMentalDisorderSheet extends CthulhuEternalIte
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ export default class CthulhuEternalMotivationSheet extends CthulhuEternalItemShe
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
|
||||
|
@ -76,8 +76,8 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
||||
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 })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.notes, { async: true })
|
||||
|
||||
context.tooltipsCharacteristic = {
|
||||
str: game.i18n.localize("CTHULHUETERNAL.Characteristic.Str"),
|
||||
@ -128,8 +128,8 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
||||
break
|
||||
case "biography":
|
||||
context.tab = context.tabs.biography
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
||||
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.description, { async: true })
|
||||
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.notes, { async: true })
|
||||
break
|
||||
}
|
||||
return context
|
||||
|
@ -22,7 +22,7 @@ export default class CthulhuEternalRitualSheet extends CthulhuEternalItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ export default class CthulhuEternalSkillSheet extends CthulhuEternalItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ export default class CthulhuEternalTomeSheet extends CthulhuEternalItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
@ -59,8 +59,8 @@ export default class CthulhuEternalVehicleSheet extends CthulhuEternalActorSheet
|
||||
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 })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.notes, { async: true })
|
||||
|
||||
return context
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import LethalFantasyItemSheet from "./base-item-sheet.mjs"
|
||||
import CthulhuEternalItemSheet from "./base-item-sheet.mjs"
|
||||
|
||||
export default class LethalFantasyWeaponSheet extends LethalFantasyItemSheet {
|
||||
export default class CthulhuEternalWeaponSheet extends CthulhuEternalItemSheet {
|
||||
/** @override */
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["weapon"],
|
||||
|
@ -48,12 +48,12 @@ export const ERA_CSS = {
|
||||
victorian: { primaryFont: "Volkhov", secondaryFont: "Volkhov", titleFont: "Excelsior", baseFontSize: "1.0rem", titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(100%) sepia(59%) saturate(1894%) hue-rotate(337deg) brightness(88%) contrast(98%)" },
|
||||
coldwar: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "TopSecret", baseFontSize: "1.0rem", titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(14%) saturate(2508%) hue-rotate(202deg) brightness(99%) contrast(105%)"},
|
||||
revolution: { primaryFont: "IMFell", secondaryFont: "IMFell", titleFont: "Dominican", baseFontSize: "1.0rem",titleFontSize: "1.3rem",imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(25%) saturate(386%) hue-rotate(7deg) brightness(101%) contrast(84%)" },
|
||||
medieval: { primaryFont: "UncialAntiqua", secondaryFont: "UncialAntiqua", titleFont: "Luminari", 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: "Skranji", secondaryFont: "UncialAntiqua", titleFont: "Luminari", baseFontSize: "0.9rem",titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(93%) sepia(46%) saturate(354%) hue-rotate(321deg) brightness(93%) contrast(87%)"},
|
||||
ww2: { primaryFont: "SairaStencilOne", secondaryFont: "SairaStencilOne", titleFont: "Armalite", baseFontSize: "0.9rem",titleFontSize: "1.2rem",imgFilter: "filter: invert(44%) sepia(8%) saturate(2657%) hue-rotate(40deg) brightness(96%) contrast(75%)"},
|
||||
ww1: { primaryFont: "CarterOne", secondaryFont: "CarterOne", titleFont: "SigmarOne", baseFontSize: "0.9rem",titleFontSize: "1.1rem",imgFilter: "invert(28%) sepia(27%) saturate(475%) hue-rotate(76deg) brightness(95%) contrast(93%)"},
|
||||
ageofsail: { primaryFont: "SailRegular", secondaryFont: "SailRegular", titleFont: "P22Operina", baseFontSize: "1.1rem",titleFontSize: "1.2rem",imgFilter: "brightness(0) saturate(100%) invert(43%) sepia(74%) saturate(3154%) hue-rotate(336deg) brightness(95%) contrast(83%)" },
|
||||
classical: { primaryFont: "ChantelliAntiqua", secondaryFont: "ChantelliAntiqua", titleFont: "TrajanPro", baseFontSize: "0.9rem",titleFontSize: "1.1rem",imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(32%) saturate(7492%) hue-rotate(265deg) brightness(89%) contrast(95%)" },
|
||||
postapo: { primaryFont: "Teko", secondaryFont: "Teko", titleFont: "Teko", 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", baseFontSize: "1.35rem",titleFontSize: "1.5rem",imgFilter: "brightness(0) saturate(100%) invert(44%) sepia(55%) saturate(2341%) hue-rotate(329deg) brightness(122%) contrast(103%))" }
|
||||
}
|
||||
|
||||
export const RESOURCE_RATING = {
|
||||
@ -238,8 +238,16 @@ export const MULTIPLIER_CHOICES = {
|
||||
"5": "5"
|
||||
}
|
||||
|
||||
export const WEAPON_SELECTIVE_FIRE_CHOICES = {
|
||||
"shortburst": { id: "shortburst", label: "CTHULHUETERNAL.Weapon.SelectiveFire.shortburst", ammoUsed: 3, lethality: 10, killRadius: 0},
|
||||
"longburst": { id: "longburst", label: "CTHULHUETERNAL.Weapon.SelectiveFire.longburst", ammoUsed: 5, lethality: 10, killRadius: 1},
|
||||
"shortspray": { id: "shortspray", label: "CTHULHUETERNAL.Weapon.SelectiveFire.shortspray", ammoUsed: 10, lethality: 10, killRadius: 2},
|
||||
"longspray": { id: "longspray", label: "CTHULHUETERNAL.Weapon.SelectiveFire.longspray", ammoUsed: 20, lethality: 10, killRadius: 3},
|
||||
}
|
||||
|
||||
export const RITUAL_TYPES = {
|
||||
"simple": "CTHULHUETERNAL.Ritual.Simple",
|
||||
"difficult": "CTHULHUETERNAL.Ritual.Difficult",
|
||||
"complex": "CTHULHUETERNAL.Ritual.Complex",
|
||||
"elaborate": "CTHULHUETERNAL.Ritual.Elaborate"
|
||||
}
|
||||
@ -254,6 +262,7 @@ export const SYSTEM = {
|
||||
HARSHNESS: PROTAGONIST.HARSHNESS,
|
||||
WEAPON_TYPE: WEAPON.WEAPON_TYPE,
|
||||
WEAPON_SUBTYPE: WEAPON.WEAPON_SUBTYPE,
|
||||
WEAPON_SELECTIVE_FIRE_CHOICES,
|
||||
WEAPON_SKILL_MAPPING,
|
||||
BOND_TYPE: BOND.BOND_TYPE,
|
||||
AVAILABLE_SETTINGS,
|
||||
|
@ -1,5 +1,6 @@
|
||||
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
|
||||
export default class CthulhuEternalRoll extends Roll {
|
||||
/**
|
||||
* The HTML template path used to render dice checks of this type
|
||||
@ -146,6 +147,24 @@ export default class CthulhuEternalRoll extends Roll {
|
||||
options.isNudge = false
|
||||
break
|
||||
case "damage":
|
||||
let isLethal = false
|
||||
options.isNudge = false
|
||||
if (options.rollItem.system.lethality > 0) {
|
||||
let lethalityRoll = new Roll("1d100")
|
||||
await lethalityRoll.evaluate()
|
||||
isLethal = (lethalityRoll.total <= options.rollItem.system.lethality)
|
||||
let flavor = `${options.rollItem.name} - <strong>Lethality Roll</strong> : ${lethalityRoll.total} <= ${options.rollItem.system.lethality} => ${isLethal}`
|
||||
if ( isLethal) {
|
||||
flavor += `<br>The target is lethally wounded => HP = 0`
|
||||
} else {
|
||||
let wounds = Math.floor(lethalityRoll.total/10) + (lethalityRoll.total % 10)
|
||||
flavor += `<br>The target is not lethally wounded => HP loss = ${wounds}`
|
||||
}
|
||||
await lethalityRoll.toMessage({
|
||||
flavor:flavor
|
||||
});
|
||||
return
|
||||
}
|
||||
let formula = options.rollItem.system.damage
|
||||
if ( options.rollItem.system.weaponType === "melee" || options.rollItem.system.weaponType === "unarmed") {
|
||||
formula += ` + ${options.rollItem.damageBonus}`
|
||||
@ -155,16 +174,6 @@ export default class CthulhuEternalRoll extends Roll {
|
||||
await damageRoll.toMessage({
|
||||
flavor: `${options.rollItem.name} - Damage Roll`
|
||||
});
|
||||
let isLethal = false
|
||||
options.isNudge = false
|
||||
if (options.rollItem.system.lethality > 0) {
|
||||
let lethalityRoll = new Roll("1d100")
|
||||
await lethalityRoll.evaluate()
|
||||
isLethal = (lethalityRoll.total <= options.rollItem.system.lethality)
|
||||
await lethalityRoll.toMessage({
|
||||
flavor: `${options.rollItem.name} - Lethality Roll : ${lethalityRoll.total} <= ${options.rollItem.system.lethality} => ${isLethal}`
|
||||
});
|
||||
}
|
||||
return
|
||||
case "weapon":
|
||||
let era = game.settings.get("fvtt-cthulhu-eternal", "settings-era")
|
||||
@ -200,7 +209,8 @@ export default class CthulhuEternalRoll extends Roll {
|
||||
break
|
||||
}
|
||||
|
||||
const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)]))
|
||||
console.log("Roll options", CONFIG.Dice.rollModes);
|
||||
const rollModes = foundry.utils.duplicate(CONFIG.Dice.rollModes); //Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)]))
|
||||
const fieldRollMode = new foundry.data.fields.StringField({
|
||||
choices: rollModes,
|
||||
blank: false,
|
||||
@ -209,6 +219,7 @@ export default class CthulhuEternalRoll extends Roll {
|
||||
|
||||
const choiceModifier = SYSTEM.MODIFIER_CHOICES
|
||||
const choiceMultiplier = SYSTEM.MULTIPLIER_CHOICES
|
||||
const choiceSelectiveFire = SYSTEM.WEAPON_SELECTIVE_FIRE_CHOICES
|
||||
|
||||
let modifier = "+0"
|
||||
let multiplier = "5"
|
||||
@ -229,14 +240,16 @@ export default class CthulhuEternalRoll extends Roll {
|
||||
fieldRollMode,
|
||||
choiceModifier,
|
||||
choiceMultiplier,
|
||||
choiceSelectiveFire,
|
||||
formula,
|
||||
hasTarget: options.hasTarget,
|
||||
hasModifier,
|
||||
hasMultiplier,
|
||||
modifier,
|
||||
selectiveFireChoice: "shortburst",
|
||||
multiplier
|
||||
}
|
||||
const content = await renderTemplate("systems/fvtt-cthulhu-eternal/templates/roll-dialog.hbs", dialogContext)
|
||||
const content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-cthulhu-eternal/templates/roll-dialog.hbs", dialogContext)
|
||||
|
||||
const title = CthulhuEternalRoll.createTitle(options.rollType, options.rollTarget)
|
||||
const label = game.i18n.localize("CTHULHUETERNAL.Roll.roll")
|
||||
@ -372,7 +385,7 @@ export default class CthulhuEternalRoll extends Roll {
|
||||
/** @override */
|
||||
async render(chatOptions = {}) {
|
||||
let chatData = await this._getChatCardData(chatOptions.isPrivate)
|
||||
return await renderTemplate(this.constructor.CHAT_TEMPLATE, chatData)
|
||||
return await foundry.applications.handlebars.renderTemplate(this.constructor.CHAT_TEMPLATE, chatData)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
|
||||
export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
export default class CthulhuEternalWeapon extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields
|
||||
const schema = {}
|
||||
@ -15,7 +15,9 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
schema.hasDirectSkill = new fields.BooleanField({ required: true, initial: false })
|
||||
schema.directSkillValue = new fields.NumberField({ required: true, initial: 0, min: 0, max:99 })
|
||||
|
||||
schema.hasSelectiveFire = new fields.BooleanField({ required: true, initial: false })
|
||||
schema.damage = new fields.StringField({required: true, initial: "1d6"})
|
||||
schema.applyDamageBonus = new fields.BooleanField({ required: true, initial: false })
|
||||
schema.baseRange = new fields.StringField({required: true, initial: ""})
|
||||
schema.rangeUnit = new fields.StringField({ required: true, initial: "yard", choices: SYSTEM.WEAPON_RANGE_UNIT })
|
||||
schema.lethality = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||
|
@ -1,5 +1,7 @@
|
||||
|
||||
import CthulhuEternalRoll from "./documents/roll.mjs"
|
||||
import { SystemManager } from './applications/hud/system-manager.js'
|
||||
import { SYSTEM } from "./config/system.mjs"
|
||||
|
||||
export default class CthulhuEternalUtils {
|
||||
|
||||
@ -193,7 +195,7 @@ export default class CthulhuEternalUtils {
|
||||
dialogContext.nudgeOptions = Array.from({ length: dialogContext.maxValue - dialogContext.minValue + 1 }, (_, i) => dialogContext.minValue + i)
|
||||
console.log(dialogContext)
|
||||
|
||||
const content = await renderTemplate("systems/fvtt-cthulhu-eternal/templates/nudge-dialog.hbs", dialogContext)
|
||||
const content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-cthulhu-eternal/templates/nudge-dialog.hbs", dialogContext)
|
||||
|
||||
const title = game.i18n.localize("CTHULHUETERNAL.Roll.nudgeRoll")
|
||||
const rollContext = await foundry.applications.api.DialogV2.wait({
|
||||
|
BIN
packs-system/rituals/000031.ldb
Normal file
BIN
packs-system/rituals/000031.ldb
Normal file
Binary file not shown.
1
packs-system/rituals/CURRENT
Normal file
1
packs-system/rituals/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000036
|
0
packs-system/rituals/LOCK
Normal file
0
packs-system/rituals/LOCK
Normal file
7
packs-system/rituals/LOG
Normal file
7
packs-system/rituals/LOG
Normal file
@ -0,0 +1,7 @@
|
||||
2025/05/18-22:05:58.774845 7f89057fa6c0 Recovering log #34
|
||||
2025/05/18-22:05:58.784751 7f89057fa6c0 Delete type=3 #32
|
||||
2025/05/18-22:05:58.784813 7f89057fa6c0 Delete type=0 #34
|
||||
2025/05/18-22:06:27.441454 7f8667fff6c0 Level-0 table #39: started
|
||||
2025/05/18-22:06:27.441484 7f8667fff6c0 Level-0 table #39: 0 bytes OK
|
||||
2025/05/18-22:06:27.447800 7f8667fff6c0 Delete type=0 #37
|
||||
2025/05/18-22:06:27.447999 7f8667fff6c0 Manual compaction at level-0 from '!items!4oyPRBWPBWAChrJP' @ 72057594037927935 : 1 .. '!items!zVFfp3o0G0Zg3Ia4' @ 0 : 0; will stop at (end)
|
7
packs-system/rituals/LOG.old
Normal file
7
packs-system/rituals/LOG.old
Normal file
@ -0,0 +1,7 @@
|
||||
2025/05/14-23:46:13.953928 7fa2e5ffb6c0 Recovering log #29
|
||||
2025/05/14-23:46:13.965264 7fa2e5ffb6c0 Delete type=3 #27
|
||||
2025/05/14-23:46:13.965329 7fa2e5ffb6c0 Delete type=0 #29
|
||||
2025/05/14-23:53:27.523831 7fa2e57fa6c0 Level-0 table #35: started
|
||||
2025/05/14-23:53:27.523897 7fa2e57fa6c0 Level-0 table #35: 0 bytes OK
|
||||
2025/05/14-23:53:27.564827 7fa2e57fa6c0 Delete type=0 #33
|
||||
2025/05/14-23:53:27.634207 7fa2e57fa6c0 Manual compaction at level-0 from '!items!4oyPRBWPBWAChrJP' @ 72057594037927935 : 1 .. '!items!zVFfp3o0G0Zg3Ia4' @ 0 : 0; will stop at (end)
|
BIN
packs-system/rituals/MANIFEST-000036
Normal file
BIN
packs-system/rituals/MANIFEST-000036
Normal file
Binary file not shown.
0
packs-system/rituals/lost/000016.log
Normal file
0
packs-system/rituals/lost/000016.log
Normal file
0
packs-system/rituals/lost/000024.log
Normal file
0
packs-system/rituals/lost/000024.log
Normal file
BIN
packs-system/rituals/lost/MANIFEST-000022
Normal file
BIN
packs-system/rituals/lost/MANIFEST-000022
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs-system/skills/000195.ldb
Normal file
BIN
packs-system/skills/000195.ldb
Normal file
Binary file not shown.
0
packs-system/skills/000202.log
Normal file
0
packs-system/skills/000202.log
Normal file
@ -1 +1 @@
|
||||
MANIFEST-000132
|
||||
MANIFEST-000200
|
||||
|
@ -1,8 +1,7 @@
|
||||
2025/02/07-17:41:28.897688 7fd3051fa6c0 Recovering log #130
|
||||
2025/02/07-17:41:28.908107 7fd3051fa6c0 Delete type=3 #128
|
||||
2025/02/07-17:41:28.908173 7fd3051fa6c0 Delete type=0 #130
|
||||
2025/02/07-18:05:31.341547 7fd2febff6c0 Level-0 table #135: started
|
||||
2025/02/07-18:05:31.341579 7fd2febff6c0 Level-0 table #135: 0 bytes OK
|
||||
2025/02/07-18:05:31.348653 7fd2febff6c0 Delete type=0 #133
|
||||
2025/02/07-18:05:31.348812 7fd2febff6c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
|
||||
2025/02/07-18:05:31.359791 7fd2febff6c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
|
||||
2025/05/18-22:05:58.759366 7f8904ff96c0 Recovering log #198
|
||||
2025/05/18-22:05:58.769708 7f8904ff96c0 Delete type=3 #196
|
||||
2025/05/18-22:05:58.769762 7f8904ff96c0 Delete type=0 #198
|
||||
2025/05/18-22:06:27.422044 7f8667fff6c0 Level-0 table #203: started
|
||||
2025/05/18-22:06:27.422086 7f8667fff6c0 Level-0 table #203: 0 bytes OK
|
||||
2025/05/18-22:06:27.428820 7f8667fff6c0 Delete type=0 #201
|
||||
2025/05/18-22:06:27.447959 7f8667fff6c0 Manual compaction at level-0 from '!folders!5PrT9QmN1cFPzDFP' @ 72057594037927935 : 1 .. '!items!zvoUByzWSWZ87fxA' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,7 @@
|
||||
2025/02/07-07:58:04.988627 7ffae7fff6c0 Recovering log #126
|
||||
2025/02/07-07:58:04.998629 7ffae7fff6c0 Delete type=3 #124
|
||||
2025/02/07-07:58:04.998698 7ffae7fff6c0 Delete type=0 #126
|
||||
2025/02/07-08:34:42.926911 7ffae6bff6c0 Level-0 table #131: started
|
||||
2025/02/07-08:34:42.926943 7ffae6bff6c0 Level-0 table #131: 0 bytes OK
|
||||
2025/02/07-08:34:42.933490 7ffae6bff6c0 Delete type=0 #129
|
||||
2025/02/07-08:34:42.933666 7ffae6bff6c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
|
||||
2025/02/07-08:34:42.944681 7ffae6bff6c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-23:46:13.940336 7fa2e67fc6c0 Recovering log #193
|
||||
2025/05/14-23:46:13.950153 7fa2e67fc6c0 Delete type=3 #191
|
||||
2025/05/14-23:46:13.950214 7fa2e67fc6c0 Delete type=0 #193
|
||||
2025/05/14-23:53:27.493872 7fa2e57fa6c0 Level-0 table #199: started
|
||||
2025/05/14-23:53:27.493910 7fa2e57fa6c0 Level-0 table #199: 0 bytes OK
|
||||
2025/05/14-23:53:27.523581 7fa2e57fa6c0 Delete type=0 #197
|
||||
2025/05/14-23:53:27.634194 7fa2e57fa6c0 Manual compaction at level-0 from '!folders!5PrT9QmN1cFPzDFP' @ 72057594037927935 : 1 .. '!items!zvoUByzWSWZ87fxA' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs-system/skills/MANIFEST-000200
Normal file
BIN
packs-system/skills/MANIFEST-000200
Normal file
Binary file not shown.
0
packs-system/skills/lost/000159.log
Normal file
0
packs-system/skills/lost/000159.log
Normal file
0
packs-system/skills/lost/000180.log
Normal file
0
packs-system/skills/lost/000180.log
Normal file
0
packs-system/skills/lost/000188.log
Normal file
0
packs-system/skills/lost/000188.log
Normal file
BIN
packs-system/skills/lost/MANIFEST-000186
Normal file
BIN
packs-system/skills/lost/MANIFEST-000186
Normal file
Binary file not shown.
@ -275,7 +275,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.creature-skills {
|
||||
.tab.creature-skills .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
@ -396,7 +396,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.creature-status {
|
||||
.tab.creature-status .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
@ -528,7 +528,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.creature-equipment {
|
||||
.tab.creature-equipment .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
|
@ -120,21 +120,6 @@
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Caslon";
|
||||
src: url("../fonts/caslonpro-regular.otf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Caslon Bold";
|
||||
src: url("../fonts/caslonpro-bold.otf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Caslon Bold Italic";
|
||||
src: url("../fonts/caslonpro-bolditalic.otf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Caslon Italic";
|
||||
src: url("../fonts/caslonpro-italic.otf") format("truetype");
|
||||
font-family: "Skranji";
|
||||
src: url("../assets/fonts/Skranji.woff") format("woff");
|
||||
}
|
||||
|
@ -275,7 +275,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.protagonist-skills {
|
||||
.tab.protagonist-skills .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
@ -323,7 +323,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.protagonist-status {
|
||||
.tab.protagonist-status .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
@ -455,7 +455,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.protagonist-equipment {
|
||||
.tab.protagonist-equipment .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
|
@ -5,6 +5,14 @@
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
.editor-content {
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.editor-container {
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.header {
|
||||
|
@ -135,7 +135,7 @@
|
||||
|
||||
}
|
||||
|
||||
.tab.vehicle-equipment {
|
||||
.tab.vehicle-equipment .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
|
148
system.json
148
system.json
@ -6,61 +6,157 @@
|
||||
"download": "#{DOWNLOAD}#",
|
||||
"url": "https://www.uberwald.me/gitea/public/fvtt-cthulhu-eternal",
|
||||
"license": "LICENSE",
|
||||
"version": "12.0.5",
|
||||
"version": "13.0.1",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Uberwald",
|
||||
"discord": "LeRatierBretonnien"
|
||||
"discord": "LeRatierBretonnien",
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"flags": {
|
||||
"hotReload": {
|
||||
"extensions": ["css", "html", "hbs", "json"],
|
||||
"paths": ["acks.css", "./", "templates", "css", "lang/en.json"]
|
||||
"extensions": [
|
||||
"css",
|
||||
"html",
|
||||
"hbs",
|
||||
"json"
|
||||
],
|
||||
"paths": [
|
||||
"acks.css",
|
||||
"./",
|
||||
"templates",
|
||||
"css",
|
||||
"lang/en.json"
|
||||
]
|
||||
}
|
||||
},
|
||||
"compatibility": {
|
||||
"minimum": "12",
|
||||
"verified": "12"
|
||||
"minimum": "13",
|
||||
"verified": "13"
|
||||
},
|
||||
"esmodules": ["cthulhu-eternal.mjs"],
|
||||
"styles": ["css/fvtt-cthulhu-eternal.css"],
|
||||
"esmodules": [
|
||||
"cthulhu-eternal.mjs"
|
||||
],
|
||||
"styles": [
|
||||
"css/fvtt-cthulhu-eternal.css"
|
||||
],
|
||||
"languages": [
|
||||
{
|
||||
"lang": "en",
|
||||
"name": "Anglais",
|
||||
"path": "lang/en.json"
|
||||
"path": "lang/en.json",
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"documentTypes": {
|
||||
"Actor": {
|
||||
"protagonist": { "htmlFields": ["description", "notes"] },
|
||||
"vehicle": { "htmlFields": ["description", "notes"] },
|
||||
"creature": { "htmlFields": ["description", "notes"] }
|
||||
"protagonist": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"notes"
|
||||
]
|
||||
},
|
||||
"vehicle": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"notes"
|
||||
]
|
||||
},
|
||||
"creature": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"notes"
|
||||
]
|
||||
}
|
||||
},
|
||||
"Item": {
|
||||
"skill": { "htmlFields": ["description"] },
|
||||
"injury": { "htmlFields": ["description"] },
|
||||
"weapon": { "htmlFields": ["description"] },
|
||||
"armor": { "htmlFields": ["description"] },
|
||||
"bond": { "htmlFields": ["description"] },
|
||||
"mentaldisorder": { "htmlFields": ["description"] },
|
||||
"motivation": { "htmlFields": ["description"] },
|
||||
"arcane": { "htmlFields": ["description"] },
|
||||
"gear": { "htmlFields": ["description"] },
|
||||
"archetype": { "htmlFields": ["description"] },
|
||||
"ritual": { "htmlFields": ["description"] },
|
||||
"tome": { "htmlFields": ["description"] }
|
||||
"skill": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"injury": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"weapon": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"armor": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"bond": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"mentaldisorder": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"motivation": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"arcane": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"gear": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"archetype": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"ritual": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"tome": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"packs": [
|
||||
{
|
||||
"name": "skills",
|
||||
"banner": "",
|
||||
"label": "Skills",
|
||||
"system": "fvtt-cthulhu-eternal",
|
||||
"path": "packs-system/skills",
|
||||
"type": "Item"
|
||||
"type": "Item",
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
},
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"name": "rituals",
|
||||
"label": "Rituals",
|
||||
"system": "fvtt-cthulhu-eternal",
|
||||
"path": "packs-system/rituals",
|
||||
"type": "Item",
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
},
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"grid": {
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
@ -10,7 +10,7 @@
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>h
|
||||
|
@ -15,7 +15,7 @@
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput
|
||||
systemFields.description
|
||||
enriched=description
|
||||
enriched=enrichedDescription
|
||||
value=system.description
|
||||
name="system.description"
|
||||
toggled="false"
|
||||
|
@ -1,5 +1,5 @@
|
||||
<section class="tab creature-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<div class="main-div">
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
@ -9,4 +9,5 @@
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.notes"}}</legend>
|
||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
||||
</fieldset>
|
||||
</div>
|
||||
</section>
|
@ -1,5 +1,5 @@
|
||||
<section class="tab creature-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<div class="main-div">
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.weapons"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " CTHULHUETERNAL.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||
@ -53,5 +53,5 @@
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
@ -12,7 +12,7 @@
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description"
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description"
|
||||
toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput
|
||||
systemFields.description
|
||||
enriched=description
|
||||
enriched=enrichedDescription
|
||||
value=system.description
|
||||
name="system.description"
|
||||
toggled="false"
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||
{{formInput systemFields.description enriched=enrichedDescriptionw value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
@ -1,5 +1,5 @@
|
||||
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<div class="main-div">
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.resources"}}</legend>
|
||||
<div class="resources">
|
||||
@ -76,4 +76,5 @@
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.notes"}}</legend>
|
||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
||||
</fieldset>
|
||||
</div>
|
||||
</section>
|
@ -1,5 +1,5 @@
|
||||
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<div class="main-div">
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.weapons"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " CTHULHUETERNAL.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||
@ -131,5 +131,6 @@
|
||||
</fieldset>
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
@ -1,5 +1,5 @@
|
||||
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
{{log this}}
|
||||
<div class="main-div">
|
||||
<fieldset>
|
||||
<legend data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.skills"}}" data-tooltip-direction="UP">{{localize "CTHULHUETERNAL.Label.skills"}}</legend>
|
||||
<div class="skills">
|
||||
@ -21,5 +21,5 @@
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
@ -1,4 +1,5 @@
|
||||
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
<div class="main-div">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.bonds"}}{{#if isEditMode}}
|
||||
@ -91,5 +92,5 @@
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</section>
|
@ -17,7 +17,8 @@
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
|
||||
</fieldset>
|
||||
|
||||
</section>
|
@ -19,6 +19,13 @@
|
||||
|
||||
{{#if weapon}}
|
||||
<div class="dialog-skill">Weapon : {{weapon.name}}</div>
|
||||
{{#if weapon.system.hasSelectiveFire}}
|
||||
<div class="dialog-skill">Selective Fire :
|
||||
<select name="selectiveFireChoice" class="roll-skill-modifier">
|
||||
{{selectOptions choiceSelectiveFire localize=true selected=selectiveFireChoice nameAttr="id" labelAttr="label"}}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isZeroWP}}
|
||||
@ -35,6 +42,7 @@
|
||||
|
||||
</fieldSet>
|
||||
|
||||
|
||||
{{#if hasModifier}}
|
||||
<fieldSet class="dialog-modifier">
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.modifier"}}</legend>
|
||||
@ -56,7 +64,7 @@
|
||||
<fieldSet>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.rollView"}}</legend>
|
||||
<select name="visibility">
|
||||
{{selectOptions rollModes selected=visibility}}
|
||||
{{selectOptions rollModes localize=true selected=visibility}}
|
||||
</select>
|
||||
</fieldSet>
|
||||
</div>
|
@ -36,7 +36,7 @@
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
@ -1,5 +1,5 @@
|
||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<div class="main-div">
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
@ -9,4 +9,5 @@
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.notes"}}</legend>
|
||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
||||
</fieldset>
|
||||
</div>
|
||||
</section>
|
@ -1,5 +1,5 @@
|
||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<div class="main-div">
|
||||
<fieldset>
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.weapons"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " CTHULHUETERNAL.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||
@ -50,5 +50,5 @@
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</section>
|
@ -18,7 +18,10 @@
|
||||
{{formField systemFields.directSkillValue value=system.directSkillValue }}
|
||||
{{/if}}
|
||||
|
||||
{{formField systemFields.hasSelectiveFire value=system.hasSelectiveFire}}
|
||||
{{formField systemFields.applyDamageBonus value=system.applyDamageBonus}}
|
||||
{{formField systemFields.damage value=system.damage}}
|
||||
|
||||
{{formField systemFields.baseRange value=system.baseRange}}
|
||||
{{formField systemFields.rangeUnit value=system.rangeUnit localize=true}}
|
||||
{{formField systemFields.lethality value=system.lethality}}
|
||||
@ -33,7 +36,7 @@
|
||||
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
|
||||
{{formInput
|
||||
systemFields.description
|
||||
enriched=description
|
||||
enriched=enrichedDescription
|
||||
value=system.description
|
||||
name="system.description"
|
||||
toggled=true
|
||||
|
Loading…
x
Reference in New Issue
Block a user