diff --git a/Demon Gate/Circle.png b/Demon Gate/Circle.png
deleted file mode 100644
index b44992594d..0000000000
Binary files a/Demon Gate/Circle.png and /dev/null differ
diff --git a/Demon Gate/DemonGate.css b/Demon Gate/DemonGate.css
index 1358925535..9b8aa1a0fc 100644
--- a/Demon Gate/DemonGate.css
+++ b/Demon Gate/DemonGate.css
@@ -1,54 +1,73 @@
+@import url("https://fonts.googleapis.com/css?family=IM+Fell+English+SC&display=swap");
+@import url("https://fonts.googleapis.com/css?family=Atkinson+Hyperlegible&display=swap");
+@import url("https://fonts.googleapis.com/css?family=Lato&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400&family=IM+Fell+English+SC&family=Lato:wght@400;700&display=swap");
+
/* ************************************************************************************************************************************************ */
/* Colours */
/* ************************************************************************************************************************************************ */
/*
-#948a54 (mid brown) - table borders, headings of older parts of the sheet
-#ddd9c3 (beige) - header cells, active tab button
-#b6ad7c (darker beige) - inactive tab buttons
-#f6f5ef (pale beige) - input control backgrounds
-#e0e0e0 (light grey) - read-only cell background
+#5c4228 (dark warm brown) - table borders, headings of older parts of the sheet
+#c2bba0 (aged parchment) - header cells, active tab button
+#8c7d58 (darker aged parchment) - inactive tab buttons
+#edeae0 (pale parchment) - input control backgrounds
+#c8c2ac (muted parchment) - read-only cell background
-#c4bc96 (slightly darker beige) - tab button borders
+#c9c2a6 - tab button borders
*/
/* Theme variables: modify these to change the sheet appearance quickly */
:root {
/* New semantic theme tokens (use these going forward) */
- --dg-border: #948a54; /* table outer borders, headings */
- --dg-table-cell-border: #c9c2a6; /* table cell borders */
- --dg-surface: #ddd9c3; /* header cells, active tab button */
- --dg-surface-variant: #b6ad7c; /* inactive tab buttons */
- --dg-control-bg: #f6f5ef; /* input control backgrounds */
- --dg-muted-bg: #e0e0e0; /* read-only cell background */
- --dg-primary: maroon; /* primary accent / text */
- --dg-primary-dark: #590902; /* deep accent used in headings */
- --dg-text-muted: dimgray; /* muted text color */
+ --dg-border: #8a7038; /* table outer borders, headings */
+ --dg-border-dark: #5f1d14; /* border color in dark mode */
- /* Dark mode tokens (semantic names) */
- --dg-dark-border: #222222; /* border color in dark mode */
- --dg-dark-surface: #555555; /* dark-mode surface/background */
- --dg-dark-muted: #353535;
- --dg-success: #05ad05;
- --dg-failure: #f80303;
- --dg-success-border: #028502;
- --dg-failure-border: #b30000;
+ --dg-table-cell-border: #baa870; /* table cell borders */
+ --dg-table-cell-border-dark: #6a3828; /* dark-mode table cell borders */
+
+ --dg-table-header-bg: #d8c694; /* table header cell background */
+ --dg-table-header-bg-dark: #262424; /* dark-mode table header background */
+
+ --dg-surface: #e8dcb0; /* default table cells, active tab button */
+ --dg-surface-dark: #202020; /* dark-mode surface/background */
+
+ --dg-control-bg: #f2eedc; /* input control backgrounds */
+ --dg-control-bg-dark: #302a28; /* dark warm brown — editable control background in dark mode */
+
+ --dg-primary: #3a1008; /* primary accent / text */
+ --dg-primary-dark: #d4c0a0; /* warm cream — editable control text in dark mode */
+
+ --dg-text-muted: #786848; /* muted text color */
+ --dg-text-muted-dark: #8a6840; /* faded warm brown — disabled/read-only text in dark mode */
+
+ --dg-placeholder: rgba(120, 104, 72, 0.5); /* input placeholder — faded version of text-muted */
+ --dg-placeholder-dark: rgba(138, 104, 64, 0.5); /* dark mode placeholder */
+
+ --dg-h1-fg: #120705; /* near-black charred ink */
+ --dg-h1-fg-dark: #c98b4e; /* amber for headings in dark mode */
+
+ --dg-h1-bg-dark: #4b1208; /* darker edge / border */
+
+ --dg-h2-fg: #4b1208; /* heading foreground to use on parchment surfaces */
+ --dg-h2-fg-dark: #c98b4e; /* amber — h2/h3 heading foreground in dark mode */
/* Condition level colors (progressive severity scales) */
- --dg-condition-none: white; /* no condition (baseline) */
+ /* rgba with varying alpha — single values work in both light and dark mode */
+ --dg-condition-none: transparent; /* no condition (baseline) */
- --dg-physical-1: #ffcccc; /* lightest physical condition */
- --dg-physical-2: #ff9999;
- --dg-physical-3: #ff6666;
- --dg-physical-4: #ff3333;
- --dg-physical-5: #cc0000;
- --dg-physical-6: #800000; /* darkest physical condition */
+ --dg-physical-1: rgba(220, 30, 30, 0.12);
+ --dg-physical-2: rgba(220, 30, 30, 0.28);
+ --dg-physical-3: rgba(220, 30, 30, 0.46);
+ --dg-physical-4: rgba(220, 30, 30, 0.62);
+ --dg-physical-5: rgba(220, 30, 30, 0.78);
+ --dg-physical-6: rgba(220, 30, 30, 0.94);
- --dg-mental-1: #cce0ff; /* lightest mental condition */
- --dg-mental-2: #80b3ff;
- --dg-mental-3: #4d94ff;
- --dg-mental-4: #0066ff;
- --dg-mental-5: #0047b3;
- --dg-mental-6: #003380; /* darkest mental condition */
+ --dg-mental-1: rgba(110, 20, 185, 0.12);
+ --dg-mental-2: rgba(110, 20, 185, 0.28);
+ --dg-mental-3: rgba(110, 20, 185, 0.46);
+ --dg-mental-4: rgba(110, 20, 185, 0.62);
+ --dg-mental-5: rgba(110, 20, 185, 0.78);
+ --dg-mental-6: rgba(110, 20, 185, 0.94);
}
/* ************************************************************************************************************************************************ */
@@ -56,7 +75,12 @@
/* ************************************************************************************************************************************************ */
.charsheet {
- background: url("https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Demon%20Gate/Paper.jpg");
+ background: url("https://cdn.discordapp.com/attachments/1125309911065182298/1506167597639532574/map_watermark.jpg?ex=6a0e98e2&is=6a0d4762&hm=331e6d084dd9fa07ccb94fe9ba6459261ae0e91e6c6064cb96e83b575b039b76&");
+ font-family: "Atkinson Hyperlegible", sans-serif;
+}
+
+.sheet-darkmode .charsheet {
+ background: url("https://cdn.discordapp.com/attachments/1125309911065182298/1506318410714317040/map_watermark_dark.jpg?ex=6a0dd3d7&is=6a0c8257&hm=c64d10feff93c714449f44b67717df395002d6f4a70116e16c0224311c2e5d8b&");
}
.sheet-demon-gate-charsheet {
@@ -118,10 +142,10 @@ span.sheet-tab {
display: inline-block;
font-size: 14px;
line-height: 28px;
- color: var(--dg-primary);
- border: 2px solid var(--dg-primary);
+ color: var(--dg-text-muted);
+ border: 1px solid var(--dg-primary);
border-radius: 4px;
- background: var(--dg-surface-variant);
+ background: var(--dg-table-header-bg);
width: 90px;
height: 28px;
cursor: pointer;
@@ -147,6 +171,24 @@ input.sheet-tab8:checked ~ div.sheet-section-notes {
input.sheet-tab:checked + span {
background: var(--dg-surface);
+ color: var(--dg-primary);
+ border: 2px solid var(--dg-primary);
+}
+
+/* ************************************************************************************************************************************************ */
+/* Dark mode overrides */
+/* ************************************************************************************************************************************************ */
+
+.sheet-darkmode span.sheet-tab {
+ color: var(--dg-text-muted-dark);
+ border-color: var(--dg-border-dark);
+ background: var(--dg-table-header-bg-dark);
+}
+
+.sheet-darkmode input.sheet-tab:checked + span {
+ background: var(--dg-surface-dark);
+ color: var(--dg-primary-dark);
+ border-color: var(--dg-primary-dark);
}
/* ************************************************************************************************************************************************ */
@@ -161,24 +203,57 @@ h3 {
}
h1 {
- height: 40px;
- line-height: 40px;
- color: var(--dg-surface);
- background-color: var(--dg-primary-dark);
- background-image: url("https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Demon%20Gate/runes-dark.png");
+ position: relative;
+ overflow: hidden;
+ isolation: isolate;
+
+ color: var(--dg-h1-fg);
+
+ background: radial-gradient(ellipse at center, #d48a2f 0%, #c85e21 22%, #a53c18 42%, #732012 72%, #4f140b 100%);
background-position-y: center;
background-repeat: repeat-x;
+
border: 2px solid var(--dg-primary-dark);
border-radius: 4px;
- font-size: 20px;
+ border-color: var(--dg-h1-bg-dark);
+
+ height: 40px;
+ line-height: 40px;
+ font-family: "IM Fell English SC", serif;
+ font-size: 20pt;
+ font-weight: normal;
+}
+
+.sheet-darkmode h1 {
+ color: #c98b4e;
+
+ background: radial-gradient(ellipse at center, #5f1d14 0%, #441711 22%, #301411 42%, #26201e 72%, #202020 100%);
+
+ border: none;
+}
+
+h1::before {
+ content: "";
+ position: absolute;
+ inset: 0;
+
+ background-image: url("https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Demon%20Gate/runes-dark.png");
+ background-repeat: repeat;
+ background-position: center;
+
+ opacity: 0.15;
+ mix-blend-mode: multiply;
+
+ pointer-events: none;
+ z-index: -1;
}
h2,
h3 {
- color: var(--dg-primary);
- background-color: var(--dg-surface);
+ color: var(--dg-h2-fg);
+ font-family: "IM Fell English SC", serif;
font-weight: normal;
- font-size: 16px;
+ font-size: 18px;
height: 28px;
line-height: 28px;
}
@@ -192,6 +267,22 @@ h3 {
text-align: left;
}
+.sheet-table-like-heading {
+ border: 2px solid var(--dg-border);
+ border-radius: 4px;
+ background-color: var(--dg-table-header-bg);
+}
+
+.sheet-darkmode h2,
+.sheet-darkmode h3 {
+ color: var(--dg-h2-fg-dark);
+}
+
+.sheet-darkmode .sheet-table-like-heading {
+ border-color: var(--dg-border-dark);
+ background-color: var(--dg-table-header-bg-dark);
+}
+
.sheet-info {
font-weight: normal;
font-style: italic;
@@ -205,6 +296,7 @@ h3 {
.sheet-collapse-wrapper {
border: 2px solid var(--dg-border);
margin-top: 20px;
+ background-color: var(--dg-table-header-bg);
}
/* Hide the browser's default checkbox */
@@ -256,15 +348,25 @@ input[type="checkbox"].sheet-expand-collapse-checkbox:checked ~ .sheet-collapsib
padding: 0;
}
+/*
.sheet-collapse-section {
- background-color: var(--dg-surface);
-}
+ background-color: var(--dg-surface);
+}*/
.sheet-collapsible table,
table.sheet-embedded-table {
border: 0;
}
+/* ************************************************************************************************************************************************ */
+/* Dark mode overrides */
+/* ************************************************************************************************************************************************ */
+
+.sheet-darkmode .sheet-collapse-wrapper {
+ border-color: var(--dg-border-dark);
+ background-color: var(--dg-table-header-bg-dark);
+}
+
/* ************************************************************************************************************************************************ */
/* Flexbox columns */
/* ************************************************************************************************************************************************ */
@@ -337,6 +439,7 @@ table {
th,
td {
border: 1px solid var(--dg-table-cell-border);
+ font-family: "Lato", sans-serif;
}
th {
@@ -347,6 +450,7 @@ th {
color: var(--dg-text-muted);
padding-left: 10px;
padding-right: 10px;
+ background-color: var(--dg-table-header-bg);
}
th.sheet-small-table-header {
@@ -365,7 +469,8 @@ th.sheet-small-text {
td.sheet-small-text {
font-size: 0.7em;
- background-color: var(--dg-control-bg);
+ background-color: var(--dg-surface);
+ color: var(--dg-text-muted);
}
th.sheet-small-text {
@@ -397,6 +502,34 @@ td.sheet-cell-numeric {
text-align: center;
}
+/* ************************************************************************************************************************************************ */
+/* Dark mode overrides */
+/* ************************************************************************************************************************************************ */
+
+.sheet-darkmode table {
+ border-color: var(--dg-border-dark);
+ background-color: var(--dg-surface-dark);
+}
+
+.sheet-darkmode th,
+.sheet-darkmode td {
+ border-color: var(--dg-table-cell-border-dark);
+}
+
+.sheet-darkmode th {
+ color: var(--dg-text-muted-dark);
+ background-color: var(--dg-table-header-bg-dark);
+}
+
+.sheet-darkmode td.sheet-small-text {
+ background-color: var(--dg-surface-dark);
+ color: var(--dg-text-muted-dark);
+}
+
+.sheet-darkmode td.sheet-cell-numeric {
+ background-color: var(--dg-control-bg-dark);
+}
+
/* ************************************************************************************************************************************************ */
/* Entry controls */
/* ************************************************************************************************************************************************ */
@@ -404,10 +537,10 @@ td.sheet-cell-numeric {
input,
select,
textarea,
-.sheet-input-like,
-.sheet-input-like-no-padding {
+.sheet-input-like {
width: 100%;
background-color: var(--dg-control-bg);
+ color: var(--dg-primary);
}
.sheet-demon-gate-charsheet input[type="number"],
@@ -423,7 +556,7 @@ input[type="text"].sheet-totalfield {
font-weight: bold;
font-size: 16px;
color: var(--dg-text-muted);
- background-color: var(--dg-muted-bg);
+ background-color: var(--dg-surface);
border: 0;
border-radius: 0;
}
@@ -448,8 +581,8 @@ td input[type="number"] {
.sheet-read-only-field,
td.sheet-cell-numeric-readonly,
td input:read-only {
- color: lightslategray;
- background-color: var(--dg-muted-bg);
+ color: var(--dg-text-muted);
+ background-color: var(--dg-surface);
}
.sheet-text-centred,
@@ -490,6 +623,12 @@ button.btn {
background: var(--dg-surface);
}
+.sheet-darkmode button.btn {
+ background: var(--dg-surface-dark);
+ color: var(--dg-primary-dark);
+ border: 1px solid var(--dg-primary-dark);
+}
+
.sheet-demon-gate-charsheet button.sheet-display-text-button[type="roll"]:before,
.sheet-demon-gate-charsheet button.sheet-display-text-button-small[type="roll"]:before {
content: "";
@@ -507,6 +646,45 @@ button.sheet-display-text-button-small {
font-size: 1em;
}
+input::placeholder,
+textarea::placeholder {
+ color: var(--dg-placeholder);
+}
+
+/* ************************************************************************************************************************************************ */
+/* Dark mode overrides */
+/* ************************************************************************************************************************************************ */
+
+.sheet-darkmode input,
+.sheet-darkmode select,
+.sheet-darkmode textarea,
+.sheet-darkmode .sheet-input-like {
+ color: var(--dg-primary-dark);
+ background-color: var(--dg-control-bg-dark);
+}
+
+.sheet-darkmode textarea {
+ border-color: var(--dg-border-dark);
+}
+
+.sheet-darkmode input::placeholder,
+.sheet-darkmode textarea::placeholder {
+ color: var(--dg-placeholder-dark);
+}
+
+.sheet-darkmode input[type="number"].sheet-totalfield,
+.sheet-darkmode input[type="text"].sheet-totalfield {
+ color: var(--dg-text-muted-dark);
+ background-color: var(--dg-surface-dark);
+}
+
+.sheet-darkmode .sheet-read-only-field,
+.sheet-darkmode td.sheet-cell-numeric-readonly,
+.sheet-darkmode td input:read-only {
+ color: var(--dg-text-muted-dark);
+ background-color: var(--dg-surface-dark);
+}
+
/* ************************************************************************************************************************************************ */
/* Top section of first sheet */
/* ************************************************************************************************************************************************ */
@@ -530,10 +708,6 @@ button.sheet-display-text-button-small {
min-width: 12em;
}
-.sheet-input-like-no-padding input.sheet-input-narrow {
- max-width: 7.5em;
-}
-
.sheet-demon-gate-charsheet td input.sheet-prominent-label,
.sheet-demon-gate-charsheet td input.sheet-prominent-field {
height: 72px;
@@ -564,10 +738,6 @@ td .sheet-input-spacer {
text-align: center;
}
-.sheet-beauty-table-spacer-cell {
- min-width: 19.5em;
-}
-
/* ************************************************************************************************************************************************ */
/* HP, Mana etc. */
/* ************************************************************************************************************************************************ */
@@ -604,74 +774,64 @@ td .sheet-input-spacer {
width: 14%;
}
+/* inset box-shadow instead of background-color bypasses Roll20's html.dark td override */
tr td.sheet-physical-condition-0,
tr td.sheet-mental-condition-0 {
- background-color: var(--dg-condition-none);
+ box-shadow: none;
}
tr td.sheet-physical-condition-1 {
- background-color: var(--dg-physical-1);
+ box-shadow: inset 0 0 0 9999px var(--dg-physical-1);
}
tr td.sheet-physical-condition-2 {
- background-color: var(--dg-physical-2);
+ box-shadow: inset 0 0 0 9999px var(--dg-physical-2);
}
tr td.sheet-physical-condition-3 {
- background-color: var(--dg-physical-3);
+ box-shadow: inset 0 0 0 9999px var(--dg-physical-3);
}
tr td.sheet-physical-condition-4 {
- background-color: var(--dg-physical-4);
+ box-shadow: inset 0 0 0 9999px var(--dg-physical-4);
}
tr td.sheet-physical-condition-5 {
- background-color: var(--dg-physical-5);
+ box-shadow: inset 0 0 0 9999px var(--dg-physical-5);
}
tr td.sheet-physical-condition-6 {
- background-color: var(--dg-physical-6);
+ box-shadow: inset 0 0 0 9999px var(--dg-physical-6);
}
tr td.sheet-mental-condition-1 {
- background-color: var(--dg-mental-1);
+ box-shadow: inset 0 0 0 9999px var(--dg-mental-1);
}
tr td.sheet-mental-condition-2 {
- background-color: var(--dg-mental-2);
+ box-shadow: inset 0 0 0 9999px var(--dg-mental-2);
}
tr td.sheet-mental-condition-3 {
- background-color: var(--dg-mental-3);
+ box-shadow: inset 0 0 0 9999px var(--dg-mental-3);
}
tr td.sheet-mental-condition-4 {
- background-color: var(--dg-mental-4);
+ box-shadow: inset 0 0 0 9999px var(--dg-mental-4);
}
tr td.sheet-mental-condition-5 {
- background-color: var(--dg-mental-5);
+ box-shadow: inset 0 0 0 9999px var(--dg-mental-5);
}
tr td.sheet-mental-condition-6 {
- background-color: var(--dg-mental-6);
+ box-shadow: inset 0 0 0 9999px var(--dg-mental-6);
}
/* ************************************************************************************************************************************************ */
/* Skills tab
/* ************************************************************************************************************************************************ */
-.sheet-top-margin {
- margin-top: 40px;
-}
-
-.charsheet select.sheet-skilldescshort {
- width: 4.2em;
- margin: 0;
- border: 0;
- border-radius: 0;
-}
-
.sheet-skillname,
.sheet-skillname-indented {
padding-right: 10px;
@@ -693,26 +853,8 @@ tr td.sheet-mental-condition-6 {
/* ************************************************************************************************************************************************ */
/* Abilities and notes tabs
/* ************************************************************************************************************************************************ */
-.sheet-subsection-header,
-.sheet-subsection-header-wide {
- width: 100%;
- height: 36px;
- line-height: 36px;
- color: var(--dg-text-muted);
- background-color: var(--dg-surface);
- text-align: center;
- font-size: 16px;
-}
-
-.sheet-subsection-header-wide {
- min-width: 15em;
- border: 2px solid var(--dg-table-cell-border);
- margin-bottom: 5px;
-}
-
textarea.sheet-text-area-full,
textarea.sheet-text-area-large,
-textarea.sheet-standalone-textarea,
textarea.sheet-textarea-gems,
textarea.sheet-textarea-equipment {
box-sizing: border-box;
@@ -753,7 +895,6 @@ h1.sheet-spacer-top-margin {
margin-top: 40px;
}
-.sheet-standalone-textarea,
.sheet-textarea-gems,
.sheet-textarea-equipment {
margin-top: 20px;
@@ -761,10 +902,6 @@ h1.sheet-spacer-top-margin {
border-radius: 0;
}
-textarea.sheet-standalone-textarea {
- height: 150px;
-}
-
textarea.sheet-textarea-gems {
height: 530px;
}
@@ -778,6 +915,20 @@ textarea.sheet-textarea-equipment {
margin-bottom: -10px;
}
+/* ************************************************************************************************************************************************ */
+/* Dark mode overrides */
+/* ************************************************************************************************************************************************ */
+
+.sheet-darkmode .sheet-repeating-section {
+ background-color: var(--dg-surface-dark);
+ border-color: var(--dg-border-dark);
+}
+
+.sheet-darkmode .sheet-textarea-gems,
+.sheet-darkmode .sheet-textarea-equipment {
+ border-color: var(--dg-border-dark);
+}
+
/* ************************************************************************************************************************************************ */
/* Mysic tab
/* ************************************************************************************************************************************************ */
@@ -794,21 +945,18 @@ textarea.sheet-textarea-equipment {
border-right: 0;
}
-.sheet-spiritual-influence-header {
- border: 2px solid var(--dg-border);
-}
-
.sheet-spiritual-influence-image {
- background: url("https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Demon%20Gate/Circle.png");
+ background: url("https://cdn.discordapp.com/attachments/1125309911065182298/1506656076089790555/circle_v2.png?ex=6a0f0e50&is=6a0dbcd0&hm=58b1be69d46b6392d53f53c44aa2ee247d80b0ba640d28fcf1c1da309c3e5204&");
background-repeat: no-repeat;
background-size: contain;
background-position: center;
- height: 271px;
- width: 288px;
+ height: 280px;
+ width: 280px;
display: flex;
flex-flow: column nowrap;
align-items: center;
justify-content: center;
+ margin: 8px;
}
.sheet-spiritual-influence-image input[type="number"].sheet-spiritual-influence {
@@ -859,6 +1007,18 @@ tr.sheet-spell-spacer-row td {
background-color: var(--dg-border);
}
+/* ************************************************************************************************************************************************ */
+/* Dark mode overrides */
+/* ************************************************************************************************************************************************ */
+
+.sheet-darkmode .sheet-religion-table {
+ border-color: var(--dg-border-dark);
+}
+
+.sheet-darkmode tr.sheet-spell-spacer-row td {
+ background-color: var(--dg-border-dark);
+}
+
/* ************************************************************************************************************************************************ */
/* Roll Templates
/* ************************************************************************************************************************************************ */
@@ -875,18 +1035,35 @@ tr.sheet-spell-spacer-row td {
.sheet-rolltemplate-spell-effect,
.sheet-rolltemplate-simple,
.sheet-rolltemplate-two-part {
- --dg-roll-border: #948a54; /* Keep in sync with --dg-border */
- --dg-roll-surface: #ddd9c3; /* Keep in sync with --dg-surface */
- --dg-roll-control-bg: #f6f5ef; /* Keep in sync with --dg-control-bg */
- --dg-roll-primary: maroon; /* Keep in sync with --dg-primary */
- --dg-roll-primary-dark: #590902; /* Keep in sync with --dg-primary-dark */
- --dg-roll-dark-border: #222222; /* Keep in sync with --dg-dark-border */
- --dg-roll-dark-surface: #555555; /* Keep in sync with --dg-dark-surface */
- --dg-roll-dark-muted: #353535; /* Keep in sync with --dg-dark-muted */
- --dg-roll-success: #05ad05; /* Keep in sync with --dg-success */
- --dg-roll-failure: #f80303; /* Keep in sync with --dg-failure */
- --dg-roll-success-border: #028502; /* Keep in sync with --dg-success-border */
- --dg-roll-failure-border: #b30000; /* Keep in sync with --dg-failure-border */
+ --dg-roll-border: #8a7038; /* Keep in sync with --dg-border */
+ --dg-roll-border-dark: #5f1d14; /* Keep in sync with --dg-border-dark */
+
+ --dg-roll-table-cell-border: #baa870; /* Keep in sync with --dg-table-cell-border */
+ --dg-roll-table-cell-border-dark: #5a3820; /* Keep in sync with --dg-table-cell-border-dark */
+
+ --dg-roll-surface: #e8dcb0; /* Keep in sync with --dg-surface */
+ --dg-roll-surface-dark: #202020; /* Keep in sync with --dg-surface-dark */
+
+ --dg-roll-control-bg: #f2eedc; /* Keep in sync with --dg-control-bg */
+ --dg-roll-control-bg-dark: #302820; /* Keep in sync with --dg-control-bg-dark */
+
+ --dg-roll-primary: #3a1008; /* Keep in sync with --dg-primary */
+ --dg-roll-primary-dark: #d4c0a0; /* Keep in sync with --dg-primary-dark */
+
+ --dg-roll-text-muted: #786848; /* Keep in sync with --dg-text-muted */
+ --dg-roll-text-muted-dark: #8a6840; /* Keep in sync with --dg-text-muted-dark */
+
+ --dg-roll-h1-fg: #120705; /* Keep in sync with --dg-h1-fg */
+ --dg-roll-h1-fg-dark: #c98b4e; /* Keep in sync with --dg-h1-fg-dark */
+
+ --dg-roll-table-header-bg: #d8c694; /* Keep in sync with --dg-table-header-bg */
+ --dg-roll-table-header-bg-dark: #26201e; /* Keep in sync with --dg-table-header-bg-dark */
+
+ --dg-roll-success: #239c23; /* Roll template only */
+ --dg-roll-success-dark: #3eec3e; /* Roll template only */
+
+ --dg-roll-failure: #d31b1b; /* Roll template only */
+ --dg-roll-failure-dark: #ff3a3a; /* Roll template only */
}
.sheet-rolltemplate-text .sheet-template-container {
@@ -906,9 +1083,21 @@ tr.sheet-spell-spacer-row td {
.sheet-rolltemplate-two-part .sheet-template-box {
width: 100%;
border: 2px solid var(--dg-roll-border);
- background-color: var(--dg-roll-control-bg);
+ background-color: var(--dg-roll-surface);
+ font-family: "Atkinson Hyperlegible", sans-serif;
}
+.sheet-rolltemplate-text .sheet-template-text,
+.sheet-rolltemplate-class-ability-text .sheet-template-text,
+.sheet-rolltemplate-percentile .sheet-template-text,
+.sheet-rolltemplate-spell-description .sheet-template-text {
+ font-size: 13px;
+ padding: 4px;
+ color: var(--dg-roll-primary);
+}
+
+/* Titles and subtitles - light and dark mode */
+
.sheet-rolltemplate-text .sheet-template-title,
.sheet-rolltemplate-class-ability-text .sheet-template-title,
.sheet-rolltemplate-percentile .sheet-template-title,
@@ -920,15 +1109,44 @@ tr.sheet-spell-spacer-row td {
.sheet-rolltemplate-spell-effect .sheet-template-title,
.sheet-rolltemplate-simple .sheet-template-title,
.sheet-rolltemplate-two-part .sheet-template-title {
+ position: relative;
+ overflow: hidden;
+ isolation: isolate;
width: 100%;
text-align: center;
- color: var(--dg-roll-primary);
- background-color: var(--dg-roll-surface);
+ color: var(--dg-roll-h1-fg);
+ background: radial-gradient(ellipse at center, #d48a2f 0%, #c85e21 37%, #a53c18 52%, #732012 72%, #4f140b 100%);
+ background-position-y: center;
+ background-repeat: repeat-x;
+ font-family: "IM Fell English SC", serif;
font-weight: normal;
- font-size: 16px;
+ font-size: 22px;
padding: 8px 0;
}
+.sheet-rolltemplate-text .sheet-template-title::before,
+.sheet-rolltemplate-class-ability-text .sheet-template-title::before,
+.sheet-rolltemplate-percentile .sheet-template-title::before,
+.sheet-rolltemplate-attack .sheet-template-title::before,
+.sheet-rolltemplate-damage .sheet-template-title::before,
+.sheet-rolltemplate-roll .sheet-template-title::before,
+.sheet-rolltemplate-spell-description .sheet-template-title::before,
+.sheet-rolltemplate-spell-cast .sheet-template-title::before,
+.sheet-rolltemplate-spell-effect .sheet-template-title::before,
+.sheet-rolltemplate-simple .sheet-template-title::before,
+.sheet-rolltemplate-two-part .sheet-template-title::before {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background-image: url("https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Demon%20Gate/runes-dark.png");
+ background-repeat: repeat;
+ background-position: center;
+ opacity: 0.15;
+ mix-blend-mode: multiply;
+ pointer-events: none;
+ z-index: -1;
+}
+
.sheet-rolltemplate-text .sheet-template-subtitle,
.sheet-rolltemplate-class-ability-text .sheet-template-subtitle,
.sheet-rolltemplate-percentile .sheet-template-subtitle,
@@ -942,12 +1160,47 @@ tr.sheet-spell-spacer-row td {
width: 100%;
text-align: center;
color: var(--dg-roll-primary);
- background-color: var(--dg-roll-surface);
+ background-color: var(--dg-roll-table-header-bg);
+ font-family: "IM Fell English SC", serif;
font-weight: normal;
- font-size: 12px;
- padding-bottom: 2px;
+ font-size: 16px;
+ padding: 4px 0 2px 0;
+ border-bottom: 1px solid var(--dg-roll-border);
}
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-text .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-class-ability-text .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-attack .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-damage .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-roll .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-description .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-cast .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .sheet-template-title,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .sheet-template-title {
+ color: var(--dg-roll-h1-fg-dark);
+ background: radial-gradient(ellipse at center, #5f1d14 0%, #441711 37%, #301411 62%, #26201e 82%, #202020 100%);
+ border-bottom-color: transparent;
+}
+
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-text .sheet-template-subtitle,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-class-ability-text .sheet-template-subtitle,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .sheet-template-subtitle,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-attack .sheet-template-subtitle,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-damage .sheet-template-subtitle,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-roll .sheet-template-subtitle,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-cast .sheet-template-subtitle,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect .sheet-template-subtitle,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .sheet-template-subtitle,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .sheet-template-subtitle {
+ color: var(--dg-roll-h1-fg-dark);
+ background-color: var(--dg-roll-table-header-bg-dark);
+ border-bottom: 1px solid var(--dg-roll-border-dark);
+}
+
+/* Divider styling for roll templates that use them */
+
.sheet-rolltemplate-class-ability-text .sheet-template-hr,
.sheet-rolltemplate-percentile .sheet-template-hr,
.sheet-rolltemplate-attack .sheet-template-hr,
@@ -965,30 +1218,37 @@ tr.sheet-spell-spacer-row td {
padding: 0;
}
-.sheet-rolltemplate-text .sheet-template-text,
-.sheet-rolltemplate-class-ability-text .sheet-template-text,
-.sheet-rolltemplate-percentile .sheet-template-text,
-.sheet-rolltemplate-spell-description .sheet-template-text {
- font-size: 13px;
- padding: 4px;
-}
+/** Table styling for roll templates that use them */
.sheet-rolltemplate-class-ability-text th,
.sheet-rolltemplate-percentile th,
.sheet-rolltemplate-spell-description th,
.sheet-rolltemplate-spell-cast th,
.sheet-rolltemplate-spell-effect th {
- font-size: 13px;
+ font-size: 14px;
padding: 4px;
font-weight: bold;
+ font-family: "Lato", sans-serif;
}
.sheet-rolltemplate-attack th,
.sheet-rolltemplate-damage th,
.sheet-rolltemplate-roll th {
- font-size: 16px;
+ font-size: 14px;
padding: 10px;
font-weight: bold;
+ font-family: "Lato", sans-serif;
+}
+
+.sheet-rolltemplate-class-ability-text th span,
+.sheet-rolltemplate-percentile th span,
+.sheet-rolltemplate-attack th span,
+.sheet-rolltemplate-damage th span,
+.sheet-rolltemplate-roll th span,
+.sheet-rolltemplate-spell-description th span,
+.sheet-rolltemplate-spell-cast th span,
+.sheet-rolltemplate-spell-effect th span {
+ color: var(--dg-roll-text-muted);
}
.sheet-rolltemplate-class-ability-text td,
@@ -1000,6 +1260,8 @@ tr.sheet-spell-spacer-row td {
text-align: center;
min-width: 3em;
padding: 4px;
+ color: var(--dg-roll-primary);
+ font-family: "Lato", sans-serif;
}
.sheet-rolltemplate-attack td,
@@ -1009,25 +1271,8 @@ tr.sheet-spell-spacer-row td {
text-align: center;
min-width: 3em;
padding: 10px;
-}
-
-.sheet-rolltemplate-percentile .sheet-template-success,
-.sheet-rolltemplate-percentile .sheet-template-failure {
- font-size: 16px;
- font-weight: bold;
- padding: 10px;
- margin-top: 4px;
- text-align: center;
-}
-
-.sheet-rolltemplate-percentile .sheet-template-success {
- color: darkgreen;
- font-size: 20px;
-}
-
-.sheet-rolltemplate-percentile .sheet-template-failure {
color: var(--dg-roll-primary);
- font-size: 20px;
+ font-family: "Lato", sans-serif;
}
.sheet-rolltemplate-simple .sheet-template-text-prominent,
@@ -1035,12 +1280,50 @@ tr.sheet-spell-spacer-row td {
font-size: 16px;
padding: 10px;
text-align: center;
+ color: var(--dg-roll-primary);
}
.sheet-rolltemplate-two-part .sheet-template-text-supplementary {
font-size: 13px;
padding: 10px;
text-align: center;
+ color: var(--dg-roll-primary);
+}
+
+/* Dark mode text colour — th span overrides Roll20's html.dark th !important; td/text elements get full amber */
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-class-ability-text th span,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile th span,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-attack th span,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-damage th span,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-roll th span,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-description th span,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-cast th span,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect th span {
+ color: var(--dg-roll-text-muted-dark);
+}
+
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-text td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-class-ability-text td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-attack td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-damage td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-roll td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-description td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-cast td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple td,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part td {
+ color: var(--dg-roll-primary-dark);
+}
+
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-text .sheet-template-text,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-class-ability-text .sheet-template-text,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .sheet-template-text,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-description .sheet-template-text,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .sheet-template-text-prominent,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .sheet-template-text-prominent,
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .sheet-template-text-supplementary {
+ color: var(--dg-roll-primary-dark);
}
/* Dark mode support */
@@ -1055,45 +1338,28 @@ tr.sheet-spell-spacer-row td {
.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect .sheet-template-box,
.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .sheet-template-box,
.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .sheet-template-box {
- border: 2px solid var(--dg-roll-dark-border);
- background-color: var(--dg-roll-dark-surface);
+ border: 2px solid var(--dg-roll-border-dark);
+ background-color: var(--dg-roll-surface-dark);
}
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-text .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-class-ability-text .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-attack .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-damage .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-roll .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-description .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-cast .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .sheet-template-title,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-text .sheet-template-subtitle,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-class-ability-text .sheet-template-subtitle,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .sheet-template-subtitle,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-attack .sheet-template-subtitle,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-damage .sheet-template-subtitle,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-roll .sheet-template-subtitle,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-cast .sheet-template-subtitle,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect .sheet-template-subtitle,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .sheet-template-subtitle,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .sheet-template-subtitle {
- color: var(--dg-roll-surface);
- background-color: var(--dg-roll-primary-dark);
-}
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .inlinerollresult,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-attack .inlinerollresult,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-damage .inlinerollresult,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-roll .inlinerollresult,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-description .inlinerollresult,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-cast .inlinerollresult,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect .inlinerollresult,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .inlinerollresult,
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .inlinerollresult {
- background-color: var(--dg-roll-dark-muted);
- border: 2px solid var(--dg-roll-dark-border);
+/** Roll result styling - light and dark mode */
+
+.sheet-rolltemplate-text .inlinerollresult,
+.sheet-rolltemplate-class-ability-text .inlinerollresult,
+.sheet-rolltemplate-percentile .inlinerollresult,
+.sheet-rolltemplate-attack .inlinerollresult,
+.sheet-rolltemplate-damage .inlinerollresult,
+.sheet-rolltemplate-roll .inlinerollresult,
+.sheet-rolltemplate-spell-description .inlinerollresult,
+.sheet-rolltemplate-spell-cast .inlinerollresult,
+.sheet-rolltemplate-spell-effect .inlinerollresult,
+.sheet-rolltemplate-simple .inlinerollresult,
+.sheet-rolltemplate-two-part .inlinerollresult {
+ background-color: var(--dg-roll-control-bg);
+ border: 2px solid var(--dg-roll-table-cell-border);
+ border-radius: 4px;
+ color: var(--dg-roll-primary);
+ font-family: sans-serif;
}
.sheet-rolltemplate-darkmode.sheet-rolltemplate-text .inlinerollresult,
@@ -1107,8 +1373,73 @@ tr.sheet-spell-spacer-row td {
.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect .inlinerollresult,
.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .inlinerollresult,
.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .inlinerollresult {
- background-color: var(--dg-roll-dark-muted);
- border: 2px solid var(--dg-roll-dark-border);
+ background-color: var(--dg-roll-control-bg-dark);
+ border: 2px solid var(--dg-roll-table-cell-border-dark);
+ border-radius: 4px;
+ color: var(--dg-roll-primary-dark);
+}
+
+/** Success and failure result styling - light and dark mode */
+
+/** NOTE - the repeated styling below is weird, but it seems to break Roll20 otherwise. **/
+.sheet-rolltemplate-percentile .sheet-template-success,
+.sheet-rolltemplate-percentile .sheet-template-failure {
+ font-size: 20px;
+ font-weight: bold;
+ padding: 10px;
+ margin-top: 4px;
+ text-align: center;
+}
+
+.sheet-rolltemplate-percentile .sheet-template-success {
+ color: var(--dg-roll-success);
+ font-size: 20px;
+ font-weight: bold;
+ padding: 10px;
+ margin-top: 4px;
+ text-align: center;
+}
+
+.sheet-rolltemplate-percentile .sheet-template-failure {
+ color: var(--dg-roll-failure);
+}
+
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .sheet-template-success {
+ color: var(--dg-roll-success-dark);
+}
+
+.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .sheet-template-failure {
+ color: var(--dg-roll-failure-dark);
+}
+
+/** Critical success and failure borders (light and dark mode)*/
+
+.sheet-rolltemplate-text .inlinerollresult.fullfail,
+.sheet-rolltemplate-class-ability-text .inlinerollresult.fullfail,
+.sheet-rolltemplate-percentile .inlinerollresult.fullfail,
+.sheet-rolltemplate-attack .inlinerollresult.fullfail,
+.sheet-rolltemplate-damage .inlinerollresult.fullfail,
+.sheet-rolltemplate-roll .inlinerollresult.fullfail,
+.sheet-rolltemplate-spell-description .inlinerollresult.fullfail,
+.sheet-rolltemplate-spell-cast .inlinerollresult.fullfail,
+.sheet-rolltemplate-spell-effect .inlinerollresult.fullfail,
+.sheet-rolltemplate-simple .inlinerollresult.fullfail,
+.sheet-rolltemplate-two-part .inlinerollresult.fullfail {
+ border: 3px solid var(--dg-roll-failure);
+}
+
+.sheet-rolltemplate-text .inlinerollresult.fullcrit,
+.sheet-rolltemplate-class-ability-text .inlinerollresult.fullcrit,
+.sheet-rolltemplate-percentile .inlinerollresult.fullcrit,
+.sheet-rolltemplate-attack .inlinerollresult.fullcrit,
+.sheet-rolltemplate-damage .inlinerollresult.fullcrit,
+.sheet-rolltemplate-roll .inlinerollresult.fullcrit,
+.sheet-rolltemplate-spell-description .inlinerollresult.fullcrit,
+.sheet-rolltemplate-spell-cast .inlinerollresult.fullcrit,
+.sheet-rolltemplate-spell-effect .inlinerollresult.fullcrit,
+.sheet-rolltemplate-simple .inlinerollresult.fullcrit,
+.sheet-rolltemplate-two-part .inlinerollresult.fullcrit {
+ border: 3px solid var(--dg-roll-success);
}
.sheet-rolltemplate-darkmode.sheet-rolltemplate-text .inlinerollresult.fullfail,
@@ -1122,7 +1453,7 @@ tr.sheet-spell-spacer-row td {
.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect .inlinerollresult.fullfail,
.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .inlinerollresult.fullfail,
.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .inlinerollresult.fullfail {
- border-color: var(--dg-roll-failure-border);
+ border: 3px solid var(--dg-roll-failure-dark);
}
.sheet-rolltemplate-darkmode.sheet-rolltemplate-text .inlinerollresult.fullcrit,
@@ -1136,13 +1467,5 @@ tr.sheet-spell-spacer-row td {
.sheet-rolltemplate-darkmode.sheet-rolltemplate-spell-effect .inlinerollresult.fullcrit,
.sheet-rolltemplate-darkmode.sheet-rolltemplate-simple .inlinerollresult.fullcrit,
.sheet-rolltemplate-darkmode.sheet-rolltemplate-two-part .inlinerollresult.fullcrit {
- border-color: var(--dg-roll-success-border);
-}
-
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .sheet-template-success {
- color: var(--dg-roll-success);
-}
-
-.sheet-rolltemplate-darkmode.sheet-rolltemplate-percentile .sheet-template-failure {
- color: var(--dg-roll-failure);
+ border: 3px solid var(--dg-roll-success-dark);
}
diff --git a/Demon Gate/DemonGate.html b/Demon Gate/DemonGate.html
index 0695d7c9da..3c61ce58d5 100644
--- a/Demon Gate/DemonGate.html
+++ b/Demon Gate/DemonGate.html
@@ -263,7 +263,7 @@
rankToUse = 50;
}
- return diceTable[rank] || "";
+ return diceTable[rankToUse] || "";
}
// Helper function to generate race summary from modifiers
@@ -833,7 +833,8 @@
setAttrs({
StrTotal: total,
StrRank: rank,
- StrDice: getDice(rank)
+ StrDice: getDice(rank),
+ WtAllow: calculateWeightAllowance(total)
});
const damageModifierBonus = Number(values.DmgModBonus);
@@ -883,8 +884,9 @@
}
function calculateDamageModifier(str) {
- if (str <= 3) return Math.min(-3, 4 - str);
- if (str >= 80) return 33;
+ if (str <= 1) return -3;
+ if (str === 2) return -2;
+ if (str === 3) return -1;
if (str >= 15) return Math.floor((str - 13) / 2);
return 0;
}
@@ -898,9 +900,10 @@
if (str <= 9) return "l";
if (str <= 14) return "m/2vl";
if (str <= 19) return "h/2l";
- if (str <= 30) return "vh/2m";
+ if (str <= 29) return "vh/2m";
if (str <= 49) return "vh/2h";
- return "vh/2vh";
+ if (str <= 99) return "vh/2vh";
+ return "Godly";
}
/* DEXTERITY */
@@ -1015,6 +1018,7 @@
function calculateMovementModifier(dexterity) {
if (dexterity <= 3) return -1;
+ if (dexterity >= 90) return 6;
if (dexterity >= 60) return 5;
if (dexterity >= 50) return 4;
if (dexterity >= 15) return Math.floor(dexterity / 10);
@@ -1079,35 +1083,37 @@
if (bdy <= 35) return Math.floor((bdy - 6) / 3);
if (bdy <= 47) return Math.floor((bdy + 4) / 4);
if (bdy <= 62) return Math.floor((bdy + 17) / 5);
- if (bdy <= 74) return Math.floor((bdy + 33) / 6);
- return 18;
+ if (bdy <= 80) return Math.floor((bdy + 33) / 6);
+ if (bdy <= 87) return 19;
+ if (bdy <= 94) return 20;
+ return 21;
}
function calculateHPAdjustment(bdy) {
if (bdy <= 14) return 0;
- if (bdy == 15) return 1;
- if (bdy == 16) return 3;
- if (bdy == 17) return 6;
- if (bdy == 18) return 10;
- if (bdy == 19) return 15;
- if (bdy <= 21) return 21;
- if (bdy <= 23) return 28;
- if (bdy <= 25) return 36;
- if (bdy <= 27) return 45;
- if (bdy <= 30) return 55;
- if (bdy <= 33) return 66;
- if (bdy <= 36) return 78;
- if (bdy <= 39) return 91;
- if (bdy <= 42) return 105;
- if (bdy <= 46) return 120;
- if (bdy <= 50) return 136;
- if (bdy <= 54) return 153;
- if (bdy <= 58) return 171;
- if (bdy <= 62) return 190;
- if (bdy <= 67) return 210;
- if (bdy <= 72) return 231;
- if (bdy <= 77) return 253;
- return 276;
+ if (bdy <= 19) return bdy - 14;
+ if (bdy <= 21) return 6;
+ if (bdy <= 23) return 7;
+ if (bdy <= 25) return 8;
+ if (bdy <= 27) return 9;
+ if (bdy <= 30) return 10;
+ if (bdy <= 33) return 11;
+ if (bdy <= 36) return 12;
+ if (bdy <= 39) return 13;
+ if (bdy <= 42) return 14;
+ if (bdy <= 46) return 15;
+ if (bdy <= 50) return 16;
+ if (bdy <= 54) return 17;
+ if (bdy <= 58) return 18;
+ if (bdy <= 62) return 19;
+ if (bdy <= 67) return 20;
+ if (bdy <= 72) return 21;
+ if (bdy <= 77) return 22;
+ if (bdy <= 82) return 23;
+ if (bdy <= 87) return 24;
+ if (bdy <= 93) return 25;
+ if (bdy <= 99) return 26;
+ return 27;
}
function calculateBodySave(bdy) {
@@ -1118,12 +1124,13 @@
if (bdy <= 24) return 14;
if (bdy <= 27) return 13;
if (bdy <= 30) return 12;
- if (bdy <= 34) return 11;
+ if (bdy <= 33) return 11;
if (bdy <= 39) return 10;
if (bdy <= 49) return 9;
if (bdy <= 59) return 8;
if (bdy <= 69) return 7;
- return 6;
+ if (bdy <= 99) return 6;
+ return 5;
}
function updateTotalArmorRating() {
@@ -1249,9 +1256,9 @@
}
function calculateShotDamageModifier(prc) {
- if (prc >= 78) return 22;
- if (prc >= 15) return Math.floor((prc - 12) / 3);
- return 0;
+ if (prc <= 14) return 0;
+ if (prc >= 20 && prc <= 23) return 3;
+ return Math.floor((prc - 12) / 3);
}
function calculateToHitModifier(perception) {
@@ -1259,7 +1266,6 @@
}
function calculateRangeModifier(prc) {
- if (prc >= 80) return 8;
if (prc >= 15) return Math.floor(prc / 10);
return 0;
}
@@ -1330,7 +1336,6 @@
}
function calculateSpellEffectModifier(int) {
- if (int >= 80) return 8;
if (int >= 15) return Math.floor(int / 10);
return 0;
}
@@ -1341,15 +1346,18 @@
if (int <= 9) return "d12";
if (int <= 12) return "d8";
if (int <= 14) return "d4";
- if (int <= 19) return "2d6";
- if (int <= 24) return "d8";
- if (int <= 29) return "d6";
+ if (int <= 17) return "d10";
+ if (int <= 19) return "d8";
+ if (int <= 24) return "d6";
+ if (int <= 29) return "d4";
if (int <= 39) return "2d10";
if (int <= 49) return "2d6";
- if (int <= 59) return "d10";
- if (int <= 69) return "d8";
- if (int <= 79) return "d6";
- return "d4";
+ if (int <= 59) return "1d10";
+ if (int <= 69) return "1d8";
+ if (int <= 79) return "1d6";
+ if (int <= 89) return "1d4";
+ if (int <= 99) return "1d3";
+ return "1d2";
}
function determineSpellTimeText(int) {
@@ -1441,37 +1449,34 @@
}
function calculateFortitude(wil) {
- if (wil >= 80) return 33;
- if (wil >= 15) return Math.floor((wil - 13) / 2);
+ if (wil >= 15) return wil - 14;
return 0;
}
function calculateManaAdjustment(wil) {
- // Mana adjustment uses the same calculation as HP adjustment
if (wil <= 14) return 0;
- if (wil == 15) return 1;
- if (wil == 16) return 3;
- if (wil == 17) return 6;
- if (wil == 18) return 10;
- if (wil == 19) return 15;
- if (wil <= 21) return 21;
- if (wil <= 23) return 28;
- if (wil <= 25) return 36;
- if (wil <= 27) return 45;
- if (wil <= 30) return 55;
- if (wil <= 33) return 66;
- if (wil <= 36) return 78;
- if (wil <= 39) return 91;
- if (wil <= 42) return 105;
- if (wil <= 46) return 120;
- if (wil <= 50) return 136;
- if (wil <= 54) return 153;
- if (wil <= 58) return 171;
- if (wil <= 62) return 190;
- if (wil <= 67) return 210;
- if (wil <= 72) return 231;
- if (wil <= 77) return 253;
- return 276;
+ if (wil <= 19) return wil - 14;
+ if (wil <= 21) return 6;
+ if (wil <= 23) return 7;
+ if (wil <= 25) return 8;
+ if (wil <= 27) return 9;
+ if (wil <= 30) return 10;
+ if (wil <= 33) return 11;
+ if (wil <= 36) return 12;
+ if (wil <= 39) return 13;
+ if (wil <= 42) return 14;
+ if (wil <= 46) return 15;
+ if (wil <= 50) return 16;
+ if (wil <= 54) return 17;
+ if (wil <= 59) return 18;
+ if (wil <= 64) return 19;
+ if (wil <= 69) return 20;
+ if (wil <= 74) return 21;
+ if (wil <= 80) return 22;
+ if (wil <= 86) return 23;
+ if (wil <= 92) return 24;
+ if (wil <= 98) return 25;
+ return 26;
}
/* CHARISMA */
@@ -1516,12 +1521,17 @@
}
function calculateSocialPool(chr) {
- if (chr <= 30) return Math.max(0, Math.floor(chr / 15));
- return Math.min(Math.floor((chr + 10) / 20), 4);
+ if (chr <= 14) return 0;
+ if (chr <= 19) return 1;
+ if (chr <= 29) return 2;
+ if (chr <= 39) return 3;
+ if (chr <= 59) return 4;
+ if (chr <= 79) return 5;
+ if (chr <= 99) return 6;
+ return 7;
}
function calculateReputationBonus(chr) {
- if (chr >= 80) return 40;
if (chr >= 15) return Math.floor(chr / 10) * 5;
return 0;
}
@@ -1587,37 +1597,17 @@
function calculateInfluence(allure) {
if (allure <= 3) return -10;
if (allure <= 6) return -5;
- if (allure >= 80) return 40;
if (allure >= 15) return Math.floor(allure / 10) * 5;
return 0;
}
function calculateSocialModifier(allure) {
- if (allure < 2) {
- return -3;
- }
- if (allure < 4) {
- return -2;
- }
- if (allure < 7) {
- return -1;
- }
- if (allure < 16) {
- return 0;
- }
- if (allure < 20) {
- return 1;
- }
- if (allure < 30) {
- return 2;
- }
- if (allure < 40) {
- return 3;
- }
- if (allure < 50) {
- return 4;
- }
- return 5;
+ if (allure <= 1) return -3;
+ if (allure <= 3) return -2;
+ if (allure <= 6) return -1;
+ if (allure <= 15) return 0;
+ if (allure <= 19) return 1;
+ return Math.floor(allure / 10);
}
/* SHARED ATTRIBUTE FUNCTIONS */
@@ -1985,6 +1975,14 @@
});
}
+ on("change:armordefbase change:armordefbonus", function () {
+ getAttrs(["ArmorDefBase", "ArmorDefBonus"], function (values) {
+ setAttrs({
+ ArmorDefTotal: Number(values.ArmorDefBase) + Number(values.ArmorDefBonus)
+ });
+ });
+ });
+
function updateUnarmed() {
getAttrs(["Unarmed", "RaceUnarmedRank", "Race"], function (values) {
const baseRank = Math.max(0, Number(values.Unarmed) - 2);
@@ -3477,7 +3475,7 @@
- | Unarmed |
+ Unarmed |
* |
|
- | Axes |
+ Axes |
* |
|
- | Flails |
+ Flails |
* |
|
- | Grenades |
+ Grenades |
* |
|
- | Hammers |
+ Hammers |
* |
|
- | Javelins |
+ Javelins |
* |
|
- | Knives |
+ Knives |
* |
|
- | Maces |
+ Maces |
* |
|
- | Polearms |
+ Polearms |
* |
|
- | Shurikens |
+ Shurikens |
* |
|
- | Staves |
+ Staves |
* |
|
- | Swords |
+ Swords |
* |
|
- | Whips |
+ Whips |
* |
|
- | Blind Fighting |
+ Blind Fighting |
2 |
|
- | Dual Melee |
+ Dual Melee |
3 |
|
- | Throwing |
+ Throwing |
1 |
|
- | Black Powder |
+ Black Powder |
1 |
|
- | Lances |
+ Lances |
* |
|
- | Pistols |
+ Pistols |
* |
|
- | Rifles |
+ Rifles |
* |
|
- | Shotguns |
+ Shotguns |
* |
|
- | Blind Shooting |
+ Blind Shooting |
2 |
|
- | Dual Shooting |
+ Dual Shooting |
3 |
|
- | Projectiles |
+ Projectiles |
1 |
|
- | Blow Guns |
+ Blow Guns |
* |
|
- | Bows |
+ Bows |
* |
|
- | Crossbows |
+ Crossbows |
* |
|
- | Hand Bows |
+ Hand Bows |
* |
|
- | Slings |
+ Slings |
* |
|
- | Siege Weapons |
+ Siege Weapons |
1 |
|
- | Ballistae |
+ Ballistae |
* |
|
- | Cannons |
+ Cannons |
* |
|
- | Catapults |
+ Catapults |
* |
|
- | Trebuchets |
+ Trebuchets |
* |
|
- | Sorcery |
+ Sorcery |
1 |
|
- | Black Magic |
+ Black Magic |
* |
|
- | Blue Magic |
+ Blue Magic |
* |
|
- | Brown Magic |
+ Brown Magic |
* |
|
- | Gold Magic |
+ Gold Magic |
* |
|
- | Gray Magic |
+ Gray Magic |
* |
|
- | Green Magic |
+ Green Magic |
* |
|
- | Red Magic |
+ Red Magic |
* |
|
- | White Magic |
+ White Magic |
* |
|
- | Light Armor |
+ Light Armor |
1 |
@@ -4305,7 +4303,7 @@
|
- | Medium Armor |
+ Medium Armor |
1 |
@@ -4327,7 +4325,7 @@
|
- | Heavy Armor |
+ Heavy Armor |
1 |
@@ -4349,7 +4347,7 @@
|
- | Shields |
+ Shields |
1 |
|
@@ -6138,25 +6136,25 @@
|
- | Unarmed |
+ Unarmed |
|
- | Melee |
+ Melee |
|
- | Projectile |
+ Projectile |
|
- | Magic |
+ Magic |
|
@@ -6167,17 +6165,31 @@
- |
+ |
Defense
|
+
- | Dodge |
+ Armor Defense |
+
+
+ |
+ |
+
+
+ | Dodge |
|
+
+
+ |
|
- | Parry |
+ Parry |
+
+
+ |
|
|
- | Block w/ Melee |
+ Block |
+
+
+ |
|
|
- | Block w/ Shield |
+ Shield Block |
+
+
+ |
|
|
- | Mental Defense |
+ Mental |
|
+
+
+ |
|
@@ -6259,7 +6304,7 @@
- | Initiative |
+ Initiative |
|
- | Total Armor Value |
+ Total Armor Value |
|
- | Toughness |
+ Toughness |
|
- | Fortitude |
+ Fortitude |
|
- | Fire |
+ Fire |
|
- | Cold |
+ Cold |
|
- | Toxic |
+ Toxic |
|
- | Electrical |
+ Electrical |
|
- | Sonic |
+ Sonic |
|
@@ -7211,7 +7256,37 @@
+
+
+
+
Shield
|
@@ -7223,7 +7298,7 @@
- | Shield |
+ Shield |
|
@@ -7241,7 +7316,7 @@
- |
+ |
Armor
|
@@ -7253,7 +7328,7 @@
- | Helmet |
+ Helmet |
|
@@ -7268,7 +7343,7 @@
- | Amulet |
+ Amulet |
|
@@ -7283,7 +7358,7 @@
- | Cloak |
+ Cloak |
|
@@ -7298,7 +7373,7 @@
- | Pauldrons |
+ Pauldrons |
|
@@ -7318,7 +7393,7 @@
- | Clothing |
+ Clothing |
|
@@ -7333,7 +7408,7 @@
- | Torso |
+ Torso |
|
@@ -7348,7 +7423,7 @@
- | Bracers |
+ Bracers |
|
@@ -7363,7 +7438,7 @@
- | Gloves |
+ Gloves |
|
@@ -7378,7 +7453,7 @@
- | Belt |
+ Belt |
|
@@ -7393,7 +7468,7 @@
- | Greaves |
+ Greaves |
|
@@ -7408,7 +7483,7 @@
- | Boots |
+ Boots |
|
@@ -7423,7 +7498,7 @@
- | Ring |
+ Ring |
|
@@ -7438,7 +7513,7 @@
- | Ring |
+ Ring |
|
@@ -7453,7 +7528,7 @@
- | Other |
+ Other |
|
@@ -7468,7 +7543,7 @@
- | Other |
+ Other |
|
@@ -7643,7 +7718,7 @@
- Equipment (Backpack)
+ Equipment (Backpack)