From f0bd3179bb4cd0545718a967c49a94c53facf228 Mon Sep 17 00:00:00 2001 From: Eunomiac Date: Fri, 24 Nov 2023 08:02:49 -0500 Subject: [PATCH] Fixed animations for consequences, added auto-costs --- css/style.min.css | 2036 ++++++++++++-------- css/tinymce/content.min.css | 246 ++- module/BladesActor.js | 2 - module/BladesRoll.js | 48 +- module/core/constants.js | 28 + module/core/gsap.js | 429 ++--- module/core/settings.js | 3 +- module/documents/actors/BladesPC.js | 19 + module/sheets/actor/BladesPCSheet.js | 2 +- module/sheets/roll/BladesConsequence.js | 59 +- scss/chat/_chat.scss | 157 +- scss/components/_comps.scss | 149 +- scss/sheets/_pc-sheet.scss | 6 +- templates/chat/roll-result-action-roll.hbs | 6 +- templates/components/armor.hbs | 2 +- templates/components/consequence.hbs | 245 ++- ts/@types/BladesConsequence.d.ts | 2 +- ts/@types/blades-roll.d.ts | 1 + ts/@types/index.d.ts | 3 +- ts/BladesActor.ts | 3 +- ts/BladesChat.ts | 1 + ts/BladesRoll.ts | 43 +- ts/core/constants.ts | 28 + ts/core/gsap.ts | 473 ++--- ts/core/settings.ts | 3 +- ts/documents/actors/BladesPC.ts | 25 + ts/sheets/actor/BladesPCSheet.ts | 2 +- ts/sheets/roll/BladesConsequence.ts | 54 +- 28 files changed, 2325 insertions(+), 1750 deletions(-) diff --git a/css/style.min.css b/css/style.min.css index f24a841d..084fabb3 100644 --- a/css/style.min.css +++ b/css/style.min.css @@ -1944,6 +1944,30 @@ template { max-height: var(--container-height); min-height: var(--container-height); } +:root .comp.consequence-display-container:nth-child(1), +:root * .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.5s ; +} +:root .comp.consequence-display-container:nth-child(2), +:root * .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 1.25s ; +} +:root .comp.consequence-display-container:nth-child(3), +:root * .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 2s ; +} +:root .comp.consequence-display-container:nth-child(1), +:root * .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.25s ; +} +:root .comp.consequence-display-container:nth-child(2), +:root * .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 0.5s ; +} +:root .comp.consequence-display-container:nth-child(3), +:root * .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 0.75s ; +} @keyframes icon-glow { 0% { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); @@ -1955,11 +1979,13 @@ template { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); } } -:root .comp.consequence-display-container.dead-roll, :root .comp.consequence-display-container .dead-roll *, -:root * .comp.consequence-display-container.dead-roll, -:root * .comp.consequence-display-container .dead-roll * { - animation: none; - pointer-events: none; +:root .comp.consequence-display-container:hover .consequence-icon-circle, +:root * .comp.consequence-display-container:hover .consequence-icon-circle { + animation: none !important; +} +:root .comp.consequence-display-container:hover .consequence-icon-circle img, +:root * .comp.consequence-display-container:hover .consequence-icon-circle img { + animation: none !important; } :root .comp.consequence-display-container.consequence-accepted, :root .comp.consequence-display-container.consequence-accepted *, :root * .comp.consequence-display-container.consequence-accepted, @@ -1993,22 +2019,24 @@ template { --csq-type-color: var(--blades-black-dark); --csq-name-color: var(--blades-red); } -:root .comp.consequence-display-container .accept-consequence, -:root * .comp.consequence-display-container .accept-consequence { - opacity: 0; -} :root .comp.consequence-display-container .resist-consequence, :root * .comp.consequence-display-container .resist-consequence { - opacity: 0; --csq-icon-dark: var(--blades-gold-dark); --csq-icon-med: var(--blades-gold); --csq-icon-bright: var(--blades-gold-bright); --csq-type-color: var(--blades-gold-dark); --csq-name-color: var(--blades-gold-bright); } -:root .comp.consequence-display-container .special-armor-consequence, -:root * .comp.consequence-display-container .special-armor-consequence { - opacity: 0; +:root .comp.consequence-display-container .armor-consequence, +:root * .comp.consequence-display-container .armor-consequence { + --csq-icon-dark: var(--blades-grey-dark); + --csq-icon-med: var(--blades-grey-bright); + --csq-icon-bright: var(--blades-white-bright); + --csq-type-color: var(--blades-grey-bright); + --csq-name-color: var(--blades-white-bright); +} +:root .comp.consequence-display-container .special-consequence, +:root * .comp.consequence-display-container .special-consequence { --csq-icon-dark: var(--blades-blue-dark); --csq-icon-med: var(--blades-blue); --csq-icon-bright: var(--blades-blue-bright); @@ -2029,29 +2057,65 @@ template { } :root .comp.consequence-display-container .consequence-interaction-pad, :root * .comp.consequence-display-container .consequence-interaction-pad { - display: none; - display: block; - position: absolute; z-index: 2; - pointer-events: auto; + pointer-events: none; height: 100%; top: 0; } -:root .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, -:root * .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad { +:root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, +:root * .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right { + position: absolute; + pointer-events: none; --pad-left-shift: calc(var(--container-left-shift) + (var(--container-height))); left: var(--pad-left-shift); width: calc(100% - var(--pad-left-shift)); } -:root .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, +:root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, +:root * .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left { + position: absolute; + pointer-events: none; + left: -190px; + width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); + display: flex; + flex-direction: column-reverse; + justify-content: stretch; + align-items: stretch; +} +:root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, +:root * .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad { + flex-grow: 1; + pointer-events: none; +} +:root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, +:root * .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist { + flex-basis: 50%; + flex-shrink: 0.6; +} +:root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, +:root * .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor { + flex-basis: 50%; + flex-shrink: 1; +} +:root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, +:root * .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special { + flex-basis: 50%; + flex-shrink: 1; +} +:root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, +:root * .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist { + flex-basis: 50%; + flex-grow: 1; + flex-shrink: 0; +} +:root .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root * .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, -:root * .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, +:root * .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root * .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { left: -200px; width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); } -:root .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, -:root * .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad { +:root .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, +:root * .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad { height: 50%; z-index: 3; } @@ -2071,10 +2135,6 @@ template { z-index: 2; transition: 0.2s; } -:root .comp.consequence-display-container .consequence-icon-container:hover, -:root * .comp.consequence-display-container .consequence-icon-container:hover { - filter: brightness(2); -} :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle, :root * .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle { position: absolute; @@ -2126,21 +2186,18 @@ template { :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence, :root * .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence { transform: scale(0.75); - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); pointer-events: auto; } :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img, :root * .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img { - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); } -:root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, -:root * .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover { - filter: brightness(2) !important; - animation: none; -} -:root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, +:root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root * .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, -:root * .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence { +:root * .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence { outline-width: 2px; } :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle .consequence-icon, @@ -2168,14 +2225,15 @@ template { background: var(--csq-icon-bright); display: block; } -:root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, +:root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root * .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, -:root * .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { +:root * .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { transform-origin: 100% 50%; } -:root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, -:root * .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { - width: calc(100% + 32px); +:root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, +:root * .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { + width: calc(100% + 40px); + margin-left: -10px; } :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label, :root * .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label { @@ -2225,24 +2283,11 @@ template { right: -7px; transform: skewX(-45deg); } -:root .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, -:root * .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container { +:root .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, +:root * .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container { right: 100%; bottom: 12px; } -:root .comp.consequence-display-container .consequence-blocker, -:root * .comp.consequence-display-container .consequence-blocker { - height: 100%; - background: var(--blades-black-dark); - transform-origin: 0% 50%; - opacity: 0; - position: absolute; - z-index: 10; - top: 0; - width: 100%; - z-index: 1; - left: calc(0.5 * var(--container-height) + 5px); -} :root .comp.consequence-display-container .consequence-type-container, :root * .comp.consequence-display-container .consequence-type-container { position: absolute; @@ -2256,6 +2301,7 @@ template { :root * .comp.consequence-display-container .consequence-type-container .consequence-type-bg { position: absolute; top: 0; + z-index: -1; left: -20px; height: 100%; width: 170px; @@ -2329,8 +2375,8 @@ template { :root * .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.resist-consequence { width: 120px; } -:root .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, -:root * .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence { +:root .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, +:root * .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence { width: 250px; } :root .comp.consequence-display-container .consequence-footer-container .consequence-footer-message, @@ -3707,6 +3753,24 @@ template { max-height: var(--container-height); min-height: var(--container-height); } +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.5s ; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 1.25s ; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 2s ; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.25s ; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 0.5s ; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 0.75s ; +} @keyframes icon-glow { 0% { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); @@ -3718,9 +3782,11 @@ template { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); } } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container.dead-roll, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .dead-roll * { - animation: none; - pointer-events: none; +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container:hover .consequence-icon-circle { + animation: none !important; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container:hover .consequence-icon-circle img { + animation: none !important; } :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container.consequence-accepted, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container.consequence-accepted * { --container-left-shift: 0px; @@ -3748,19 +3814,21 @@ template { --csq-type-color: var(--blades-black-dark); --csq-name-color: var(--blades-red); } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .accept-consequence { - opacity: 0; -} :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .resist-consequence { - opacity: 0; --csq-icon-dark: var(--blades-gold-dark); --csq-icon-med: var(--blades-gold); --csq-icon-bright: var(--blades-gold-bright); --csq-type-color: var(--blades-gold-dark); --csq-name-color: var(--blades-gold-bright); } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .special-armor-consequence { - opacity: 0; +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .armor-consequence { + --csq-icon-dark: var(--blades-grey-dark); + --csq-icon-med: var(--blades-grey-bright); + --csq-icon-bright: var(--blades-white-bright); + --csq-type-color: var(--blades-grey-bright); + --csq-name-color: var(--blades-white-bright); +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .special-consequence { --csq-icon-dark: var(--blades-blue-dark); --csq-icon-med: var(--blades-blue); --csq-icon-bright: var(--blades-blue-bright); @@ -3779,24 +3847,54 @@ template { left: -10px; } :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad { - display: none; - display: block; - position: absolute; z-index: 2; - pointer-events: auto; + pointer-events: none; height: 100%; top: 0; } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad { +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right { + position: absolute; + pointer-events: none; --pad-left-shift: calc(var(--container-left-shift) + (var(--container-height))); left: var(--pad-left-shift); width: calc(100% - var(--pad-left-shift)); } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left { + position: absolute; + pointer-events: none; + left: -190px; + width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); + display: flex; + flex-direction: column-reverse; + justify-content: stretch; + align-items: stretch; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad { + flex-grow: 1; + pointer-events: none; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist { + flex-basis: 50%; + flex-shrink: 0.6; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor { + flex-basis: 50%; + flex-shrink: 1; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special { + flex-basis: 50%; + flex-shrink: 1; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist { + flex-basis: 50%; + flex-grow: 1; + flex-shrink: 0; +} +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { left: -200px; width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad { +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad { height: 50%; z-index: 3; } @@ -3814,9 +3912,6 @@ template { z-index: 2; transition: 0.2s; } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container:hover { - filter: brightness(2); -} :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle { position: absolute; transform-origin: 100% 0%; @@ -3859,17 +3954,15 @@ template { } :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence { transform: scale(0.75); - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); pointer-events: auto; } :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img { - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover { - filter: brightness(2) !important; - animation: none; -} -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence { +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence { outline-width: 2px; } :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle .consequence-icon { @@ -3894,11 +3987,12 @@ template { background: var(--csq-icon-bright); display: block; } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { transform-origin: 100% 50%; } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { - width: calc(100% + 32px); +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { + width: calc(100% + 40px); + margin-left: -10px; } :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label { position: relative; @@ -3941,22 +4035,10 @@ template { right: -7px; transform: skewX(-45deg); } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container { +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container { right: 100%; bottom: 12px; } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-blocker { - height: 100%; - background: var(--blades-black-dark); - transform-origin: 0% 50%; - opacity: 0; - position: absolute; - z-index: 10; - top: 0; - width: 100%; - z-index: 1; - left: calc(0.5 * var(--container-height) + 5px); -} :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-type-container { position: absolute; height: calc(var(--container-height) * 0.33); @@ -3968,6 +4050,7 @@ template { :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-type-container .consequence-type-bg { position: absolute; top: 0; + z-index: -1; left: -20px; height: 100%; width: 170px; @@ -4034,7 +4117,7 @@ template { :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.resist-consequence { width: 120px; } -:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence { +:root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence { width: 250px; } :root body.vtt.game.system-eunos-blades #clocks-overlay .comp.consequence-display-container .consequence-footer-container .consequence-footer-message { @@ -6944,6 +7027,48 @@ template { max-height: var(--container-height); min-height: var(--container-height); } +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.5s ; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 1.25s ; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 2s ; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.25s ; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 0.5s ; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 0.75s ; +} @keyframes icon-glow { 0% { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); @@ -6955,17 +7080,19 @@ template { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); } } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container.dead-roll, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .dead-roll *, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container.dead-roll, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .dead-roll *, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container.dead-roll, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .dead-roll *, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container.dead-roll, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .dead-roll *, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container.dead-roll, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .dead-roll * { - animation: none; - pointer-events: none; +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container:hover .consequence-icon-circle, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container:hover .consequence-icon-circle, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container:hover .consequence-icon-circle, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container:hover .consequence-icon-circle, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container:hover .consequence-icon-circle { + animation: none !important; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container:hover .consequence-icon-circle img, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container:hover .consequence-icon-circle img, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container:hover .consequence-icon-circle img, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container:hover .consequence-icon-circle img, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container:hover .consequence-icon-circle img { + animation: none !important; } :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container.consequence-accepted, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container.consequence-accepted *, :root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container.consequence-accepted, @@ -7017,31 +7144,33 @@ template { --csq-type-color: var(--blades-black-dark); --csq-name-color: var(--blades-red); } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .accept-consequence, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .accept-consequence, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .accept-consequence, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .accept-consequence, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .accept-consequence { - opacity: 0; -} :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .resist-consequence, :root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .resist-consequence, :root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .resist-consequence, :root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .resist-consequence, :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .resist-consequence { - opacity: 0; --csq-icon-dark: var(--blades-gold-dark); --csq-icon-med: var(--blades-gold); --csq-icon-bright: var(--blades-gold-bright); --csq-type-color: var(--blades-gold-dark); --csq-name-color: var(--blades-gold-bright); } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .special-armor-consequence, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .special-armor-consequence, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .special-armor-consequence, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .special-armor-consequence, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .special-armor-consequence { - opacity: 0; +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .armor-consequence, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .armor-consequence, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .armor-consequence, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .armor-consequence, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .armor-consequence { + --csq-icon-dark: var(--blades-grey-dark); + --csq-icon-med: var(--blades-grey-bright); + --csq-icon-bright: var(--blades-white-bright); + --csq-type-color: var(--blades-grey-bright); + --csq-name-color: var(--blades-white-bright); +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .special-consequence, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .special-consequence, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .special-consequence, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .special-consequence, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .special-consequence { --csq-icon-dark: var(--blades-blue-dark); --csq-icon-med: var(--blades-blue); --csq-icon-bright: var(--blades-blue-bright); @@ -7068,44 +7197,98 @@ template { :root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad, :root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad, :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad { - display: none; - display: block; - position: absolute; z-index: 2; - pointer-events: auto; + pointer-events: none; height: 100%; top: 0; } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad { +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right { + position: absolute; + pointer-events: none; --pad-left-shift: calc(var(--container-left-shift) + (var(--container-height))); left: var(--pad-left-shift); width: calc(100% - var(--pad-left-shift)); } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left { + position: absolute; + pointer-events: none; + left: -190px; + width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); + display: flex; + flex-direction: column-reverse; + justify-content: stretch; + align-items: stretch; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad { + flex-grow: 1; + pointer-events: none; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist { + flex-basis: 50%; + flex-shrink: 0.6; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor { + flex-basis: 50%; + flex-shrink: 1; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special { + flex-basis: 50%; + flex-shrink: 1; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist { + flex-basis: 50%; + flex-grow: 1; + flex-shrink: 0; +} +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { left: -200px; width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad { +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad { height: 50%; z-index: 3; } @@ -7131,13 +7314,6 @@ template { z-index: 2; transition: 0.2s; } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container:hover, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container:hover, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container:hover, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container:hover, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container:hover { - filter: brightness(2); -} :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle, :root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle, :root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle, @@ -7216,7 +7392,8 @@ template { :root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence, :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence { transform: scale(0.75); - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); pointer-events: auto; } :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img, @@ -7224,25 +7401,18 @@ template { :root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img, :root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img, :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img { - animation: icon-glow 2s ease infinite; -} -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover { - filter: brightness(2) !important; - animation: none; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence { +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence { outline-width: 2px; } :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle .consequence-icon, @@ -7279,23 +7449,24 @@ template { background: var(--csq-icon-bright); display: block; } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { transform-origin: 100% 50%; } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { - width: calc(100% + 32px); +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { + width: calc(100% + 40px); + margin-left: -10px; } :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label, :root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label, @@ -7366,30 +7537,14 @@ template { right: -7px; transform: skewX(-45deg); } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container { +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container { right: 100%; bottom: 12px; } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-blocker, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-blocker, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-blocker, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-blocker, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-blocker { - height: 100%; - background: var(--blades-black-dark); - transform-origin: 0% 50%; - opacity: 0; - position: absolute; - z-index: 10; - top: 0; - width: 100%; - z-index: 1; - left: calc(0.5 * var(--container-height) + 5px); -} :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-type-container, :root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-type-container, :root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-type-container, @@ -7409,6 +7564,7 @@ template { :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-type-container .consequence-type-bg { position: absolute; top: 0; + z-index: -1; left: -20px; height: 100%; width: 170px; @@ -7503,11 +7659,11 @@ template { :root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.resist-consequence { width: 120px; } -:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, -:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, -:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, -:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, -:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence { +:root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, +:root body.vtt.game.system-eunos-blades #controls .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, +:root body.vtt.game.system-eunos-blades #navigation .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, +:root body.vtt.game.system-eunos-blades #hotbar .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, +:root body.vtt.game.system-eunos-blades #players .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence { width: 250px; } :root body.vtt.game.system-eunos-blades #interface .comp.consequence-display-container .consequence-footer-container .consequence-footer-message, @@ -9950,6 +10106,48 @@ template { max-height: var(--container-height); min-height: var(--container-height); } +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.5s ; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 1.25s ; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 2s ; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container:nth-child(1), +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.25s ; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container:nth-child(2), +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 0.5s ; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container:nth-child(3), +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 0.75s ; +} @keyframes icon-glow { 0% { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); @@ -9961,17 +10159,19 @@ template { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); } } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container.dead-roll, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .dead-roll *, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container.dead-roll, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .dead-roll *, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container.dead-roll, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .dead-roll *, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container.dead-roll, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .dead-roll *, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container.dead-roll, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .dead-roll * { - animation: none; - pointer-events: none; +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container:hover .consequence-icon-circle, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container:hover .consequence-icon-circle, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container:hover .consequence-icon-circle, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container:hover .consequence-icon-circle, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container:hover .consequence-icon-circle { + animation: none !important; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container:hover .consequence-icon-circle img, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container:hover .consequence-icon-circle img, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container:hover .consequence-icon-circle img, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container:hover .consequence-icon-circle img, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container:hover .consequence-icon-circle img { + animation: none !important; } :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container.consequence-accepted, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container.consequence-accepted *, :root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container.consequence-accepted, @@ -10023,31 +10223,33 @@ template { --csq-type-color: var(--blades-black-dark); --csq-name-color: var(--blades-red); } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .accept-consequence, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .accept-consequence, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .accept-consequence, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .accept-consequence, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .accept-consequence { - opacity: 0; -} :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .resist-consequence, :root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .resist-consequence, :root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .resist-consequence, :root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .resist-consequence, :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .resist-consequence { - opacity: 0; --csq-icon-dark: var(--blades-gold-dark); --csq-icon-med: var(--blades-gold); --csq-icon-bright: var(--blades-gold-bright); --csq-type-color: var(--blades-gold-dark); --csq-name-color: var(--blades-gold-bright); } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .special-armor-consequence, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .special-armor-consequence, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .special-armor-consequence, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .special-armor-consequence, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .special-armor-consequence { - opacity: 0; +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .armor-consequence, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .armor-consequence, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .armor-consequence, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .armor-consequence, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .armor-consequence { + --csq-icon-dark: var(--blades-grey-dark); + --csq-icon-med: var(--blades-grey-bright); + --csq-icon-bright: var(--blades-white-bright); + --csq-type-color: var(--blades-grey-bright); + --csq-name-color: var(--blades-white-bright); +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .special-consequence, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .special-consequence, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .special-consequence, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .special-consequence, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .special-consequence { --csq-icon-dark: var(--blades-blue-dark); --csq-icon-med: var(--blades-blue); --csq-icon-bright: var(--blades-blue-bright); @@ -10074,44 +10276,98 @@ template { :root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad, :root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad, :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad { - display: none; - display: block; - position: absolute; z-index: 2; - pointer-events: auto; + pointer-events: none; height: 100%; top: 0; } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad { +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right { + position: absolute; + pointer-events: none; --pad-left-shift: calc(var(--container-left-shift) + (var(--container-height))); left: var(--pad-left-shift); width: calc(100% - var(--pad-left-shift)); } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left { + position: absolute; + pointer-events: none; + left: -190px; + width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); + display: flex; + flex-direction: column-reverse; + justify-content: stretch; + align-items: stretch; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad { + flex-grow: 1; + pointer-events: none; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist { + flex-basis: 50%; + flex-shrink: 0.6; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor { + flex-basis: 50%; + flex-shrink: 1; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special { + flex-basis: 50%; + flex-shrink: 1; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist { + flex-basis: 50%; + flex-grow: 1; + flex-shrink: 0; +} +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { left: -200px; width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad { +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad { height: 50%; z-index: 3; } @@ -10137,13 +10393,6 @@ template { z-index: 2; transition: 0.2s; } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container:hover, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container:hover, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container:hover, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container:hover, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container:hover { - filter: brightness(2); -} :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle, :root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle, :root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle, @@ -10222,7 +10471,8 @@ template { :root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence, :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence { transform: scale(0.75); - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); pointer-events: auto; } :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img, @@ -10230,25 +10480,18 @@ template { :root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img, :root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img, :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img { - animation: icon-glow 2s ease infinite; -} -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover { - filter: brightness(2) !important; - animation: none; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence { +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence { outline-width: 2px; } :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle .consequence-icon, @@ -10285,23 +10528,24 @@ template { background: var(--csq-icon-bright); display: block; } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { transform-origin: 100% 50%; } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { - width: calc(100% + 32px); +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { + width: calc(100% + 40px); + margin-left: -10px; } :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label, :root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label, @@ -10372,30 +10616,14 @@ template { right: -7px; transform: skewX(-45deg); } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container { +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container { right: 100%; bottom: 12px; } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-blocker, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-blocker, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-blocker, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-blocker, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-blocker { - height: 100%; - background: var(--blades-black-dark); - transform-origin: 0% 50%; - opacity: 0; - position: absolute; - z-index: 10; - top: 0; - width: 100%; - z-index: 1; - left: calc(0.5 * var(--container-height) + 5px); -} :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-type-container, :root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-type-container, :root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-type-container, @@ -10415,6 +10643,7 @@ template { :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-type-container .consequence-type-bg { position: absolute; top: 0; + z-index: -1; left: -20px; height: 100%; width: 170px; @@ -10509,11 +10738,11 @@ template { :root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.resist-consequence { width: 120px; } -:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, -:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, -:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, -:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, -:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence { +:root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, +:root body.vtt.game.system-eunos-blades #controls #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, +:root body.vtt.game.system-eunos-blades #navigation #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, +:root body.vtt.game.system-eunos-blades #hotbar #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, +:root body.vtt.game.system-eunos-blades #players #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence { width: 250px; } :root body.vtt.game.system-eunos-blades #interface #chat .comp.consequence-display-container .consequence-footer-container .consequence-footer-message, @@ -12640,12 +12869,13 @@ template { place-self: stretch flex-end; z-index: 1; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message { - --chat-header-height: 20px; +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll], +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll], +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll], +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll], +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] { + --font-primary: Beaufort !important; + --chat-header-height: 15px; --chat-vertical-gap: 15px; --resistance-right-shift: 60px; --speaker-portrait-height: 100px; @@ -12656,18 +12886,40 @@ template { --bg-success: transparent; --bg-partial: transparent; --bg-fail: transparent; - --dice-strip-bg: var(--blades-black); + --dice-strip-bg: var(--blades-black-dark); --top-die-animation: none; --ghost-die-animation: none; - filter: blur(0.5px) drop-shadow(5px 5px 5px black) grayscale(1) brightness(0.7); - background: var(--blades-black); + --ghost-die-filter: blur(1px) sepia(1) saturate(2) hue-rotate(319deg) brightness(0.35); + background: var(--blades-black-dark); + background: transparent; border: 2px ouset var(--blades-white); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message:last-child, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message:last-child, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message:last-child, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message:last-child, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message:last-child { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll]:not(.active-chat-roll) .trait-label.trait-verb, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll]:not(.active-chat-roll) .trait-label.trait-verb, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll]:not(.active-chat-roll) .trait-label.trait-verb, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll]:not(.active-chat-roll) .trait-label.trait-verb, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll]:not(.active-chat-roll) .trait-label.trait-verb { + display: none; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence { + animation: none !important; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence img, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence img, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence img, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence img, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll]:not(.active-chat-roll) .consequence-icon-container .consequence-icon-circle.base-consequence img { + animation: none !important; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll].active-chat-roll, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll].active-chat-roll, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll].active-chat-roll, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll].active-chat-roll, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll].active-chat-roll { --bg-controlled: url("../assets/animations/chat/roll-position-controlled.webp"); --bg-risky: url("../assets/animations/chat/roll-position-risky.webp"); --bg-desperate: url("../assets/animations/chat/roll-position-desperate.webp"); @@ -12675,48 +12927,79 @@ template { --dice-strip-bg: url("../assets/animations/chat/lightning-ray.webp") no-repeat center / 100% auto; --top-die-animation: die-pulse 5s ease infinite; --ghost-die-animation: die-ghost 4s ease infinite; + --ghost-die-filter: sepia(1) saturate(2) hue-rotate(319deg); margin-bottom: 0px; opacity: 1; filter: drop-shadow(5px 5px 5px black); background: transparent; outline: none; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll].active-chat-roll .trait-label.trait-past-verb, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll].active-chat-roll .trait-label.trait-past-verb, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll].active-chat-roll .trait-label.trait-past-verb, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll].active-chat-roll .trait-label.trait-past-verb, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll].active-chat-roll .trait-label.trait-past-verb { + display: none; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll].active-chat-roll .message-content .blades-roll .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll].active-chat-roll .message-content .blades-roll .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll].active-chat-roll .message-content .blades-roll .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll].active-chat-roll .message-content .blades-roll .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll].active-chat-roll .message-content .blades-roll .dice-roll-strip { + margin-top: 5px; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll], +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll], +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll], +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll], +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] { overflow: visible; padding: 0; margin: var(--chat-vertical-gap) 0px; position: relative; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-header, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-header, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-header, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-header, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-header { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-header, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-header, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-header, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-header, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-header { position: relative; z-index: 3; height: var(--chat-header-height); + max-height: var(--chat-header-height); top: 4px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-header .message-sender, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-header .message-sender, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-header .message-sender, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-header .message-sender, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-header .message-sender { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-header .message-sender, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-header .message-sender, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-header .message-sender, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-header .message-sender, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-header .message-sender { + display: unset; + text-align: left !important; color: var(--blades-white-bright); - text-indent: 15px; + text-indent: 25px; text-shadow: var(--text-shadow-dark-strong); - line-height: calc(0.75 * var(--chat-header-height)); - font-size: calc(0.75 * var(--chat-header-height)); -} -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .chat-message-speaker-portrait-wrapper, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .chat-message-speaker-portrait-wrapper, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .chat-message-speaker-portrait-wrapper, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .chat-message-speaker-portrait-wrapper, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .chat-message-speaker-portrait-wrapper { + line-height: 20px; + font-size: 20px; + position: relative; + vertical-align: top; + left: 20px; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-header .message-sender::first-letter, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-header .message-sender::first-letter, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-header .message-sender::first-letter, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-header .message-sender::first-letter, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-header .message-sender::first-letter { + font-size: 32px; + line-height: 0.6; + vertical-align: -8px; + margin-right: -3px; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper { height: var(--speaker-portrait-height); width: calc(var(--speaker-portrait-height)); position: absolute; @@ -12731,11 +13014,11 @@ template { outline: 3px solid black; box-shadow: 0 0 5px 5px black; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait { height: 100%; width: 100%; box-shadow: inset 0px 0px 5px var(--blades-black-dark), inset 0px 0px 5px var(--blades-black-dark), inset 0px 0px 5px var(--blades-black-dark); @@ -12746,20 +13029,20 @@ template { align-items: center; scale: 0.9 0.9; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .portrait-image { height: 100%; transform-origin: 50% 50%; scale: 1.875 1.5; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .chat-message-speaker-portrait-wrapper .chat-message-speaker-portrait .chat-message-speaker-portrait-overlay { position: absolute; top: 0; left: 0; @@ -12768,53 +13051,60 @@ template { border-radius: calc(0.5 * var(--speaker-portrait-height)); box-shadow: inset 0px 0px 10px 5px var(--blades-black-dark); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message.resistance-roll, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message.resistance-roll, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message.resistance-roll, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message.resistance-roll, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message.resistance-roll { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll].resistance-roll, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll].resistance-roll, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll].resistance-roll, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll].resistance-roll, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll].resistance-roll { margin: 0; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message.resistance-roll .message-header, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message.resistance-roll .message-header, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message.resistance-roll .message-header, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message.resistance-roll .message-header, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message.resistance-roll .message-header { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll].resistance-roll .message-header, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll].resistance-roll .message-header, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll].resistance-roll .message-header, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll].resistance-roll .message-header, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll].resistance-roll .message-header { display: none; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message.action-roll + .chat-message.resistance-roll, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message.action-roll + .chat-message.resistance-roll, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message.action-roll + .chat-message.resistance-roll, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message.action-roll + .chat-message.resistance-roll, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message.action-roll + .chat-message.resistance-roll { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll].action-roll + .chat-message.resistance-roll, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll].action-roll + .chat-message.resistance-roll, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll].action-roll + .chat-message.resistance-roll, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll].action-roll + .chat-message.resistance-roll, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll].action-roll + .chat-message.resistance-roll { margin-top: calc(-1 * var(--chat-vertical-gap)); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll].action-roll.active-chat-roll + .chat-message.resistance-roll, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll].action-roll.active-chat-roll + .chat-message.resistance-roll, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll].action-roll.active-chat-roll + .chat-message.resistance-roll, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll].action-roll.active-chat-roll + .chat-message.resistance-roll, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll].action-roll.active-chat-roll + .chat-message.resistance-roll { + margin-top: 0; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll { position: relative; z-index: 2; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-position-risky .chat-header, -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-position-risky .consequence-container, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-position-risky .chat-header, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-position-risky .consequence-container, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-position-risky .chat-header, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-position-risky .consequence-container, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-position-risky .chat-header, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-position-risky .consequence-container, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-position-risky .chat-header, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-position-risky .consequence-container { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .chat-header, +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .consequence-container, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .chat-header, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .consequence-container, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .chat-header, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .consequence-container, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .chat-header, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .consequence-container, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .chat-header, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-position-risky .consequence-container { background: var(--bg-risky); background-size: cover; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .chat-message-bg, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .chat-message-bg, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .chat-message-bg, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .chat-message-bg, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .chat-message-bg { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-message-bg, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-message-bg, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-message-bg, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-message-bg, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-message-bg { position: absolute; display: none; top: -5px; @@ -12824,11 +13114,11 @@ template { z-index: -1; border-bottom-left-radius: 30px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .chat-result-bg, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .chat-result-bg, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .chat-result-bg, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .chat-result-bg, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .chat-result-bg { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg { position: absolute; top: unset; left: 0; @@ -12836,48 +13126,86 @@ template { z-index: 0; bottom: 0; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .chat-result-bg.roll-result-fail, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .chat-result-bg.roll-result-fail, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .chat-result-bg.roll-result-fail, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .chat-result-bg.roll-result-fail, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .chat-result-bg.roll-result-fail { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg.roll-result-fail, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg.roll-result-fail, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg.roll-result-fail, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg.roll-result-fail, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-result-bg.roll-result-fail { background: var(--bg-fail); background-size: cover; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .chat-header, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .chat-header, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .chat-header, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .chat-header, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .chat-header { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header { margin: 0; padding: 0; + text-align: left; background: transparent; box-shadow: none; color: var(--blades-grey); z-index: -1; + width: 100%; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label { + font-family: Beaufort; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-verb, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-verb, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-verb, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-verb, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-verb { + padding-left: 70px; + font-weight: 700; + color: var(--blades-gold-bright); + font-size: 32px; + line-height: 38px; + font-style: italic; + text-transform: uppercase; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-past-verb, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-past-verb, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-past-verb, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-past-verb, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .chat-header .trait-label.trait-past-verb { + padding-left: 70px; + font-weight: 700; + color: var(--blades-grey-bright); + font-size: 28px; + line-height: 38px; + text-transform: capitalize; + font-style: italic; + text-transform: uppercase; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll h1.chat-header, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll h1.chat-header, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll h1.chat-header, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll h1.chat-header, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll h1.chat-header { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll h1.chat-header, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll h1.chat-header, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll h1.chat-header, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll h1.chat-header, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll h1.chat-header { margin: 0; padding: 0; - text-align: center; background: transparent; box-shadow: none; - font-size: 32px; - line-height: 32px; - color: var(--blades-gold-bright); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip { position: relative; --die-size: 30px; z-index: -1; + --fade-none: 1; + --fade-lightest: 0.9; + --fade-light: 0.8; + --fade-med: 0.7; + --fade-strong: 0.6; + --fade-strongest: 0.5; display: flex; flex-direction: row; flex-wrap: nowrap; @@ -12887,7 +13215,7 @@ template { align-items: stretch; justify-content: center; gap: calc(var(--die-size) * 0.3); - margin: 5px 0px calc(var(--die-size) * -1 - 6px + 5px) 0px; + margin: 0px 0px calc(var(--die-size) * -1 - 6px + 5px) 0px; padding: 4px 50% 4px 0; background: var(--dice-strip-bg); background-position-y: 150%; @@ -12905,47 +13233,47 @@ template { } @keyframes die-ghost { 8% { - opacity: 0.25; + opacity: var(--fade-strongest); } 10% { - opacity: 0.6; + opacity: var(--fade-med); } 12% { - opacity: 0.25; + opacity: var(--fade-strongest); } 33% { - opacity: 0.1; + opacity: var(--fade-strongest); } 35% { - opacity: 0.6; + opacity: var(--fade-light); } 37% { - opacity: 0.1; + opacity: var(--fade-strongest); } 62% { - opacity: 0.5; + opacity: var(--fade-strong); } 64% { - opacity: 0.6; + opacity: var(--fade-lightest); } 66% { - opacity: 0.1; + opacity: var(--fade-strong); } 95% { - opacity: 0.1; + opacity: var(--fade-strongest); } 97% { - opacity: 0.6; + opacity: var(--fade-med); } 99% { - opacity: 0.1; + opacity: var(--fade-strongest); } } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die { display: block; position: relative; z-index: 5; @@ -12954,88 +13282,88 @@ template { overflow: hidden; border-radius: calc(0.2 * var(--die-size)); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die img, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die img, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die img, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die img, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die img { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die img, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die img, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die img, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die img, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die img { height: var(--die-size); width: var(--die-size); display: block; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical { box-shadow: 0px 0px 5px 3px var(--blades-gold-bright); animation: var(--top-die-animation); z-index: 1; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-critical:first-child + .blades-die-critical { margin-left: 3px; box-shadow: 0px 0px 5px 3px var(--blades-gold-bright); animation: var(--top-die-animation); animation-delay: 0.15s; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-success:first-child { filter: drop-shadow(0px 0px calc(var(--die-size) * 0.1) var(--blades-white-bright)); animation: var(--top-die-animation); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-partial:first-child { box-shadow: 0px 0px 5px var(--blades-white); animation: var(--top-die-animation); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost { box-shadow: 0px 0px 5px 1px var(--blades-red); - rotate: 10deg; + scale: 0.8; opacity: 0.8; - filter: brightness(0.35); + rotate: 10deg; animation: var(--ghost-die-animation); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img { - filter: blur(2px) sepia(1) saturate(2) hue-rotate(319deg); -} -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-ghost img { + filter: var(--ghost-die-filter); +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die.blades-die-resistance { filter: drop-shadow(0px 0px calc(var(--die-size) * 0.1) var(--blades-blue-bright)); scale: 1.25; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6), -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6), -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6), -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6), -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6) { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6), +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6), +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6), +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6), +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .dice-roll-strip .blades-die:nth-child(6) { margin-right: -50px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container { justify-content: space-between; align-items: center; margin: 0; @@ -13050,11 +13378,11 @@ template { --side-width-percent: 30%; background: var(--result-bg-color); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical { --result-bg-color: var(--blades-gold-bright); --result-color-main: var(--blades-black); --result-x-scale: 0.8; @@ -13063,19 +13391,19 @@ template { --side-color-secondary: var(--blades-grey-dark); --side-shadow-color: var(--blades-black-dark); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-critical .roll-result-container.roll-result-critical h3.roll-result-label.roll-result-bottom-label { transform-origin: 50% 50%; scale: 1.25 1; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-success, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-success, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-success, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-success, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-success { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-success, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-success, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-success, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-success, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-success { --result-bg-color: var(--blades-white-bright); --result-color-main: var(--blades-black); --result-x-scale: 0.7; @@ -13084,11 +13412,11 @@ template { --side-color-secondary: var(--blades-grey-dark); --side-shadow-color: var(--blades-black-dark); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial { --result-bg-color: var(--blades-grey-dark); --result-color-main: var(--blades-white); --result-x-scale: 0.75; @@ -13097,25 +13425,25 @@ template { --side-color-secondary: var(--blades-grey); --side-shadow-color: var(--blades-black-dark); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h2.roll-result-label.roll-result-top-label { margin-left: 15px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-partial .roll-result-container.roll-result-partial h3.roll-result-label.roll-result-bottom-label { margin-left: -15px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail { --result-bg-color: var(--blades-red-black); --result-color-main: var(--blades-red-bright); --result-x-scale: 1.25; @@ -13124,74 +13452,74 @@ template { --side-color-secondary: var(--blades-grey); --side-shadow-color: var(--blades-black-dark); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-result-fail .roll-result-container.roll-result-fail h2.roll-result-label.roll-result-main-label { margin-left: -170px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-controlled, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-controlled, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-controlled, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-controlled, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-controlled { - --side-left-x-scale: 0.7; -} -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-risky, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-risky, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-risky, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-risky, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-risky { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-controlled, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-controlled, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-controlled, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-controlled, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-controlled { + --side-left-x-scale: 0.8; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-risky, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-risky, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-risky, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-risky, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-risky { --side-left-x-scale: 1; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-desperate, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-desperate, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-desperate, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-desperate, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-position-desperate { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-desperate, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-desperate, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-desperate, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-desperate, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-position-desperate { --side-left-x-scale: 0.8; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-zero, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-zero, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-zero, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-zero, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-zero { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-zero, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-zero, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-zero, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-zero, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-zero { --side-right-x-scale: 1; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-limited, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-limited, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-limited, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-limited, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-limited { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-limited, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-limited, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-limited, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-limited, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-limited { --side-right-x-scale: 0.9; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-standard, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-standard, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-standard, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-standard, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-standard { - --side-right-x-scale: 0.9; -} -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-great, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-great, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-great, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-great, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-great { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-standard, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-standard, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-standard, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-standard, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-standard { + --side-right-x-scale: 0.8; +} +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-great, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-great, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-great, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-great, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-great { --side-right-x-scale: 1; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-extreme, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-extreme, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-extreme, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-extreme, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container.roll-effect-extreme { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-extreme, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-extreme, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-extreme, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-extreme, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container.roll-effect-extreme { --side-right-x-scale: 0.9; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container { position: absolute; width: calc(100% + 20px); left: -10px; @@ -13199,11 +13527,11 @@ template { overflow: hidden; top: var(--side-vertical-shift); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background { position: absolute; height: 100%; width: calc(var(--side-width-percent) + 100px); @@ -13211,76 +13539,78 @@ template { background: var(--side-bg-color); transform: skewX(-25deg); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-position-background { filter: drop-shadow(0px 0px 5px var(--side-shadow-color)); left: -100px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-background-container .roll-state-background.roll-effect-background { filter: drop-shadow(0px 0px 5px var(--side-shadow-color)); right: -100px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container { position: relative; height: var(--side-height); width: var(--side-width-percent); padding: 4px; gap: 0; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h4.roll-state-label { position: absolute; left: 30px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-left h3.roll-state { position: absolute; top: 5px; - left: -5px; + right: 5px; scale: var(--side-left-x-scale) 1; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h4.roll-state-label { position: absolute; - right: 45px; + text-align: left; + left: 10px; + width: 100%; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container.roll-state-container-right h3.roll-state { + width: 100%; position: absolute; bottom: 5px; - right: 5px; - text-align: right; - transform-origin: 100% 100%; + left: 5px; + text-align: left; scale: var(--side-right-x-scale) 1; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label { font-family: var(--font-emphasis-narrow); font-size: 12px; line-height: 12px; @@ -13291,19 +13621,19 @@ template { white-space: nowrap; color: var(--side-color-secondary); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h4.roll-state-label strong { color: var(--side-color-secondary) !important; font-weight: 900 !important; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-state-container h3.roll-state { white-space: nowrap; font-size: 18px; line-height: 18px; @@ -13311,21 +13641,21 @@ template { text-shadow: var(--text-shadow-dark-strong); color: var(--side-color-main); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container { width: calc(100% - 2 * var(--side-width-percent)); flex-basis: calc(100% - 2 * var(--side-width-percent)); flex-grow: 0; flex-shrink: 0; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label { background: none; box-shadow: none; color: var(--result-color-main); @@ -13335,56 +13665,57 @@ template { transform-origin: 50% 50%; scale: var(--result-x-scale) 1; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-top-label { font-size: 26px; line-height: 26px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-bottom-label { font-size: 14px; font-family: var(--font-emphasis-narrow); font-weight: bold; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .roll-outcome-container .roll-result-container .roll-result-label.roll-result-main-label { font-size: 32px; line-height: 32px; transform-origin: 50% 50%; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll .consequence-container, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll .consequence-container, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll .consequence-container, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll .consequence-container, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll .consequence-container { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll .consequence-container, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll .consequence-container, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll .consequence-container, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll .consequence-container, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll .consequence-container { padding-top: 10px; border-bottom-left-radius: 25px; z-index: -3; position: relative; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance { width: calc(100% - var(--resistance-right-shift)); left: var(--resistance-right-shift); top: 0; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-message-bg, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-message-bg, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-message-bg, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-message-bg, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-message-bg { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-message-bg, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-message-bg, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-message-bg, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-message-bg, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-message-bg { + display: block; background: var(--blades-grey); top: 0; height: 100%; @@ -13393,19 +13724,19 @@ template { border-bottom-left-radius: 16px; width: calc(100% + var(--resistance-right-shift)); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line { position: relative; justify-content: stretch; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-intro { color: var(--blades-gold-bright); z-index: 3; left: calc(-1 * var(--resistance-right-shift)); @@ -13421,39 +13752,39 @@ template { text-shadow: var(--text-shadow-dark-strong); top: 7px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .consequence-icon-img { height: 32px; border-radius: 16px; background: var(--blades-black); position: absolute; left: -10px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right { align-items: space-evenly; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice { height: 24px; justify-content: flex-start; align-items: center; padding: 0 10px 0 30px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-intro { display: none; color: var(--blades-black); margin-right: 5px; @@ -13463,117 +13794,117 @@ template { margin-top: 3px; text-transform: uppercase; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .trait-label { font-family: var(--font-emphasis); color: var(--blades-gold-bright); line-height: 24px; text-shadow: var(--text-shadow-emboss); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip { height: 24px; width: fit-content; padding: 4px 0px; gap: 3px; - margin-left: 5px; + margin: 0 0 0 5px; background: transparent; box-shadow: none; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die { height: 16px; border-radius: 3px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die img { height: 16px; width: 16px; filter: none; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance), -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance), -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance), -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance), -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance) { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance), +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance), +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance), +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance), +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die:not(.blades-die-resistance) { opacity: 0.5; filter: blur(1px); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-roll-attr-dice .dice-roll-strip .blades-die + .blades-die + .blades-die + .blades-die + .blades-die ~ .blades-die:last-child { margin-right: -50px; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3 { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row h3 { font-size: 12px; text-shadow: var(--text-shadow-dark-strong); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3 { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-bonus h3 { color: var(--blades-gold-bright); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3 { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .resistance-roll-one-line .resistance-roll-vertical-right .resistance-cost-row.cost-stress h3 { color: var(--blades-red-bright); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .chat-header.roll-trait { font-size: 14px; color: var(--blades-black); } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-type-container { display: none; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-original .comp.consequence-display-container .consequence-name-container { display: none; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content .blades-roll.roll-type-resistance .consequence-container.consequence-resisted { display: none; } -:root body.vtt.game.system-eunos-blades #interface #chat .chat-message .message-content ~ *, -:root body.vtt.game.system-eunos-blades #controls #chat .chat-message .message-content ~ *, -:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message .message-content ~ *, -:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message .message-content ~ *, -:root body.vtt.game.system-eunos-blades #players #chat .chat-message .message-content ~ * { +:root body.vtt.game.system-eunos-blades #interface #chat .chat-message[class*=-roll] .message-content ~ *, +:root body.vtt.game.system-eunos-blades #controls #chat .chat-message[class*=-roll] .message-content ~ *, +:root body.vtt.game.system-eunos-blades #navigation #chat .chat-message[class*=-roll] .message-content ~ *, +:root body.vtt.game.system-eunos-blades #hotbar #chat .chat-message[class*=-roll] .message-content ~ *, +:root body.vtt.game.system-eunos-blades #players #chat .chat-message[class*=-roll] .message-content ~ * { z-index: 3; } :root body.vtt.game.system-eunos-blades #interface .lightning-border-container { @@ -14577,6 +14908,24 @@ template { max-height: var(--container-height); min-height: var(--container-height); } +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.5s ; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 1.25s ; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 2s ; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.25s ; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 0.5s ; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 0.75s ; +} @keyframes icon-glow { 0% { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); @@ -14588,9 +14937,11 @@ template { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); } } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container.dead-roll, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .dead-roll * { - animation: none; - pointer-events: none; +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container:hover .consequence-icon-circle { + animation: none !important; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container:hover .consequence-icon-circle img { + animation: none !important; } :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container.consequence-accepted, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container.consequence-accepted * { --container-left-shift: 0px; @@ -14618,19 +14969,21 @@ template { --csq-type-color: var(--blades-black-dark); --csq-name-color: var(--blades-red); } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .accept-consequence { - opacity: 0; -} :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .resist-consequence { - opacity: 0; --csq-icon-dark: var(--blades-gold-dark); --csq-icon-med: var(--blades-gold); --csq-icon-bright: var(--blades-gold-bright); --csq-type-color: var(--blades-gold-dark); --csq-name-color: var(--blades-gold-bright); } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .special-armor-consequence { - opacity: 0; +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .armor-consequence { + --csq-icon-dark: var(--blades-grey-dark); + --csq-icon-med: var(--blades-grey-bright); + --csq-icon-bright: var(--blades-white-bright); + --csq-type-color: var(--blades-grey-bright); + --csq-name-color: var(--blades-white-bright); +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .special-consequence { --csq-icon-dark: var(--blades-blue-dark); --csq-icon-med: var(--blades-blue); --csq-icon-bright: var(--blades-blue-bright); @@ -14649,24 +15002,54 @@ template { left: -10px; } :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad { - display: none; - display: block; - position: absolute; z-index: 2; - pointer-events: auto; + pointer-events: none; height: 100%; top: 0; } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad { +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right { + position: absolute; + pointer-events: none; --pad-left-shift: calc(var(--container-left-shift) + (var(--container-height))); left: var(--pad-left-shift); width: calc(100% - var(--pad-left-shift)); } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left { + position: absolute; + pointer-events: none; + left: -190px; + width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); + display: flex; + flex-direction: column-reverse; + justify-content: stretch; + align-items: stretch; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad { + flex-grow: 1; + pointer-events: none; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist { + flex-basis: 50%; + flex-shrink: 0.6; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor { + flex-basis: 50%; + flex-shrink: 1; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special { + flex-basis: 50%; + flex-shrink: 1; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist { + flex-basis: 50%; + flex-grow: 1; + flex-shrink: 0; +} +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { left: -200px; width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad { +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad { height: 50%; z-index: 3; } @@ -14684,9 +15067,6 @@ template { z-index: 2; transition: 0.2s; } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container:hover { - filter: brightness(2); -} :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle { position: absolute; transform-origin: 100% 0%; @@ -14729,17 +15109,15 @@ template { } :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence { transform: scale(0.75); - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); pointer-events: auto; } :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img { - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover { - filter: brightness(2) !important; - animation: none; -} -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence { +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence { outline-width: 2px; } :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle .consequence-icon { @@ -14764,11 +15142,12 @@ template { background: var(--csq-icon-bright); display: block; } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { transform-origin: 100% 50%; } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { - width: calc(100% + 32px); +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { + width: calc(100% + 40px); + margin-left: -10px; } :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label { position: relative; @@ -14811,22 +15190,10 @@ template { right: -7px; transform: skewX(-45deg); } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container { +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container { right: 100%; bottom: 12px; } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-blocker { - height: 100%; - background: var(--blades-black-dark); - transform-origin: 0% 50%; - opacity: 0; - position: absolute; - z-index: 10; - top: 0; - width: 100%; - z-index: 1; - left: calc(0.5 * var(--container-height) + 5px); -} :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-type-container { position: absolute; height: calc(var(--container-height) * 0.33); @@ -14838,6 +15205,7 @@ template { :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-type-container .consequence-type-bg { position: absolute; top: 0; + z-index: -1; left: -20px; height: 100%; width: 170px; @@ -14904,7 +15272,7 @@ template { :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.resist-consequence { width: 120px; } -:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence { +:root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence { width: 250px; } :root body.vtt.game.system-eunos-blades .app.window-app .comp.consequence-display-container .consequence-footer-container .consequence-footer-message { @@ -18770,27 +19138,27 @@ template { pointer-events: none; } :root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .main-armor-control, -:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .special-armor-control { +:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .special-control { position: absolute; pointer-events: auto; } :root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .main-armor-control.main-armor-control, -:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .special-armor-control.main-armor-control { +:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .special-control.main-armor-control { z-index: 1; height: 100%; width: 100%; top: 0px; left: 0px; } -:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .main-armor-control.special-armor-control, -:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .special-armor-control.special-armor-control { +:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .main-armor-control.special-control, +:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .special-control.special-control { z-index: 2; height: 50%; width: 50%; right: 0px; bottom: 0px; } -:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .main-armor-control + .special-armor-control { +:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .main-armor-control + .special-control { display: none; } :root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses .comp-armor .svg-armor { diff --git a/css/tinymce/content.min.css b/css/tinymce/content.min.css index 0c6776f9..f4f2135f 100644 --- a/css/tinymce/content.min.css +++ b/css/tinymce/content.min.css @@ -1087,6 +1087,24 @@ html .comp.consequence-display-container, :root .comp.consequence-display-contai max-height: var(--container-height); min-height: var(--container-height); } +html .comp.consequence-display-container:nth-child(1), :root .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.5s ; +} +html .comp.consequence-display-container:nth-child(2), :root .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 1.25s ; +} +html .comp.consequence-display-container:nth-child(3), :root .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 2s ; +} +html .comp.consequence-display-container:nth-child(1), :root .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.25s ; +} +html .comp.consequence-display-container:nth-child(2), :root .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 0.5s ; +} +html .comp.consequence-display-container:nth-child(3), :root .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 0.75s ; +} @keyframes icon-glow { 0% { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); @@ -1098,9 +1116,11 @@ html .comp.consequence-display-container, :root .comp.consequence-display-contai filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); } } -html .comp.consequence-display-container.dead-roll, html .comp.consequence-display-container .dead-roll *, :root .comp.consequence-display-container.dead-roll, :root .comp.consequence-display-container .dead-roll * { - animation: none; - pointer-events: none; +html .comp.consequence-display-container:hover .consequence-icon-circle, :root .comp.consequence-display-container:hover .consequence-icon-circle { + animation: none !important; +} +html .comp.consequence-display-container:hover .consequence-icon-circle img, :root .comp.consequence-display-container:hover .consequence-icon-circle img { + animation: none !important; } html .comp.consequence-display-container.consequence-accepted, html .comp.consequence-display-container.consequence-accepted *, :root .comp.consequence-display-container.consequence-accepted, :root .comp.consequence-display-container.consequence-accepted * { --container-left-shift: 0px; @@ -1128,19 +1148,21 @@ html .comp.consequence-display-container .accept-consequence, :root .comp.conseq --csq-type-color: var(--blades-black-dark); --csq-name-color: var(--blades-red); } -html .comp.consequence-display-container .accept-consequence, :root .comp.consequence-display-container .accept-consequence { - opacity: 0; -} html .comp.consequence-display-container .resist-consequence, :root .comp.consequence-display-container .resist-consequence { - opacity: 0; --csq-icon-dark: var(--blades-gold-dark); --csq-icon-med: var(--blades-gold); --csq-icon-bright: var(--blades-gold-bright); --csq-type-color: var(--blades-gold-dark); --csq-name-color: var(--blades-gold-bright); } -html .comp.consequence-display-container .special-armor-consequence, :root .comp.consequence-display-container .special-armor-consequence { - opacity: 0; +html .comp.consequence-display-container .armor-consequence, :root .comp.consequence-display-container .armor-consequence { + --csq-icon-dark: var(--blades-grey-dark); + --csq-icon-med: var(--blades-grey-bright); + --csq-icon-bright: var(--blades-white-bright); + --csq-type-color: var(--blades-grey-bright); + --csq-name-color: var(--blades-white-bright); +} +html .comp.consequence-display-container .special-consequence, :root .comp.consequence-display-container .special-consequence { --csq-icon-dark: var(--blades-blue-dark); --csq-icon-med: var(--blades-blue); --csq-icon-bright: var(--blades-blue-bright); @@ -1159,24 +1181,54 @@ html .comp.consequence-display-container .consequence-bg-image, :root .comp.cons left: -10px; } html .comp.consequence-display-container .consequence-interaction-pad, :root .comp.consequence-display-container .consequence-interaction-pad { - display: none; - display: block; - position: absolute; z-index: 2; - pointer-events: auto; + pointer-events: none; height: 100%; top: 0; } -html .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad { +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right { + position: absolute; + pointer-events: none; --pad-left-shift: calc(var(--container-left-shift) + (var(--container-height))); left: var(--pad-left-shift); width: calc(100% - var(--pad-left-shift)); } -html .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, html .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, html .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left { + position: absolute; + pointer-events: none; + left: -190px; + width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); + display: flex; + flex-direction: column-reverse; + justify-content: stretch; + align-items: stretch; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad { + flex-grow: 1; + pointer-events: none; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist { + flex-basis: 50%; + flex-shrink: 0.6; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor { + flex-basis: 50%; + flex-shrink: 1; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special { + flex-basis: 50%; + flex-shrink: 1; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist { + flex-basis: 50%; + flex-grow: 1; + flex-shrink: 0; +} +html .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, html .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, html .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { left: -200px; width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); } -html .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad { +html .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad { height: 50%; z-index: 3; } @@ -1194,9 +1246,6 @@ html .comp.consequence-display-container .consequence-icon-container, :root .com z-index: 2; transition: 0.2s; } -html .comp.consequence-display-container .consequence-icon-container:hover, :root .comp.consequence-display-container .consequence-icon-container:hover { - filter: brightness(2); -} html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle { position: absolute; transform-origin: 100% 0%; @@ -1239,17 +1288,15 @@ html .comp.consequence-display-container .consequence-icon-container .consequenc } html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence { transform: scale(0.75); - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); pointer-events: auto; } html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img { - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); } -html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover { - filter: brightness(2) !important; - animation: none; -} -html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence { +html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence { outline-width: 2px; } html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle .consequence-icon, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle .consequence-icon { @@ -1274,11 +1321,12 @@ html .comp.consequence-display-container .consequence-icon-container .consequenc background: var(--csq-icon-bright); display: block; } -html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { +html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { transform-origin: 100% 50%; } -html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { - width: calc(100% + 32px); +html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { + width: calc(100% + 40px); + margin-left: -10px; } html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label { position: relative; @@ -1321,22 +1369,10 @@ html .comp.consequence-display-container .consequence-icon-container .consequenc right: -7px; transform: skewX(-45deg); } -html .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container { +html .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container { right: 100%; bottom: 12px; } -html .comp.consequence-display-container .consequence-blocker, :root .comp.consequence-display-container .consequence-blocker { - height: 100%; - background: var(--blades-black-dark); - transform-origin: 0% 50%; - opacity: 0; - position: absolute; - z-index: 10; - top: 0; - width: 100%; - z-index: 1; - left: calc(0.5 * var(--container-height) + 5px); -} html .comp.consequence-display-container .consequence-type-container, :root .comp.consequence-display-container .consequence-type-container { position: absolute; height: calc(var(--container-height) * 0.33); @@ -1348,6 +1384,7 @@ html .comp.consequence-display-container .consequence-type-container, :root .com html .comp.consequence-display-container .consequence-type-container .consequence-type-bg, :root .comp.consequence-display-container .consequence-type-container .consequence-type-bg { position: absolute; top: 0; + z-index: -1; left: -20px; height: 100%; width: 170px; @@ -1414,7 +1451,7 @@ html .comp.consequence-display-container .consequence-footer-container .conseque html .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.resist-consequence, :root .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.resist-consequence { width: 120px; } -html .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, :root .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence { +html .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, :root .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence { width: 250px; } html .comp.consequence-display-container .consequence-footer-container .consequence-footer-message, :root .comp.consequence-display-container .consequence-footer-container .consequence-footer-message { @@ -2730,6 +2767,24 @@ html .comp.consequence-display-container, :root .comp.consequence-display-contai max-height: var(--container-height); min-height: var(--container-height); } +html .comp.consequence-display-container:nth-child(1), :root .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.5s ; +} +html .comp.consequence-display-container:nth-child(2), :root .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 1.25s ; +} +html .comp.consequence-display-container:nth-child(3), :root .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 2s ; +} +html .comp.consequence-display-container:nth-child(1), :root .comp.consequence-display-container:nth-child(1) { + --csq-animation-delay: 0.25s ; +} +html .comp.consequence-display-container:nth-child(2), :root .comp.consequence-display-container:nth-child(2) { + --csq-animation-delay: 0.5s ; +} +html .comp.consequence-display-container:nth-child(3), :root .comp.consequence-display-container:nth-child(3) { + --csq-animation-delay: 0.75s ; +} @keyframes icon-glow { 0% { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); @@ -2741,9 +2796,11 @@ html .comp.consequence-display-container, :root .comp.consequence-display-contai filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); } } -html .comp.consequence-display-container.dead-roll, html .comp.consequence-display-container .dead-roll *, :root .comp.consequence-display-container.dead-roll, :root .comp.consequence-display-container .dead-roll * { - animation: none; - pointer-events: none; +html .comp.consequence-display-container:hover .consequence-icon-circle, :root .comp.consequence-display-container:hover .consequence-icon-circle { + animation: none !important; +} +html .comp.consequence-display-container:hover .consequence-icon-circle img, :root .comp.consequence-display-container:hover .consequence-icon-circle img { + animation: none !important; } html .comp.consequence-display-container.consequence-accepted, html .comp.consequence-display-container.consequence-accepted *, :root .comp.consequence-display-container.consequence-accepted, :root .comp.consequence-display-container.consequence-accepted * { --container-left-shift: 0px; @@ -2771,19 +2828,21 @@ html .comp.consequence-display-container .accept-consequence, :root .comp.conseq --csq-type-color: var(--blades-black-dark); --csq-name-color: var(--blades-red); } -html .comp.consequence-display-container .accept-consequence, :root .comp.consequence-display-container .accept-consequence { - opacity: 0; -} html .comp.consequence-display-container .resist-consequence, :root .comp.consequence-display-container .resist-consequence { - opacity: 0; --csq-icon-dark: var(--blades-gold-dark); --csq-icon-med: var(--blades-gold); --csq-icon-bright: var(--blades-gold-bright); --csq-type-color: var(--blades-gold-dark); --csq-name-color: var(--blades-gold-bright); } -html .comp.consequence-display-container .special-armor-consequence, :root .comp.consequence-display-container .special-armor-consequence { - opacity: 0; +html .comp.consequence-display-container .armor-consequence, :root .comp.consequence-display-container .armor-consequence { + --csq-icon-dark: var(--blades-grey-dark); + --csq-icon-med: var(--blades-grey-bright); + --csq-icon-bright: var(--blades-white-bright); + --csq-type-color: var(--blades-grey-bright); + --csq-name-color: var(--blades-white-bright); +} +html .comp.consequence-display-container .special-consequence, :root .comp.consequence-display-container .special-consequence { --csq-icon-dark: var(--blades-blue-dark); --csq-icon-med: var(--blades-blue); --csq-icon-bright: var(--blades-blue-bright); @@ -2802,24 +2861,54 @@ html .comp.consequence-display-container .consequence-bg-image, :root .comp.cons left: -10px; } html .comp.consequence-display-container .consequence-interaction-pad, :root .comp.consequence-display-container .consequence-interaction-pad { - display: none; - display: block; - position: absolute; z-index: 2; - pointer-events: auto; + pointer-events: none; height: 100%; top: 0; } -html .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.accept-consequence-pad { +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-right { + position: absolute; + pointer-events: none; --pad-left-shift: calc(var(--container-left-shift) + (var(--container-height))); left: var(--pad-left-shift); width: calc(100% - var(--pad-left-shift)); } -html .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, html .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, html .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left { + position: absolute; + pointer-events: none; + left: -190px; + width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); + display: flex; + flex-direction: column-reverse; + justify-content: stretch; + align-items: stretch; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad { + flex-grow: 1; + pointer-events: none; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-resist { + flex-basis: 50%; + flex-shrink: 0.6; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-armor { + flex-basis: 50%; + flex-shrink: 1; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left > .consequence-interaction-pad.interaction-pad-left-special { + flex-basis: 50%; + flex-shrink: 1; +} +html .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist, :root .comp.consequence-display-container .consequence-interaction-pad.interaction-pad-left .interaction-pad-left-resist { + flex-basis: 50%; + flex-grow: 1; + flex-shrink: 0; +} +html .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, html .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, html .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.resist-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.armor-consequence-pad { left: -200px; width: calc(200px + var(--container-left-shift) - var(--container-height) * 0); } -html .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-armor-consequence-pad { +html .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad, :root .comp.consequence-display-container .consequence-interaction-pad.special-consequence-pad { height: 50%; z-index: 3; } @@ -2837,9 +2926,6 @@ html .comp.consequence-display-container .consequence-icon-container, :root .com z-index: 2; transition: 0.2s; } -html .comp.consequence-display-container .consequence-icon-container:hover, :root .comp.consequence-display-container .consequence-icon-container:hover { - filter: brightness(2); -} html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle { position: absolute; transform-origin: 100% 0%; @@ -2882,17 +2968,15 @@ html .comp.consequence-display-container .consequence-icon-container .consequenc } html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence { transform: scale(0.75); - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); pointer-events: auto; } html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence img { - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); } -html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.base-consequence:hover { - filter: brightness(2) !important; - animation: none; -} -html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-armor-consequence { +html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.resist-consequence, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle.special-consequence { outline-width: 2px; } html .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle .consequence-icon, :root .comp.consequence-display-container .consequence-icon-container .consequence-icon-circle .consequence-icon { @@ -2917,11 +3001,12 @@ html .comp.consequence-display-container .consequence-icon-container .consequenc background: var(--csq-icon-bright); display: block; } -html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { +html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-resist-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { transform-origin: 100% 50%; } -html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-armor-button-bg { - width: calc(100% + 32px); +html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-bg.consequence-special-button-bg { + width: calc(100% + 40px); + margin-left: -10px; } html .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container .consequence-button-label { position: relative; @@ -2964,22 +3049,10 @@ html .comp.consequence-display-container .consequence-icon-container .consequenc right: -7px; transform: skewX(-45deg); } -html .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-armor-button-container { +html .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container, :root .comp.consequence-display-container .consequence-icon-container .consequence-button-container.consequence-special-button-container { right: 100%; bottom: 12px; } -html .comp.consequence-display-container .consequence-blocker, :root .comp.consequence-display-container .consequence-blocker { - height: 100%; - background: var(--blades-black-dark); - transform-origin: 0% 50%; - opacity: 0; - position: absolute; - z-index: 10; - top: 0; - width: 100%; - z-index: 1; - left: calc(0.5 * var(--container-height) + 5px); -} html .comp.consequence-display-container .consequence-type-container, :root .comp.consequence-display-container .consequence-type-container { position: absolute; height: calc(var(--container-height) * 0.33); @@ -2991,6 +3064,7 @@ html .comp.consequence-display-container .consequence-type-container, :root .com html .comp.consequence-display-container .consequence-type-container .consequence-type-bg, :root .comp.consequence-display-container .consequence-type-container .consequence-type-bg { position: absolute; top: 0; + z-index: -1; left: -20px; height: 100%; width: 170px; @@ -3057,7 +3131,7 @@ html .comp.consequence-display-container .consequence-footer-container .conseque html .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.resist-consequence, :root .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.resist-consequence { width: 120px; } -html .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence, :root .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-armor-consequence { +html .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence, :root .comp.consequence-display-container .consequence-footer-container .consequence-footer-bg.special-consequence { width: 250px; } html .comp.consequence-display-container .consequence-footer-container .consequence-footer-message, :root .comp.consequence-display-container .consequence-footer-container .consequence-footer-message { diff --git a/module/BladesActor.js b/module/BladesActor.js index f047e2ab..de4722fa 100644 --- a/module/BladesActor.js +++ b/module/BladesActor.js @@ -8,13 +8,11 @@ import { SelectionCategory } from "./BladesDialog.js"; // #endregion // Blades Theme Song: "Bangkok" from The Gray Man soundtrack: https://www.youtube.com/watch?v=cjjImvMqYlo&list=OLAK5uy_k9cZDd1Fbpd25jfDtte5A6HyauD2-cwgk&index=2 // Also check out Discord thread: https://discord.com/channels/325094888133885952/1152316839163068527 -// eslint-disable-next-line no-shadow var BladesActorUniqueTags; (function (BladesActorUniqueTags) { BladesActorUniqueTags["CharacterCrew"] = "CharacterCrew"; BladesActorUniqueTags["VicePurveyor"] = "VicePurveyor"; })(BladesActorUniqueTags || (BladesActorUniqueTags = {})); -// eslint-disable-next-line no-shadow var BladesItemUniqueTypes; (function (BladesItemUniqueTypes) { BladesItemUniqueTypes["background"] = "background"; diff --git a/module/BladesRoll.js b/module/BladesRoll.js index 7991ef34..03a8387b 100644 --- a/module/BladesRoll.js +++ b/module/BladesRoll.js @@ -1860,6 +1860,24 @@ class BladesRoll extends DocumentSheet { } get rollDowntimeAction() { return this.flagData.rollDowntimeAction; } get rollTrait() { return this.flagData.rollTrait; } + get rollTraitVerb() { + if (!this.rollTrait) { + return undefined; + } + if (!(this.rollTrait in C.ActionVerbs)) { + return undefined; + } + return C.ActionVerbs[this.rollTrait]; + } + get rollTraitPastVerb() { + if (!this.rollTrait) { + return undefined; + } + if (!(this.rollTrait in C.ActionPastVerbs)) { + return undefined; + } + return C.ActionPastVerbs[this.rollTrait]; + } _rollTraitValOverride; get rollTraitValOverride() { return this._rollTraitValOverride; } set rollTraitValOverride(val) { this._rollTraitValOverride = val; } @@ -2867,6 +2885,7 @@ class BladesRoll extends DocumentSheet { } // #endregion async resolveRoll() { + this.close(); await this.roll.evaluate({ async: true }); await this.setRollPhase(RollPhase.AwaitingConsequences); switch (this.rollType) { @@ -2877,17 +2896,38 @@ class BladesRoll extends DocumentSheet { else { await this.setRollPhase(RollPhase.Complete); } + // Apply Stress & Special Armor Costs + if (BladesPC.IsType(this.rollPrimaryDoc)) { + const rollCostData = this.getRollCosts(); + const stressCost = this.getTotalStressCost(this.getStressCosts(rollCostData)); + if (stressCost !== 0) { + this.rollPrimaryDoc.adjustStress(stressCost); + } + if (this.getSpecArmorCost(rollCostData)) { + this.rollPrimaryDoc.spendSpecialArmor(); + } + } + // const rollCosts = get.roll.getTotalStressCost(get.roll.getStressCosts(get.roll.getRollCosts())) await this.outputRollToChat(); if (this.rollPrimary.rollPrimaryDoc) { this.rollPrimary.rollPrimaryDoc.unsetFlag("eunos-blades", "isWorsePosition"); } - this.close(); break; } case RollType.Resistance: { await this.setRollPhase(RollPhase.Complete); + const { id: csqID } = this.rollConsequence ?? {}; + const { chatID } = this.rollConsequence?.resistTo ?? {}; + if (csqID && chatID) { + const resistedCsq = await BladesConsequence.GetFromID(chatID, csqID); + if (resistedCsq) { + await resistedCsq.applyResistedConsequence(); + } + } + if (BladesPC.IsType(this.rollPrimaryDoc)) { + this.rollPrimaryDoc.adjustStress(this.resistanceStressCost); + } await this.outputRollToChat(); - this.close(); break; } } @@ -2915,7 +2955,7 @@ class BladesRoll extends DocumentSheet { else if (rollPrimaryID) { chatSpeaker.actor = rollPrimaryID; } - chatSpeaker.alias = `${chatSpeaker.alias} Rolls ...`; + // chatSpeaker.alias = `${chatSpeaker.alias} Rolls ...`; return chatSpeaker; } async getResultHTML(chatMsgID) { @@ -2963,7 +3003,7 @@ class BladesRoll extends DocumentSheet { case "accept-consequence": return thisCsq.acceptConsequence(); case "resist-consequence": return thisCsq.resistConsequence(); case "armor-consequence": return thisCsq.resistArmorConsequence(); - case "special-armor-consequence": return thisCsq.resistSpecialArmorConsequence(); + case "special-consequence": return thisCsq.resistSpecialArmorConsequence(); } return undefined; } diff --git a/module/core/constants.js b/module/core/constants.js index 9463fcd4..6a4256e2 100644 --- a/module/core/constants.js +++ b/module/core/constants.js @@ -621,6 +621,34 @@ const C = { [ActionTrait.consort]: "

When you Consort, you socialize with friends and contacts.


", [ActionTrait.sway]: "

When you Sway, you influence someone with guile, charm, or argument.


" }, + ActionVerbs: { + [ActionTrait.hunt]: "hunts", + [ActionTrait.study]: "studies", + [ActionTrait.survey]: "surveys", + [ActionTrait.tinker]: "tinkers", + [ActionTrait.finesse]: "finesses", + [ActionTrait.prowl]: "prowls", + [ActionTrait.skirmish]: "skirmishes", + [ActionTrait.wreck]: "wrecks", + [ActionTrait.attune]: "attunes", + [ActionTrait.command]: "commands", + [ActionTrait.consort]: "consorts", + [ActionTrait.sway]: "sways" + }, + ActionPastVerbs: { + [ActionTrait.hunt]: "hunted", + [ActionTrait.study]: "studied", + [ActionTrait.survey]: "surveyed", + [ActionTrait.tinker]: "tinkered", + [ActionTrait.finesse]: "finessed", + [ActionTrait.prowl]: "prowled", + [ActionTrait.skirmish]: "skirmished", + [ActionTrait.wreck]: "wrecked", + [ActionTrait.attune]: "attuned", + [ActionTrait.command]: "commanded", + [ActionTrait.consort]: "consorted", + [ActionTrait.sway]: "swayed" + }, TraumaTooltips: { Cold: "You're not moved by emotional appeals or social bonds.", Haunted: "You're often lost in reverie, reliving past horrors, seeing things.", diff --git a/module/core/gsap.js b/module/core/gsap.js index df92bd0c..a1d4055b 100644 --- a/module/core/gsap.js +++ b/module/core/gsap.js @@ -11,27 +11,56 @@ const gsapEffects = { const csqRoot = U.gsap.utils.selector(csqContainer); // ELog.checkLog3("gsap", "gsapEffects.consequenceEnter -> THIS", {this: this, csqRoot}); const csqIconCircle = csqRoot(".consequence-icon-circle.base-consequence"); - const csqBaseElems = csqRoot(".base-consequence:not(.consequence-icon-circle)"); - const csqAcceptElems = csqRoot(".accept-consequence:not(.consequence-icon-circle):not(.consequence-button-container)"); - const tl = U.gsap.timeline({ paused: true, defaults: { overwrite: "auto" } }); - // Fade out base-consequence components - if (csqBaseElems.length > 0) { - tl.fromTo(csqBaseElems, { + // const csqBaseElems = csqRoot(".base-consequence:not(.consequence-icon-circle)"); + const csqBaseTypeElem = csqRoot(".consequence-type.base-consequence"); + const csqAcceptTypeElem = csqRoot(".consequence-type.accept-consequence"); + const csqBaseNameElem = csqRoot(".consequence-name.base-consequence"); + const csqAcceptNameElem = csqRoot(".consequence-name.accept-consequence"); + // const csqAcceptElems = csqRoot(".accept-consequence:not(.consequence-icon-circle):not(.consequence-button-container)"); + const tl = U.gsap.timeline({ paused: true, defaults: {} }); + // Initialize name and type opacities. + if (csqAcceptTypeElem.length > 0) { + tl.set(csqAcceptTypeElem, { opacity: 0 }, 0); + } + if (csqAcceptNameElem.length > 0) { + tl.set(csqAcceptNameElem, { opacity: 0 }, 0); + } + // Crossfade base/accept type lines + if (csqBaseTypeElem.length > 0) { + tl.fromTo(csqBaseTypeElem, { opacity: 1 }, { opacity: 0, - duration: config.duration / 3, - ease: "none" + duration: 0.25, + ease: "sine" }, 0); } - // Fade in accept-consequence components - if (csqAcceptElems.length > 0) { - tl.fromTo(csqAcceptElems, { + if (csqAcceptTypeElem.length > 0) { + tl.fromTo(csqAcceptTypeElem, { opacity: 0 }, { opacity: 1, - duration: config.duration / 3, - ease: "none" + duration: 0.25, + ease: "sine" + }, 0); + } + // Crossfade base/accept name lines + if (csqBaseNameElem.length > 0) { + tl.fromTo(csqBaseNameElem, { + opacity: 1 + }, { + opacity: 0, + duration: 0.25, + ease: "sine" + }, 0); + } + if (csqAcceptNameElem.length > 0) { + tl.fromTo(csqAcceptNameElem, { + opacity: 0 + }, { + opacity: 1, + duration: 0.25, + ease: "sine" }, 0); } // Brighten the entire container slightly @@ -47,14 +76,10 @@ const gsapEffects = { // Enlarge the icon circle, add stroke if (csqIconCircle.length > 0) { tl.fromTo(csqIconCircle, { - // xPercent: -50, - // yPercent: -50, scale: 0.75, outlineColor: C.Colors.dBLACK, outlineWidth: 0 }, { - // xPercent: -50, - // yPercent: -50, scale: 0.85, outlineColor: C.Colors.GREY, outlineWidth: 1, @@ -75,17 +100,23 @@ const gsapEffects = { }, csqClickIcon: { effect: (csqIconContainer, config) => { - const csqRoot = U.gsap.utils.selector(csqIconContainer); - const csqBackgroundImg = U.gsap.utils.selector($(csqIconContainer).parent())(".consequence-bg-image"); + const csqContainer = $(csqIconContainer).closest(".comp.consequence-display-container"); + const csqRoot = U.gsap.utils.selector(csqContainer[0]); + const iconRoot = U.gsap.utils.selector(csqIconContainer); + const csqBackgroundImg = csqRoot(".consequence-bg-image"); const csqInteractionPads = csqRoot(".consequence-interaction-pad"); - // const csqIconCircleBase = csqRoot(".consequence-icon-circle.base-consequence"); - const csqIconCircleAccept = csqRoot(".consequence-icon-circle.accept-consequence"); - const csqButtonContainers = csqRoot(".consequence-button-container"); - const tl = U.gsap.timeline({ paused: true, defaults: { overwrite: "auto" } }); - // Initialize interaction pads to display: none - if (csqInteractionPads.length) { - tl.set(csqInteractionPads, { display: "none" }); - } + const csqIconCircleBase = iconRoot(".consequence-icon-circle.base-consequence"); + const csqIconCircleAccept = iconRoot(".consequence-icon-circle.accept-consequence"); + const csqButtonContainers = iconRoot(".consequence-button-container"); + const tl = U.gsap.timeline({ + paused: true, + onComplete: function () { + $(csqInteractionPads).css("pointerEvents", "auto"); + }, + onReverseComplete: function () { + $(csqInteractionPads).css("pointerEvents", "none"); + } + }); // Slide out the background if (csqBackgroundImg.length) { tl.fromTo(csqBackgroundImg, { @@ -98,32 +129,31 @@ const gsapEffects = { ease: "back" }, 0); } + // Fade out the base consequence icon circle + if (csqIconCircleBase.length > 0) { + tl.fromTo(csqIconCircleBase, { + opacity: 1 + }, { + opacity: 0, + duration: 0.25, + ease: "sine.out" + }, 0); + } // Fade in the accept consequence icon circle, enlarging the stroke if (csqIconCircleAccept.length > 0) { tl.fromTo(csqIconCircleAccept, { - opacity: 0, - // xPercent: -50, - // yPercent: -50, - scale: 0.85 + opacity: 0 }, { opacity: 1, - // xPercent: -50, - // yPercent: -50, duration: 0.15, ease: "sine" - }, 0); - } - if (csqIconCircleAccept.length > 0) { - tl.fromTo(csqIconCircleAccept, { + }, 0) + .fromTo(csqIconCircleAccept, { outlineWidth: 1, - // xPercent: -50, - // yPercent: -50, scale: 0.85 }, { - scale: 1, - // xPercent: -50, - // yPercent: -50, outlineWidth: 2, + scale: 1, duration: 0.25, ease: "sine" }, 0.175); @@ -143,10 +173,6 @@ const gsapEffects = { ease: `${config.ease}.inOut(${config.easeStrength})` }, 0); } - // Finally, toggle on interaction pads - if (csqInteractionPads.length) { - tl.set(csqInteractionPads, { display: "block" }); - } return tl; }, defaults: { @@ -157,7 +183,7 @@ const gsapEffects = { easeStrength: 1.5 } }, - csqEnterAccept: { + csqEnterRight: { effect: (csqContainer) => { const csqRoot = U.gsap.utils.selector(csqContainer); const typeLine = csqRoot(".consequence-type-container .consequence-type.accept-consequence"); @@ -166,7 +192,7 @@ const gsapEffects = { const buttonBg = buttonRoot(".consequence-button-bg"); const buttonIcon = buttonRoot(".button-icon i"); const buttonLabel = buttonRoot(".consequence-button-label"); - const tl = U.gsap.timeline({ paused: true, defaults: { overwrite: "auto" } }); + const tl = U.gsap.timeline({ paused: true, defaults: {} }); // Turn type line white if (typeLine.length > 0) { tl.fromTo(typeLine, { @@ -238,110 +264,62 @@ const gsapEffects = { }, defaults: {} }, - csqEnterResist: { + csqEnterLeft: { effect: (csqContainer) => { const csqRoot = U.gsap.utils.selector(csqContainer); - const typeLine = csqRoot(".consequence-type-container .consequence-type.resist-consequence"); - // const acceptElems = csqRoot(".accept-consequence"); - // const specialArmorElems = csqRoot(".special-armor-consequence"); - const blockedElem = csqRoot(".consequence-blocker.resist-consequence"); - const footerBg = csqRoot(".consequence-footer-container .consequence-footer-bg.resist-consequence"); - const attrElem = csqRoot(".consequence-footer-container .consequence-resist-attribute"); - const resistCsqName = csqRoot(".consequence-name.resist-consequence"); - const iconCircle = csqRoot(".consequence-icon-circle.resist-consequence"); - const buttonRoot = U.gsap.utils.selector(csqRoot(".consequence-button-container.consequence-resist-button-container")); - const buttonBg = buttonRoot(".consequence-button-bg"); - eLog.checkLog3("gsap", "Resist Button BG", buttonBg); - const buttonIcon = buttonRoot(".button-icon i"); - const buttonLabel = buttonRoot(".consequence-button-label"); - const tl = U.gsap.timeline({ paused: true, defaults: { overwrite: "auto" } }); - // // Fade out all accept elems and special armor elems - // if ([...acceptElems, ...specialArmorElems].length > 0) { - // tl.to([...acceptElems, ...specialArmorElems], { - // opacity: 0, - // duration: 0.25, - // ease: "sine.out" - // }); - // } - // Quickly fade-in the right side blocker - if (blockedElem.length > 0) { - tl.fromTo(blockedElem, { - opacity: 0 - }, { - opacity: 1, - duration: 0.25, - ease: "sine" - }, 0); - } - // Slide out .consequence-type.resist-consequence from left + const typeLine = csqRoot(".consequence-type-container .consequence-type.accept-consequence"); + const nameLine = csqRoot(".consequence-name-container .consequence-name.accept-consequence"); + const acceptIconCircle = csqRoot(".consequence-icon-circle.accept-consequence"); + const acceptButton = csqRoot(".consequence-button-container.consequence-accept-button-container"); + const tl = U.gsap.timeline({ paused: true, defaults: {} }); + // Fade out type line if (typeLine.length > 0) { - tl.fromTo(typeLine, { - x: -15, - scaleX: 0, - opacity: 1, - color: C.Colors.dGOLD - }, { - x: 0, - scaleX: 1, - opacity: 1, - color: C.Colors.dGOLD, - duration: 0.5, - ease: "back.out" - }, 0); - } - // Slide out .consequence-resist-button-bg from right - if (buttonBg.length > 0) { - tl.fromTo(buttonBg, { - scaleX: 0, - skewX: 0, - opacity: 1 - }, { - scaleX: 1, - skewX: -45, - opacity: 1, - duration: 0.5, - ease: "back.inOut" + tl.to(typeLine, { + opacity: 0, + duration: 0.15, + ease: "sine.inOut" }, 0); } - // Slide out .consequence-footer-bg.resist-consequence from left - if (footerBg.length > 0) { - tl.fromTo(footerBg, { - scaleX: 0, - skewX: 0, - opacity: 1 - }, { - scaleX: 1, - skewX: -45, - opacity: 1, - duration: 0.5, - ease: "back.inOut" + // Fade out name + if (nameLine.length > 0) { + tl.to(nameLine, { + opacity: 0, + duration: 0.15, + ease: "sine.inOut" }, 0); } - // Slide out .consequence-resist-attribute from left - if (attrElem.length > 0) { - tl.fromTo(attrElem, { - scaleX: 0, - opacity: 1 - }, { - scaleX: 1, - opacity: 1, - duration: 0.5, - ease: "back.inOut" + // Fade out icon + if (acceptIconCircle.length > 0) { + tl.to(acceptIconCircle, { + opacity: 0, + duration: 0.15, + ease: "sine.inOut" }, 0); } - // Slide out .consequence-name.resist-consequence from left - if (resistCsqName.length > 0) { - tl.fromTo(resistCsqName, { - scaleX: 0, + // Fade out accept button + if (acceptButton.length > 0) { + tl.fromTo(acceptButton, { opacity: 1 }, { - scaleX: 1, - opacity: 1, - duration: 0.5, - ease: "back.inOut" + opacity: 0, + duration: 0.25, + ease: "sine.inOut" }, 0); } - // Fade in .consequence-icon-circle.resist-consequence + return tl; + }, + defaults: {} + }, + csqEnterSubLeft: { + effect: (csqContainer, config) => { + const csqRoot = U.gsap.utils.selector(csqContainer); + const iconCircle = csqRoot(`.consequence-icon-circle.${config.type}-consequence`); + const typeLine = csqRoot(`.consequence-type-container .consequence-type.${config.type}-consequence`); + const nameLine = csqRoot(`.consequence-name.${config.type}-consequence`); + const footerBg = csqRoot(`.consequence-footer-container .consequence-footer-bg.${config.type}-consequence`); + const footerMsg = csqRoot(`.consequence-footer-container .consequence-footer-message.${config.type}-consequence`); + const tl = U.gsap.timeline({ paused: true, defaults: {} }); + // Fade in icon circle if (iconCircle.length > 0) { tl.fromTo(iconCircle, { opacity: 0 @@ -351,83 +329,27 @@ const gsapEffects = { ease: "back.out" }, 0); } - // Turn button icon black and scale - if (buttonIcon.length > 0) { - tl.fromTo(buttonIcon, { - color: C.Colors.GREY, - opacity: 0.75, - scale: 1 - }, { - color: C.Colors.dBLACK, - scale: 1.25, - opacity: 1, - duration: 0.5, - ease: "sine" - }, 0); - } - // Turn button label black, bold - if (buttonLabel.length > 0) { - tl.fromTo(buttonLabel, { - color: C.Colors.GREY, - fontWeight: 400, - scale: 1 - }, { - color: C.Colors.dBLACK, - fontWeight: 800, - duration: 0.75, - ease: "sine" - }, 0); - } - return tl; - }, - defaults: {} - }, - csqEnterSpecialArmor: { - effect: (csqContainer) => { - const csqRoot = U.gsap.utils.selector(csqContainer); - const typeLine = csqRoot(".consequence-type-container .consequence-type.special-armor-consequence"); - // const acceptElems = csqRoot(".accept-consequence"); - // const resistElems = csqRoot(".resist-consequence"); - const footerBg = csqRoot(".consequence-footer-container .consequence-footer-bg.special-armor-consequence"); - const footerMsg = csqRoot(".consequence-footer-container .consequence-special-armor-message"); - const specialArmorCsqName = csqRoot(".consequence-name.special-armor-consequence"); - const iconCircle = csqRoot(".consequence-icon-circle.special-armor-consequence"); - const blockedElem = csqRoot(".consequence-blocker.special-armor-consequence"); - const tl = U.gsap.timeline({ paused: true, defaults: { overwrite: "auto" } }); - // // Fade out all accept elems and resist elems - // if ([...acceptElems, ...resistElems].length > 0) { - // tl.to([...acceptElems, ...resistElems], { - // opacity: 0, - // duration: 0.25, - // ease: "sine.out" - // }); - // } - if (blockedElem.length > 0) { - tl.fromTo(blockedElem, { + // Fade in typeLine + if (typeLine.length > 0) { + tl.fromTo(typeLine, { opacity: 0 }, { opacity: 1, - duration: 0.25, - ease: "sine" + duration: 0.5, + ease: "back.out" }, 0); } - // Slide out .consequence-type.special-armor-consequence from left - if (typeLine.length > 0) { - tl.fromTo(typeLine, { - x: -15, - scaleX: 0, - opacity: 1, - color: C.Colors.dBLUE + // Slide out nameLine from left + if (nameLine.length > 0) { + tl.fromTo(nameLine, { + scaleX: 0 }, { - x: 0, scaleX: 1, - opacity: 1, - color: C.Colors.dBLUE, duration: 0.5, - ease: "back.out" + ease: "back.inOut" }, 0); } - // Slide out .consequence-footer-bg.special-armor-consequence from left + // Slide out footer background from left if (footerBg.length > 0) { tl.fromTo(footerBg, { scaleX: 0, @@ -441,7 +363,7 @@ const gsapEffects = { ease: "back.inOut" }, 0); } - // Slide out .consequence-special-armor-message from left + // Slide out attribute from left if (footerMsg.length > 0) { tl.fromTo(footerMsg, { scaleX: 0, @@ -453,36 +375,12 @@ const gsapEffects = { ease: "back.inOut" }, 0); } - // Slide out .consequence-name.special-armor-consequence from left - if (specialArmorCsqName.length > 0) { - tl.fromTo(specialArmorCsqName, { - scaleX: 0, - opacity: 1 - }, { - scaleX: 1, - opacity: 1, - duration: 0.5, - ease: "back.inOut" - }, 0); - } - // Fade in .consequence-icon-circle.special-armor-consequence - if (iconCircle.length > 0) { - tl.fromTo(iconCircle, { - opacity: 0 - }, { - opacity: 1, - duration: 0.5, - ease: "back.out" - }, 0); - } - if (csqRoot(".consequence-button-container.consequence-special-armor-button-container").length > 0) { - const buttonRoot = U.gsap.utils.selector(csqRoot(".consequence-button-container.consequence-special-armor-button-container")); - const [buttonBg, buttonIcon, buttonLabel] = [ - buttonRoot(".consequence-button-bg"), - buttonRoot(".button-icon i"), - buttonRoot(".consequence-button-label") - ]; - // Slide out .consequence-special-armor-button-bg from right + if (csqRoot(`.consequence-button-container.consequence-${config.type}-button-container`).length > 0) { + const buttonRoot = U.gsap.utils.selector(csqRoot(`.consequence-button-container.consequence-${config.type}-button-container`)); + const buttonBg = buttonRoot(".consequence-button-bg"); + const buttonIcon = buttonRoot(".button-icon i"); + const buttonLabel = buttonRoot(".consequence-button-label"); + // Slide out button background from right if (buttonBg.length > 0) { tl.fromTo(buttonBg, { scaleX: 0, @@ -634,7 +532,7 @@ const gsapEffects = { }, hoverTooltip: { effect: (tooltip, config) => { - const tl = U.gsap.timeline({ paused: true, defaults: { overwrite: "auto" } }); + const tl = U.gsap.timeline({ paused: true, defaults: {} }); if (!tooltip) { return tl; } @@ -746,9 +644,12 @@ export function ApplyConsequenceAnimations(html) { .each((_i, csqContainer) => { if (!$(csqContainer).hasClass("consequence-accepted")) { const iconContainer$ = $(csqContainer).find(".consequence-icon-container"); - const acceptInteractionPad$ = $(csqContainer).find(".accept-consequence-pad"); - const resistInteractionPad$ = $(csqContainer).find(".resist-consequence-pad"); - const specialArmorInteractionPad$ = $(csqContainer).find(".special-armor-consequence-pad"); + const rightInteractionPad$ = $(csqContainer).find(".interaction-pad-right"); + const leftInteractionPad$ = $(csqContainer).find(".interaction-pad-left"); + const resistInteractionPad$ = $(csqContainer).find(".interaction-pad-left-resist"); + const armorInteractionPad$ = $(csqContainer).find(".interaction-pad-left-armor"); + const specialInteractionPad$ = $(csqContainer).find(".interaction-pad-left-special"); + // Apply master on-enter hover timeline to consequence container. $(csqContainer).data("hoverTimeline", U.gsap.effects.csqEnter(csqContainer)); $(csqContainer).on({ mouseenter: function () { @@ -763,6 +664,7 @@ export function ApplyConsequenceAnimations(html) { } } }); + // Apply click timeline to icon circle iconContainer$.data("clickTimeline", U.gsap.effects.csqClickIcon(iconContainer$[0])); iconContainer$.on({ click: function () { @@ -800,18 +702,32 @@ export function ApplyConsequenceAnimations(html) { } } }); - acceptInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterAccept(csqContainer)); - acceptInteractionPad$.on({ + // Apply hover timelines to right (accept) interaction pad + rightInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterRight(csqContainer)); + rightInteractionPad$.on({ + mouseenter: function () { + if (iconContainer$.data("isToggled")) { + rightInteractionPad$.data("hoverTimeline").play(); + } + }, + mouseleave: function () { + rightInteractionPad$.data("hoverTimeline").reverse(); + } + }); + // Apply hover timeline to left (resist/armor/special) interaction pad + leftInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterLeft(csqContainer)); + leftInteractionPad$.on({ mouseenter: function () { if (iconContainer$.data("isToggled")) { - acceptInteractionPad$.data("hoverTimeline").play(); + leftInteractionPad$.data("hoverTimeline").play(); } }, mouseleave: function () { - acceptInteractionPad$.data("hoverTimeline").reverse(); + leftInteractionPad$.data("hoverTimeline").reverse(); } }); - resistInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterResist(csqContainer)); + // Apply hover timelines to specific left interaction pads + resistInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterSubLeft(csqContainer, { type: "resist" })); resistInteractionPad$.on({ mouseenter: function () { if (iconContainer$.data("isToggled")) { @@ -824,16 +740,29 @@ export function ApplyConsequenceAnimations(html) { } } }); - specialArmorInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterSpecialArmor(csqContainer)); - specialArmorInteractionPad$.on({ + armorInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterSubLeft(csqContainer, { type: "armor" })); + armorInteractionPad$.on({ + mouseenter: function () { + if (iconContainer$.data("isToggled")) { + armorInteractionPad$.data("hoverTimeline").play(); + } + }, + mouseleave: function () { + if (iconContainer$.data("isToggled")) { + armorInteractionPad$.data("hoverTimeline").reverse(); + } + } + }); + specialInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterSubLeft(csqContainer, { type: "special" })); + specialInteractionPad$.on({ mouseenter: function () { if (iconContainer$.data("isToggled")) { - specialArmorInteractionPad$.data("hoverTimeline").play(); + specialInteractionPad$.data("hoverTimeline").play(); } }, mouseleave: function () { if (iconContainer$.data("isToggled")) { - specialArmorInteractionPad$.data("hoverTimeline").reverse(); + specialInteractionPad$.data("hoverTimeline").reverse(); } } }); diff --git a/module/core/settings.js b/module/core/settings.js index f69c50db..dc75510c 100644 --- a/module/core/settings.js +++ b/module/core/settings.js @@ -186,12 +186,13 @@ export function initDOMStyles() { // Append lightning-barrier background to #sidebar $("#interface") .append(`
+
`); /* - `); + `); */ } export default registerSettings; diff --git a/module/documents/actors/BladesPC.js b/module/documents/actors/BladesPC.js index 377af9c3..60219e6a 100644 --- a/module/documents/actors/BladesPC.js +++ b/module/documents/actors/BladesPC.js @@ -154,6 +154,12 @@ class BladesPC extends BladesActor { ...this.actions }; } + get stress() { + return this.system.stress.value; + } + get stressMax() { + return this.system.stress.max; + } get trauma() { if (!BladesActor.IsType(this, BladesActorType.pc)) { return 0; @@ -294,6 +300,19 @@ class BladesPC extends BladesActor { get rollParticipantType() { return this.type; } get rollParticipantModsData() { return []; } // #endregion + async adjustStress(deltaStress) { + const newStress = Math.min(this.stressMax, Math.max(0, this.stress + deltaStress)); + if (newStress === this.stressMax) { + /* PUSH NOTICE: Player must select Trauma & is removed from Score. */ + } + await this.update({ "system.stress.value": newStress }); + } + async spendSpecialArmor() { + if (this.system.armor.active.special && !this.system.armor.checked.special) { + await this.update({ "system.armor.checked.special": true }); + /* PUSH NOTICE: Spent Special Armor */ + } + } get rollTraitPCTooltipActions() { const tooltipStrings = [""]; const actionRatings = this.actions; diff --git a/module/sheets/actor/BladesPCSheet.js b/module/sheets/actor/BladesPCSheet.js index 070c1e9f..400a6596 100644 --- a/module/sheets/actor/BladesPCSheet.js +++ b/module/sheets/actor/BladesPCSheet.js @@ -320,7 +320,7 @@ class BladesPCSheet extends BladesActorSheet { $(this).siblings(`.svg-armor.armor-${targetArmor}`).removeClass("hover-over"); } }); - html.find(".special-armor-control").on({ + html.find(".special-control").on({ click() { if (!self.activeArmor.includes("special")) { return; diff --git a/module/sheets/roll/BladesConsequence.js b/module/sheets/roll/BladesConsequence.js index e4ee6d6e..6e300cc4 100644 --- a/module/sheets/roll/BladesConsequence.js +++ b/module/sheets/roll/BladesConsequence.js @@ -1,8 +1,11 @@ -/* eslint-disable lines-between-class-members, no-dupe-class-members */ +/* no-dupe-class-members */ import C, { BladesActorType, AttributeTrait, ConsequenceType, RollResult, RollType, Position, Effect, RollPhase } from "../../core/constants.js"; import U from "../../core/utilities.js"; import BladesRoll, { BladesRollPrimary } from "../../BladesRoll.js"; class BladesConsequence { + static GetActiveRollChatID() { + return Array.from(game.messages).filter((msg) => $(msg.content ?? "").data("chat-id")).pop()?.id ?? undefined; + } static ApplyChatListeners(html) { const html$ = $(html); const roll$ = html$.find(".blades-roll"); @@ -22,6 +25,14 @@ class BladesConsequence { else if (roll$.hasClass("roll-type-indulgevice")) { roll$.closest(".chat-message").addClass("indulgevice-roll"); } + // If this message is the last one, add 'active-chat-roll' class and remove it from all others + if (BladesConsequence.GetActiveRollChatID() === roll$.data("chatId")) { + $(document).find(".chat-message").removeClass("active-chat-roll"); + roll$.closest(".chat-message").addClass("active-chat-roll"); + } + else { + roll$.closest(".chat-message").removeClass("active-chat-roll"); + } const rollPhase = roll$.data("rollPhase"); eLog.checkLog3("rollCollab", "ApplyChatListeners", { html, roll$, rollPhase }); if (rollPhase !== RollPhase.AwaitingConsequences) { @@ -45,7 +56,7 @@ class BladesConsequence { await csq.resistArmorConsequence(); break; } - case "special-armor-consequence": { + case "special-consequence": { await csq.resistSpecialArmorConsequence(); break; } @@ -53,6 +64,16 @@ class BladesConsequence { } }); } + static async GetFromID(msgID, csqID) { + const chatMessage = game.messages.get(msgID); + if (chatMessage) { + if (csqID) { + return BladesConsequence.GetFromChatMessage(chatMessage, csqID); + } + return BladesConsequence.GetFromChatMessage(chatMessage); + } + return undefined; + } static GetFromCsqElem(csqElem) { csqElem = $(csqElem); const csq$ = csqElem.closest(".comp.consequence-display-container"); @@ -123,7 +144,7 @@ class BladesConsequence { ...getBaseData(csq$), ...getResistableData(csq$, "resist-consequence"), ...getResistableData(csq$, "armor-consequence"), - ...getResistableData(csq$, "special-armor-consequence"), + ...getResistableData(csq$, "special-consequence"), isAccepted: csq$.hasClass("consequence-accepted") }); } @@ -266,36 +287,36 @@ class BladesConsequence { if (!resistTo.id) { throw new Error("[new BladesConsequence] Missing 'resistTo.id' in constructor data object."); } - if (!resistTo.name) { - throw new Error("[new BladesConsequence] Missing 'resistTo.name' in constructor data object."); - } if (!resistTo.type) { throw new Error("[new BladesConsequence] Missing 'resistTo.type' in constructor data object."); } + if (!resistTo.name && resistTo.type !== ConsequenceType.None) { + throw new Error("[new BladesConsequence] Missing 'resistTo.name' in constructor data object."); + } this._resistTo = new BladesConsequence(resistTo); } if (armorTo) { if (!armorTo.id) { throw new Error("[new BladesConsequence] Missing 'armorTo.id' in constructor data object."); } - if (!armorTo.name) { - throw new Error("[new BladesConsequence] Missing 'armorTo.name' in constructor data object."); - } if (!armorTo.type) { throw new Error("[new BladesConsequence] Missing 'armorTo.type' in constructor data object."); } + if (!armorTo.name && armorTo.type !== ConsequenceType.None) { + throw new Error("[new BladesConsequence] Missing 'armorTo.name' in constructor data object."); + } this._armorTo = new BladesConsequence(armorTo); } if (specialTo) { if (!specialTo.id) { throw new Error("[new BladesConsequence] Missing 'specialTo.id' in constructor data object."); } - if (!specialTo.name) { - throw new Error("[new BladesConsequence] Missing 'specialTo.name' in constructor data object."); - } if (!specialTo.type) { throw new Error("[new BladesConsequence] Missing 'specialTo.type' in constructor data object."); } + if (!specialTo.name && specialTo.type !== ConsequenceType.None) { + throw new Error("[new BladesConsequence] Missing 'specialTo.name' in constructor data object."); + } this._specialTo = new BladesConsequence(specialTo); } } @@ -342,7 +363,7 @@ class BladesConsequence { name = this._armorTo.name; break; } - case "specialArmor": { + case "special": { if (!this._specialTo) { throw new Error(`Cannot transform csq id '${this.id}' into "special" consequence: no specialTo data found.`); } @@ -408,7 +429,7 @@ class BladesConsequence { .accept-consequence, .resist-consequence, .armor-consequence, - .special-armor-consequence, + .special-consequence, .consequence-footer-container `); eLog.checkLog2("csqAccept", "Code Stripped Message Code", { message$, message: message$[0], outerHTML: message$[0].outerHTML }); @@ -446,10 +467,12 @@ class BladesConsequence { } }; BladesRoll.NewRoll(resistConfig); - // The resistance roll and resolution will handle the stress cost of resisting: Resistance is always successful, - // so can edit chat message to resisted consequence immediately, and apply effects to rollPrimary. - await this._resistTo.applyConsequenceToPrimary(); - await this.transformToConsequence("resist"); + } + async applyResistedConsequence() { + if (this._resistTo) { + await this._resistTo.applyConsequenceToPrimary(); + await this.transformToConsequence("resist"); + } } async resistArmorConsequence() { /* ... */ diff --git a/scss/chat/_chat.scss b/scss/chat/_chat.scss index 1a7d667f..9f5dc9bb 100644 --- a/scss/chat/_chat.scss +++ b/scss/chat/_chat.scss @@ -31,8 +31,10 @@ } -.chat-message { - --chat-header-height: 20px; +.chat-message[class*=-roll] { + --font-primary: Beaufort !important; + + --chat-header-height: 15px; --chat-vertical-gap: 15px; --resistance-right-shift: 60px; @@ -47,17 +49,27 @@ --bg-partial: transparent; --bg-fail: transparent; - --dice-strip-bg: var(--blades-black); + --dice-strip-bg: var(--blades-black-dark); --top-die-animation: none; --ghost-die-animation: none; + --ghost-die-filter: blur(1px) sepia(1) saturate(2) hue-rotate(319deg) brightness(0.35); - filter: blur(0.5px) drop-shadow(5px 5px 5px black) grayscale(1) brightness(0.7); - // opacity: 0.9; - background: var(--blades-black); + background: var(--blades-black-dark); + background: transparent; border: 2px ouset var(--blades-white); + + &:not(.active-chat-roll) { + .trait-label.trait-verb { display: none; } + .consequence-icon-container { + .consequence-icon-circle.base-consequence { + animation: none !important; + img { animation: none !important; } + } + } + } } -.chat-message:last-child { +.chat-message[class*=-roll].active-chat-roll { --bg-controlled: url("../assets/animations/chat/roll-position-controlled.webp"); --bg-risky: url("../assets/animations/chat/roll-position-risky.webp"); --bg-desperate: url("../assets/animations/chat/roll-position-desperate.webp"); @@ -71,16 +83,24 @@ --top-die-animation: die-pulse 5s ease infinite; --ghost-die-animation: die-ghost 4s ease infinite; + --ghost-die-filter: sepia(1) saturate(2) hue-rotate(319deg); margin-bottom: 0px; opacity: 1; filter: drop-shadow(5px 5px 5px black); background: transparent; outline: none; + + .trait-label.trait-past-verb { display: none; } + .message-content { + .blades-roll { + .dice-roll-strip { margin-top: 5px; } + } + } } -.chat-message { +.chat-message[class*=-roll] { // background: transparent; overflow: visible; // border: none; @@ -94,15 +114,33 @@ position: relative; z-index: 3; height: var(--chat-header-height); + max-height: var(--chat-header-height); top: 4px; .message-sender { + display: unset; + text-align: left !important; + // text-indent: 0px !important; + // position: static !important; color: var(--blades-white-bright); - text-indent: 15px; + text-indent: 25px; // margin-top: -16px; text-shadow: var(--text-shadow-dark-strong); - line-height: calc(0.75 * var(--chat-header-height)); - font-size: calc(0.75 * var(--chat-header-height)); + line-height: 20px; + font-size: 20px; + position: relative; + vertical-align: top; + left: 20px; + // font-size: 32px !important; + + &::first-letter { + font-size: 32px; + line-height: 0.6; // Adjust this value to control the space above and below the letter + // transform: scaleY(4.5); // Adjust this value to make the letter taller or shorter + vertical-align: -8px; // Adjust this value to align the letter with the following text + // letter-spacing: 0.01px; + margin-right: -3px; + } } } @@ -185,6 +223,9 @@ &.action-roll + .chat-message.resistance-roll { margin-top: calc(-1 * var(--chat-vertical-gap)); } + &.action-roll.active-chat-roll + .chat-message.resistance-roll { + margin-top: 0; + } .message-content { @@ -230,21 +271,44 @@ .chat-header { margin: 0; padding: 0; + text-align: left; background: transparent; box-shadow: none; color: var(--blades-grey); z-index: -1; + width: 100%; + + .trait-label { + font-family: Beaufort; + + &.trait-verb { + padding-left: 70px; + font-weight: 700; + color: var(--blades-gold-bright); + font-size: 32px; + line-height: 38px; + font-style: italic; + text-transform: uppercase; + } + + &.trait-past-verb { + padding-left: 70px; + font-weight: 700; + color: var(--blades-grey-bright); + font-size: 28px; + line-height: 38px; + text-transform: capitalize; + font-style: italic; + text-transform: uppercase; + } + } } h1.chat-header { margin: 0; padding: 0; - text-align: center; background: transparent; box-shadow: none; - font-size: 32px; - line-height: 32px; - color: var(--blades-gold-bright); } @@ -265,22 +329,29 @@ } } + --fade-none: 1; + --fade-lightest: 0.9; + --fade-light: 0.8; + --fade-med: 0.7; + --fade-strong: 0.6; + --fade-strongest: 0.5; + @keyframes die-ghost { - 8% { opacity: 0.25; } - 10% { opacity: 0.6; } - 12% { opacity: 0.25; } + 8% { opacity: var(--fade-strongest); } + 10% { opacity: var(--fade-med); } + 12% { opacity: var(--fade-strongest); } - 33% { opacity: 0.1; } - 35% { opacity: 0.6; } - 37% { opacity: 0.1; } + 33% { opacity: var(--fade-strongest); } + 35% { opacity: var(--fade-light); } + 37% { opacity: var(--fade-strongest); } - 62% { opacity: 0.5; } - 64% { opacity: 0.6; } - 66% { opacity: 0.1; } + 62% { opacity: var(--fade-strong); } + 64% { opacity: var(--fade-lightest); } + 66% { opacity: var(--fade-strong); } - 95% { opacity: 0.1; } - 97% { opacity: 0.6; } - 99% { opacity: 0.1; } + 95% { opacity: var(--fade-strongest); } + 97% { opacity: var(--fade-med); } + 99% { opacity: var(--fade-strongest); } } display: flex; flex-direction: row; @@ -292,7 +363,7 @@ align-items: stretch; justify-content: center; gap: calc(var(--die-size) * 0.3); - margin: 5px 0px calc(var(--die-size) * -1 - 6px + 5px) 0px; + margin: 0px 0px calc(var(--die-size) * -1 - 6px + 5px) 0px; padding: 4px 50% 4px 0; // background: var(--blades-grey-dark); background: var(--dice-strip-bg); @@ -339,17 +410,14 @@ animation: var(--top-die-animation); } &.blades-die-ghost { - // opacity: 0.25; - // filter: blur(2px) sepia(1) saturate(2) brightness(0.35) hue-rotate(319deg); box-shadow: 0px 0px 5px 1px var(--blades-red); - // scale: 0.8; - rotate: 10deg; + scale: 0.8; opacity: 0.8; - filter: brightness(0.35); + rotate: 10deg; animation: var(--ghost-die-animation); img { - filter: blur(2px) sepia(1) saturate(2) hue-rotate(319deg); + filter: var(--ghost-die-filter); } } &.blades-die-resistance { @@ -441,7 +509,7 @@ &.roll-position-controlled { - --side-left-x-scale: 0.7; + --side-left-x-scale: 0.8; } &.roll-position-risky { @@ -461,7 +529,7 @@ } &.roll-effect-standard { - --side-right-x-scale: 0.9; + --side-right-x-scale: 0.8; } &.roll-effect-great { @@ -518,7 +586,7 @@ h3.roll-state { position: absolute; top: 5px; - left: -5px; + right: 5px; scale: var(--side-left-x-scale) 1; } } @@ -526,14 +594,17 @@ &.roll-state-container-right { h4.roll-state-label { position: absolute; - right: 45px; + text-align: left; + left: 10px; + width: 100%; } h3.roll-state { + width: 100%; position: absolute; bottom: 5px; - right: 5px; - text-align: right; - transform-origin: 100% 100%; + left: 5px; + text-align: left; + // transform-origin: 100% 100%; scale: var(--side-right-x-scale) 1; } } @@ -614,6 +685,7 @@ top: 0; .chat-message-bg { + display: block; background: var(--blades-grey); top: 0; // calc(-1 * (var(--chat-header-height) + var(--chat-vertical-gap))); height: 100%; // calc(100% + var(--chat-header-height) + var(--chat-vertical-gap)); @@ -689,10 +761,11 @@ width: fit-content; padding: 4px 0px; gap: 3px; - margin-left: 5px; + margin: 0 0 0 5px; background: transparent; box-shadow: none; + .blades-die { height: 16px; border-radius: 3px; diff --git a/scss/components/_comps.scss b/scss/components/_comps.scss index f953c873..b8d3a9bc 100644 --- a/scss/components/_comps.scss +++ b/scss/components/_comps.scss @@ -825,12 +825,6 @@ } } -// .consequence-container.flex-vertical.full-width { -// --container-height: 40px; -// height: calc(var(--container-height) * 0.75); -// max-height: calc(var(--container-height) * 0.75); -// justify-content: flex-start; -// } .comp.consequence-display-container { --container-height: 40px; --container-left-shift: 0px; @@ -840,6 +834,14 @@ --csq-button-size-mult: 0.33; + &:nth-child(1) { --csq-animation-delay: 0.5s } + &:nth-child(2) { --csq-animation-delay: 1.25s } + &:nth-child(3) { --csq-animation-delay: 2s } + + &:nth-child(1) { --csq-animation-delay: 0.25s } + &:nth-child(2) { --csq-animation-delay: 0.5s } + &:nth-child(3) { --csq-animation-delay: 0.75s } + @keyframes icon-glow { 0% { filter: brightness(1) blur(1px) drop-shadow(0px 0px 0px var(--blades-red)); @@ -852,9 +854,11 @@ } } - &.dead-roll, .dead-roll * { - animation: none; - pointer-events: none; + &:hover { + .consequence-icon-circle { + animation: none !important; + img { animation: none !important; } + } } position: relative; @@ -887,6 +891,7 @@ } .accept-consequence { + // opacity: 0; --csq-icon-dark: var(--blades-red-dark); --csq-icon-med: var(--blades-red); --csq-icon-bright: var(--blades-red-bright); @@ -894,12 +899,8 @@ --csq-name-color: var(--blades-red); } - .accept-consequence { - opacity: 0; - } - .resist-consequence { - opacity: 0; + // opacity: 0; --csq-icon-dark: var(--blades-gold-dark); --csq-icon-med: var(--blades-gold); --csq-icon-bright: var(--blades-gold-bright); @@ -907,8 +908,17 @@ --csq-name-color: var(--blades-gold-bright); } - .special-armor-consequence { - opacity: 0; + .armor-consequence { + // opacity: 0; + --csq-icon-dark: var(--blades-grey-dark); + --csq-icon-med: var(--blades-grey-bright); + --csq-icon-bright: var(--blades-white-bright); + --csq-type-color: var(--blades-grey-bright); + --csq-name-color: var(--blades-white-bright); + } + + .special-consequence { + // opacity: 0; --csq-icon-dark: var(--blades-blue-dark); --csq-icon-med: var(--blades-blue); --csq-icon-bright: var(--blades-blue-bright); @@ -930,27 +940,62 @@ } .consequence-interaction-pad { - display: none; - display: block; - position: absolute; z-index: 2; - pointer-events: auto; + pointer-events: none; height: 100%; top: 0; - // outline: 1px dotted cyan; - &.accept-consequence-pad { + &.interaction-pad-right { + position: absolute; + pointer-events: none; --pad-left-shift: calc(var(--container-left-shift) + (var(--container-height))); left: var(--pad-left-shift); width: calc(100% - var(--pad-left-shift)); } - &.resist-consequence-pad, &.special-armor-consequence-pad, &.armor-consequence-pad { + &.interaction-pad-left { + position: absolute; + pointer-events: none; + left: -190px; + width: calc(200px + var(--container-left-shift) - (var(--container-height) * 0)); + display: flex; + flex-direction: column-reverse; + justify-content: stretch; + align-items: stretch; + + > .consequence-interaction-pad { + flex-grow: 1; + pointer-events: none; + + &.interaction-pad-left-resist { + flex-basis: 50%; + flex-shrink: 0.6; + } + &.interaction-pad-left-armor { + flex-basis: 50%; + flex-shrink: 1; + } + &.interaction-pad-left-special { + flex-basis: 50%; + flex-shrink: 1; + } + } + + .interaction-pad-left-resist { + flex-basis: 50%; + flex-grow: 1; + flex-shrink: 0; + } + + + } + + &.resist-consequence-pad, &.special-consequence-pad, &.armor-consequence-pad { left: -200px; width: calc(200px + var(--container-left-shift) - (var(--container-height) * 0)); } - &.special-armor-consequence-pad { + &.special-consequence-pad { height: 50%; z-index: 3; } @@ -972,25 +1017,14 @@ z-index: 2; transition: 0.2s; - &:hover { - filter: brightness(2); - } - .consequence-icon-circle { position: absolute; - // transform: translate(-50%, -50%); - // translate: -50% -50%; transform-origin: 100% 0%; - // top: calc(var(--container-height) * 0.5); - // left: calc(var(--container-height) * 0.5); border-radius: 50%; height: var(--container-height); width: var(--container-height); outline: 1px solid var(--csq-icon-med); background: var(--csq-icon-bg-color); - // display: flex; - // justify-content: center; - // align-items: center; z-index: 1; top: 0px; left: 0px; @@ -1004,7 +1038,6 @@ height: 80%; width: 80%; display: block; - // margin: auto auto; .fill-dark { fill: var(--csq-icon-dark) } .fill-med { fill: var(--csq-icon-med) } @@ -1017,20 +1050,17 @@ &.base-consequence { transform: scale(0.75); - animation: icon-glow 2s ease infinite; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); pointer-events: auto; img { - animation: icon-glow 2s ease infinite; - } - - &:hover { - filter: brightness(2) !important; - animation: none; + animation: icon-glow 2.25s ease infinite; + animation-delay: var(--csq-animation-delay); } } - &.resist-consequence, &.special-armor-consequence { + &.resist-consequence, &.special-consequence { outline-width: 2px; } @@ -1059,12 +1089,13 @@ display: block; &.consequence-resist-button-bg, - &.consequence-special-armor-button-bg { + &.consequence-special-button-bg { transform-origin: 100% 50%; } - &.consequence-special-armor-button-bg { - width: calc(100% + 32px) + &.consequence-special-button-bg { + width: calc(100% + 40px); + margin-left: -10px; } } @@ -1119,31 +1150,13 @@ transform: skewX(-45deg); } } - &.consequence-special-armor-button-container { + &.consequence-special-button-container { right: 100%; bottom: 12px; } } } - .consequence-blocker { - height: 100%; - background: var(--blades-black-dark); - transform-origin: 0% 50%; - // background: linear-gradient(to left, cyan 49%, lime 49%, lime 51%, cyan 51%); - // opacity: 0.5 !important; - opacity: 0; - position: absolute; - z-index: 10; - top: 0; - width: 100%; - z-index: 1; - // transform: translate(0%, -50%); - // top: 50%; - left: calc(0.5 * var(--container-height) + 5px); - // display: none; - } - .consequence-type-container { position: absolute; height: calc(var(--container-height) * 0.33); @@ -1155,6 +1168,7 @@ .consequence-type-bg { position: absolute; top: 0; + z-index: -1; left: -20px; height: 100%; width: 170px; @@ -1166,7 +1180,6 @@ .consequence-type { position: absolute; top: 0; - // left: calc(var(--container-height) + var(--container-left-shift) - 75px); transform-origin: 0% 50%; white-space: nowrap; font-family: var(--font-emphasis-narrow); @@ -1231,7 +1244,7 @@ width: 120px; } - &.special-armor-consequence { + &.special-consequence { width: 250px; } } diff --git a/scss/sheets/_pc-sheet.scss b/scss/sheets/_pc-sheet.scss index 46171dc4..6c3825bd 100644 --- a/scss/sheets/_pc-sheet.scss +++ b/scss/sheets/_pc-sheet.scss @@ -120,7 +120,7 @@ pointer-events: none; .main-armor-control, - .special-armor-control { + .special-control { position: absolute; pointer-events: auto; @@ -133,7 +133,7 @@ left: 0px; } - &.special-armor-control { + &.special-control { z-index: 2; height: 50%; @@ -143,7 +143,7 @@ } } - .main-armor-control + .special-armor-control { + .main-armor-control + .special-control { display: none; } diff --git a/templates/chat/roll-result-action-roll.hbs b/templates/chat/roll-result-action-roll.hbs index 23ed6509..d8b0aa20 100644 --- a/templates/chat/roll-result-action-roll.hbs +++ b/templates/chat/roll-result-action-roll.hbs @@ -27,7 +27,8 @@ {{!-- Roll Trait --}}

- {{case "upper" rollTrait}} + {{case "title" rollTraitVerb}} + {{case "title" rollTraitPastVerb}}

{{!-- Opposition --}} @@ -91,7 +92,8 @@ {{eLog "ConsequenceContainer" cIndex csqData cData}} {{#if cData.resistTo}} {{> "systems/eunos-blades/templates/components/consequence.hbs" cData - flagData=../../flagData }} + flagData=../../flagData + chatID=../../chatMsgID }} {{/if}} {{/each}} {{/with}} diff --git a/templates/components/armor.hbs b/templates/components/armor.hbs index 5c59176e..065fb21e 100644 --- a/templates/components/armor.hbs +++ b/templates/components/armor.hbs @@ -14,7 +14,7 @@ {{/if}} -
+
{{#if (test "special" "in" data)}}
diff --git a/templates/components/consequence.hbs b/templates/components/consequence.hbs index 21471118..de39b79d 100644 --- a/templates/components/consequence.hbs +++ b/templates/components/consequence.hbs @@ -1,6 +1,7 @@ -{{!-- {{eLog "Consequence Context" this}} --}} +{{eLog "Consequence Context" this}}
+ data-special-name="{{specialArmorTo.name}}" + data-special-type="{{specialArmorTo.type}}" > - {{!-- Interaction Pads --}} - {{#unless isAccepted}} - + {{!-- Consequence Selection BG Image --}} + -
-
+ {{!-- Interaction Pads --}} +
+
+
{{#if armorTo}} -
+
{{/if}} {{#if specialArmorTo}} -
+
{{/if}} - {{/unless}} +
{{!-- Icon --}}
+ + {{!-- Icon Circles --}}
- - {{#unless isAccepted}} -
- -
-
- {{#if resistTo.icon}} - {{#unless (test resistTo.type "==" "None")}} - - {{/unless}} - {{/if}} -
- {{#if armorTo}} -
- {{#if armorTo.icon}} - {{#unless (test armorTo.type "==" "None")}} - - {{/unless}} - {{/if}} -
- {{/if}} - {{#if specialArmorTo}} -
- {{#if specialArmorTo.icon}} - {{#unless (test specialArmorTo.type "==" "None")}} - - {{/unless}} - {{/if}} -
- {{/if}} - -
-
- - {{> "systems/eunos-blades/templates/components/button-icon.hbs" - blockClass="consequence-resist-button" - buttonClass="fa-solid fa-hand-fist" - action="resistconsequence" - }} -
-
-
- {{> "systems/eunos-blades/templates/components/button-icon.hbs" - blockClass="consequence-accept-button" - buttonClass="fa-solid fa-square-check" - action="acceptconsequence" - }} - -
- {{#if armorTo}} -
-
- - {{> "systems/eunos-blades/templates/components/button-icon.hbs" - blockClass="consequence-armor-button" - buttonClass="fa-duotone fa-shield-quartered" - action="armorconsequence" - }} -
- {{/if}} - {{#if specialArmorTo}} -
-
- - {{> "systems/eunos-blades/templates/components/button-icon.hbs" - blockClass="consequence-special-armor-button" - buttonClass="fa-duotone fa-shield-quartered" - action="specialarmorconsequence" - }} -
- {{/if}} - {{/unless}} - +
+ +
+ {{#if resistTo}}{{#unless (test resistTo.type "==" "None")}} +
+ +
+ {{/unless}}{{/if}} + {{#if armorTo}}{{#unless (test armorTo.type "==" "None")}} +
+ +
+ {{/unless}}{{/if}} + {{#if specialArmorTo}}{{#unless (test specialArmorTo.type "==" "None")}} +
+ +
+ {{/unless}}{{/if}} + + {{!-- Buttons --}} +
+
+ {{> "systems/eunos-blades/templates/components/button-icon.hbs" + blockClass="consequence-accept-button" + buttonClass="fa-solid fa-square-check" + action="acceptconsequence" + }} + +
+ {{#if resistTo}} +
+
+ + {{> "systems/eunos-blades/templates/components/button-icon.hbs" + blockClass="consequence-resist-button" + buttonClass="fa-solid fa-hand-fist" + action="resistconsequence" + }} +
+ {{/if}} + {{#if armorTo}} +
+
+ + {{> "systems/eunos-blades/templates/components/button-icon.hbs" + blockClass="consequence-armor-button" + buttonClass="fa-duotone fa-shield-quartered" + action="armorconsequence" + }} +
+ {{/if}} + {{#if specialArmorTo}} +
+
+ + {{> "systems/eunos-blades/templates/components/button-icon.hbs" + blockClass="consequence-special-button" + buttonClass="fa-duotone fa-shield-quartered" + action="specialarmorconsequence" + }} +
+ {{/if}}
- {{!-- Element Blockers --}} - {{#unless isAccepted}} -
- {{#if armorTo}} -
- {{/if}} - {{#if specialArmorTo}} -
- {{/if}} - {{/unless}} - {{!-- Type Surtitle --}}
+ - {{#unless isAccepted}}
- - {{#unless (test resistTo.type "==" "None")}} + {{#if resistTo}}{{#unless (test resistTo.type "==" "None")}} - {{/unless}} - - {{#if armorTo}} - {{#unless (test armorTo.type "==" "None")}} + {{/unless}}{{/if}} + {{#if armorTo}}{{#unless (test armorTo.type "==" "None")}} - {{/unless}} - {{/if}} - - {{#if specialArmorTo}} - {{#unless (test specialArmorTo.type "==" "None")}} - - {{/unless}} - {{/if}} - {{/unless}} + {{/unless}}{{/if}} + {{#if specialArmorTo}}{{#unless (test specialArmorTo.type "==" "None")}} + + {{/unless}}{{/if}}
@@ -152,38 +126,32 @@
+ - {{#unless isAccepted}} - - - {{#if (test resistTo.type "==" "None")}} - + {{#if resistTo}}{{#if (test resistTo.type "==" "None")}} + {{else}} - {{/if}} + {{/if}}{{/if}} - {{#if armorTo}} - {{#if (test armorTo.type "==" "None")}} - + {{#if armorTo}}{{#if (test armorTo.type "==" "None")}} + {{else}} - {{/if}} - {{/if}} + {{/if}}{{/if}} - {{#if specialArmorTo}} - {{#if (test specialArmorTo.type "==" "None")}} - + {{#if specialArmorTo}}{{#if (test specialArmorTo.type "==" "None")}} + {{else}} - - {{/if}} - {{/if}} - {{/unless}} + + {{/if}}{{/if}}
{{!-- Footer --}} - {{#unless isAccepted}} - - {{#if specialArmorTo}} - {{#if specialArmorTo.footerMsg}} - - {{/if}} + + {{#if armorTo}} + + {{/if}} -
- {{/unless}} + {{#if specialArmorTo}}{{#if specialArmorTo.footerMsg}} + + + {{/if}}{{/if}} + +
diff --git a/ts/@types/BladesConsequence.d.ts b/ts/@types/BladesConsequence.d.ts index 45c71e40..07e6f1af 100644 --- a/ts/@types/BladesConsequence.d.ts +++ b/ts/@types/BladesConsequence.d.ts @@ -10,7 +10,7 @@ declare global { namespace BladesConsequence { - export type ResistanceType = "resist"|"armor"|"specialArmor"; + export type ResistanceType = "resist"|"armor"|"special"; export namespace Data { diff --git a/ts/@types/blades-roll.d.ts b/ts/@types/blades-roll.d.ts index add3dca7..bbb1d381 100644 --- a/ts/@types/blades-roll.d.ts +++ b/ts/@types/blades-roll.d.ts @@ -18,6 +18,7 @@ declare global { export type ConsequenceResistOption = { name: string, id: string, + chatID?: string, type?: ConsequenceType, typeDisplay?: string, icon?: string, diff --git a/ts/@types/index.d.ts b/ts/@types/index.d.ts index b7b4d8a1..2e4bb493 100644 --- a/ts/@types/index.d.ts +++ b/ts/@types/index.d.ts @@ -4,6 +4,7 @@ import BladesActor from "../BladesActor"; import BladesClockKeeper from "../documents/items/BladesClockKeeper"; import BladesGMTracker from "../documents/items/BladesGMTracker"; import BladesPushAlert from "../BladesPushAlert"; +import BladesChat from "../BladesChat"; import C from "../core/constants"; import type gsap from "/scripts/greensock/esm/all"; @@ -37,7 +38,7 @@ declare global { actors: Collection, user: User, users: Collection, - messages: Collection, + messages: Collection, scenes: Scenes, model: { Actor: Record, diff --git a/ts/BladesActor.ts b/ts/BladesActor.ts index b1b1ac7e..7d48f07b 100644 --- a/ts/BladesActor.ts +++ b/ts/BladesActor.ts @@ -21,12 +21,11 @@ import type {MergeObjectOptions} from "@league-of-foundry-developers/foundry-vtt // Also check out Discord thread: https://discord.com/channels/325094888133885952/1152316839163068527 -// eslint-disable-next-line no-shadow enum BladesActorUniqueTags { CharacterCrew = Tag.PC.CharacterCrew, VicePurveyor = Tag.NPC.VicePurveyor } -// eslint-disable-next-line no-shadow + enum BladesItemUniqueTypes { background = BladesItemType.background, vice = BladesItemType.vice, diff --git a/ts/BladesChat.ts b/ts/BladesChat.ts index 8f70a322..a7612248 100644 --- a/ts/BladesChat.ts +++ b/ts/BladesChat.ts @@ -47,6 +47,7 @@ class BladesChat extends ChatMessage { interface BladesChat { + content?: string; } diff --git a/ts/BladesRoll.ts b/ts/BladesRoll.ts index 087ce36f..fdfd1451 100644 --- a/ts/BladesRoll.ts +++ b/ts/BladesRoll.ts @@ -2119,6 +2119,19 @@ class BladesRoll extends DocumentSheet { get rollTrait(): BladesRoll.RollTrait | undefined {return this.flagData.rollTrait;} + get rollTraitVerb(): ValueOf | undefined { + if (!this.rollTrait) { return undefined; } + if (!(this.rollTrait in C.ActionVerbs)) { return undefined; } + return C.ActionVerbs[this.rollTrait as ActionTrait] as ValueOf | undefined; + } + + get rollTraitPastVerb(): ValueOf | undefined { + if (!this.rollTrait) { return undefined; } + if (!(this.rollTrait in C.ActionPastVerbs)) { return undefined; } + return C.ActionPastVerbs[this.rollTrait as ActionTrait] as ValueOf | undefined; + + } + _rollTraitValOverride?: number; get rollTraitValOverride(): number | undefined {return this._rollTraitValOverride;} @@ -3310,6 +3323,7 @@ class BladesRoll extends DocumentSheet { // #endregion async resolveRoll() { + this.close(); await this.roll.evaluate({async: true}); await this.setRollPhase(RollPhase.AwaitingConsequences); switch (this.rollType) { @@ -3319,17 +3333,38 @@ class BladesRoll extends DocumentSheet { } else { await this.setRollPhase(RollPhase.Complete); } + // Apply Stress & Special Armor Costs + if (BladesPC.IsType(this.rollPrimaryDoc)) { + const rollCostData = this.getRollCosts(); + const stressCost = this.getTotalStressCost(this.getStressCosts(rollCostData)); + if (stressCost !== 0) { + this.rollPrimaryDoc.adjustStress(stressCost); + } + if (this.getSpecArmorCost(rollCostData)) { + this.rollPrimaryDoc.spendSpecialArmor(); + } + } + // const rollCosts = get.roll.getTotalStressCost(get.roll.getStressCosts(get.roll.getRollCosts())) await this.outputRollToChat(); if (this.rollPrimary.rollPrimaryDoc) { this.rollPrimary.rollPrimaryDoc.unsetFlag("eunos-blades", "isWorsePosition"); } - this.close(); break; } case RollType.Resistance: { await this.setRollPhase(RollPhase.Complete); + const {id: csqID} = this.rollConsequence ?? {}; + const {chatID} = this.rollConsequence?.resistTo ?? {}; + if (csqID && chatID) { + const resistedCsq = await BladesConsequence.GetFromID(chatID, csqID); + if (resistedCsq) { + await resistedCsq.applyResistedConsequence(); + } + } + if (BladesPC.IsType(this.rollPrimaryDoc)) { + this.rollPrimaryDoc.adjustStress(this.resistanceStressCost); + } await this.outputRollToChat(); - this.close(); break; } } @@ -3359,7 +3394,7 @@ class BladesRoll extends DocumentSheet { chatSpeaker.actor = rollPrimaryID; } - chatSpeaker.alias = `${chatSpeaker.alias} Rolls ...`; + // chatSpeaker.alias = `${chatSpeaker.alias} Rolls ...`; return chatSpeaker; } @@ -3416,7 +3451,7 @@ class BladesRoll extends DocumentSheet { case "accept-consequence": return thisCsq.acceptConsequence(); case "resist-consequence": return thisCsq.resistConsequence(); case "armor-consequence": return thisCsq.resistArmorConsequence(); - case "special-armor-consequence": return thisCsq.resistSpecialArmorConsequence(); + case "special-consequence": return thisCsq.resistSpecialArmorConsequence(); } return undefined as never; } diff --git a/ts/core/constants.ts b/ts/core/constants.ts index 0cae5fa1..4f1afebc 100644 --- a/ts/core/constants.ts +++ b/ts/core/constants.ts @@ -609,6 +609,34 @@ const C = { [ActionTrait.consort]: "

When you Consort, you socialize with friends and contacts.

  • You might gain access to resources, information, people, or places.
  • You might make a good impression or win someone over with charm and style.
  • You might make new friends or connect with your heritage or background.
  • You could try to direct allies with social pressure (but Commanding might be better).

  • Who do you consort with?
  • Where do you meet?
  • What do you talk about?
  • What do you hope to achieve?
", [ActionTrait.sway]: "

When you Sway, you influence someone with guile, charm, or argument.

  • You might lie convincingly.
  • You might persuade someone to do what you want.
  • You might argue a case that leaves no clear rebuttal.
  • You could try to trick people into affection or obedience (but Consorting or Commanding might be better).

  • Who do you sway?
  • What kind of leverage do you have here?
  • What do you hope they'll do?
" }, + ActionVerbs: { + [ActionTrait.hunt]: "hunts", + [ActionTrait.study]: "studies", + [ActionTrait.survey]: "surveys", + [ActionTrait.tinker]: "tinkers", + [ActionTrait.finesse]: "finesses", + [ActionTrait.prowl]: "prowls", + [ActionTrait.skirmish]: "skirmishes", + [ActionTrait.wreck]: "wrecks", + [ActionTrait.attune]: "attunes", + [ActionTrait.command]: "commands", + [ActionTrait.consort]: "consorts", + [ActionTrait.sway]: "sways" + }, + ActionPastVerbs: { + [ActionTrait.hunt]: "hunted", + [ActionTrait.study]: "studied", + [ActionTrait.survey]: "surveyed", + [ActionTrait.tinker]: "tinkered", + [ActionTrait.finesse]: "finessed", + [ActionTrait.prowl]: "prowled", + [ActionTrait.skirmish]: "skirmished", + [ActionTrait.wreck]: "wrecked", + [ActionTrait.attune]: "attuned", + [ActionTrait.command]: "commanded", + [ActionTrait.consort]: "consorted", + [ActionTrait.sway]: "swayed" + }, TraumaTooltips: { Cold: "You're not moved by emotional appeals or social bonds.", Haunted: "You're often lost in reverie, reliving past horrors, seeing things.", diff --git a/ts/core/gsap.ts b/ts/core/gsap.ts index c3e0c259..d956ed16 100644 --- a/ts/core/gsap.ts +++ b/ts/core/gsap.ts @@ -24,30 +24,60 @@ const gsapEffects: Record = { const csqRoot = U.gsap.utils.selector(csqContainer); // ELog.checkLog3("gsap", "gsapEffects.consequenceEnter -> THIS", {this: this, csqRoot}); const csqIconCircle = csqRoot(".consequence-icon-circle.base-consequence"); - const csqBaseElems = csqRoot(".base-consequence:not(.consequence-icon-circle)"); - const csqAcceptElems = csqRoot(".accept-consequence:not(.consequence-icon-circle):not(.consequence-button-container)"); + // const csqBaseElems = csqRoot(".base-consequence:not(.consequence-icon-circle)"); + const csqBaseTypeElem = csqRoot(".consequence-type.base-consequence"); + const csqAcceptTypeElem = csqRoot(".consequence-type.accept-consequence"); + const csqBaseNameElem = csqRoot(".consequence-name.base-consequence"); + const csqAcceptNameElem = csqRoot(".consequence-name.accept-consequence"); + // const csqAcceptElems = csqRoot(".accept-consequence:not(.consequence-icon-circle):not(.consequence-button-container)"); - const tl = U.gsap.timeline({paused: true, defaults: { overwrite: "auto" }}); + const tl = U.gsap.timeline({paused: true, defaults: { }}); - // Fade out base-consequence components - if (csqBaseElems.length > 0) { - tl.fromTo(csqBaseElems, { + // Initialize name and type opacities. + if (csqAcceptTypeElem.length > 0) { + tl.set(csqAcceptTypeElem, {opacity: 0}, 0); + } + if (csqAcceptNameElem.length > 0) { + tl.set(csqAcceptNameElem, {opacity: 0}, 0); + } + + // Crossfade base/accept type lines + if (csqBaseTypeElem.length > 0) { + tl.fromTo(csqBaseTypeElem, { opacity: 1 }, { opacity: 0, - duration: config.duration / 3, - ease: "none" + duration: 0.25, + ease: "sine" + }, 0); + } + if (csqAcceptTypeElem.length > 0) { + tl.fromTo(csqAcceptTypeElem, { + opacity: 0 + }, { + opacity: 1, + duration: 0.25, + ease: "sine" }, 0); } - // Fade in accept-consequence components - if (csqAcceptElems.length > 0) { - tl.fromTo(csqAcceptElems, { + // Crossfade base/accept name lines + if (csqBaseNameElem.length > 0) { + tl.fromTo(csqBaseNameElem, { + opacity: 1 + }, { + opacity: 0, + duration: 0.25, + ease: "sine" + }, 0); + } + if (csqAcceptNameElem.length > 0) { + tl.fromTo(csqAcceptNameElem, { opacity: 0 }, { opacity: 1, - duration: config.duration / 3, - ease: "none" + duration: 0.25, + ease: "sine" }, 0); } @@ -65,14 +95,10 @@ const gsapEffects: Record = { // Enlarge the icon circle, add stroke if (csqIconCircle.length > 0) { tl.fromTo(csqIconCircle, { - // xPercent: -50, - // yPercent: -50, scale: 0.75, outlineColor: C.Colors.dBLACK, outlineWidth: 0 }, { - // xPercent: -50, - // yPercent: -50, scale: 0.85, outlineColor: C.Colors.GREY, outlineWidth: 1, @@ -94,19 +120,26 @@ const gsapEffects: Record = { }, csqClickIcon: { effect: (csqIconContainer: HTMLElement, config) => { - const csqRoot = U.gsap.utils.selector(csqIconContainer); - const csqBackgroundImg = U.gsap.utils.selector($(csqIconContainer).parent())(".consequence-bg-image"); + const csqContainer = $(csqIconContainer).closest(".comp.consequence-display-container"); + const csqRoot = U.gsap.utils.selector(csqContainer[0]); + const iconRoot = U.gsap.utils.selector(csqIconContainer); + + const csqBackgroundImg = csqRoot(".consequence-bg-image"); const csqInteractionPads = csqRoot(".consequence-interaction-pad"); - // const csqIconCircleBase = csqRoot(".consequence-icon-circle.base-consequence"); - const csqIconCircleAccept = csqRoot(".consequence-icon-circle.accept-consequence"); - const csqButtonContainers = csqRoot(".consequence-button-container"); - const tl = U.gsap.timeline({paused: true, defaults: { overwrite: "auto" }}); + const csqIconCircleBase = iconRoot(".consequence-icon-circle.base-consequence"); + const csqIconCircleAccept = iconRoot(".consequence-icon-circle.accept-consequence"); + const csqButtonContainers = iconRoot(".consequence-button-container"); - // Initialize interaction pads to display: none - if (csqInteractionPads.length) { - tl.set(csqInteractionPads, {display: "none"}); - } + const tl = U.gsap.timeline({ + paused: true, + onComplete: function() { + $(csqInteractionPads).css("pointerEvents", "auto"); + }, + onReverseComplete: function() { + $(csqInteractionPads).css("pointerEvents", "none"); + } + }); // Slide out the background if (csqBackgroundImg.length) { @@ -121,36 +154,35 @@ const gsapEffects: Record = { }, 0); } - // Fade in the accept consequence icon circle, enlarging the stroke - if (csqIconCircleAccept.length > 0) { - tl.fromTo(csqIconCircleAccept, { - opacity: 0, - // xPercent: -50, - // yPercent: -50, - scale: 0.85 + // Fade out the base consequence icon circle + if (csqIconCircleBase.length > 0) { + tl.fromTo(csqIconCircleBase, { + opacity: 1 }, { - opacity: 1, - // xPercent: -50, - // yPercent: -50, - duration: 0.15, - ease: "sine" + opacity: 0, + duration: 0.25, + ease: "sine.out" }, 0); } + // Fade in the accept consequence icon circle, enlarging the stroke if (csqIconCircleAccept.length > 0) { tl.fromTo(csqIconCircleAccept, { - outlineWidth: 1, - // xPercent: -50, - // yPercent: -50, - scale: 0.85 + opacity: 0 }, { - scale: 1, - // xPercent: -50, - // yPercent: -50, - outlineWidth: 2, - duration: 0.25, + opacity: 1, + duration: 0.15, ease: "sine" - }, 0.175); + }, 0) + .fromTo(csqIconCircleAccept, { + outlineWidth: 1, + scale: 0.85 + }, { + outlineWidth: 2, + scale: 1, + duration: 0.25, + ease: "sine" + }, 0.175); } // Scale and fade in the button containers @@ -169,11 +201,6 @@ const gsapEffects: Record = { }, 0); } - // Finally, toggle on interaction pads - if (csqInteractionPads.length) { - tl.set(csqInteractionPads, {display: "block"}); - } - return tl; }, defaults: { @@ -184,7 +211,7 @@ const gsapEffects: Record = { easeStrength: 1.5 } }, - csqEnterAccept: { + csqEnterRight: { effect: (csqContainer: HTMLElement) => { const csqRoot = U.gsap.utils.selector(csqContainer); const typeLine = csqRoot(".consequence-type-container .consequence-type.accept-consequence"); @@ -195,7 +222,7 @@ const gsapEffects: Record = { const buttonIcon = buttonRoot(".button-icon i"); const buttonLabel = buttonRoot(".consequence-button-label"); - const tl = U.gsap.timeline({paused: true, defaults: { overwrite: "auto" }}); + const tl = U.gsap.timeline({paused: true, defaults: { }}); // Turn type line white if (typeLine.length > 0) { @@ -279,164 +306,55 @@ const gsapEffects: Record = { }, defaults: {} }, - csqEnterResist: { + csqEnterLeft: { effect: (csqContainer: HTMLElement) => { const csqRoot = U.gsap.utils.selector(csqContainer); + const typeLine = csqRoot(".consequence-type-container .consequence-type.accept-consequence"); + const nameLine = csqRoot(".consequence-name-container .consequence-name.accept-consequence"); + const acceptIconCircle = csqRoot(".consequence-icon-circle.accept-consequence"); + const acceptButton = csqRoot(".consequence-button-container.consequence-accept-button-container"); - const typeLine = csqRoot(".consequence-type-container .consequence-type.resist-consequence"); - - // const acceptElems = csqRoot(".accept-consequence"); - // const specialArmorElems = csqRoot(".special-armor-consequence"); - - const blockedElem = csqRoot(".consequence-blocker.resist-consequence"); - const footerBg = csqRoot(".consequence-footer-container .consequence-footer-bg.resist-consequence"); - const attrElem = csqRoot(".consequence-footer-container .consequence-resist-attribute"); - const resistCsqName = csqRoot(".consequence-name.resist-consequence"); - const iconCircle = csqRoot(".consequence-icon-circle.resist-consequence"); - - const buttonRoot = U.gsap.utils.selector(csqRoot(".consequence-button-container.consequence-resist-button-container")); - - const buttonBg = buttonRoot(".consequence-button-bg"); - eLog.checkLog3("gsap", "Resist Button BG", buttonBg); - const buttonIcon = buttonRoot(".button-icon i"); - const buttonLabel = buttonRoot(".consequence-button-label"); - - const tl = U.gsap.timeline({paused: true, defaults: { overwrite: "auto" }}); - - // // Fade out all accept elems and special armor elems - // if ([...acceptElems, ...specialArmorElems].length > 0) { - // tl.to([...acceptElems, ...specialArmorElems], { - // opacity: 0, - // duration: 0.25, - // ease: "sine.out" - // }); - // } + const tl = U.gsap.timeline({paused: true, defaults: { }}); - // Quickly fade-in the right side blocker - if (blockedElem.length > 0) { - tl.fromTo(blockedElem, { - opacity: 0 - }, { - opacity: 1, - duration: 0.25, - ease: "sine" - }, 0); - } - - // Slide out .consequence-type.resist-consequence from left + // Fade out type line if (typeLine.length > 0) { - tl.fromTo(typeLine, { - x: -15, - scaleX: 0, - opacity: 1, - color: C.Colors.dGOLD - }, { - x: 0, - scaleX: 1, - opacity: 1, - color: C.Colors.dGOLD, - duration: 0.5, - ease: "back.out" - }, 0); - } - - // Slide out .consequence-resist-button-bg from right - if (buttonBg.length > 0) { - tl.fromTo(buttonBg, { - scaleX: 0, - skewX: 0, - opacity: 1 - }, { - scaleX: 1, - skewX: -45, - opacity: 1, - duration: 0.5, - ease: "back.inOut" - }, 0); - } - - // Slide out .consequence-footer-bg.resist-consequence from left - if (footerBg.length > 0) { - tl.fromTo(footerBg, { - scaleX: 0, - skewX: 0, - opacity: 1 - }, { - scaleX: 1, - skewX: -45, - opacity: 1, - duration: 0.5, - ease: "back.inOut" - }, 0); - } - - // Slide out .consequence-resist-attribute from left - if (attrElem.length > 0) { - tl.fromTo(attrElem, { - scaleX: 0, - opacity: 1 - }, { - scaleX: 1, - opacity: 1, - duration: 0.5, - ease: "back.inOut" - }, 0); - } - - // Slide out .consequence-name.resist-consequence from left - if (resistCsqName.length > 0) { - tl.fromTo(resistCsqName, { - scaleX: 0, - opacity: 1 - }, { - scaleX: 1, - opacity: 1, - duration: 0.5, - ease: "back.inOut" - }, 0); + tl.to(typeLine, + { + opacity: 0, + duration: 0.15, + ease: "sine.inOut" + }, 0); } - // Fade in .consequence-icon-circle.resist-consequence - if (iconCircle.length > 0) { - tl.fromTo(iconCircle, { - opacity: 0 - }, { - opacity: 1, - duration: 0.5, - ease: "back.out" + // Fade out name + if (nameLine.length > 0) { + tl.to(nameLine, { + opacity: 0, + duration: 0.15, + ease: "sine.inOut" }, 0); } - // Turn button icon black and scale - if (buttonIcon.length > 0) { - tl.fromTo(buttonIcon, + // Fade out icon + if (acceptIconCircle.length > 0) { + tl.to(acceptIconCircle, { - color: C.Colors.GREY, - opacity: 0.75, - scale: 1 - }, - { - color: C.Colors.dBLACK, - scale: 1.25, - opacity: 1, - duration: 0.5, - ease: "sine" + opacity: 0, + duration: 0.15, + ease: "sine.inOut" }, 0); } - // Turn button label black, bold - if (buttonLabel.length > 0) { - tl.fromTo(buttonLabel, + // Fade out accept button + if (acceptButton.length > 0) { + tl.fromTo(acceptButton, { - color: C.Colors.GREY, - fontWeight: 400, - scale: 1 + opacity: 1 }, { - color: C.Colors.dBLACK, - fontWeight: 800, - duration: 0.75, - ease: "sine" + opacity: 0, + duration: 0.25, + ease: "sine.inOut" }, 0); } @@ -444,91 +362,70 @@ const gsapEffects: Record = { }, defaults: {} }, - csqEnterSpecialArmor: { - effect: (csqContainer: HTMLElement) => { + csqEnterSubLeft: { + effect: (csqContainer: HTMLElement, config) => { const csqRoot = U.gsap.utils.selector(csqContainer); - const typeLine = csqRoot(".consequence-type-container .consequence-type.special-armor-consequence"); - - // const acceptElems = csqRoot(".accept-consequence"); - // const resistElems = csqRoot(".resist-consequence"); - - const footerBg = csqRoot(".consequence-footer-container .consequence-footer-bg.special-armor-consequence"); - const footerMsg = csqRoot(".consequence-footer-container .consequence-special-armor-message"); - const specialArmorCsqName = csqRoot(".consequence-name.special-armor-consequence"); - const iconCircle = csqRoot(".consequence-icon-circle.special-armor-consequence"); + const iconCircle = csqRoot(`.consequence-icon-circle.${config.type}-consequence`); + const typeLine = csqRoot(`.consequence-type-container .consequence-type.${config.type}-consequence`); + const nameLine = csqRoot(`.consequence-name.${config.type}-consequence`); - const blockedElem = csqRoot(".consequence-blocker.special-armor-consequence"); + const footerBg = csqRoot(`.consequence-footer-container .consequence-footer-bg.${config.type}-consequence`); + const footerMsg = csqRoot(`.consequence-footer-container .consequence-footer-message.${config.type}-consequence`); - const tl = U.gsap.timeline({paused: true, defaults: { overwrite: "auto" }}); + const tl = U.gsap.timeline({paused: true, defaults: { }}); - // // Fade out all accept elems and resist elems - // if ([...acceptElems, ...resistElems].length > 0) { - // tl.to([...acceptElems, ...resistElems], { - // opacity: 0, - // duration: 0.25, - // ease: "sine.out" - // }); - // } - - if (blockedElem.length > 0) { - tl.fromTo(blockedElem, { + // Fade in icon circle + if (iconCircle.length > 0) { + tl.fromTo(iconCircle, { opacity: 0 }, { opacity: 1, - duration: 0.25, - ease: "sine" + duration: 0.5, + ease: "back.out" }, 0); } - // Slide out .consequence-type.special-armor-consequence from left + // Fade in typeLine if (typeLine.length > 0) { tl.fromTo(typeLine, { - x: -15, - scaleX: 0, - opacity: 1, - color: C.Colors.dBLUE + opacity: 0 }, { - x: 0, - scaleX: 1, opacity: 1, - color: C.Colors.dBLUE, duration: 0.5, ease: "back.out" }, 0); } - // Slide out .consequence-footer-bg.special-armor-consequence from left - if (footerBg.length > 0) { - tl.fromTo(footerBg, { - scaleX: 0, - skewX: 0, - opacity: 1 + // Slide out nameLine from left + if (nameLine.length > 0) { + tl.fromTo(nameLine, { + scaleX: 0 }, { scaleX: 1, - skewX: -45, - opacity: 1, duration: 0.5, ease: "back.inOut" }, 0); } - // Slide out .consequence-special-armor-message from left - if (footerMsg.length > 0) { - tl.fromTo(footerMsg, { + // Slide out footer background from left + if (footerBg.length > 0) { + tl.fromTo(footerBg, { scaleX: 0, + skewX: 0, opacity: 1 }, { scaleX: 1, + skewX: -45, opacity: 1, duration: 0.5, ease: "back.inOut" }, 0); } - // Slide out .consequence-name.special-armor-consequence from left - if (specialArmorCsqName.length > 0) { - tl.fromTo(specialArmorCsqName, { + // Slide out attribute from left + if (footerMsg.length > 0) { + tl.fromTo(footerMsg, { scaleX: 0, opacity: 1 }, { @@ -538,28 +435,13 @@ const gsapEffects: Record = { ease: "back.inOut" }, 0); } + if (csqRoot(`.consequence-button-container.consequence-${config.type}-button-container`).length > 0) { + const buttonRoot = U.gsap.utils.selector(csqRoot(`.consequence-button-container.consequence-${config.type}-button-container`)); + const buttonBg = buttonRoot(".consequence-button-bg"); + const buttonIcon = buttonRoot(".button-icon i"); + const buttonLabel = buttonRoot(".consequence-button-label"); - // Fade in .consequence-icon-circle.special-armor-consequence - if (iconCircle.length > 0) { - tl.fromTo(iconCircle, { - opacity: 0 - }, { - opacity: 1, - duration: 0.5, - ease: "back.out" - }, 0); - } - - - if (csqRoot(".consequence-button-container.consequence-special-armor-button-container").length > 0) { - const buttonRoot = U.gsap.utils.selector(csqRoot(".consequence-button-container.consequence-special-armor-button-container")); - const [buttonBg, buttonIcon, buttonLabel] = [ - buttonRoot(".consequence-button-bg"), - buttonRoot(".button-icon i"), - buttonRoot(".consequence-button-label") - ]; - - // Slide out .consequence-special-armor-button-bg from right + // Slide out button background from right if (buttonBg.length > 0) { tl.fromTo(buttonBg, { scaleX: 0, @@ -739,7 +621,7 @@ const gsapEffects: Record = { }, hoverTooltip: { effect: (tooltip, config) => { - const tl = U.gsap.timeline({paused: true, defaults: { overwrite: "auto" }}); + const tl = U.gsap.timeline({paused: true, defaults: { }}); if (!tooltip) { return tl; } // Tooltip = $(tooltip); @@ -869,10 +751,13 @@ export function ApplyConsequenceAnimations(html: JQuery) { const iconContainer$ = $(csqContainer).find(".consequence-icon-container"); - const acceptInteractionPad$ = $(csqContainer).find(".accept-consequence-pad"); - const resistInteractionPad$ = $(csqContainer).find(".resist-consequence-pad"); - const specialArmorInteractionPad$ = $(csqContainer).find(".special-armor-consequence-pad"); + const rightInteractionPad$ = $(csqContainer).find(".interaction-pad-right"); + const leftInteractionPad$ = $(csqContainer).find(".interaction-pad-left"); + const resistInteractionPad$ = $(csqContainer).find(".interaction-pad-left-resist"); + const armorInteractionPad$ = $(csqContainer).find(".interaction-pad-left-armor"); + const specialInteractionPad$ = $(csqContainer).find(".interaction-pad-left-special"); + // Apply master on-enter hover timeline to consequence container. $(csqContainer).data("hoverTimeline", U.gsap.effects.csqEnter(csqContainer)); $(csqContainer).on({ mouseenter: function() { @@ -888,6 +773,7 @@ export function ApplyConsequenceAnimations(html: JQuery) { } }); + // Apply click timeline to icon circle iconContainer$.data("clickTimeline", U.gsap.effects.csqClickIcon(iconContainer$[0])); iconContainer$.on({ click: function() { @@ -926,19 +812,34 @@ export function ApplyConsequenceAnimations(html: JQuery) { } }); - acceptInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterAccept(csqContainer)); - acceptInteractionPad$.on({ + // Apply hover timelines to right (accept) interaction pad + rightInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterRight(csqContainer)); + rightInteractionPad$.on({ + mouseenter: function() { + if (iconContainer$.data("isToggled")) { + rightInteractionPad$.data("hoverTimeline").play(); + } + }, + mouseleave: function() { + rightInteractionPad$.data("hoverTimeline").reverse(); + } + }); + + // Apply hover timeline to left (resist/armor/special) interaction pad + leftInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterLeft(csqContainer)); + leftInteractionPad$.on({ mouseenter: function() { if (iconContainer$.data("isToggled")) { - acceptInteractionPad$.data("hoverTimeline").play(); + leftInteractionPad$.data("hoverTimeline").play(); } }, mouseleave: function() { - acceptInteractionPad$.data("hoverTimeline").reverse(); + leftInteractionPad$.data("hoverTimeline").reverse(); } }); - resistInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterResist(csqContainer)); + // Apply hover timelines to specific left interaction pads + resistInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterSubLeft(csqContainer, {type: "resist"})); resistInteractionPad$.on({ mouseenter: function() { if (iconContainer$.data("isToggled")) { @@ -952,16 +853,30 @@ export function ApplyConsequenceAnimations(html: JQuery) { } }); - specialArmorInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterSpecialArmor(csqContainer)); - specialArmorInteractionPad$.on({ + armorInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterSubLeft(csqContainer, {type: "armor"})); + armorInteractionPad$.on({ + mouseenter: function() { + if (iconContainer$.data("isToggled")) { + armorInteractionPad$.data("hoverTimeline").play(); + } + }, + mouseleave: function() { + if (iconContainer$.data("isToggled")) { + armorInteractionPad$.data("hoverTimeline").reverse(); + } + } + }); + + specialInteractionPad$.data("hoverTimeline", U.gsap.effects.csqEnterSubLeft(csqContainer, {type: "special"})); + specialInteractionPad$.on({ mouseenter: function() { if (iconContainer$.data("isToggled")) { - specialArmorInteractionPad$.data("hoverTimeline").play(); + specialInteractionPad$.data("hoverTimeline").play(); } }, mouseleave: function() { if (iconContainer$.data("isToggled")) { - specialArmorInteractionPad$.data("hoverTimeline").reverse(); + specialInteractionPad$.data("hoverTimeline").reverse(); } } }); diff --git a/ts/core/settings.ts b/ts/core/settings.ts index e2ddd5cd..854eed25 100644 --- a/ts/core/settings.ts +++ b/ts/core/settings.ts @@ -191,13 +191,14 @@ export function initDOMStyles() { // Append lightning-barrier background to #sidebar $("#interface") .append(`
+
`); /* - `); + `); */ } diff --git a/ts/documents/actors/BladesPC.ts b/ts/documents/actors/BladesPC.ts index 5dffa079..ba3ff593 100644 --- a/ts/documents/actors/BladesPC.ts +++ b/ts/documents/actors/BladesPC.ts @@ -171,6 +171,14 @@ class BladesPC extends BladesActor implements BladesActorSubClass.Scoundrel, }; } + get stress(): number { + return this.system.stress.value; + } + + get stressMax(): number { + return this.system.stress.max; + } + get trauma(): number { if (!BladesActor.IsType(this, BladesActorType.pc)) { return 0; } return Object.keys(this.system.trauma.checked) @@ -334,6 +342,23 @@ class BladesPC extends BladesActor implements BladesActorSubClass.Scoundrel, // #endregion + async adjustStress(deltaStress: number) { + const newStress = Math.min(this.stressMax, Math.max(0, this.stress + deltaStress)); + + if (newStress === this.stressMax) { + /* PUSH NOTICE: Player must select Trauma & is removed from Score. */ + } + + await this.update({"system.stress.value": newStress}); + } + + async spendSpecialArmor() { + if (this.system.armor.active.special && !this.system.armor.checked.special) { + await this.update({"system.armor.checked.special": true}); + /* PUSH NOTICE: Spent Special Armor */ + } + } + get rollTraitPCTooltipActions(): string { const tooltipStrings: string[] = ["
"]; const actionRatings = this.actions; diff --git a/ts/sheets/actor/BladesPCSheet.ts b/ts/sheets/actor/BladesPCSheet.ts index 349f7a36..14b2b7d1 100644 --- a/ts/sheets/actor/BladesPCSheet.ts +++ b/ts/sheets/actor/BladesPCSheet.ts @@ -343,7 +343,7 @@ class BladesPCSheet extends BladesActorSheet { $(this).siblings(`.svg-armor.armor-${targetArmor}`).removeClass("hover-over"); } }); - html.find(".special-armor-control").on({ + html.find(".special-control").on({ click() { if (!self.activeArmor.includes("special")) { return; } self.actor.update({"system.armor.checked.special": self.uncheckedArmor.includes("special")}); diff --git a/ts/sheets/roll/BladesConsequence.ts b/ts/sheets/roll/BladesConsequence.ts index 6fbc007c..29250630 100644 --- a/ts/sheets/roll/BladesConsequence.ts +++ b/ts/sheets/roll/BladesConsequence.ts @@ -1,4 +1,4 @@ -/* eslint-disable lines-between-class-members, no-dupe-class-members */ +/* no-dupe-class-members */ import C, {BladesActorType, AttributeTrait, ConsequenceType, RollResult, RollType, Position, Effect, RollPhase} from "../../core/constants"; import U from "../../core/utilities"; @@ -6,6 +6,10 @@ import BladesRoll, {BladesRollPrimary} from "../../BladesRoll"; class BladesConsequence { + static GetActiveRollChatID(): string | undefined { + return Array.from(game.messages).filter((msg) => $(msg.content ?? "").data("chat-id")).pop()?.id ?? undefined; + } + static ApplyChatListeners(html: JQuery | HTMLElement) { const html$ = $(html); const roll$ = html$.find(".blades-roll"); @@ -22,6 +26,14 @@ class BladesConsequence { roll$.closest(".chat-message").addClass("indulgevice-roll"); } + // If this message is the last one, add 'active-chat-roll' class and remove it from all others + if (BladesConsequence.GetActiveRollChatID() === roll$.data("chatId")) { + $(document).find(".chat-message").removeClass("active-chat-roll"); + roll$.closest(".chat-message").addClass("active-chat-roll"); + } else { + roll$.closest(".chat-message").removeClass("active-chat-roll"); + } + const rollPhase = roll$.data("rollPhase") as RollPhase; eLog.checkLog3("rollCollab", "ApplyChatListeners", {html, roll$, rollPhase}); if (rollPhase !== RollPhase.AwaitingConsequences) {return;} @@ -44,7 +56,7 @@ class BladesConsequence { await csq.resistArmorConsequence(); break; } - case "special-armor-consequence": { + case "special-consequence": { await csq.resistSpecialArmorConsequence(); break; } @@ -53,6 +65,22 @@ class BladesConsequence { }); } + static async GetFromID(msgID: string, csqID: string): Promise + static async GetFromID(msgID: string): Promise + static async GetFromID(msgID: string, csqID?: string): Promise< + BladesConsequence[] + |BladesConsequence + |undefined + > { + const chatMessage = game.messages.get(msgID); + if (chatMessage) { + if (csqID) { + return BladesConsequence.GetFromChatMessage(chatMessage, csqID); + } + return BladesConsequence.GetFromChatMessage(chatMessage); + } + return undefined; + } static GetFromCsqElem(csqElem: JQuery|HTMLElement): BladesConsequence { csqElem = $(csqElem); @@ -133,7 +161,7 @@ class BladesConsequence { ...getBaseData(csq$), ...getResistableData(csq$, "resist-consequence"), ...getResistableData(csq$, "armor-consequence"), - ...getResistableData(csq$, "special-armor-consequence"), + ...getResistableData(csq$, "special-consequence"), isAccepted: csq$.hasClass("consequence-accepted") }); @@ -302,22 +330,22 @@ class BladesConsequence { this._attributeVal = attributeVal; if (!resistTo.id) { throw new Error("[new BladesConsequence] Missing 'resistTo.id' in constructor data object."); } - if (!resistTo.name) { throw new Error("[new BladesConsequence] Missing 'resistTo.name' in constructor data object."); } if (!resistTo.type) { throw new Error("[new BladesConsequence] Missing 'resistTo.type' in constructor data object."); } + if (!resistTo.name && resistTo.type !== ConsequenceType.None) { throw new Error("[new BladesConsequence] Missing 'resistTo.name' in constructor data object."); } this._resistTo = new BladesConsequence(resistTo); } if (armorTo) { if (!armorTo.id) { throw new Error("[new BladesConsequence] Missing 'armorTo.id' in constructor data object."); } - if (!armorTo.name) { throw new Error("[new BladesConsequence] Missing 'armorTo.name' in constructor data object."); } if (!armorTo.type) { throw new Error("[new BladesConsequence] Missing 'armorTo.type' in constructor data object."); } + if (!armorTo.name && armorTo.type !== ConsequenceType.None) { throw new Error("[new BladesConsequence] Missing 'armorTo.name' in constructor data object."); } this._armorTo = new BladesConsequence(armorTo); } if (specialTo) { if (!specialTo.id) { throw new Error("[new BladesConsequence] Missing 'specialTo.id' in constructor data object."); } - if (!specialTo.name) { throw new Error("[new BladesConsequence] Missing 'specialTo.name' in constructor data object."); } if (!specialTo.type) { throw new Error("[new BladesConsequence] Missing 'specialTo.type' in constructor data object."); } + if (!specialTo.name && specialTo.type !== ConsequenceType.None) { throw new Error("[new BladesConsequence] Missing 'specialTo.name' in constructor data object."); } this._specialTo = new BladesConsequence(specialTo); } } @@ -363,7 +391,7 @@ class BladesConsequence { name = this._armorTo.name; break; } - case "specialArmor": { + case "special": { if (!this._specialTo) { throw new Error(`Cannot transform csq id '${this.id}' into "special" consequence: no specialTo data found.`); } if (this._specialTo.type === ConsequenceType.None) { break; } icon = this._specialTo.icon; @@ -434,7 +462,7 @@ class BladesConsequence { .accept-consequence, .resist-consequence, .armor-consequence, - .special-armor-consequence, + .special-consequence, .consequence-footer-container `); @@ -475,11 +503,13 @@ class BladesConsequence { } }; BladesRoll.NewRoll(resistConfig); + } - // The resistance roll and resolution will handle the stress cost of resisting: Resistance is always successful, - // so can edit chat message to resisted consequence immediately, and apply effects to rollPrimary. - await this._resistTo.applyConsequenceToPrimary(); - await this.transformToConsequence("resist"); + async applyResistedConsequence() { + if (this._resistTo) { + await this._resistTo.applyConsequenceToPrimary(); + await this.transformToConsequence("resist"); + } } async resistArmorConsequence() {