5 Commits

Author SHA1 Message Date
uberwald 2fb6bfe444 FIx map
Release Creation / build (release) Successful in 40s
2026-06-02 19:44:57 +02:00
uberwald 53b7e8cc9d Enhance text style 2026-05-29 23:03:37 +02:00
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
84 changed files with 750 additions and 291 deletions
+10
View File
@@ -0,0 +1,10 @@
This is the official Foundry module for Machine Gods of the Noxian Expanse
Core Rules https://blackoathgames.com/machine-gods-of-the-noxian-expanse
In this release, you will find:
- All the necessary tools to create your Reclaimer and get them ready to explore the Expanse
- Tools to set up a game of Machine Gods, with everything in place to add your own gear, creatures, and more
- Automated rolls for all the core functionality of the game (Ability checks, Resonance Cores, Weapons, etc.)
- Full support for the game's mechanics, based on Mörk Borg
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

+196 -115
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,19 @@
.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);
}
.application.mgne.companion .inventory-header h3 {
color: #1b1512;
}
.application.mgne.companion .resource-box > label:not(.resource-label-accent) {
color: #1b1512;
}
.application.mgne.companion fieldset label {
color: #1b1512;
}
.application.mgne.companion .grid > div > label {
color: #1b1512;
}
@media (max-width: 960px) {
.application.mgne .sheet-header,
@@ -845,9 +889,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 +899,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 +935,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 +960,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 +971,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 +1023,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 +1037,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 +1048,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 +1071,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 +1099,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 +1141,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 +1150,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 +1164,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 +1198,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 +1219,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,26 +1227,29 @@
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);
color: rgba(204, 178, 146, 0.5);
border: 2px dashed rgba(216, 122, 79, 0.35);
background: rgba(216, 122, 79, 0.04);
color: #ccb292;
font-style: italic;
justify-content: center;
cursor: default;
transition: background 0.15s, border-color 0.15s;
}
.application.mgne.companion .creature-action-table-section .action-table-drop-zone.drop-hint {
color: #1b1512;
}
.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 +1259,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 +1270,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 +1343,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 +1376,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 +1402,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 +1427,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: #ccb292;
font-size: 0.75rem;
font-style: italic;
text-align: center;
@@ -1385,13 +1443,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 +1494,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 +1503,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 +1535,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 +1545,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 +1613,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 +1627,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 +1638,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 +1657,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 +1681,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 +1703,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 +1720,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 +1737,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 +1781,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;
}
+87 -1
View File
@@ -75,8 +75,33 @@ Hooks.once("setup", () => {
localizeSystemConfig()
})
Hooks.once("ready", () => {
Hooks.once("ready", async () => {
console.info(`${SYSTEM_ID} | Ready`)
if (!game.user.isGM) return
if (game.scenes.getName("Map")) return
const pack = game.packs.get("fvtt-machine-gods-noxian-expanse.scenes")
if (!pack) {
console.warn(`${SYSTEM_ID} | Scenes compendium not found`)
return
}
const index = await pack.getIndex()
const entry = index.find(s => s.name === "Map")
if (!entry) {
console.warn(`${SYSTEM_ID} | Map scene not found in compendium`)
return
}
const doc = await pack.getDocument(entry._id)
if (doc) {
const scene = await Scene.create(doc.toObject(), { keepId: false })
if (scene) {
await scene.activate()
}
}
})
Hooks.on("deleteCombat", (combat) => {
@@ -146,6 +171,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;
}
+89 -34
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 {
@@ -647,6 +659,32 @@
@bg-panel-soft;
}
// ─── Companion sheet label contrast ──────────────────────────────────────────
// Panel-shell backgrounds expose the parchment page texture; @bone caps labels
// blend into the warm background. Use dark ink — matching the character sheet's
// condition-label treatment.
.application.mgne.companion {
// Section headers (Attack, Adventuring/Combat Behavior, Description, Notes)
.inventory-header h3 {
color: @bg-char;
}
// Compact resource labels (Morale, Armor Die) — HP uses resource-label-accent and stays light
.resource-box > label:not(.resource-label-accent) {
color: @bg-char;
}
// Labels inside fieldsets (Label, Damage in the Attack section)
fieldset label {
color: @bg-char;
}
// Floating grid labels (They Value, Trait, Specialty)
.grid > div > label {
color: @bg-char;
}
}
@media (max-width: 960px) {
.application.mgne .sheet-header,
.application.mgne .resource-bar,
@@ -693,9 +731,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 +745,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 +786,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 +813,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 +826,7 @@
.item-name {
text-decoration: line-through;
color: fade(@parchment, 55%);
color: lighten(@parchment, 6%);
}
}
@@ -874,7 +912,7 @@
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: fade(@blood, 90%);
color: lighten(@blood, 8%);
}
button {
@@ -882,7 +920,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 +1030,7 @@
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.07em;
color: fade(@ember, 80%);
color: @parchment;
white-space: nowrap;
}
@@ -1008,15 +1046,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;
}
}
}
@@ -1067,12 +1117,17 @@
&.drop-hint {
border: 2px dashed fade(@ember, 35%);
background: fade(@ember, 4%);
color: fade(@parchment, 50%);
color: @parchment;
font-style: italic;
justify-content: center;
cursor: default;
transition: background 0.15s, border-color 0.15s;
// Companion sheet: darker text for better contrast
.application.mgne.companion & {
color: @bg-char;
}
i { color: fade(@ember, 50%); }
&:hover, &.drag-over {
@@ -1092,9 +1147,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 +1158,8 @@
gap: 0.3em;
&:hover {
background: fade(@ember, 22%);
color: @ember;
background: fade(@ash, 22%);
color: @bone;
}
}
}
@@ -1233,7 +1288,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 +1296,7 @@
}
.application.mgne.party .party-member-type {
color: @dust;
color: lighten(@dust, 12%);
font-size: 0.78rem;
font-style: italic;
}
@@ -1300,7 +1355,7 @@
// ── Party drop hint ────────────────────────────────────────────
.application.mgne.party .party-drop-hint {
color: fade(@dust, 70%);
color: @parchment;
font-size: 0.75rem;
font-style: italic;
text-align: center;
+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-000073
+15
View File
@@ -0,0 +1,15 @@
2026/06/02-19:43:31.530779 7f2215bfe6c0 Recovering log #70
2026/06/02-19:43:31.541230 7f2215bfe6c0 Delete type=3 #68
2026/06/02-19:43:31.541267 7f2215bfe6c0 Delete type=0 #70
2026/06/02-19:44:40.424603 7f1ff7fff6c0 Level-0 table #76: started
2026/06/02-19:44:40.428039 7f1ff7fff6c0 Level-0 table #76: 1354 bytes OK
2026/06/02-19:44:40.435632 7f1ff7fff6c0 Delete type=0 #74
2026/06/02-19:44:40.446442 7f1ff7fff6c0 Manual compaction at level-0 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/06/02-19:44:40.446598 7f1ff7fff6c0 Manual compaction at level-1 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 122 : 1
2026/06/02-19:44:40.446608 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:44:40.449973 7f1ff7fff6c0 Generated table #77@1: 1 keys, 685 bytes
2026/06/02-19:44:40.450003 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 685 bytes
2026/06/02-19:44:40.456735 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:44:40.457031 7f1ff7fff6c0 Delete type=2 #72
2026/06/02-19:44:40.457165 7f1ff7fff6c0 Delete type=2 #76
2026/06/02-19:44:40.489581 7f1ff7fff6c0 Manual compaction at level-1 from '!items!null' @ 122 : 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/06/02-19:38:41.359950 7f22153fd6c0 Recovering log #65
2026/06/02-19:38:41.370323 7f22153fd6c0 Delete type=3 #63
2026/06/02-19:38:41.370382 7f22153fd6c0 Delete type=0 #65
2026/06/02-19:38:52.219787 7f1ff7fff6c0 Level-0 table #71: started
2026/06/02-19:38:52.223074 7f1ff7fff6c0 Level-0 table #71: 1354 bytes OK
2026/06/02-19:38:52.230583 7f1ff7fff6c0 Delete type=0 #69
2026/06/02-19:38:52.237087 7f1ff7fff6c0 Manual compaction at level-0 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/06/02-19:38:52.249096 7f1ff7fff6c0 Manual compaction at level-1 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 114 : 1
2026/06/02-19:38:52.249106 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:38:52.252924 7f1ff7fff6c0 Generated table #72@1: 1 keys, 685 bytes
2026/06/02-19:38:52.252947 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 685 bytes
2026/06/02-19:38:52.259084 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:38:52.259162 7f1ff7fff6c0 Delete type=2 #67
2026/06/02-19:38:52.259309 7f1ff7fff6c0 Delete type=2 #71
2026/06/02-19:38:52.273606 7f1ff7fff6c0 Manual compaction at level-1 from '!items!null' @ 114 : 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-000073
+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/06/02-19:43:31.502187 7f22153fd6c0 Recovering log #70
2026/06/02-19:43:31.512581 7f22153fd6c0 Delete type=3 #68
2026/06/02-19:43:31.512620 7f22153fd6c0 Delete type=0 #70
2026/06/02-19:44:40.413927 7f1ff7fff6c0 Level-0 table #76: started
2026/06/02-19:44:40.417618 7f1ff7fff6c0 Level-0 table #76: 4899 bytes OK
2026/06/02-19:44:40.424469 7f1ff7fff6c0 Delete type=0 #74
2026/06/02-19:44:40.446430 7f1ff7fff6c0 Manual compaction at level-0 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at (end)
2026/06/02-19:44:40.468275 7f1ff7fff6c0 Manual compaction at level-1 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at '!actors!null' @ 62 : 1
2026/06/02-19:44:40.468288 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:44:40.471670 7f1ff7fff6c0 Generated table #77@1: 1 keys, 1984 bytes
2026/06/02-19:44:40.471701 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 1984 bytes
2026/06/02-19:44:40.477948 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:44:40.478072 7f1ff7fff6c0 Delete type=2 #72
2026/06/02-19:44:40.478253 7f1ff7fff6c0 Delete type=2 #76
2026/06/02-19:44:40.489611 7f1ff7fff6c0 Manual compaction at level-1 from '!actors!null' @ 62 : 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/06/02-19:38:41.329254 7f2214bfc6c0 Recovering log #65
2026/06/02-19:38:41.339373 7f2214bfc6c0 Delete type=3 #63
2026/06/02-19:38:41.339444 7f2214bfc6c0 Delete type=0 #65
2026/06/02-19:38:52.118810 7f1ff7fff6c0 Level-0 table #71: started
2026/06/02-19:38:52.123075 7f1ff7fff6c0 Level-0 table #71: 4899 bytes OK
2026/06/02-19:38:52.130714 7f1ff7fff6c0 Delete type=0 #69
2026/06/02-19:38:52.153910 7f1ff7fff6c0 Manual compaction at level-0 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at (end)
2026/06/02-19:38:52.189284 7f1ff7fff6c0 Manual compaction at level-1 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at '!actors!null' @ 58 : 1
2026/06/02-19:38:52.189297 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:38:52.193815 7f1ff7fff6c0 Generated table #72@1: 1 keys, 1984 bytes
2026/06/02-19:38:52.193845 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 1984 bytes
2026/06/02-19:38:52.200660 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:38:52.200784 7f1ff7fff6c0 Delete type=2 #67
2026/06/02-19:38:52.200926 7f1ff7fff6c0 Delete type=2 #71
2026/06/02-19:38:52.201085 7f1ff7fff6c0 Manual compaction at level-1 from '!actors!null' @ 58 : 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-000073
+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/06/02-19:43:31.488540 7f2215bfe6c0 Recovering log #70
2026/06/02-19:43:31.498827 7f2215bfe6c0 Delete type=3 #68
2026/06/02-19:43:31.498873 7f2215bfe6c0 Delete type=0 #70
2026/06/02-19:44:40.435761 7f1ff7fff6c0 Level-0 table #76: started
2026/06/02-19:44:40.439546 7f1ff7fff6c0 Level-0 table #76: 10405 bytes OK
2026/06/02-19:44:40.446253 7f1ff7fff6c0 Delete type=0 #74
2026/06/02-19:44:40.446564 7f1ff7fff6c0 Manual compaction at level-0 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/06/02-19:44:40.478358 7f1ff7fff6c0 Manual compaction at level-1 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 542 : 1
2026/06/02-19:44:40.478373 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:44:40.482365 7f1ff7fff6c0 Generated table #77@1: 1 keys, 728 bytes
2026/06/02-19:44:40.482397 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 728 bytes
2026/06/02-19:44:40.489232 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:44:40.489356 7f1ff7fff6c0 Delete type=2 #72
2026/06/02-19:44:40.489491 7f1ff7fff6c0 Delete type=2 #76
2026/06/02-19:44:40.489825 7f1ff7fff6c0 Manual compaction at level-1 from '!items!null' @ 542 : 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/06/02-19:38:41.313392 7f22163ff6c0 Recovering log #65
2026/06/02-19:38:41.325409 7f22163ff6c0 Delete type=3 #63
2026/06/02-19:38:41.325473 7f22163ff6c0 Delete type=0 #65
2026/06/02-19:38:52.130850 7f1ff7fff6c0 Level-0 table #71: started
2026/06/02-19:38:52.134936 7f1ff7fff6c0 Level-0 table #71: 10410 bytes OK
2026/06/02-19:38:52.141805 7f1ff7fff6c0 Delete type=0 #69
2026/06/02-19:38:52.153922 7f1ff7fff6c0 Manual compaction at level-0 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/06/02-19:38:52.177911 7f1ff7fff6c0 Manual compaction at level-1 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 506 : 1
2026/06/02-19:38:52.177922 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:38:52.181665 7f1ff7fff6c0 Generated table #72@1: 1 keys, 728 bytes
2026/06/02-19:38:52.181698 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 728 bytes
2026/06/02-19:38:52.188934 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:38:52.189052 7f1ff7fff6c0 Delete type=2 #67
2026/06/02-19:38:52.189189 7f1ff7fff6c0 Delete type=2 #71
2026/06/02-19:38:52.201050 7f1ff7fff6c0 Manual compaction at level-1 from '!items!null' @ 506 : 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-000075
+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/06/02-19:43:31.544375 7f22153fd6c0 Recovering log #72
2026/06/02-19:43:31.554816 7f22153fd6c0 Delete type=3 #70
2026/06/02-19:43:31.554878 7f22153fd6c0 Delete type=0 #72
2026/06/02-19:44:40.500606 7f1ff7fff6c0 Level-0 table #78: started
2026/06/02-19:44:40.505562 7f1ff7fff6c0 Level-0 table #78: 36499 bytes OK
2026/06/02-19:44:40.512075 7f1ff7fff6c0 Delete type=0 #76
2026/06/02-19:44:40.526628 7f1ff7fff6c0 Manual compaction at level-0 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zjAZ7bctIvTyKfff' @ 0 : 0; will stop at (end)
2026/06/02-19:44:40.526936 7f1ff7fff6c0 Manual compaction at level-1 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zjAZ7bctIvTyKfff' @ 0 : 0; will stop at '!tables.results!zjAZ7bctIvTyKfff' @ 6129 : 1
2026/06/02-19:44:40.526943 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:44:40.531590 7f1ff7fff6c0 Generated table #79@1: 436 keys, 40570 bytes
2026/06/02-19:44:40.531624 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 40570 bytes
2026/06/02-19:44:40.538399 7f1ff7fff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/06/02-19:44:40.538517 7f1ff7fff6c0 Delete type=2 #74
2026/06/02-19:44:40.538677 7f1ff7fff6c0 Delete type=2 #78
2026/06/02-19:44:40.564184 7f1ff7fff6c0 Manual compaction at level-1 from '!tables.results!zjAZ7bctIvTyKfff' @ 6129 : 1 .. '!tables.results!zjAZ7bctIvTyKfff' @ 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/06/02-19:38:41.373993 7f2214bfc6c0 Recovering log #67
2026/06/02-19:38:41.384841 7f2214bfc6c0 Delete type=3 #65
2026/06/02-19:38:41.384906 7f2214bfc6c0 Delete type=0 #67
2026/06/02-19:38:52.207992 7f1ff7fff6c0 Level-0 table #73: started
2026/06/02-19:38:52.212811 7f1ff7fff6c0 Level-0 table #73: 36337 bytes OK
2026/06/02-19:38:52.219611 7f1ff7fff6c0 Delete type=0 #71
2026/06/02-19:38:52.237075 7f1ff7fff6c0 Manual compaction at level-0 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zDBA2MM7O4aGPzvj' @ 0 : 0; will stop at (end)
2026/06/02-19:38:52.237220 7f1ff7fff6c0 Manual compaction at level-1 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zDBA2MM7O4aGPzvj' @ 0 : 0; will stop at '!tables.results!zujdTVEcOrMemrQK' @ 5671 : 0
2026/06/02-19:38:52.237225 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:38:52.241483 7f1ff7fff6c0 Generated table #74@1: 436 keys, 40329 bytes
2026/06/02-19:38:52.241507 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 40329 bytes
2026/06/02-19:38:52.248771 7f1ff7fff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/06/02-19:38:52.248884 7f1ff7fff6c0 Delete type=2 #69
2026/06/02-19:38:52.249011 7f1ff7fff6c0 Delete type=2 #73
2026/06/02-19:38:52.273586 7f1ff7fff6c0 Manual compaction at level-1 from '!tables.results!zujdTVEcOrMemrQK' @ 5671 : 0 .. '!tables.results!zDBA2MM7O4aGPzvj' @ 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-000073
+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/06/02-19:43:31.473126 7f22163ff6c0 Recovering log #70
2026/06/02-19:43:31.484666 7f22163ff6c0 Delete type=3 #68
2026/06/02-19:43:31.484705 7f22163ff6c0 Delete type=0 #70
2026/06/02-19:44:40.402774 7f1ff7fff6c0 Level-0 table #76: started
2026/06/02-19:44:40.407015 7f1ff7fff6c0 Level-0 table #76: 7108 bytes OK
2026/06/02-19:44:40.413760 7f1ff7fff6c0 Delete type=0 #74
2026/06/02-19:44:40.446409 7f1ff7fff6c0 Manual compaction at level-0 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/06/02-19:44:40.457226 7f1ff7fff6c0 Manual compaction at level-1 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 302 : 1
2026/06/02-19:44:40.457235 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:44:40.461196 7f1ff7fff6c0 Generated table #77@1: 1 keys, 911 bytes
2026/06/02-19:44:40.461226 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 911 bytes
2026/06/02-19:44:40.467956 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:44:40.468078 7f1ff7fff6c0 Delete type=2 #72
2026/06/02-19:44:40.468198 7f1ff7fff6c0 Delete type=2 #76
2026/06/02-19:44:40.489599 7f1ff7fff6c0 Manual compaction at level-1 from '!items!null' @ 302 : 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/06/02-19:38:41.298101 7f2214bfc6c0 Recovering log #65
2026/06/02-19:38:41.309083 7f2214bfc6c0 Delete type=3 #63
2026/06/02-19:38:41.309147 7f2214bfc6c0 Delete type=0 #65
2026/06/02-19:38:52.107907 7f1ff7fff6c0 Level-0 table #71: started
2026/06/02-19:38:52.112019 7f1ff7fff6c0 Level-0 table #71: 7108 bytes OK
2026/06/02-19:38:52.118652 7f1ff7fff6c0 Delete type=0 #69
2026/06/02-19:38:52.153887 7f1ff7fff6c0 Manual compaction at level-0 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/06/02-19:38:52.153996 7f1ff7fff6c0 Manual compaction at level-1 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 282 : 1
2026/06/02-19:38:52.154006 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:38:52.157685 7f1ff7fff6c0 Generated table #72@1: 1 keys, 911 bytes
2026/06/02-19:38:52.157721 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 911 bytes
2026/06/02-19:38:52.164744 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:38:52.165117 7f1ff7fff6c0 Delete type=2 #67
2026/06/02-19:38:52.165250 7f1ff7fff6c0 Delete type=2 #71
2026/06/02-19:38:52.201019 7f1ff7fff6c0 Manual compaction at level-1 from '!items!null' @ 282 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
Binary file not shown.
View File
+1
View File
@@ -0,0 +1 @@
MANIFEST-000010
View File
+8
View File
@@ -0,0 +1,8 @@
2026/06/02-19:43:31.609465 7f22153fd6c0 Recovering log #8
2026/06/02-19:43:31.620427 7f22153fd6c0 Delete type=3 #6
2026/06/02-19:43:31.620485 7f22153fd6c0 Delete type=0 #8
2026/06/02-19:44:40.512258 7f1ff7fff6c0 Level-0 table #13: started
2026/06/02-19:44:40.512300 7f1ff7fff6c0 Level-0 table #13: 0 bytes OK
2026/06/02-19:44:40.519094 7f1ff7fff6c0 Delete type=0 #11
2026/06/02-19:44:40.526642 7f1ff7fff6c0 Manual compaction at level-0 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/06/02-19:44:40.526909 7f1ff7fff6c0 Manual compaction at level-1 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end)
+8
View File
@@ -0,0 +1,8 @@
2026/06/02-19:38:41.450683 7f2214bfc6c0 Recovering log #4
2026/06/02-19:38:41.462030 7f2214bfc6c0 Delete type=3 #2
2026/06/02-19:38:41.462080 7f2214bfc6c0 Delete type=0 #4
2026/06/02-19:38:52.230748 7f1ff7fff6c0 Level-0 table #9: started
2026/06/02-19:38:52.230780 7f1ff7fff6c0 Level-0 table #9: 0 bytes OK
2026/06/02-19:38:52.236951 7f1ff7fff6c0 Delete type=0 #7
2026/06/02-19:38:52.237131 7f1ff7fff6c0 Manual compaction at level-0 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/06/02-19:38:52.237146 7f1ff7fff6c0 Manual compaction at level-1 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end)
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-000073
+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/06/02-19:43:31.516359 7f22153fd6c0 Recovering log #70
2026/06/02-19:43:31.527478 7f22153fd6c0 Delete type=3 #68
2026/06/02-19:43:31.527540 7f22153fd6c0 Delete type=0 #70
2026/06/02-19:44:40.489853 7f1ff7fff6c0 Level-0 table #76: started
2026/06/02-19:44:40.493463 7f1ff7fff6c0 Level-0 table #76: 1965 bytes OK
2026/06/02-19:44:40.500444 7f1ff7fff6c0 Delete type=0 #74
2026/06/02-19:44:40.526600 7f1ff7fff6c0 Manual compaction at level-0 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/06/02-19:44:40.538777 7f1ff7fff6c0 Manual compaction at level-1 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 182 : 1
2026/06/02-19:44:40.538789 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:44:40.542122 7f1ff7fff6c0 Generated table #77@1: 1 keys, 626 bytes
2026/06/02-19:44:40.542154 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 626 bytes
2026/06/02-19:44:40.549101 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:44:40.549243 7f1ff7fff6c0 Delete type=2 #72
2026/06/02-19:44:40.549396 7f1ff7fff6c0 Delete type=2 #76
2026/06/02-19:44:40.564205 7f1ff7fff6c0 Manual compaction at level-1 from '!items!null' @ 182 : 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/06/02-19:38:41.343792 7f2214bfc6c0 Recovering log #65
2026/06/02-19:38:41.356079 7f2214bfc6c0 Delete type=3 #63
2026/06/02-19:38:41.356142 7f2214bfc6c0 Delete type=0 #65
2026/06/02-19:38:52.141944 7f1ff7fff6c0 Level-0 table #71: started
2026/06/02-19:38:52.145396 7f1ff7fff6c0 Level-0 table #71: 1965 bytes OK
2026/06/02-19:38:52.153716 7f1ff7fff6c0 Delete type=0 #69
2026/06/02-19:38:52.153970 7f1ff7fff6c0 Manual compaction at level-0 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/06/02-19:38:52.165354 7f1ff7fff6c0 Manual compaction at level-1 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 170 : 1
2026/06/02-19:38:52.165366 7f1ff7fff6c0 Compacting 1@1 + 1@2 files
2026/06/02-19:38:52.169864 7f1ff7fff6c0 Generated table #72@1: 1 keys, 626 bytes
2026/06/02-19:38:52.169895 7f1ff7fff6c0 Compacted 1@1 + 1@2 files => 626 bytes
2026/06/02-19:38:52.177600 7f1ff7fff6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
2026/06/02-19:38:52.177705 7f1ff7fff6c0 Delete type=2 #67
2026/06/02-19:38:52.177829 7f1ff7fff6c0 Delete type=2 #71
2026/06/02-19:38:52.201037 7f1ff7fff6c0 Manual compaction at level-1 from '!items!null' @ 170 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+9 -1
View File
@@ -131,10 +131,17 @@
},
{
"name": "names",
"label": "D66 Name Syllables",
"label": "RollTables",
"path": "packs-system/names",
"type": "RollTable",
"system": "fvtt-machine-gods-noxian-expanse"
},
{
"name": "scenes",
"label": "Scenes",
"path": "packs-system/scenes",
"type": "Scene",
"system": "fvtt-machine-gods-noxian-expanse"
}
],
"grid": {
@@ -144,6 +151,7 @@
"url": "https://www.uberwald.me/gitea/uberwald/fvtt-machine-gods-noxian-expanse",
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-machine-gods-noxian-expanse/raw/branch/main/system.json",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-machine-gods-noxian-expanse/releases/download/latest/fvtt-machine-gods-noxian-expanse.zip",
"background": "systems/fvtt-machine-gods-noxian-expanse/assets/scenes/The Noxian Expanse NO GRID r1.webp",
"primaryTokenAttribute": "hp",
"socket": false
}
+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>