3 Commits

Author SHA1 Message Date
uberwald 7f758afa56 Fix CSS issues and add omen re-roll function
Release Creation / build (release) Successful in 42s
2026-05-23 09:19:32 +02:00
uberwald 7beda6c331 Fix CSS issues and add omen re-roll function 2026-05-23 08:48:29 +02:00
uberwald 12bf771e9d Fixes around character sheets and buttons
Release Creation / build (release) Successful in 44s
2026-05-19 13:30:05 +02:00
74 changed files with 640 additions and 287 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

+180 -114
View File
@@ -17,10 +17,10 @@
--mgne-panel-soft: rgba(64, 47, 37, 0.66);
--mgne-border: rgba(171, 139, 104, 0.35);
--mgne-border-strong: rgba(196, 154, 69, 0.42);
--mgne-accent: #dd6b2d;
--mgne-accent: #e89a5f;
--mgne-accent-alt: #4f7d73;
--mgne-text: #ccb292;
--mgne-text-soft: #7e664f;
--mgne-text-soft: #a68e78;
--mgne-title: #ab8b68;
--mgne-shadow: 0 14px 30px rgba(0, 0, 0, 0.36);
}
@@ -30,7 +30,7 @@
color: #ccb292;
}
.application.mgne .window-header {
background: linear-gradient(90deg, rgba(127, 29, 23, 0.4), rgba(183, 70, 31, 0.18) 25%, transparent 70%), linear-gradient(180deg, color-mix(in srgb, #1b1512 80%, black), #13100f);
background: linear-gradient(90deg, rgba(232, 90, 80, 0.4), rgba(216, 122, 79, 0.18) 25%, transparent 70%), linear-gradient(180deg, color-mix(in srgb, #1b1512 80%, black), #13100f);
border-bottom: 1px solid rgba(196, 154, 69, 0.35);
color: #ab8b68;
}
@@ -39,7 +39,7 @@
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: 1rem;
text-shadow: 0 0 16px rgba(221, 107, 45, 0.25);
text-shadow: 0 0 16px rgba(232, 154, 95, 0.25);
}
.application.mgne .window-header .header-control {
font-family: var(--font-awesome, "Font Awesome 6 Pro");
@@ -68,7 +68,7 @@
font-weight: 400;
}
.application.mgne .window-content {
background: radial-gradient(circle at top left, rgba(183, 70, 31, 0.12), transparent 28%), radial-gradient(circle at top right, rgba(79, 125, 115, 0.1), transparent 24%), linear-gradient(180deg, rgba(27, 21, 18, 0.3), rgba(19, 16, 15, 0.28)), url("../assets/ui/page_background.webp") center top / cover no-repeat, linear-gradient(180deg, #1b1512, #13100f 120%);
background: radial-gradient(circle at top left, rgba(216, 122, 79, 0.12), transparent 28%), radial-gradient(circle at top right, rgba(79, 125, 115, 0.1), transparent 24%), linear-gradient(180deg, rgba(27, 21, 18, 0.3), rgba(19, 16, 15, 0.28)), url("../assets/ui/page_background.webp") center top / cover no-repeat, linear-gradient(180deg, #1b1512, #13100f 120%);
color: #ccb292;
min-height: 0;
overflow-y: auto;
@@ -110,15 +110,17 @@
.application.mgne select:focus,
.application.mgne textarea:focus {
outline: none;
border-color: rgba(221, 107, 45, 0.7);
box-shadow: 0 0 0 1px rgba(221, 107, 45, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.06);
border-color: rgba(232, 154, 95, 0.7);
box-shadow: 0 0 0 1px rgba(232, 154, 95, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
.application.mgne select {
appearance: none;
padding-right: 1.3rem;
background-image: linear-gradient(45deg, transparent 50%, rgba(196, 154, 69, 0.78) 50%), linear-gradient(135deg, rgba(196, 154, 69, 0.78) 50%, transparent 50%), linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 60%);
background-position: calc(100% - 11px) calc(50% - 2px), calc(100% - 7px) calc(50% - 2px), 0 0;
background-size: 4px 4px, 4px 4px, auto;
background-size: 4px 4px,
4px 4px,
auto;
background-repeat: no-repeat;
}
.application.mgne textarea {
@@ -131,7 +133,7 @@
letter-spacing: 0.08em;
border: 1px solid rgba(196, 154, 69, 0.44);
border-radius: 999px;
background: linear-gradient(180deg, rgba(221, 107, 45, 0.2), rgba(127, 29, 23, 0.1)), linear-gradient(135deg, rgba(171, 139, 104, 0.1), transparent 40%), rgba(17, 12, 10, 0.72);
background: linear-gradient(180deg, rgba(232, 154, 95, 0.2), rgba(232, 90, 80, 0.1)), linear-gradient(135deg, rgba(171, 139, 104, 0.1), transparent 40%), rgba(17, 12, 10, 0.72);
color: #ccb292;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 6px 14px rgba(0, 0, 0, 0.2);
transition: transform 120ms ease, box-shadow 120ms ease, border-color 120ms ease, color 120ms ease;
@@ -139,20 +141,24 @@
}
.application.mgne button:hover,
.application.mgne button:focus {
border-color: rgba(221, 107, 45, 0.7);
border-color: rgba(232, 154, 95, 0.7);
color: #d9c6ae;
transform: translateY(-1px);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 8px 18px rgba(127, 29, 23, 0.26);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 8px 18px rgba(232, 90, 80, 0.26);
}
.application.mgne label {
font-family: "CastorTwoMGNE", "Palatino Linotype", serif;
text-transform: uppercase;
letter-spacing: 0.08em;
color: #6e3d2a;
color: #ab8b68;
font-size: 0.74rem;
}
.application.mgne.item-sheet label,
.application.mgne.item-sheet .item-form-row > label {
color: #1b1512;
}
.application.mgne fieldset {
background: linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 24%), linear-gradient(135deg, rgba(183, 70, 31, 0.08), transparent 40%), linear-gradient(180deg, rgba(27, 21, 18, 0.52), rgba(19, 16, 15, 0.34)), url("../assets/ui/page_background.webp") center center / cover no-repeat, linear-gradient(180deg, rgba(41, 30, 24, 0.88) 0%, color-mix(in srgb, rgba(41, 30, 24, 0.88) 88%, black) 100%);
background: linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 24%), linear-gradient(135deg, rgba(216, 122, 79, 0.08), transparent 40%), linear-gradient(180deg, rgba(27, 21, 18, 0.52), rgba(19, 16, 15, 0.34)), url("../assets/ui/page_background.webp") center center / cover no-repeat, linear-gradient(180deg, rgba(41, 30, 24, 0.88) 0%, color-mix(in srgb, rgba(41, 30, 24, 0.88) 88%, black) 100%);
border: 1px solid rgba(171, 139, 104, 0.34);
border-radius: 8px;
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.36), inset 0 1px 0 rgba(255, 236, 203, 0.08), inset 0 0 0 1px rgba(255, 236, 203, 0.03);
@@ -167,6 +173,9 @@
border: 1px solid rgba(196, 154, 69, 0.16);
border-radius: calc(8px - 4px);
}
.application.mgne.character fieldset p {
color: #1b1512;
}
.application.mgne fieldset .editor,
.application.mgne fieldset .editor-content,
.application.mgne fieldset .ProseMirror,
@@ -221,16 +230,16 @@
border-radius: 4px;
}
.application.mgne .empty-state {
color: rgba(95, 77, 64, 0.94);
color: #1b1512;
font-style: italic;
letter-spacing: 0.03em;
}
.application.mgne .rollable {
color: #dd6b2d;
text-shadow: 0 0 12px rgba(183, 70, 31, 0.18);
color: #d9c6ae;
text-shadow: 0 0 12px rgba(196, 154, 69, 0.18);
}
.application.mgne .rollable:hover {
color: #e48a59;
color: #e0cfbc;
}
#combat .combat-controls .mgne-flee-control {
display: flex;
@@ -242,18 +251,33 @@
margin-top: 0.35rem;
border: 1px solid rgba(196, 154, 69, 0.28);
border-radius: 6px;
background: linear-gradient(180deg, rgba(127, 29, 23, 0.26), rgba(183, 70, 31, 0.14)), rgba(17, 12, 10, 0.92);
background: linear-gradient(180deg, rgba(232, 90, 80, 0.26), rgba(216, 122, 79, 0.14)), rgba(17, 12, 10, 0.92);
color: #ab8b68;
font-family: "LoraMGNE", "Book Antiqua", serif;
font-weight: 700;
}
#combat .combat-controls .mgne-flee-control:hover:not(:disabled) {
border-color: rgba(221, 107, 45, 0.52);
border-color: rgba(232, 154, 95, 0.52);
color: #b69a7c;
}
#combat .combat-controls .mgne-flee-control:disabled {
opacity: 0.5;
}
#pause > img {
content: url("../assets/ui/machine_god_skull.png");
animation: none;
width: 260px;
height: auto;
filter: drop-shadow(0 0 18px rgba(0, 0, 0, 0.8));
}
#pause figcaption {
font-family: "CastorTwoMGNE", "Palatino Linotype", serif;
font-size: 2rem;
font-weight: bold;
color: #a67054;
text-shadow: 0 0 10px rgba(0, 0, 0, 0.9), 1px 1px 2px #000;
letter-spacing: 2px;
}
.application.mgne .mgne-sheet {
display: flex;
flex-direction: column;
@@ -291,7 +315,7 @@
.application.mgne .inventory-section,
.application.mgne .daily-resources-panel,
.application.mgne .tab-panel {
background: linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 24%), linear-gradient(135deg, rgba(183, 70, 31, 0.08), transparent 40%), linear-gradient(180deg, rgba(27, 21, 18, 0.52), rgba(19, 16, 15, 0.34)), url("../assets/ui/page_background.webp") center center / cover no-repeat, linear-gradient(180deg, rgba(41, 30, 24, 0.88) 0%, color-mix(in srgb, rgba(41, 30, 24, 0.88) 88%, black) 100%);
background: linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 24%), linear-gradient(135deg, rgba(216, 122, 79, 0.08), transparent 40%), linear-gradient(180deg, rgba(27, 21, 18, 0.52), rgba(19, 16, 15, 0.34)), url("../assets/ui/page_background.webp") center center / cover no-repeat, linear-gradient(180deg, rgba(41, 30, 24, 0.88) 0%, color-mix(in srgb, rgba(41, 30, 24, 0.88) 88%, black) 100%);
border: 1px solid rgba(171, 139, 104, 0.34);
border-radius: 8px;
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.36), inset 0 1px 0 rgba(255, 236, 203, 0.08), inset 0 0 0 1px rgba(255, 236, 203, 0.03);
@@ -391,8 +415,8 @@
gap: 0.28rem;
padding: 0.52rem;
border-radius: 8px;
border: 1px solid rgba(82, 69, 60, 0.3);
background: linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 30%), linear-gradient(180deg, rgba(183, 70, 31, 0.07), transparent 80%), rgba(64, 47, 37, 0.66);
border: 1px solid rgba(160, 136, 120, 0.3);
background: linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 30%), linear-gradient(180deg, rgba(216, 122, 79, 0.07), transparent 80%), rgba(64, 47, 37, 0.66);
}
.application.mgne .ability-card {
min-height: 0;
@@ -434,14 +458,14 @@
padding-top: 1rem;
}
.application.mgne .resource-box-inline-track .numeric-caption {
color: #6e3d2a;
color: #ab8b68;
}
.application.mgne .resource-box-inline-track .numeric-caption-strong {
padding: 0.08rem 0.34rem;
border-radius: 999px;
background: rgba(196, 154, 69, 0.18);
border: 1px solid rgba(110, 61, 42, 0.28);
color: #5f3524;
border: 1px solid rgba(171, 139, 104, 0.28);
color: #ab8b68;
font-size: 0.6rem;
letter-spacing: 0.11em;
}
@@ -483,7 +507,7 @@
font-family: "CastorTwoMGNE", "Palatino Linotype", serif;
text-transform: uppercase;
letter-spacing: 0.08em;
color: rgba(129, 83, 59, 0.94);
color: #b58b73;
font-size: 0.58rem;
letter-spacing: 0.12em;
}
@@ -577,7 +601,7 @@
align-items: center;
}
.application.mgne .resource-inline span {
color: #7e664f;
color: #a68e78;
}
.application.mgne .sheet-tabs {
display: flex;
@@ -590,8 +614,8 @@
min-width: 110px;
}
.application.mgne .tab-button.active {
border-color: rgba(221, 107, 45, 0.7);
background: linear-gradient(180deg, rgba(221, 107, 45, 0.26), rgba(127, 29, 23, 0.12)), linear-gradient(135deg, rgba(204, 178, 146, 0.12), transparent 45%), rgba(17, 12, 10, 0.72);
border-color: rgba(232, 154, 95, 0.7);
background: linear-gradient(180deg, rgba(232, 154, 95, 0.26), rgba(232, 90, 80, 0.12)), linear-gradient(135deg, rgba(204, 178, 146, 0.12), transparent 45%), rgba(17, 12, 10, 0.72);
color: #d6c1a7;
}
.application.mgne .tab-panel:not(.active) {
@@ -630,7 +654,7 @@
.application.mgne .section-heading small {
display: inline-block;
margin-top: 0.12rem;
color: #7e664f;
color: #a68e78;
font-size: 0.72rem;
}
.application.mgne .inventory-header,
@@ -668,6 +692,14 @@
color: #ab8b68;
font-size: 0.82rem;
}
.application.mgne.item-sheet h3,
.application.mgne.item-sheet .inventory-header h3 {
color: #1b1512;
}
.application.mgne.character .condition-value-grid label,
.application.mgne.character .condition-flag-grid label {
color: #1b1512;
}
.application.mgne .item-row {
position: relative;
display: grid;
@@ -677,11 +709,11 @@
padding: 0.48rem 0.2rem 0.48rem 0.55rem;
border-radius: 6px;
border: 1px solid transparent;
background: linear-gradient(90deg, rgba(183, 70, 31, 0.09), transparent 35%), linear-gradient(180deg, rgba(204, 178, 146, 0.02), rgba(19, 16, 15, 0.12)), rgba(17, 12, 10, 0.8);
background: linear-gradient(90deg, rgba(216, 122, 79, 0.09), transparent 35%), linear-gradient(180deg, rgba(204, 178, 146, 0.02), rgba(19, 16, 15, 0.12)), rgba(17, 12, 10, 0.8);
}
.application.mgne .item-row:hover {
border-color: rgba(196, 154, 69, 0.28);
background: linear-gradient(90deg, rgba(183, 70, 31, 0.12), transparent 35%), linear-gradient(180deg, rgba(204, 178, 146, 0.04), rgba(19, 16, 15, 0.12)), rgba(17, 12, 10, 0.88);
background: linear-gradient(90deg, rgba(216, 122, 79, 0.12), transparent 35%), linear-gradient(180deg, rgba(204, 178, 146, 0.04), rgba(19, 16, 15, 0.12)), rgba(17, 12, 10, 0.88);
}
.application.mgne .item-name {
color: #ccb292;
@@ -755,8 +787,8 @@
min-width: 0;
}
.application.mgne .resource-label-accent {
color: #dd6b2d;
text-shadow: 0 0 12px rgba(183, 70, 31, 0.18);
color: #d9c6ae;
text-shadow: 0 0 12px rgba(196, 154, 69, 0.18);
}
.application.mgne .ability-score {
display: flex;
@@ -792,7 +824,7 @@
font-size: 0.8rem;
}
.application.mgne .ability-defense-sub {
color: #7e664f;
color: #a68e78;
font-size: 0.62rem;
}
.application.mgne .character .ability-card:nth-child(odd),
@@ -803,7 +835,7 @@
.application.mgne .companion .resource-box,
.application.mgne .creature .ability-card,
.application.mgne .companion .ability-card {
background: linear-gradient(180deg, rgba(127, 29, 23, 0.11), transparent 60%), linear-gradient(180deg, rgba(204, 178, 146, 0.04), transparent 35%), rgba(64, 47, 37, 0.66);
background: linear-gradient(180deg, rgba(232, 90, 80, 0.11), transparent 60%), linear-gradient(180deg, rgba(204, 178, 146, 0.04), transparent 35%), rgba(64, 47, 37, 0.66);
}
@media (max-width: 960px) {
.application.mgne .sheet-header,
@@ -845,9 +877,9 @@
background: rgba(196, 154, 69, 0.1);
}
.item-weight-badge.weight-heavy {
color: #7f1d17;
border-color: rgba(127, 29, 23, 0.45);
background: rgba(127, 29, 23, 0.12);
color: #ab8b68;
border-color: rgba(196, 154, 69, 0.45);
background: rgba(149, 128, 104, 0.12);
}
.load-display {
font-weight: 700;
@@ -855,15 +887,15 @@
cursor: default;
}
.load-overloaded {
color: #7f1d17 !important;
text-shadow: 0 0 6px rgba(127, 29, 23, 0.5);
color: #d9c6ae !important;
text-shadow: 0 0 6px rgba(196, 154, 69, 0.5);
}
.resource-box-overloaded {
border-color: rgba(127, 29, 23, 0.6) !important;
background: rgba(127, 29, 23, 0.1) !important;
border-color: rgba(196, 154, 69, 0.6) !important;
background: rgba(149, 128, 104, 0.1) !important;
}
.resource-box-overloaded .resource-label-accent {
color: #7f1d17 !important;
color: #d9c6ae !important;
}
.item-name[data-tooltip] {
cursor: help;
@@ -891,9 +923,9 @@
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #7f1d17;
background: rgba(127, 29, 23, 0.14);
border: 1px solid rgba(127, 29, 23, 0.45);
color: #d9c6ae;
background: rgba(149, 128, 104, 0.14);
border: 1px solid rgba(171, 139, 104, 0.45);
border-radius: 3px;
vertical-align: middle;
}
@@ -916,9 +948,9 @@
letter-spacing: 0.03em;
}
.item-durability-badge.durability-broken {
color: #7f1d17;
border-color: rgba(127, 29, 23, 0.4);
background: rgba(127, 29, 23, 0.1);
color: #d9c6ae;
border-color: rgba(171, 139, 104, 0.4);
background: rgba(149, 128, 104, 0.1);
text-decoration: line-through;
}
.item-row-broken {
@@ -927,7 +959,7 @@
}
.item-row-broken .item-name {
text-decoration: line-through;
color: rgba(204, 178, 146, 0.55);
color: #d6c1a7;
}
.weapon-properties-grid {
display: flex;
@@ -979,10 +1011,10 @@
margin-left: 0.2em;
}
.creature-traits-container {
border: 1px solid rgba(127, 29, 23, 0.35);
border-left: 3px solid rgba(127, 29, 23, 0.65);
border: 1px solid rgba(232, 90, 80, 0.35);
border-left: 3px solid rgba(232, 90, 80, 0.65);
border-radius: 4px;
background: linear-gradient(135deg, rgba(127, 29, 23, 0.05), transparent 60%), rgba(64, 47, 37, 0.85);
background: linear-gradient(135deg, rgba(232, 90, 80, 0.05), transparent 60%), rgba(64, 47, 37, 0.85);
padding: 0.6rem 0.75rem;
display: flex;
flex-direction: column;
@@ -993,7 +1025,7 @@
align-items: center;
justify-content: space-between;
gap: 0.5rem;
border-bottom: 1px solid rgba(127, 29, 23, 0.25);
border-bottom: 1px solid rgba(232, 90, 80, 0.25);
padding-bottom: 0.4rem;
margin-bottom: 0.1rem;
}
@@ -1004,21 +1036,21 @@
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: rgba(127, 29, 23, 0.9);
color: #ed7c74;
}
.creature-traits-header button {
font-size: 0.72rem;
padding: 0.15em 0.6em;
background: rgba(127, 29, 23, 0.12);
border: 1px solid rgba(127, 29, 23, 0.35);
color: rgba(127, 29, 23, 0.8);
background: rgba(232, 90, 80, 0.12);
border: 1px solid rgba(232, 90, 80, 0.35);
color: #ea6b62;
border-radius: 3px;
cursor: pointer;
transition: background 0.15s, color 0.15s;
}
.creature-traits-header button:hover {
background: rgba(127, 29, 23, 0.22);
color: #aa271f;
background: rgba(232, 90, 80, 0.22);
color: #ee857d;
}
.creature-traits-list {
display: flex;
@@ -1027,14 +1059,14 @@
}
.creature-trait-card {
background: rgba(19, 16, 15, 0.3);
border: 1px solid rgba(127, 29, 23, 0.2);
border: 1px solid rgba(232, 90, 80, 0.2);
border-radius: 3px;
padding: 0.35rem 0.5rem;
transition: background 0.15s, border-color 0.15s;
}
.creature-trait-card:hover {
background: rgba(127, 29, 23, 0.08);
border-color: rgba(127, 29, 23, 0.35);
background: rgba(232, 90, 80, 0.08);
border-color: rgba(232, 90, 80, 0.35);
}
.creature-trait-card-header {
display: flex;
@@ -1055,7 +1087,7 @@
cursor: default;
}
.creature-trait-name i {
color: rgba(127, 29, 23, 0.7);
color: rgba(232, 90, 80, 0.7);
font-size: 0.75em;
}
.creature-trait-trigger {
@@ -1097,7 +1129,7 @@
flex-wrap: wrap;
padding: 0.45rem 0.6rem;
background: rgba(64, 47, 37, 0.5);
border: 1px solid rgba(183, 70, 31, 0.2);
border: 1px solid rgba(216, 122, 79, 0.2);
border-radius: 4px;
}
.creature-meta-label {
@@ -1106,7 +1138,7 @@
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.07em;
color: rgba(183, 70, 31, 0.8);
color: #ccb292;
white-space: nowrap;
}
.creature-type-group {
@@ -1120,15 +1152,26 @@
align-items: center;
gap: 0.3em;
font-size: 0.83rem;
color: #ccb292;
color: #ccb292 !important;
cursor: pointer;
user-select: none;
}
.creature-type-checkbox > span {
color: #ccb292 !important;
}
.creature-type-checkbox input[type="checkbox"] {
accent-color: #b7461f;
appearance: checkbox;
-webkit-appearance: checkbox;
accent-color: #d87a4f;
width: 0.9rem;
height: 0.9rem;
cursor: pointer;
margin: 0;
flex-shrink: 0;
}
.creature-type-checkbox input[type="checkbox"]::before,
.creature-type-checkbox input[type="checkbox"]::after {
display: none;
}
.creature-number-group {
display: flex;
@@ -1143,13 +1186,13 @@
font-size: 0.9rem;
color: #ccb292;
background: rgba(17, 12, 10, 0.72);
border: 1px solid rgba(183, 70, 31, 0.3);
border: 1px solid rgba(216, 122, 79, 0.3);
border-radius: 3px;
padding: 0.15em 0.3em;
}
.creature-number-input:focus {
outline: none;
border-color: rgba(183, 70, 31, 0.6);
border-color: rgba(216, 122, 79, 0.6);
background: rgba(17, 12, 10, 0.9);
}
.creature-action-table-section .action-table-drop-zone {
@@ -1164,7 +1207,7 @@
}
.creature-action-table-section .action-table-drop-zone i {
font-size: 1em;
color: #b7461f;
color: #d87a4f;
}
.creature-action-table-section .action-table-drop-zone .action-table-name {
font-weight: 600;
@@ -1172,8 +1215,8 @@
color: #ccb292;
}
.creature-action-table-section .action-table-drop-zone.drop-hint {
border: 2px dashed rgba(183, 70, 31, 0.35);
background: rgba(183, 70, 31, 0.04);
border: 2px dashed rgba(216, 122, 79, 0.35);
background: rgba(216, 122, 79, 0.04);
color: rgba(204, 178, 146, 0.5);
font-style: italic;
justify-content: center;
@@ -1181,17 +1224,17 @@
transition: background 0.15s, border-color 0.15s;
}
.creature-action-table-section .action-table-drop-zone.drop-hint i {
color: rgba(183, 70, 31, 0.5);
color: rgba(216, 122, 79, 0.5);
}
.creature-action-table-section .action-table-drop-zone.drop-hint:hover,
.creature-action-table-section .action-table-drop-zone.drop-hint.drag-over {
background: rgba(183, 70, 31, 0.09);
border-color: rgba(183, 70, 31, 0.6);
background: rgba(216, 122, 79, 0.09);
border-color: rgba(216, 122, 79, 0.6);
color: rgba(204, 178, 146, 0.7);
}
.creature-action-table-section .action-table-drop-zone.drop-hint:hover i,
.creature-action-table-section .action-table-drop-zone.drop-hint.drag-over i {
color: #b7461f;
color: #d87a4f;
}
.creature-action-table-section .action-table-buttons {
display: flex;
@@ -1201,9 +1244,9 @@
.creature-action-table-section .action-table-buttons button {
font-size: 0.75rem;
padding: 0.15em 0.55em;
background: rgba(183, 70, 31, 0.1);
border: 1px solid rgba(183, 70, 31, 0.3);
color: rgba(183, 70, 31, 0.8);
background: rgba(149, 128, 104, 0.1);
border: 1px solid rgba(196, 154, 69, 0.3);
color: #d6c1a7;
border-radius: 3px;
cursor: pointer;
transition: background 0.15s, color 0.15s;
@@ -1212,8 +1255,8 @@
gap: 0.3em;
}
.creature-action-table-section .action-table-buttons button:hover {
background: rgba(183, 70, 31, 0.22);
color: #b7461f;
background: rgba(149, 128, 104, 0.22);
color: #ab8b68;
}
.application.mgne.party .party-credits-row {
display: flex;
@@ -1285,7 +1328,7 @@
border-radius: 6px;
}
.application.mgne.party .party-member-row.party-member-header {
color: #7e664f;
color: #a68e78;
font-size: 0.72rem;
font-weight: 700;
text-transform: uppercase;
@@ -1318,14 +1361,14 @@
color: #c49a45;
}
.application.mgne.party .party-member-hp {
color: #dd6b2d;
color: #ab8b68;
font-family: "CastorTwoMGNE", "Palatino Linotype", serif;
font-size: 0.82rem;
font-weight: 700;
text-align: center;
}
.application.mgne.party .party-member-type {
color: #7e664f;
color: #bead9d;
font-size: 0.78rem;
font-style: italic;
}
@@ -1344,7 +1387,7 @@
border-radius: 6px;
}
.application.mgne.party .party-loot-row.party-loot-header {
color: #7e664f;
color: #a68e78;
font-size: 0.72rem;
font-weight: 700;
text-transform: uppercase;
@@ -1369,12 +1412,12 @@
border: 1px solid rgba(171, 139, 104, 0.25);
}
.application.mgne.party .item-type-label {
color: #7e664f;
color: #a68e78;
font-size: 0.78rem;
font-style: italic;
}
.application.mgne.party .party-drop-hint {
color: rgba(126, 102, 79, 0.7);
color: rgba(166, 142, 120, 0.7);
font-size: 0.75rem;
font-style: italic;
text-align: center;
@@ -1385,13 +1428,13 @@
}
.application.mgne.roll-dialog .window-content {
padding: 0.55rem;
background: radial-gradient(circle at top left, rgba(221, 107, 45, 0.14), transparent 26%), linear-gradient(180deg, rgba(27, 21, 18, 0.26), rgba(19, 16, 15, 0.22)), url("../assets/ui/page_background.webp") center center / cover no-repeat, linear-gradient(180deg, #1b1512, #13100f 120%);
background: radial-gradient(circle at top left, rgba(232, 154, 95, 0.14), transparent 26%), linear-gradient(180deg, rgba(27, 21, 18, 0.26), rgba(19, 16, 15, 0.22)), url("../assets/ui/page_background.webp") center center / cover no-repeat, linear-gradient(180deg, #1b1512, #13100f 120%);
}
.application.mgne.roll-dialog .dialog-content {
padding: 0;
}
.application.mgne.roll-dialog .mgne-roll-dialog {
background: linear-gradient(135deg, rgba(183, 70, 31, 0.1), transparent 32%), linear-gradient(180deg, rgba(27, 21, 18, 0.94), rgba(19, 16, 15, 0.98)), #13100f;
background: linear-gradient(135deg, rgba(216, 122, 79, 0.1), transparent 32%), linear-gradient(180deg, rgba(27, 21, 18, 0.94), rgba(19, 16, 15, 0.98)), #13100f;
border: 1px solid rgba(196, 154, 69, 0.28);
border-radius: 6px;
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.36), inset 0 1px 0 rgba(255, 236, 203, 0.08), inset 0 0 0 1px rgba(255, 236, 203, 0.03);
@@ -1436,7 +1479,7 @@
min-width: 132px;
}
.mgne-chat-card {
background: linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 24%), linear-gradient(135deg, rgba(183, 70, 31, 0.08), transparent 40%), linear-gradient(180deg, rgba(27, 21, 18, 0.52), rgba(19, 16, 15, 0.34)), url("../assets/ui/page_background.webp") center center / cover no-repeat, linear-gradient(180deg, rgba(41, 30, 24, 0.88) 0%, color-mix(in srgb, rgba(41, 30, 24, 0.88) 88%, black) 100%);
background: linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 24%), linear-gradient(135deg, rgba(216, 122, 79, 0.08), transparent 40%), linear-gradient(180deg, rgba(27, 21, 18, 0.52), rgba(19, 16, 15, 0.34)), url("../assets/ui/page_background.webp") center center / cover no-repeat, linear-gradient(180deg, rgba(41, 30, 24, 0.88) 0%, color-mix(in srgb, rgba(41, 30, 24, 0.88) 88%, black) 100%);
border: 1px solid rgba(171, 139, 104, 0.34);
border-radius: 8px;
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.36), inset 0 1px 0 rgba(255, 236, 203, 0.08), inset 0 0 0 1px rgba(255, 236, 203, 0.03);
@@ -1445,8 +1488,8 @@
flex-direction: column;
gap: 0.6rem;
padding: 0.68rem;
color: #52453c;
background: radial-gradient(circle at top right, rgba(79, 125, 115, 0.1), transparent 22%), linear-gradient(135deg, rgba(183, 70, 31, 0.1), transparent 38%), linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 24%), linear-gradient(180deg, rgba(27, 21, 18, 0.22), rgba(19, 16, 15, 0.18)), url("../assets/ui/page_background.webp") right bottom / cover no-repeat, rgba(41, 30, 24, 0.88);
color: #a08878;
background: radial-gradient(circle at top right, rgba(79, 125, 115, 0.1), transparent 22%), linear-gradient(135deg, rgba(216, 122, 79, 0.1), transparent 38%), linear-gradient(180deg, rgba(171, 139, 104, 0.04), transparent 24%), linear-gradient(180deg, rgba(27, 21, 18, 0.22), rgba(19, 16, 15, 0.18)), url("../assets/ui/page_background.webp") right bottom / cover no-repeat, rgba(41, 30, 24, 0.88);
}
.mgne-chat-card::before {
content: "";
@@ -1477,7 +1520,7 @@
text-transform: uppercase;
letter-spacing: 0.08em;
margin: 0;
color: #6e3d2a;
color: #ab8b68;
font-size: 0.82rem;
}
.mgne-chat-card .chat-actor,
@@ -1487,10 +1530,10 @@
margin: 0;
}
.mgne-chat-card .chat-actor {
color: #52453c;
color: #a08878;
}
.mgne-chat-card .chat-formula {
color: #52453c;
color: #a08878;
}
.mgne-chat-card .chat-formula code {
color: #ccb292;
@@ -1555,7 +1598,7 @@
.mgne-chat-card .chat-dice-tooltip .dice-formula {
font-family: "Courier New", monospace;
font-size: 0.72rem;
color: rgba(204, 178, 146, 0.65);
color: rgba(204, 178, 146, 0.78);
}
.mgne-chat-card .chat-dice-tooltip .dice-tooltip {
font-size: 0.78rem;
@@ -1569,7 +1612,7 @@
font-size: 0.8rem;
}
.mgne-chat-card .chat-dice-tooltip .part-formula {
color: rgba(204, 178, 146, 0.7);
color: rgba(204, 178, 146, 0.82);
font-size: 0.72rem;
}
.mgne-chat-card .chat-dice-tooltip .part-total {
@@ -1580,7 +1623,7 @@
color: #82b0a6;
}
.mgne-chat-card .chat-dice-tooltip .min {
color: #e48a59;
color: #eeb68c;
}
.mgne-chat-card .chat-dice-tooltip .dice-total {
font-family: "CastorTwoMGNE", serif;
@@ -1599,13 +1642,13 @@
padding: 0.3rem 0.55rem;
border-radius: 6px;
background: rgba(19, 16, 15, 0.72);
border-left: 3px solid rgba(221, 107, 45, 0.7);
color: #e69062;
border-left: 3px solid rgba(232, 154, 95, 0.7);
color: #f0bc95;
font-size: 0.8rem;
}
.mgne-chat-card .chat-special {
padding: 0.42rem 0.55rem;
border-left: 3px solid rgba(221, 107, 45, 0.55);
border-left: 3px solid rgba(232, 154, 95, 0.55);
background: rgba(17, 12, 10, 0.85);
color: #ccb292;
}
@@ -1623,17 +1666,17 @@
.mgne-chat-card.outcome-failure,
.mgne-chat-card.outcome-broken,
.mgne-chat-card.outcome-fumble {
border-color: rgba(127, 29, 23, 0.48);
border-color: rgba(232, 90, 80, 0.48);
}
.mgne-chat-card.outcome-failure .chat-outcome,
.mgne-chat-card.outcome-broken .chat-outcome,
.mgne-chat-card.outcome-fumble .chat-outcome {
color: #eaa37c;
border-left-color: rgba(221, 107, 45, 0.8);
color: #f4cdaf;
border-left-color: rgba(232, 154, 95, 0.8);
}
.mgne-chat-card.mode-apply-damage .chat-result-total,
.mgne-chat-card.mode-damage .chat-result-total {
color: #e38450;
color: #edb183;
}
.mgne-chat-card .chat-card-actions {
margin-top: 0.2rem;
@@ -1645,9 +1688,9 @@
gap: 0.45rem;
width: 100%;
padding: 0.38rem 0.7rem;
border: 1px solid #dd6b2d;
border: 1px solid #e89a5f;
border-radius: 6px;
background: #b7461f;
background: #d87a4f;
color: #f8ede0;
font-family: "CastorTwoMGNE", "Palatino Linotype", serif;
font-size: 0.78rem;
@@ -1662,8 +1705,8 @@
font-weight: 700;
}
.mgne-roll-damage-btn:hover {
background: #da5325;
border-color: #e69062;
background: #df9370;
border-color: #f0bc95;
color: #fff;
}
.mgne-roll-damage-btn.is-critical {
@@ -1679,13 +1722,36 @@
background: #c49a45;
color: #fff;
}
.mgne-omen-reroll-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 0.45rem;
width: 100%;
padding: 0.38rem 0.7rem;
border: 1px solid #c49a45;
border-radius: 6px;
background: #8f6f2d;
color: #fff5d0;
font-family: "CastorTwoMGNE", "Palatino Linotype", serif;
font-size: 0.78rem;
font-weight: 600;
letter-spacing: 0.06em;
cursor: pointer;
transition: background 0.15s, border-color 0.15s;
}
.mgne-omen-reroll-btn:hover {
background: #ae8737;
border-color: #d3b373;
color: #fff;
}
.chat-apply-actions {
margin-top: 0.35rem;
}
.mgne-apply-damage-select {
width: 100%;
padding: 0.35rem 0.6rem;
border: 1px solid #dd6b2d;
border: 1px solid #e89a5f;
border-radius: 6px;
background: #1b1512;
color: #ab8b68;
@@ -1700,10 +1766,10 @@
color: #ab8b68;
}
.mgne-apply-damage-select:hover {
border-color: #e69062;
border-color: #f0bc95;
background: rgba(183, 70, 31, 0.18);
}
.mgne-apply-damage-select:focus {
outline: none;
border-color: #dd6b2d;
border-color: #e89a5f;
}
+61
View File
@@ -146,6 +146,67 @@ Hooks.on("renderChatMessageHTML", (message, element) => {
})
})
root.querySelectorAll(".mgne-omen-reroll-btn").forEach(btn => {
btn.addEventListener("click", async () => {
const actorId = btn.dataset.actorId
const actor = game.actors.get(actorId)
if (!actor) {
ui.notifications.warn(game.i18n.localize("MGNE.Notification.ActorNotFound"))
return
}
const currentOmens = actor.system.omens?.current ?? 0
if (currentOmens === 0) {
ui.notifications.warn(game.i18n.localize("MGNE.Notification.NoOmensLeft"))
return
}
// Save original state for rollback
const originalOmens = currentOmens
// Disable button and show loading state
const originalInnerHTML = btn.innerHTML
btn.disabled = true
btn.innerHTML = '<i class="fa-solid fa-star"></i> ' + game.i18n.localize("MGNE.Common.Processing")
try {
// Spend the omen
await actor.update({ "system.omens.current": Math.max(0, currentOmens - 1) })
// Re-roll with the same parameters
const abilityId = btn.dataset.abilityId
const label = btn.dataset.label
const baseDR = parseInt(btn.dataset.baseDr ?? "12", 10)
const modifier = parseInt(btn.dataset.modifier ?? "0", 10)
const rollType = btn.dataset.rollType ?? "check"
const itemId = btn.dataset.itemId
const item = itemId ? actor.items.get(itemId) : null
await MGNERoll.promptCheck({
actor,
abilityId,
label,
baseDR,
modifier,
rollType,
item,
})
} catch (error) {
// Rollback omen spend on error
const currentOmensAfterError = actor.system.omens?.current ?? 0
if (currentOmensAfterError < originalOmens) {
await actor.update({ "system.omens.current": originalOmens })
}
ui.notifications.error(game.i18n.localize("MGNE.Notification.RollError"))
console.error("Omen re-roll failed:", error)
} finally {
// Restore button state
btn.disabled = false
btn.innerHTML = originalInnerHTML
}
})
})
root.querySelectorAll(".mgne-apply-damage-select").forEach(select => {
const isAllowed = game.user.isGM || message.isAuthor
if (!isAllowed) {
+5
View File
@@ -452,6 +452,7 @@
"QuantityShort": "Qty",
"Range": "Range",
"Resonation": "Resonation",
"Processing": "Processing...",
"Roll": "Roll",
"No": "No",
"Subtype": "Subtype",
@@ -512,8 +513,11 @@
"StudyHelp": "Each action lowers the target number by 1, to a minimum of 2+."
},
"Notification": {
"ActorNotFound": "Actor not found.",
"ActorOrItemNotFound": "Actor or item not found for damage roll.",
"CannotSyncMore": "{actor} cannot synchronize any more artifacts today.",
"NoOmensLeft": "No omens left to spend!",
"RollError": "Failed to re-roll. Omen refunded.",
"ItemBroken": "{item} is broken.",
"ItemBurnedOut": "{item} is burned out.",
"ItemDepleted": "{item} is already depleted.",
@@ -585,6 +589,7 @@
"OutcomeSuccess": "Success",
"QuickRestLabel": "{actor} Takes a Quick Rest",
"RestoredHP": "Restored {amount} HP",
"RerollWithOmen": "Reroll with Omen",
"RollDamage": "Roll Damage",
"TakesDamageLabel": "{actor} Takes Damage",
"TargetName": "Target: {target}",
+71 -14
View File
@@ -19,7 +19,12 @@
.window-header {
background:
linear-gradient(90deg, fade(@blood, 40%), fade(@ember, 18%) 25%, transparent 70%),
linear-gradient(
90deg,
fade(@blood, 40%),
fade(@ember, 18%) 25%,
transparent 70%
),
linear-gradient(180deg, color-mix(in srgb, @bg-char 80%, black), @bg-void);
border-bottom: 1px solid fade(@gold-acid, 35%);
color: @bone;
@@ -64,7 +69,11 @@
.window-content {
background:
radial-gradient(circle at top left, fade(@ember, 12%), transparent 28%),
radial-gradient(circle at top right, fade(@verdigris, 10%), transparent 24%),
radial-gradient(
circle at top right,
fade(@verdigris, 10%),
transparent 24%
),
linear-gradient(180deg, fade(@bg-char, 30%), fade(@bg-void, 28%)),
url("@{page-bg-url}") center top / cover no-repeat,
linear-gradient(180deg, @bg-char, @bg-void 120%);
@@ -107,8 +116,7 @@
border: 1px solid fade(@bone, 22%);
border-radius: @radius-sm;
background:
linear-gradient(180deg, fade(@bone, 4%), transparent 60%),
@bg-input;
linear-gradient(180deg, fade(@bone, 4%), transparent 60%), @bg-input;
color: @parchment;
padding: 0.4rem 0.52rem;
box-shadow: inset 0 1px 0 fade(white, 4%);
@@ -116,7 +124,9 @@
&:focus {
outline: none;
border-color: fade(@ember-bright, 70%);
box-shadow: 0 0 0 1px fade(@ember-bright, 25%), inset 0 1px 0 fade(white, 6%);
box-shadow:
0 0 0 1px fade(@ember-bright, 25%),
inset 0 1px 0 fade(white, 6%);
}
}
@@ -131,7 +141,10 @@
calc(100% - 11px) calc(50% - 2px),
calc(100% - 7px) calc(50% - 2px),
0 0;
background-size: 4px 4px, 4px 4px, auto;
background-size:
4px 4px,
4px 4px,
auto;
background-repeat: no-repeat;
}
@@ -147,16 +160,27 @@
.application.mgne label {
.caps-heading();
color: @label-ink;
color: @bone;
font-size: 0.74rem;
}
// Item sheets: dark labels for parchment backgrounds
.application.mgne.item-sheet label,
.application.mgne.item-sheet .item-form-row > label {
color: @bg-char;
}
.application.mgne fieldset {
.panel-shell();
.ornate-frame();
margin: 0;
}
// Character sheet: Rules Snapshot fieldset text - dark color for parchment bg
.application.mgne.character fieldset p {
color: @bg-char;
}
// ProseMirror / toggled editor inside fieldset — enforce contrast on dark bg
.application.mgne fieldset {
.editor,
@@ -168,9 +192,18 @@
}
.editor-content,
.ProseMirror {
p, li { color: lighten(@parchment, 8%); }
h1, h2, h3 { color: @gold-acid; }
.is-empty::before { color: fade(@gold-acid, 40%); }
p,
li {
color: lighten(@parchment, 8%);
}
h1,
h2,
h3 {
color: @gold-acid;
}
.is-empty::before {
color: fade(@gold-acid, 40%);
}
}
.editor-menu button {
color: @bone;
@@ -203,17 +236,17 @@
}
.application.mgne .empty-state {
color: fade(@ash, 94%);
color: @bg-char;
font-style: italic;
letter-spacing: 0.03em;
}
.application.mgne .rollable {
color: @ember-bright;
text-shadow: 0 0 12px fade(@ember, 18%);
color: lighten(@parchment, 8%);
text-shadow: 0 0 12px fade(@gold-acid, 18%);
&:hover {
color: lighten(@ember-bright, 10%);
color: lighten(@parchment, 12%);
}
}
@@ -243,3 +276,27 @@
opacity: 0.5;
}
}
// ============================================================
// PAUSE OVERLAY — replace default Foundry spinner with system logo
// ============================================================
#pause {
& > img {
content: url("../assets/ui/machine_god_skull.png");
animation: none;
width: 260px;
height: auto;
filter: drop-shadow(0 0 18px rgba(0, 0, 0, 0.8));
}
figcaption {
font-family: @font-display;
font-size: 2rem;
font-weight: bold;
color: @label-ink;
text-shadow:
0 0 10px rgba(0, 0, 0, 0.9),
1px 1px 2px #000;
letter-spacing: 2px;
}
}
+28 -3
View File
@@ -37,7 +37,7 @@
.mgne-chat-card h3 {
.caps-heading();
margin: 0;
color: @label-ink;
color: @bone;
font-size: 0.82rem;
}
@@ -119,7 +119,7 @@
.dice-formula {
font-family: "Courier New", monospace;
font-size: 0.72rem;
color: fade(@parchment, 65%);
color: fade(@parchment, 78%);
}
.dice-tooltip {
font-size: 0.78rem;
@@ -131,7 +131,7 @@
color: @gold-acid;
font-size: 0.8rem;
}
.part-formula { color: fade(@parchment, 70%); font-size: 0.72rem; }
.part-formula { color: fade(@parchment, 82%); font-size: 0.72rem; }
.part-total { color: @parchment; font-weight: 600; }
.max { color: lighten(@verdigris, 20%); }
.min { color: lighten(@ember-bright, 10%); }
@@ -242,6 +242,31 @@
}
}
.mgne-omen-reroll-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 0.45rem;
width: 100%;
padding: 0.38rem 0.7rem;
border: 1px solid @gold-acid;
border-radius: @radius-sm;
background: darken(@gold-acid, 15%);
color: #fff5d0;
font-family: @font-display;
font-size: 0.78rem;
font-weight: 600;
letter-spacing: 0.06em;
cursor: pointer;
transition: background 0.15s, border-color 0.15s;
&:hover {
background: lighten(darken(@gold-acid, 15%), 8%);
border-color: lighten(@gold-acid, 12%);
color: #fff;
}
}
.chat-apply-actions {
margin-top: 0.35rem;
}
+56 -32
View File
@@ -203,15 +203,15 @@
}
.application.mgne .resource-box-inline-track .numeric-caption {
color: @label-ink;
color: @bone;
}
.application.mgne .resource-box-inline-track .numeric-caption-strong {
padding: 0.08rem 0.34rem;
border-radius: 999px;
background: fade(@gold-acid, 18%);
border: 1px solid fade(@label-ink, 28%);
color: darken(@label-ink, 4%);
border: 1px solid fade(@bone, 28%);
color: @bone;
font-size: 0.6rem;
letter-spacing: 0.11em;
}
@@ -261,7 +261,7 @@
.application.mgne .numeric-caption {
.caps-heading();
color: fade(@label-soft, 94%);
color: lighten(@label-soft, 2%);
font-size: 0.58rem;
letter-spacing: 0.12em;
}
@@ -479,6 +479,18 @@
font-size: 0.82rem;
}
// Item sheets: dark h3 for parchment backgrounds
.application.mgne.item-sheet h3,
.application.mgne.item-sheet .inventory-header h3 {
color: @bg-char;
}
// Character sheet: Conditions block - use dark color like item sheets
.application.mgne.character .condition-value-grid label,
.application.mgne.character .condition-flag-grid label {
color: @bg-char;
}
.application.mgne .item-row {
position: relative;
display: grid;
@@ -584,8 +596,8 @@
}
.application.mgne .resource-label-accent {
color: @ember-bright;
text-shadow: 0 0 12px fade(@ember, 18%);
color: lighten(@parchment, 8%);
text-shadow: 0 0 12px fade(@gold-acid, 18%);
}
.application.mgne .ability-score {
@@ -693,9 +705,9 @@
}
&.weight-heavy {
color: @blood;
border-color: fade(@blood, 45%);
background: fade(@blood, 12%);
color: @bone;
border-color: fade(@gold-acid, 45%);
background: fade(@ash, 12%);
}
}
@@ -707,16 +719,16 @@
}
.load-overloaded {
color: @blood !important;
text-shadow: 0 0 6px fade(@blood, 50%);
color: lighten(@parchment, 8%) !important;
text-shadow: 0 0 6px fade(@gold-acid, 50%);
}
.resource-box-overloaded {
border-color: fade(@blood, 60%) !important;
background: fade(@blood, 10%) !important;
border-color: fade(@gold-acid, 60%) !important;
background: fade(@ash, 10%) !important;
.resource-label-accent {
color: @blood !important;
color: lighten(@parchment, 8%) !important;
}
}
@@ -748,9 +760,9 @@
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: @blood;
background: fade(@blood, 14%);
border: 1px solid fade(@blood, 45%);
color: lighten(@parchment, 8%);
background: fade(@ash, 14%);
border: 1px solid fade(@bone, 45%);
border-radius: 3px;
vertical-align: middle;
}
@@ -775,9 +787,9 @@
letter-spacing: 0.03em;
&.durability-broken {
color: @blood;
border-color: fade(@blood, 40%);
background: fade(@blood, 10%);
color: lighten(@parchment, 8%);
border-color: fade(@bone, 40%);
background: fade(@ash, 10%);
text-decoration: line-through;
}
}
@@ -788,7 +800,7 @@
.item-name {
text-decoration: line-through;
color: fade(@parchment, 55%);
color: lighten(@parchment, 6%);
}
}
@@ -874,7 +886,7 @@
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: fade(@blood, 90%);
color: lighten(@blood, 8%);
}
button {
@@ -882,7 +894,7 @@
padding: 0.15em 0.6em;
background: fade(@blood, 12%);
border: 1px solid fade(@blood, 35%);
color: fade(@blood, 80%);
color: lighten(@blood, 4%);
border-radius: 3px;
cursor: pointer;
transition: background 0.15s, color 0.15s;
@@ -992,7 +1004,7 @@
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.07em;
color: fade(@ember, 80%);
color: @parchment;
white-space: nowrap;
}
@@ -1008,15 +1020,27 @@
align-items: center;
gap: 0.3em;
font-size: 0.83rem;
color: @parchment;
color: @parchment !important;
cursor: pointer;
user-select: none;
> span {
color: @parchment !important;
}
input[type="checkbox"] {
appearance: checkbox;
-webkit-appearance: checkbox;
accent-color: @ember;
width: 0.9rem;
height: 0.9rem;
cursor: pointer;
margin: 0;
flex-shrink: 0;
&::before, &::after {
display: none;
}
}
}
@@ -1092,9 +1116,9 @@
button {
font-size: 0.75rem;
padding: 0.15em 0.55em;
background: fade(@ember, 10%);
border: 1px solid fade(@ember, 30%);
color: fade(@ember, 80%);
background: fade(@ash, 10%);
border: 1px solid fade(@gold-acid, 30%);
color: lighten(@parchment, 6%);
border-radius: 3px;
cursor: pointer;
transition: background 0.15s, color 0.15s;
@@ -1103,8 +1127,8 @@
gap: 0.3em;
&:hover {
background: fade(@ember, 22%);
color: @ember;
background: fade(@ash, 22%);
color: @bone;
}
}
}
@@ -1233,7 +1257,7 @@
}
.application.mgne.party .party-member-hp {
color: @ember-bright;
color: @bone;
font-family: @font-display;
font-size: 0.82rem;
font-weight: 700;
@@ -1241,7 +1265,7 @@
}
.application.mgne.party .party-member-type {
color: @dust;
color: lighten(@dust, 12%);
font-size: 0.78rem;
font-style: italic;
}
+9 -9
View File
@@ -9,16 +9,16 @@
@bg-input: rgba(17, 12, 10, 0.72);
@parchment: #ccb292;
@bone: #ab8b68;
@dust: #7e664f;
@ash: #5f4d40;
@label-ink: #6e3d2a;
@label-soft: #81533b;
@iron: #52453c;
@copper: #8d5f3f;
@dust: #a68e78;
@ash: #958068;
@label-ink: #a67054;
@label-soft: #b1856c;
@iron: #a08878;
@copper: #b49c73;
@verdigris: #4f7d73;
@ember: #b7461f;
@ember-bright: #dd6b2d;
@blood: #7f1d17;
@ember: #d87a4f;
@ember-bright: #e89a5f;
@blood: #e85a50;
@gold-acid: #c49a45;
@shadow-heavy: 0 14px 30px rgba(0, 0, 0, 0.36);
@shadow-inset: inset 0 1px 0 rgba(255, 236, 203, 0.08), inset 0 0 0 1px rgba(255, 236, 203, 0.03);
@@ -83,16 +83,16 @@ export default class MGNECharacterSheet extends MGNEActorSheet {
break
case "equipment":
context.tab = context.tabs.equipment
context.weapons = doc.itemTypes.weapon.map(i => ({ ...i, tooltip: stripHtml(i.system.description) }))
context.armors = doc.itemTypes.armor.map(i => ({ ...i, tooltip: stripHtml(i.system.description) }))
context.shields = doc.itemTypes.shield.map(i => ({ ...i, tooltip: stripHtml(i.system.description) }))
context.equipmentItems = doc.itemTypes.equipment.map(i => ({ ...i, tooltip: stripHtml(i.system.description) }))
context.cores = doc.itemTypes["resonance-core"].map(i => ({ ...i, tooltip: stripHtml(i.system.description) }))
context.artifacts = doc.itemTypes.artifact.map(i => ({ ...i, tooltip: stripHtml(i.system.description) }))
context.weapons = doc.itemTypes.weapon.map(i => ({ id: i.id, name: i.name, img: i.img, system: i.system, tooltip: stripHtml(i.system.description) }))
context.armors = doc.itemTypes.armor.map(i => ({ id: i.id, name: i.name, img: i.img, system: i.system, tooltip: stripHtml(i.system.description) }))
context.shields = doc.itemTypes.shield.map(i => ({ id: i.id, name: i.name, img: i.img, system: i.system, tooltip: stripHtml(i.system.description) }))
context.equipmentItems = doc.itemTypes.equipment.map(i => ({ id: i.id, name: i.name, img: i.img, system: i.system, tooltip: stripHtml(i.system.description) }))
context.cores = doc.itemTypes["resonance-core"].map(i => ({ id: i.id, name: i.name, img: i.img, system: i.system, tooltip: stripHtml(i.system.description) }))
context.artifacts = doc.itemTypes.artifact.map(i => ({ id: i.id, name: i.name, img: i.img, system: i.system, tooltip: stripHtml(i.system.description) }))
break
case "features":
context.tab = context.tabs.features
context.features = doc.itemTypes.feature.map(i => ({ ...i, tooltip: stripHtml(i.system.description) }))
context.features = doc.itemTypes.feature.map(i => ({ id: i.id, name: i.name, img: i.img, system: i.system, tooltip: stripHtml(i.system.description) }))
break
case "notes":
context.tab = context.tabs.notes
@@ -30,7 +30,7 @@ export default class MGNECreatureSheet extends MGNEActorSheet {
async _prepareContext() {
const context = await super._prepareContext()
context.traits = (this.document.itemTypes["creature-trait"] ?? [])
.map(i => ({ ...i, tooltip: stripHtml(i.system.description) }))
.map(i => ({ id: i.id, name: i.name, img: i.img, system: i.system, tooltip: stripHtml(i.system.description) }))
// Resolve linked action table
const uuid = this.document.system.actionTableUuid
+3
View File
@@ -96,6 +96,9 @@ export const SYSTEM = {
get weaponPropertyLabels() {
return Object.fromEntries(Object.entries(this.weaponProperties).map(([k, v]) => [k, v.label]))
},
get weaponPropertyHints() {
return Object.fromEntries(Object.entries(this.weaponProperties).map(([k, v]) => [k, v.hint]))
},
resonanceList: {
accelerate: "Accelerate",
blast: "Blast",
+15 -5
View File
@@ -70,15 +70,16 @@ async function renderCard(context) {
}
export default class MGNERoll {
static async promptCheck({ actor, abilityId, label, baseDR = 12, rollType = "check", item = null }) {
static async promptCheck({ actor, abilityId, label, baseDR = 12, modifier = 0, rollType = "check", item = null }) {
const abilityLabel = SYSTEM.abilities[abilityId]?.label ?? abilityId
const content = await foundry.applications.handlebars.renderTemplate(`systems/${SYSTEM_ID}/templates/roll-dialog.hbs`, {
actorName: actor.name,
label,
abilityLabel,
baseDR,
modifier,
drOptions: numericOptions(6, 20, baseDR),
modifierOptions: numericOptions(-6, 6, 0),
modifierOptions: numericOptions(-6, 6, modifier),
omens: actor.system.omens?.current ?? 0,
rollType,
})
@@ -99,15 +100,15 @@ export default class MGNERoll {
if (!dialogData) return null
const modifier = Number.parseInt(dialogData.modifier ?? 0, 10) || 0
const dialogModifier = Number.parseInt(dialogData.modifier ?? 0, 10) || 0
const spendOmen = Boolean(dialogData.spendOmen)
// Re-read omens after dialog close to avoid race condition (omen could have changed)
const currentOmensAfterDialog = actor.system.omens?.current ?? 0
const canSpendOmen = spendOmen && currentOmensAfterDialog > 0
const dr = (Number.parseInt(dialogData.dr ?? baseDR, 10) || baseDR) - (canSpendOmen ? 4 : 0)
const abilityValue = actor.system.abilities?.[abilityId]?.value ?? 0
const sign = modifier >= 0 ? "+" : "-"
const formula = modifier === 0 ? `1d20 + ${abilityValue}` : `1d20 + ${abilityValue} ${sign} ${Math.abs(modifier)}`
const sign = dialogModifier >= 0 ? "+" : "-"
const formula = dialogModifier === 0 ? `1d20 + ${abilityValue}` : `1d20 + ${abilityValue} ${sign} ${Math.abs(dialogModifier)}`
const roll = await (new Roll(formula)).evaluate()
const natural = roll.dice?.[0]?.results?.[0]?.result ?? roll.total
@@ -143,6 +144,7 @@ export default class MGNERoll {
}
const showDamageButton = rollType === "attack" && (success || critical) && !!item
const showOmenRerollButton = Boolean(omenRerollReminder)
const contentHtml = await renderCard({
mode: "check",
actorName: actor.name,
@@ -160,6 +162,14 @@ export default class MGNERoll {
damageItemId: showDamageButton ? item.id : null,
damageFormula: showDamageButton ? (item.system.damage || "1") : null,
damageCritical: showDamageButton && critical,
showOmenRerollButton,
omenRerollActorId: showOmenRerollButton ? actor.id : null,
omenRerollAbilityId: showOmenRerollButton ? abilityId : null,
omenRerollLabel: showOmenRerollButton ? label : null,
omenRerollBaseDR: showOmenRerollButton ? baseDR : null,
omenRerollModifier: showOmenRerollButton ? dialogModifier : 0,
omenRerollRollType: showOmenRerollButton ? rollType : null,
omenRerollItemId: showOmenRerollButton ? item?.id : null,
_roll: roll,
})
Binary file not shown.
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000025
MANIFEST-000049
+15
View File
@@ -0,0 +1,15 @@
2026/05/23-09:14:18.209175 7fa280fff6c0 Recovering log #46
2026/05/23-09:14:18.262682 7fa280fff6c0 Delete type=3 #44
2026/05/23-09:14:18.262729 7fa280fff6c0 Delete type=0 #46
2026/05/23-09:14:29.462998 7fa2327fc6c0 Level-0 table #52: started
2026/05/23-09:14:29.466125 7fa2327fc6c0 Level-0 table #52: 1354 bytes OK
2026/05/23-09:14:29.472096 7fa2327fc6c0 Delete type=0 #50
2026/05/23-09:14:29.495570 7fa2327fc6c0 Manual compaction at level-0 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-09:14:29.515804 7fa2327fc6c0 Manual compaction at level-1 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 82 : 1
2026/05/23-09:14:29.515812 7fa2327fc6c0 Compacting 1@1 + 1@2 files
2026/05/23-09:14:29.518812 7fa2327fc6c0 Generated table #53@1: 1 keys, 685 bytes
2026/05/23-09:14:29.518825 7fa2327fc6c0 Compacted 1@1 + 1@2 files => 685 bytes
2026/05/23-09:14:29.525255 7fa2327fc6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-09:14:29.525289 7fa2327fc6c0 Delete type=2 #48
2026/05/23-09:14:29.525353 7fa2327fc6c0 Delete type=2 #52
2026/05/23-09:14:29.531944 7fa2327fc6c0 Manual compaction at level-1 from '!items!null' @ 82 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
+15 -3
View File
@@ -1,3 +1,15 @@
2026/05/17-15:40:00.779700 7f1642bfd6c0 Recovering log #22
2026/05/17-15:40:00.789740 7f1642bfd6c0 Delete type=3 #20
2026/05/17-15:40:00.789807 7f1642bfd6c0 Delete type=0 #22
2026/05/23-08:39:02.071552 7fb059fef6c0 Recovering log #41
2026/05/23-08:39:02.085152 7fb059fef6c0 Delete type=3 #39
2026/05/23-08:39:02.085618 7fb059fef6c0 Delete type=0 #41
2026/05/23-08:42:47.974188 7fb04b7fe6c0 Level-0 table #47: started
2026/05/23-08:42:47.978821 7fb04b7fe6c0 Level-0 table #47: 1354 bytes OK
2026/05/23-08:42:47.988393 7fb04b7fe6c0 Delete type=0 #45
2026/05/23-08:42:47.997317 7fb04b7fe6c0 Manual compaction at level-0 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-08:42:48.016276 7fb04b7fe6c0 Manual compaction at level-1 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 74 : 1
2026/05/23-08:42:48.016311 7fb04b7fe6c0 Compacting 1@1 + 1@2 files
2026/05/23-08:42:48.020556 7fb04b7fe6c0 Generated table #48@1: 1 keys, 685 bytes
2026/05/23-08:42:48.020648 7fb04b7fe6c0 Compacted 1@1 + 1@2 files => 685 bytes
2026/05/23-08:42:48.028266 7fb04b7fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-08:42:48.028596 7fb04b7fe6c0 Delete type=2 #43
2026/05/23-08:42:48.028998 7fb04b7fe6c0 Delete type=2 #47
2026/05/23-08:42:48.059146 7fb04b7fe6c0 Manual compaction at level-1 from '!items!null' @ 74 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000025
MANIFEST-000049
+15 -3
View File
@@ -1,3 +1,15 @@
2026/05/17-15:40:00.750239 7f16423fc6c0 Recovering log #22
2026/05/17-15:40:00.760411 7f16423fc6c0 Delete type=3 #20
2026/05/17-15:40:00.760461 7f16423fc6c0 Delete type=0 #22
2026/05/23-09:14:18.096663 7fa232ffd6c0 Recovering log #46
2026/05/23-09:14:18.146739 7fa232ffd6c0 Delete type=3 #44
2026/05/23-09:14:18.146790 7fa232ffd6c0 Delete type=0 #46
2026/05/23-09:14:29.432393 7fa2327fc6c0 Level-0 table #52: started
2026/05/23-09:14:29.435530 7fa2327fc6c0 Level-0 table #52: 4899 bytes OK
2026/05/23-09:14:29.442217 7fa2327fc6c0 Delete type=0 #50
2026/05/23-09:14:29.462989 7fa2327fc6c0 Manual compaction at level-0 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at (end)
2026/05/23-09:14:29.472221 7fa2327fc6c0 Manual compaction at level-1 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at '!actors!null' @ 42 : 1
2026/05/23-09:14:29.472226 7fa2327fc6c0 Compacting 1@1 + 1@2 files
2026/05/23-09:14:29.476438 7fa2327fc6c0 Generated table #53@1: 1 keys, 1984 bytes
2026/05/23-09:14:29.476452 7fa2327fc6c0 Compacted 1@1 + 1@2 files => 1984 bytes
2026/05/23-09:14:29.482663 7fa2327fc6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-09:14:29.482714 7fa2327fc6c0 Delete type=2 #48
2026/05/23-09:14:29.482815 7fa2327fc6c0 Delete type=2 #52
2026/05/23-09:14:29.495583 7fa2327fc6c0 Manual compaction at level-1 from '!actors!null' @ 42 : 1 .. '!actors!null' @ 0 : 0; will stop at (end)
+15 -15
View File
@@ -1,15 +1,15 @@
2026/05/17-13:26:05.090885 7f16423fc6c0 Recovering log #17
2026/05/17-13:26:05.101315 7f16423fc6c0 Delete type=3 #15
2026/05/17-13:26:05.101364 7f16423fc6c0 Delete type=0 #17
2026/05/17-15:39:46.172949 7f1641bfb6c0 Level-0 table #23: started
2026/05/17-15:39:46.177184 7f1641bfb6c0 Level-0 table #23: 4899 bytes OK
2026/05/17-15:39:46.183241 7f1641bfb6c0 Delete type=0 #21
2026/05/17-15:39:46.215307 7f1641bfb6c0 Manual compaction at level-0 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at (end)
2026/05/17-15:39:46.224653 7f1641bfb6c0 Manual compaction at level-1 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at '!actors!null' @ 17 : 1
2026/05/17-15:39:46.224663 7f1641bfb6c0 Compacting 1@1 + 1@2 files
2026/05/17-15:39:46.227820 7f1641bfb6c0 Generated table #24@1: 1 keys, 1984 bytes
2026/05/17-15:39:46.227830 7f1641bfb6c0 Compacted 1@1 + 1@2 files => 1984 bytes
2026/05/17-15:39:46.233855 7f1641bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/17-15:39:46.233946 7f1641bfb6c0 Delete type=2 #19
2026/05/17-15:39:46.234305 7f1641bfb6c0 Delete type=2 #23
2026/05/17-15:39:46.253812 7f1641bfb6c0 Manual compaction at level-1 from '!actors!null' @ 17 : 1 .. '!actors!null' @ 0 : 0; will stop at (end)
2026/05/23-08:39:02.020811 7fb058fed6c0 Recovering log #41
2026/05/23-08:39:02.034588 7fb058fed6c0 Delete type=3 #39
2026/05/23-08:39:02.034799 7fb058fed6c0 Delete type=0 #41
2026/05/23-08:42:47.861136 7fb04b7fe6c0 Level-0 table #47: started
2026/05/23-08:42:47.866967 7fb04b7fe6c0 Level-0 table #47: 4899 bytes OK
2026/05/23-08:42:47.875441 7fb04b7fe6c0 Delete type=0 #45
2026/05/23-08:42:47.890448 7fb04b7fe6c0 Manual compaction at level-0 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at (end)
2026/05/23-08:42:47.890591 7fb04b7fe6c0 Manual compaction at level-1 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at '!actors!null' @ 38 : 1
2026/05/23-08:42:47.890614 7fb04b7fe6c0 Compacting 1@1 + 1@2 files
2026/05/23-08:42:47.895073 7fb04b7fe6c0 Generated table #48@1: 1 keys, 1984 bytes
2026/05/23-08:42:47.895150 7fb04b7fe6c0 Compacted 1@1 + 1@2 files => 1984 bytes
2026/05/23-08:42:47.902755 7fb04b7fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-08:42:47.903327 7fb04b7fe6c0 Delete type=2 #43
2026/05/23-08:42:47.903735 7fb04b7fe6c0 Delete type=2 #47
2026/05/23-08:42:47.946588 7fb04b7fe6c0 Manual compaction at level-1 from '!actors!null' @ 38 : 1 .. '!actors!null' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
View File
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000025
MANIFEST-000049
+15 -3
View File
@@ -1,3 +1,15 @@
2026/05/17-15:40:00.736377 7f1643bff6c0 Recovering log #22
2026/05/17-15:40:00.746313 7f1643bff6c0 Delete type=3 #20
2026/05/17-15:40:00.746417 7f1643bff6c0 Delete type=0 #22
2026/05/23-09:14:18.046490 7fa280fff6c0 Recovering log #46
2026/05/23-09:14:18.094345 7fa280fff6c0 Delete type=3 #44
2026/05/23-09:14:18.094380 7fa280fff6c0 Delete type=0 #46
2026/05/23-09:14:29.422029 7fa2327fc6c0 Level-0 table #52: started
2026/05/23-09:14:29.425999 7fa2327fc6c0 Level-0 table #52: 10404 bytes OK
2026/05/23-09:14:29.432298 7fa2327fc6c0 Delete type=0 #50
2026/05/23-09:14:29.442387 7fa2327fc6c0 Manual compaction at level-0 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-09:14:29.442490 7fa2327fc6c0 Manual compaction at level-1 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 362 : 1
2026/05/23-09:14:29.442501 7fa2327fc6c0 Compacting 1@1 + 1@2 files
2026/05/23-09:14:29.446332 7fa2327fc6c0 Generated table #53@1: 1 keys, 728 bytes
2026/05/23-09:14:29.446350 7fa2327fc6c0 Compacted 1@1 + 1@2 files => 728 bytes
2026/05/23-09:14:29.452219 7fa2327fc6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-09:14:29.452435 7fa2327fc6c0 Delete type=2 #48
2026/05/23-09:14:29.452537 7fa2327fc6c0 Delete type=2 #52
2026/05/23-09:14:29.472198 7fa2327fc6c0 Manual compaction at level-1 from '!items!null' @ 362 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
+15 -15
View File
@@ -1,15 +1,15 @@
2026/05/17-13:26:05.076690 7f1643bff6c0 Recovering log #17
2026/05/17-13:26:05.087217 7f1643bff6c0 Delete type=3 #15
2026/05/17-13:26:05.087270 7f1643bff6c0 Delete type=0 #17
2026/05/17-15:39:46.194394 7f1641bfb6c0 Level-0 table #23: started
2026/05/17-15:39:46.197937 7f1641bfb6c0 Level-0 table #23: 10414 bytes OK
2026/05/17-15:39:46.204111 7f1641bfb6c0 Delete type=0 #21
2026/05/17-15:39:46.215335 7f1641bfb6c0 Manual compaction at level-0 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/17-15:39:46.234408 7f1641bfb6c0 Manual compaction at level-1 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 145 : 1
2026/05/17-15:39:46.234419 7f1641bfb6c0 Compacting 1@1 + 1@2 files
2026/05/17-15:39:46.238287 7f1641bfb6c0 Generated table #24@1: 1 keys, 727 bytes
2026/05/17-15:39:46.238317 7f1641bfb6c0 Compacted 1@1 + 1@2 files => 727 bytes
2026/05/17-15:39:46.244549 7f1641bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/17-15:39:46.244607 7f1641bfb6c0 Delete type=2 #19
2026/05/17-15:39:46.244675 7f1641bfb6c0 Delete type=2 #23
2026/05/17-15:39:46.253828 7f1641bfb6c0 Manual compaction at level-1 from '!items!null' @ 145 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-08:39:01.993483 7fb0597ee6c0 Recovering log #41
2026/05/23-08:39:02.008888 7fb0597ee6c0 Delete type=3 #39
2026/05/23-08:39:02.009121 7fb0597ee6c0 Delete type=0 #41
2026/05/23-08:42:47.845110 7fb04b7fe6c0 Level-0 table #47: started
2026/05/23-08:42:47.852176 7fb04b7fe6c0 Level-0 table #47: 10404 bytes OK
2026/05/23-08:42:47.860739 7fb04b7fe6c0 Delete type=0 #45
2026/05/23-08:42:47.890409 7fb04b7fe6c0 Manual compaction at level-0 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-08:42:47.932141 7fb04b7fe6c0 Manual compaction at level-1 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 326 : 1
2026/05/23-08:42:47.932174 7fb04b7fe6c0 Compacting 1@1 + 1@2 files
2026/05/23-08:42:47.936922 7fb04b7fe6c0 Generated table #48@1: 1 keys, 728 bytes
2026/05/23-08:42:47.937033 7fb04b7fe6c0 Compacted 1@1 + 1@2 files => 728 bytes
2026/05/23-08:42:47.945460 7fb04b7fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-08:42:47.945901 7fb04b7fe6c0 Delete type=2 #43
2026/05/23-08:42:47.946350 7fb04b7fe6c0 Delete type=2 #47
2026/05/23-08:42:47.947124 7fb04b7fe6c0 Manual compaction at level-1 from '!items!null' @ 326 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
View File
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000026
MANIFEST-000051
+15 -3
View File
@@ -1,3 +1,15 @@
2026/05/17-15:40:00.792467 7f16423fc6c0 Recovering log #23
2026/05/17-15:40:00.805587 7f16423fc6c0 Delete type=3 #21
2026/05/17-15:40:00.805652 7f16423fc6c0 Delete type=0 #23
2026/05/23-09:14:18.265405 7fa233fff6c0 Recovering log #48
2026/05/23-09:14:18.326477 7fa233fff6c0 Delete type=3 #46
2026/05/23-09:14:18.326527 7fa233fff6c0 Delete type=0 #48
2026/05/23-09:14:29.505997 7fa2327fc6c0 Level-0 table #54: started
2026/05/23-09:14:29.509927 7fa2327fc6c0 Level-0 table #54: 36675 bytes OK
2026/05/23-09:14:29.515715 7fa2327fc6c0 Delete type=0 #52
2026/05/23-09:14:29.531937 7fa2327fc6c0 Manual compaction at level-0 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zwMaXqqGkMK185le' @ 0 : 0; will stop at (end)
2026/05/23-09:14:29.542535 7fa2327fc6c0 Manual compaction at level-1 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zwMaXqqGkMK185le' @ 0 : 0; will stop at '!tables.results!zwMaXqqGkMK185le' @ 3951 : 1
2026/05/23-09:14:29.542540 7fa2327fc6c0 Compacting 1@1 + 1@2 files
2026/05/23-09:14:29.545905 7fa2327fc6c0 Generated table #55@1: 436 keys, 40186 bytes
2026/05/23-09:14:29.545911 7fa2327fc6c0 Compacted 1@1 + 1@2 files => 40186 bytes
2026/05/23-09:14:29.552396 7fa2327fc6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/23-09:14:29.552418 7fa2327fc6c0 Delete type=2 #50
2026/05/23-09:14:29.552455 7fa2327fc6c0 Delete type=2 #54
2026/05/23-09:14:29.558584 7fa2327fc6c0 Manual compaction at level-1 from '!tables.results!zwMaXqqGkMK185le' @ 3951 : 1 .. '!tables.results!zwMaXqqGkMK185le' @ 0 : 0; will stop at (end)
+15 -15
View File
@@ -1,15 +1,15 @@
2026/05/17-13:26:05.132672 7f16423fc6c0 Recovering log #18
2026/05/17-13:26:05.142773 7f16423fc6c0 Delete type=3 #16
2026/05/17-13:26:05.142824 7f16423fc6c0 Delete type=0 #18
2026/05/17-15:39:46.374557 7f1641bfb6c0 Level-0 table #24: started
2026/05/17-15:39:46.380380 7f1641bfb6c0 Level-0 table #24: 36276 bytes OK
2026/05/17-15:39:46.386967 7f1641bfb6c0 Delete type=0 #22
2026/05/17-15:39:46.393402 7f1641bfb6c0 Manual compaction at level-0 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zjYp8qq96SSCUgBi' @ 0 : 0; will stop at (end)
2026/05/17-15:39:46.403700 7f1641bfb6c0 Manual compaction at level-1 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zjYp8qq96SSCUgBi' @ 0 : 0; will stop at '!tables.results!zuw1vPYn2wNmreKL' @ 1530 : 0
2026/05/17-15:39:46.403711 7f1641bfb6c0 Compacting 1@1 + 1@2 files
2026/05/17-15:39:46.422351 7f1641bfb6c0 Generated table #25@1: 436 keys, 40426 bytes
2026/05/17-15:39:46.422374 7f1641bfb6c0 Compacted 1@1 + 1@2 files => 40426 bytes
2026/05/17-15:39:46.428514 7f1641bfb6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/17-15:39:46.428618 7f1641bfb6c0 Delete type=2 #20
2026/05/17-15:39:46.428754 7f1641bfb6c0 Delete type=2 #24
2026/05/17-15:39:46.428833 7f1641bfb6c0 Manual compaction at level-1 from '!tables.results!zuw1vPYn2wNmreKL' @ 1530 : 0 .. '!tables.results!zjYp8qq96SSCUgBi' @ 0 : 0; will stop at (end)
2026/05/23-08:39:02.096363 7fb058fed6c0 Recovering log #43
2026/05/23-08:39:02.110780 7fb058fed6c0 Delete type=3 #41
2026/05/23-08:39:02.110962 7fb058fed6c0 Delete type=0 #43
2026/05/23-08:42:47.957308 7fb04b7fe6c0 Level-0 table #49: started
2026/05/23-08:42:47.965185 7fb04b7fe6c0 Level-0 table #49: 36427 bytes OK
2026/05/23-08:42:47.973709 7fb04b7fe6c0 Delete type=0 #47
2026/05/23-08:42:47.997266 7fb04b7fe6c0 Manual compaction at level-0 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zJoz3QSaL4FJ8W0g' @ 0 : 0; will stop at (end)
2026/05/23-08:42:47.997540 7fb04b7fe6c0 Manual compaction at level-1 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zJoz3QSaL4FJ8W0g' @ 0 : 0; will stop at '!tables.results!zxz8aOYe1rfUsXfG' @ 3496 : 0
2026/05/23-08:42:47.997565 7fb04b7fe6c0 Compacting 1@1 + 1@2 files
2026/05/23-08:42:48.006520 7fb04b7fe6c0 Generated table #50@1: 436 keys, 40644 bytes
2026/05/23-08:42:48.006615 7fb04b7fe6c0 Compacted 1@1 + 1@2 files => 40644 bytes
2026/05/23-08:42:48.015030 7fb04b7fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/23-08:42:48.015433 7fb04b7fe6c0 Delete type=2 #45
2026/05/23-08:42:48.015956 7fb04b7fe6c0 Delete type=2 #49
2026/05/23-08:42:48.059083 7fb04b7fe6c0 Manual compaction at level-1 from '!tables.results!zxz8aOYe1rfUsXfG' @ 3496 : 0 .. '!tables.results!zJoz3QSaL4FJ8W0g' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000025
MANIFEST-000049
+15 -3
View File
@@ -1,3 +1,15 @@
2026/05/17-15:40:00.721783 7f16433fe6c0 Recovering log #22
2026/05/17-15:40:00.732595 7f16433fe6c0 Delete type=3 #20
2026/05/17-15:40:00.732660 7f16433fe6c0 Delete type=0 #22
2026/05/23-09:14:17.972244 7fa233fff6c0 Recovering log #46
2026/05/23-09:14:18.043435 7fa233fff6c0 Delete type=3 #44
2026/05/23-09:14:18.043484 7fa233fff6c0 Delete type=0 #46
2026/05/23-09:14:29.403449 7fa2327fc6c0 Level-0 table #52: started
2026/05/23-09:14:29.407852 7fa2327fc6c0 Level-0 table #52: 7117 bytes OK
2026/05/23-09:14:29.415465 7fa2327fc6c0 Delete type=0 #50
2026/05/23-09:14:29.442366 7fa2327fc6c0 Manual compaction at level-0 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-09:14:29.452607 7fa2327fc6c0 Manual compaction at level-1 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 202 : 1
2026/05/23-09:14:29.452614 7fa2327fc6c0 Compacting 1@1 + 1@2 files
2026/05/23-09:14:29.455643 7fa2327fc6c0 Generated table #53@1: 1 keys, 910 bytes
2026/05/23-09:14:29.455657 7fa2327fc6c0 Compacted 1@1 + 1@2 files => 910 bytes
2026/05/23-09:14:29.462788 7fa2327fc6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-09:14:29.462843 7fa2327fc6c0 Delete type=2 #48
2026/05/23-09:14:29.462930 7fa2327fc6c0 Delete type=2 #52
2026/05/23-09:14:29.472208 7fa2327fc6c0 Manual compaction at level-1 from '!items!null' @ 202 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
+15 -15
View File
@@ -1,15 +1,15 @@
2026/05/17-13:26:05.061355 7f1642bfd6c0 Recovering log #17
2026/05/17-13:26:05.072897 7f1642bfd6c0 Delete type=3 #15
2026/05/17-13:26:05.072969 7f1642bfd6c0 Delete type=0 #17
2026/05/17-15:39:46.204241 7f1641bfb6c0 Level-0 table #23: started
2026/05/17-15:39:46.207933 7f1641bfb6c0 Level-0 table #23: 7117 bytes OK
2026/05/17-15:39:46.215151 7f1641bfb6c0 Delete type=0 #21
2026/05/17-15:39:46.215347 7f1641bfb6c0 Manual compaction at level-0 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/17-15:39:46.244725 7f1641bfb6c0 Manual compaction at level-1 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 81 : 1
2026/05/17-15:39:46.244731 7f1641bfb6c0 Compacting 1@1 + 1@2 files
2026/05/17-15:39:46.247722 7f1641bfb6c0 Generated table #24@1: 1 keys, 910 bytes
2026/05/17-15:39:46.247731 7f1641bfb6c0 Compacted 1@1 + 1@2 files => 910 bytes
2026/05/17-15:39:46.253408 7f1641bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/17-15:39:46.253506 7f1641bfb6c0 Delete type=2 #19
2026/05/17-15:39:46.253663 7f1641bfb6c0 Delete type=2 #23
2026/05/17-15:39:46.253842 7f1641bfb6c0 Manual compaction at level-1 from '!items!null' @ 81 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-08:39:01.965876 7fb058fed6c0 Recovering log #41
2026/05/23-08:39:01.980863 7fb058fed6c0 Delete type=3 #39
2026/05/23-08:39:01.981110 7fb058fed6c0 Delete type=0 #41
2026/05/23-08:42:47.824361 7fb04b7fe6c0 Level-0 table #47: started
2026/05/23-08:42:47.833284 7fb04b7fe6c0 Level-0 table #47: 7117 bytes OK
2026/05/23-08:42:47.844689 7fb04b7fe6c0 Delete type=0 #45
2026/05/23-08:42:47.890347 7fb04b7fe6c0 Manual compaction at level-0 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-08:42:47.903963 7fb04b7fe6c0 Manual compaction at level-1 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 182 : 1
2026/05/23-08:42:47.903996 7fb04b7fe6c0 Compacting 1@1 + 1@2 files
2026/05/23-08:42:47.908345 7fb04b7fe6c0 Generated table #48@1: 1 keys, 910 bytes
2026/05/23-08:42:47.908426 7fb04b7fe6c0 Compacted 1@1 + 1@2 files => 910 bytes
2026/05/23-08:42:47.917015 7fb04b7fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-08:42:47.917368 7fb04b7fe6c0 Delete type=2 #43
2026/05/23-08:42:47.917768 7fb04b7fe6c0 Delete type=2 #47
2026/05/23-08:42:47.946653 7fb04b7fe6c0 Manual compaction at level-1 from '!items!null' @ 182 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000025
MANIFEST-000049
+15 -3
View File
@@ -1,3 +1,15 @@
2026/05/17-15:40:00.764360 7f16423fc6c0 Recovering log #22
2026/05/17-15:40:00.775885 7f16423fc6c0 Delete type=3 #20
2026/05/17-15:40:00.775980 7f16423fc6c0 Delete type=0 #22
2026/05/23-09:14:18.149804 7fa232ffd6c0 Recovering log #46
2026/05/23-09:14:18.206384 7fa232ffd6c0 Delete type=3 #44
2026/05/23-09:14:18.206431 7fa232ffd6c0 Delete type=0 #46
2026/05/23-09:14:29.495692 7fa2327fc6c0 Level-0 table #52: started
2026/05/23-09:14:29.499223 7fa2327fc6c0 Level-0 table #52: 1965 bytes OK
2026/05/23-09:14:29.505900 7fa2327fc6c0 Delete type=0 #50
2026/05/23-09:14:29.531922 7fa2327fc6c0 Manual compaction at level-0 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-09:14:29.531955 7fa2327fc6c0 Manual compaction at level-1 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 122 : 1
2026/05/23-09:14:29.531958 7fa2327fc6c0 Compacting 1@1 + 1@2 files
2026/05/23-09:14:29.535486 7fa2327fc6c0 Generated table #53@1: 1 keys, 626 bytes
2026/05/23-09:14:29.535507 7fa2327fc6c0 Compacted 1@1 + 1@2 files => 626 bytes
2026/05/23-09:14:29.542419 7fa2327fc6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-09:14:29.542458 7fa2327fc6c0 Delete type=2 #48
2026/05/23-09:14:29.542504 7fa2327fc6c0 Delete type=2 #52
2026/05/23-09:14:29.558566 7fa2327fc6c0 Manual compaction at level-1 from '!items!null' @ 122 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
+15 -15
View File
@@ -1,15 +1,15 @@
2026/05/17-13:26:05.105018 7f16423fc6c0 Recovering log #17
2026/05/17-13:26:05.114474 7f16423fc6c0 Delete type=3 #15
2026/05/17-13:26:05.114527 7f16423fc6c0 Delete type=0 #17
2026/05/17-15:39:46.183373 7f1641bfb6c0 Level-0 table #23: started
2026/05/17-15:39:46.187330 7f1641bfb6c0 Level-0 table #23: 1965 bytes OK
2026/05/17-15:39:46.194074 7f1641bfb6c0 Delete type=0 #21
2026/05/17-15:39:46.215323 7f1641bfb6c0 Manual compaction at level-0 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/17-15:39:46.215362 7f1641bfb6c0 Manual compaction at level-1 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 49 : 1
2026/05/17-15:39:46.215370 7f1641bfb6c0 Compacting 1@1 + 1@2 files
2026/05/17-15:39:46.218482 7f1641bfb6c0 Generated table #24@1: 1 keys, 626 bytes
2026/05/17-15:39:46.218497 7f1641bfb6c0 Compacted 1@1 + 1@2 files => 626 bytes
2026/05/17-15:39:46.224247 7f1641bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/17-15:39:46.224396 7f1641bfb6c0 Delete type=2 #19
2026/05/17-15:39:46.224564 7f1641bfb6c0 Delete type=2 #23
2026/05/17-15:39:46.253795 7f1641bfb6c0 Manual compaction at level-1 from '!items!null' @ 49 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-08:39:02.046509 7fb058fed6c0 Recovering log #41
2026/05/23-08:39:02.061764 7fb058fed6c0 Delete type=3 #39
2026/05/23-08:39:02.061947 7fb058fed6c0 Delete type=0 #41
2026/05/23-08:42:47.875902 7fb04b7fe6c0 Level-0 table #47: started
2026/05/23-08:42:47.880995 7fb04b7fe6c0 Level-0 table #47: 1965 bytes OK
2026/05/23-08:42:47.889814 7fb04b7fe6c0 Delete type=0 #45
2026/05/23-08:42:47.890538 7fb04b7fe6c0 Manual compaction at level-0 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/23-08:42:47.918010 7fb04b7fe6c0 Manual compaction at level-1 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 110 : 1
2026/05/23-08:42:47.918042 7fb04b7fe6c0 Compacting 1@1 + 1@2 files
2026/05/23-08:42:47.923207 7fb04b7fe6c0 Generated table #48@1: 1 keys, 626 bytes
2026/05/23-08:42:47.923291 7fb04b7fe6c0 Compacted 1@1 + 1@2 files => 626 bytes
2026/05/23-08:42:47.931259 7fb04b7fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/05/23-08:42:47.931577 7fb04b7fe6c0 Delete type=2 #43
2026/05/23-08:42:47.931935 7fb04b7fe6c0 Delete type=2 #47
2026/05/23-08:42:47.946721 7fb04b7fe6c0 Manual compaction at level-1 from '!items!null' @ 110 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -131,7 +131,7 @@
},
{
"name": "names",
"label": "D66 Name Syllables",
"label": "RollTables",
"path": "packs-system/names",
"type": "RollTable",
"system": "fvtt-machine-gods-noxian-expanse"
+1 -1
View File
@@ -33,7 +33,7 @@
<div class="item-row {{#if system.broken}}item-row-broken{{/if}}" data-item-id="{{id}}">
<div class="item-name" {{#if tooltip}}data-tooltip="{{tooltip}}" data-tooltip-class="mgne-item-tooltip"{{/if}}>
{{name}}{{#if system.broken}} <span class="item-broken-badge">{{localize "MGNE.Common.Broken"}}</span>{{/if}}
{{#each system.properties}}<span class="weapon-property-badge">{{lookup @root.config.weaponPropertyLabels this}}</span>{{/each}}
{{#each system.properties}}<span class="weapon-property-badge" data-tooltip="{{lookup @root.config.weaponPropertyHints this}}">{{lookup @root.config.weaponPropertyLabels this}}</span>{{/each}}
</div>
<div>{{system.damage}}</div>
<div>{{lookup @root.config.weaponCategories system.category}}</div>
+15
View File
@@ -29,6 +29,21 @@
{{#if omenNeutralizeReminder}}<p class="chat-omen-remind chat-omen-neutralize">💡 {{omenNeutralizeReminder}}</p>{{/if}}
{{#if omenRerollReminder}}<p class="chat-omen-remind">💡 {{omenRerollReminder}}</p>{{/if}}
{{#if omenMaximized}}<p class="chat-omen-used">★ {{localize "MGNE.Roll.OmenMaximizedDamage"}}</p>{{/if}}
{{#if showOmenRerollButton}}
<div class="chat-card-actions">
<button type="button" class="mgne-omen-reroll-btn"
data-actor-id="{{omenRerollActorId}}"
data-ability-id="{{omenRerollAbilityId}}"
data-label="{{omenRerollLabel}}"
data-base-dr="{{omenRerollBaseDR}}"
data-modifier="{{omenRerollModifier}}"
data-roll-type="{{omenRerollRollType}}"
{{#if omenRerollItemId}}data-item-id="{{omenRerollItemId}}"{{/if}}>
<i class="fa-solid fa-star"></i>
{{localize "MGNE.Roll.RerollWithOmen"}}
</button>
</div>
{{/if}}
{{#if showDamageButton}}
<div class="chat-card-actions">
<button type="button" class="mgne-roll-damage-btn {{#if damageCritical}}is-critical{{/if}}"
+1 -1
View File
@@ -14,7 +14,7 @@
<label>{{localize "MGNE.RollDialog.Modifier"}}</label>
<select name="modifier">
{{#each modifierOptions}}
<option value="{{value}}" {{#if (isEqual value 0)}}selected{{/if}}>{{label}}</option>
<option value="{{value}}" {{#if (isEqual value ../modifier)}}selected{{/if}}>{{label}}</option>
{{/each}}
</select>
</div>