diff --git a/assets/help/character-daily-resources.png b/assets/help/character-daily-resources.png new file mode 100644 index 0000000..b9df72b Binary files /dev/null and b/assets/help/character-daily-resources.png differ diff --git a/assets/help/character-equipment.png b/assets/help/character-equipment.png new file mode 100644 index 0000000..f608a1a Binary files /dev/null and b/assets/help/character-equipment.png differ diff --git a/assets/help/character-features.png b/assets/help/character-features.png new file mode 100644 index 0000000..520abf4 Binary files /dev/null and b/assets/help/character-features.png differ diff --git a/assets/help/character-overview.png b/assets/help/character-overview.png new file mode 100644 index 0000000..e26f1c8 Binary files /dev/null and b/assets/help/character-overview.png differ diff --git a/assets/help/combat-tracker.png b/assets/help/combat-tracker.png new file mode 100644 index 0000000..8a6b64c Binary files /dev/null and b/assets/help/combat-tracker.png differ diff --git a/assets/help/compendiums-tab.png b/assets/help/compendiums-tab.png new file mode 100644 index 0000000..353f586 Binary files /dev/null and b/assets/help/compendiums-tab.png differ diff --git a/assets/help/creature-sheet.png b/assets/help/creature-sheet.png new file mode 100644 index 0000000..e489e2c Binary files /dev/null and b/assets/help/creature-sheet.png differ diff --git a/assets/help/journal-entry.png b/assets/help/journal-entry.png new file mode 100644 index 0000000..4b49020 Binary files /dev/null and b/assets/help/journal-entry.png differ diff --git a/assets/help/main-ui.png b/assets/help/main-ui.png new file mode 100644 index 0000000..831b8e2 Binary files /dev/null and b/assets/help/main-ui.png differ diff --git a/assets/help/party-sheet.png b/assets/help/party-sheet.png new file mode 100644 index 0000000..5830882 Binary files /dev/null and b/assets/help/party-sheet.png differ diff --git a/assets/help/scenes-tab.png b/assets/help/scenes-tab.png new file mode 100644 index 0000000..b4ac7a7 Binary files /dev/null and b/assets/help/scenes-tab.png differ diff --git a/css/mgne.css b/css/mgne.css index ef9247f..9001ee0 100644 --- a/css/mgne.css +++ b/css/mgne.css @@ -1501,8 +1501,8 @@ position: relative; display: flex; flex-direction: column; - gap: 0.6rem; - padding: 0.68rem; + gap: 0.5rem; + padding: 0.62rem 0.68rem; 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); } @@ -1516,119 +1516,265 @@ } .mgne-chat-card .chat-card-header { display: flex; - gap: 0.6rem; + gap: 0.55rem; align-items: center; + padding-bottom: 0.4rem; + border-bottom: 1px solid rgba(196, 154, 69, 0.14); } .mgne-chat-card .chat-card-header img { - width: 36px; - height: 36px; + width: 34px; + height: 34px; object-fit: cover; border-radius: 50%; - border: 1px solid rgba(196, 154, 69, 0.38); - box-shadow: 0 0 0 2px rgba(204, 178, 146, 0.06); + border: 1px solid rgba(196, 154, 69, 0.32); + box-shadow: 0 0 0 2px rgba(204, 178, 146, 0.05); + flex-shrink: 0; } -.mgne-chat-card .chat-eyebrow { - display: none; +.mgne-chat-card .chat-header-text { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 0.05rem; } .mgne-chat-card h3 { font-family: "CastorTwoMGNE", "Palatino Linotype", serif; text-transform: uppercase; letter-spacing: 0.08em; margin: 0; - color: #ab8b68; - font-size: 0.82rem; -} -.mgne-chat-card .chat-actor, -.mgne-chat-card .chat-subtitle, -.mgne-chat-card .chat-formula, -.mgne-chat-card .chat-special { - margin: 0; + color: #5b3e2e; + font-size: 0.78rem; + line-height: 1.2; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .mgne-chat-card .chat-actor { - color: #a08878; + margin: 0; + color: #7d553f; + font-size: 0.68rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } -.mgne-chat-card .chat-formula { - color: #a08878; -} -.mgne-chat-card .chat-formula code { - color: #ccb292; - background: rgba(19, 16, 15, 0.75); - padding: 0.1em 0.42em; - border-radius: 3px; -} -.mgne-chat-card .chat-result-line { - display: flex; - justify-content: space-between; - align-items: end; - padding: 0.38rem 0.55rem; - border: 1px solid rgba(196, 154, 69, 0.28); - border-radius: 6px; - background: rgba(19, 16, 15, 0.78); -} -.mgne-chat-card .chat-result-label { +.mgne-chat-card .chat-mode-badge { font-family: "CastorTwoMGNE", "Palatino Linotype", serif; text-transform: uppercase; letter-spacing: 0.08em; - font-size: 0.62rem; - color: #ccb292; + font-size: 0.6rem; + letter-spacing: 0.1em; + padding: 0.15rem 0.45rem; + border-radius: 999px; + background: rgba(19, 16, 15, 0.7); + border: 1px solid rgba(171, 139, 104, 0.22); + color: #958068; + flex-shrink: 0; + line-height: 1.3; } -.mgne-chat-card .chat-result-total { +.mgne-chat-card .chat-card-body { + display: flex; + flex-direction: column; + gap: 0.4rem; +} +.mgne-chat-card .chat-subtitle { + margin: 0; + color: #996b51; + font-size: 0.72rem; + letter-spacing: 0.03em; +} +.mgne-chat-card .chat-formula-wrap { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.25rem 0.5rem; + background: rgba(19, 16, 15, 0.6); + border-radius: 6px; + border: 1px solid rgba(171, 139, 104, 0.1); +} +.mgne-chat-card .chat-formula-label { font-family: "CastorTwoMGNE", "Palatino Linotype", serif; - font-size: 1.08rem; - color: #ccb292; + text-transform: uppercase; + font-size: 0.6rem; + color: #c49a45; + letter-spacing: 0.08em; + flex-shrink: 0; +} +.mgne-chat-card .chat-formula-code { + font-family: "Courier New", monospace; + font-size: 0.76rem; + color: #ccb292; + background: rgba(19, 16, 15, 0.5); + padding: 0.08rem 0.45rem; + border-radius: 3px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.mgne-chat-card .chat-outcome { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.4rem 0.55rem; + border-radius: 6px; + background: rgba(19, 16, 15, 0.68); + border-left: 3px solid rgba(232, 154, 95, 0.6); +} +.mgne-chat-card .chat-outcome.has-tooltip { + cursor: pointer; + user-select: none; +} +.mgne-chat-card .chat-outcome.has-tooltip:hover { + filter: brightness(1.1); +} +.mgne-chat-card .chat-outcome .chat-outcome-icon { + flex-shrink: 0; + font-size: 0.85rem; + width: 1.2rem; + text-align: center; + opacity: 0.8; +} +.mgne-chat-card .chat-outcome .chat-outcome-label { + font-family: "CastorTwoMGNE", "Palatino Linotype", serif; + text-transform: uppercase; + letter-spacing: 0.08em; + flex: 1; + font-size: 0.72rem; + letter-spacing: 0.06em; + color: #f0bc95; +} +.mgne-chat-card .chat-outcome .chat-outcome-total { + font-family: "CastorTwoMGNE", "Palatino Linotype", serif; + font-size: 1.18rem; + font-weight: 700; + color: #ccb292; + line-height: 1; +} +.mgne-chat-card .chat-outcome .chat-tooltip-icon { + opacity: 0.5; + font-size: 0.7rem; + margin-left: 0.15rem; + flex-shrink: 0; + transition: opacity 0.15s; +} +.mgne-chat-card .chat-outcome.tooltip-open .chat-tooltip-icon { + opacity: 1; +} +.mgne-chat-card .chat-damage-total { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.45rem 0.6rem; + border-radius: 6px; + background: rgba(19, 16, 15, 0.68); + border-left: 3px solid rgba(232, 154, 95, 0.6); } -.mgne-chat-card .chat-outcome.has-tooltip, .mgne-chat-card .chat-damage-total.has-tooltip { cursor: pointer; user-select: none; } -.mgne-chat-card .chat-outcome.has-tooltip:hover, .mgne-chat-card .chat-damage-total.has-tooltip:hover { - filter: brightness(1.12); + filter: brightness(1.1); +} +.mgne-chat-card .chat-damage-total .chat-damage-label { + font-family: "CastorTwoMGNE", "Palatino Linotype", serif; + text-transform: uppercase; + letter-spacing: 0.08em; + font-size: 0.65rem; + letter-spacing: 0.06em; + color: #958068; + flex: 1; +} +.mgne-chat-card .chat-damage-total .chat-damage-number { + font-family: "CastorTwoMGNE", "Palatino Linotype", serif; + font-size: 1.3rem; + font-weight: 700; + color: #edb183; + line-height: 1; } -.mgne-chat-card .chat-outcome .chat-tooltip-icon, .mgne-chat-card .chat-damage-total .chat-tooltip-icon { - opacity: 0.55; - font-size: 0.75em; - margin-left: 0.3rem; - vertical-align: middle; + opacity: 0.5; + font-size: 0.7rem; + flex-shrink: 0; transition: opacity 0.15s; } -.mgne-chat-card .chat-outcome.tooltip-open .chat-tooltip-icon, .mgne-chat-card .chat-damage-total.tooltip-open .chat-tooltip-icon { opacity: 1; } +.mgne-chat-card.outcome-critical-success .chat-outcome, +.mgne-chat-card.outcome-success .chat-outcome, +.mgne-chat-card.outcome-steady .chat-outcome { + border-left-color: rgba(79, 125, 115, 0.75); +} +.mgne-chat-card.outcome-critical-success .chat-outcome .chat-outcome-label, +.mgne-chat-card.outcome-success .chat-outcome .chat-outcome-label, +.mgne-chat-card.outcome-steady .chat-outcome .chat-outcome-label { + color: #9bc0b8; +} +.mgne-chat-card.outcome-critical-success .chat-outcome .chat-outcome-icon, +.mgne-chat-card.outcome-success .chat-outcome .chat-outcome-icon, +.mgne-chat-card.outcome-steady .chat-outcome .chat-outcome-icon { + color: #a1c4bc; +} +.mgne-chat-card.outcome-critical-success .chat-damage-total, +.mgne-chat-card.outcome-success .chat-damage-total, +.mgne-chat-card.outcome-steady .chat-damage-total { + border-left-color: rgba(79, 125, 115, 0.6); +} +.mgne-chat-card.outcome-critical-success .chat-damage-total .chat-damage-number, +.mgne-chat-card.outcome-success .chat-damage-total .chat-damage-number, +.mgne-chat-card.outcome-steady .chat-damage-total .chat-damage-number { + color: #92bab1; +} +.mgne-chat-card.outcome-failure .chat-outcome, +.mgne-chat-card.outcome-broken .chat-outcome, +.mgne-chat-card.outcome-fumble .chat-outcome { + border-left-color: rgba(232, 154, 95, 0.75); +} +.mgne-chat-card.outcome-failure .chat-outcome .chat-outcome-label, +.mgne-chat-card.outcome-broken .chat-outcome .chat-outcome-label, +.mgne-chat-card.outcome-fumble .chat-outcome .chat-outcome-label { + color: #f4cdaf; +} +.mgne-chat-card.outcome-failure .chat-outcome .chat-outcome-icon, +.mgne-chat-card.outcome-broken .chat-outcome .chat-outcome-icon, +.mgne-chat-card.outcome-fumble .chat-outcome .chat-outcome-icon { + color: #ee857d; +} +.mgne-chat-card.outcome-failure .chat-damage-total, +.mgne-chat-card.outcome-broken .chat-damage-total, +.mgne-chat-card.outcome-fumble .chat-damage-total { + border-left-color: rgba(232, 154, 95, 0.6); +} .mgne-chat-card .chat-dice-tooltip { - margin-top: 0.4rem; - padding: 0.4rem 0.55rem; + padding: 0.35rem 0.5rem; background: rgba(19, 16, 15, 0.85); - border: 1px solid rgba(171, 139, 104, 0.22); + border: 1px solid rgba(171, 139, 104, 0.18); border-radius: 6px; } .mgne-chat-card .chat-dice-tooltip .dice-roll { display: flex; flex-direction: column; - gap: 0.2rem; + gap: 0.15rem; } .mgne-chat-card .chat-dice-tooltip .dice-formula { font-family: "Courier New", monospace; - font-size: 0.72rem; - color: rgba(204, 178, 146, 0.78); + font-size: 0.7rem; + color: rgba(204, 178, 146, 0.72); } .mgne-chat-card .chat-dice-tooltip .dice-tooltip { - font-size: 0.78rem; + font-size: 0.75rem; } .mgne-chat-card .chat-dice-tooltip .dice { - margin: 0.15rem 0; + margin: 0.1rem 0; } .mgne-chat-card .chat-dice-tooltip .die-icon, .mgne-chat-card .chat-dice-tooltip .die-face { color: #c49a45; - font-size: 0.8rem; + font-size: 0.78rem; } .mgne-chat-card .chat-dice-tooltip .part-formula { - color: rgba(204, 178, 146, 0.82); - font-size: 0.72rem; + color: rgba(204, 178, 146, 0.78); + font-size: 0.7rem; } .mgne-chat-card .chat-dice-tooltip .part-total { color: #ccb292; @@ -1641,66 +1787,78 @@ color: #eeb68c; } .mgne-chat-card .chat-dice-tooltip .dice-total { - font-family: "CastorTwoMGNE", serif; - font-size: 1.05rem; - color: #c49a45; - text-align: right; - border-top: 1px solid rgba(171, 139, 104, 0.2); - padding-top: 0.2rem; - margin-top: 0.15rem; -} -.mgne-chat-card .chat-outcome { font-family: "CastorTwoMGNE", "Palatino Linotype", serif; - text-transform: uppercase; - letter-spacing: 0.08em; - margin: 0; - padding: 0.3rem 0.55rem; + font-size: 1rem; + color: #c49a45; + text-align: center; + border-top: 1px solid rgba(171, 139, 104, 0.16); + padding-top: 0.2rem; + margin-top: 0.1rem; +} +.mgne-chat-card .chat-special-wrap { + display: flex; + align-items: flex-start; + gap: 0.4rem; + padding: 0.35rem 0.5rem; + border-left: 2px solid rgba(232, 154, 95, 0.4); + background: rgba(17, 12, 10, 0.8); border-radius: 6px; - background: rgba(19, 16, 15, 0.72); - 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(232, 154, 95, 0.55); - background: rgba(17, 12, 10, 0.85); +.mgne-chat-card .chat-special-icon { + flex-shrink: 0; + font-size: 0.7rem; + color: #e89a5f; + margin-top: 0.08rem; +} +.mgne-chat-card .chat-special-text { color: #ccb292; + font-size: 0.72rem; + line-height: 1.4; } -.mgne-chat-card.outcome-critical-success, -.mgne-chat-card.outcome-success, -.mgne-chat-card.outcome-steady { - border-color: rgba(79, 125, 115, 0.42); +.mgne-chat-card .chat-omen-remind, +.mgne-chat-card .chat-omen-used { + margin: 0; + padding: 0.35rem 0.5rem; + border-radius: 6px; + font-size: 0.7rem; + display: flex; + align-items: center; + gap: 0.35rem; } -.mgne-chat-card.outcome-critical-success .chat-outcome, -.mgne-chat-card.outcome-success .chat-outcome, -.mgne-chat-card.outcome-steady .chat-outcome { - color: #9bc0b8; - border-left-color: rgba(79, 125, 115, 0.8); +.mgne-chat-card .chat-omen-remind { + background: rgba(196, 154, 69, 0.18); + border: 1px solid rgba(196, 154, 69, 0.35); + color: #dac08b; } -.mgne-chat-card.outcome-failure, -.mgne-chat-card.outcome-broken, -.mgne-chat-card.outcome-fumble { - border-color: rgba(232, 90, 80, 0.48); +.mgne-chat-card .chat-omen-remind i { + color: #c49a45; + font-size: 0.7rem; } -.mgne-chat-card.outcome-failure .chat-outcome, -.mgne-chat-card.outcome-broken .chat-outcome, -.mgne-chat-card.outcome-fumble .chat-outcome { - color: #f4cdaf; - border-left-color: rgba(232, 154, 95, 0.8); +.mgne-chat-card .chat-omen-neutralize { + background: rgba(232, 154, 95, 0.18); + border-color: rgba(232, 154, 95, 0.35); + color: #f2c4a2; } -.mgne-chat-card.mode-apply-damage .chat-result-total, -.mgne-chat-card.mode-damage .chat-result-total { - color: #edb183; +.mgne-chat-card .chat-omen-neutralize i { + color: #e89a5f; +} +.mgne-chat-card .chat-omen-used { + background: rgba(79, 125, 115, 0.18); + border: 1px solid rgba(79, 125, 115, 0.32); + color: #a7c8c1; +} +.mgne-chat-card .chat-omen-used i { + color: #b1cec7; + font-size: 0.7rem; } .mgne-chat-card .chat-card-actions { - margin-top: 0.2rem; + margin-top: 0.1rem; } .mgne-roll-damage-btn { display: flex; align-items: center; justify-content: center; - gap: 0.45rem; + gap: 0.4rem; width: 100%; padding: 0.38rem 0.7rem; border: 1px solid #e89a5f; @@ -1708,7 +1866,7 @@ background: #d87a4f; color: #f8ede0; font-family: "CastorTwoMGNE", "Palatino Linotype", serif; - font-size: 0.78rem; + font-size: 0.76rem; font-weight: 600; letter-spacing: 0.06em; cursor: pointer; @@ -1716,7 +1874,7 @@ } .mgne-roll-damage-btn .dmg-formula { color: #fff5e8; - font-size: 0.75rem; + font-size: 0.73rem; font-weight: 700; } .mgne-roll-damage-btn:hover { @@ -1741,7 +1899,7 @@ display: flex; align-items: center; justify-content: center; - gap: 0.45rem; + gap: 0.4rem; width: 100%; padding: 0.38rem 0.7rem; border: 1px solid #c49a45; @@ -1749,7 +1907,7 @@ background: #8f6f2d; color: #fff5d0; font-family: "CastorTwoMGNE", "Palatino Linotype", serif; - font-size: 0.78rem; + font-size: 0.76rem; font-weight: 600; letter-spacing: 0.06em; cursor: pointer; @@ -1761,7 +1919,7 @@ color: #fff; } .chat-apply-actions { - margin-top: 0.35rem; + margin-top: 0.25rem; } .mgne-apply-damage-select { width: 100%; @@ -1771,7 +1929,7 @@ background: #1b1512; color: #ab8b68; font-family: "LoraMGNE", "Book Antiqua", serif; - font-size: 0.8rem; + font-size: 0.78rem; font-weight: 600; cursor: pointer; transition: border-color 0.15s, background 0.15s; diff --git a/fvtt-machine-gods-noxian-expanse.mjs b/fvtt-machine-gods-noxian-expanse.mjs index 221a13d..4c4635e 100644 --- a/fvtt-machine-gods-noxian-expanse.mjs +++ b/fvtt-machine-gods-noxian-expanse.mjs @@ -73,10 +73,25 @@ Hooks.once("init", () => { Hooks.once("setup", () => { localizeSystemConfig() -}) + + // Strip phantom null-_id entries from all compendium indices. + // Foundry V14 LevelDatabase creates !items!null entries on open under Node24. + if (typeof CompendiumCollection !== "undefined") { + const orig = CompendiumCollection.prototype.getIndex; + CompendiumCollection.prototype.getIndex = async function(opts) { + const r = await orig.call(this, opts); + for (const k of [...this.index.keys()]) { if (!k) this.index.delete(k); } + return r; + }; + } +}); Hooks.once("ready", async () => { console.info(`${SYSTEM_ID} | Ready`) + // Clean anything already in the index before we patched + for (const pack of game.packs) { + for (const k of [...pack.index.keys()]) { if (!k) pack.index.delete(k); } + } if (!game.user.isGM) return @@ -117,7 +132,7 @@ Hooks.on("deleteCombat", (combat) => { if (!cores.length) return const lines = cores.map(c => `
  • ${c.parent.name} — ${c.name} (${c.system.usageDie})
  • `).join("") ChatMessage.create({ - content: `

    ⚙️ ${game.i18n.localize("MGNE.Notification.RollUsageDiceReminder")}

    `, + content: `

    ⚙️ ${game.i18n.localize("MGNE.Notification.RollUsageDiceReminder")}

    `, }) }) @@ -242,6 +257,7 @@ Hooks.on("renderChatMessageHTML", (message, element) => { const card = select.closest(".mgne-chat-card") const damageTotal = parseInt(card?.dataset.damageTotal ?? "0", 10) || 0 const damageCritical = card?.dataset.damageCritical === "true" + const targetActorId = card?.dataset.targetActorId ?? null const tokens = canvas.scene?.tokens.contents ?? [] for (const token of tokens) { @@ -249,6 +265,9 @@ Hooks.on("renderChatMessageHTML", (message, element) => { const opt = document.createElement("option") opt.value = token.id opt.textContent = token.name + if (targetActorId && token.actor.id === targetActorId) { + opt.selected = true + } select.appendChild(opt) } @@ -292,7 +311,7 @@ Hooks.on("renderChatMessageHTML", (message, element) => { await ChatMessage.create({ speaker: ChatMessage.getSpeaker({ actor: targetActor }), rolls: [reduceRoll], - content: `

    ${reduceMsg}

    `, + content: `

    ${reduceMsg}

    `, }) } } diff --git a/less/chat.less b/less/chat.less index 7b2e663..49eae19 100644 --- a/less/chat.less +++ b/less/chat.less @@ -3,8 +3,8 @@ .ornate-frame(); display: flex; flex-direction: column; - gap: 0.6rem; - padding: 0.68rem; + gap: 0.5rem; + padding: 0.62rem 0.68rem; color: @iron; background: radial-gradient(circle at top right, fade(@verdigris, 10%), transparent 22%), @@ -17,189 +17,351 @@ .mgne-chat-card .chat-card-header { display: flex; - gap: 0.6rem; + gap: 0.55rem; align-items: center; + padding-bottom: 0.4rem; + border-bottom: 1px solid fade(@gold-acid, 14%); } .mgne-chat-card .chat-card-header img { - width: 36px; - height: 36px; + width: 34px; + height: 34px; object-fit: cover; border-radius: 50%; - border: 1px solid fade(@gold-acid, 38%); - box-shadow: 0 0 0 2px fade(@parchment, 6%); + border: 1px solid fade(@gold-acid, 32%); + box-shadow: 0 0 0 2px fade(@parchment, 5%); + flex-shrink: 0; } -.mgne-chat-card .chat-eyebrow { - display: none; +.mgne-chat-card .chat-header-text { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 0.05rem; } .mgne-chat-card h3 { .caps-heading(); margin: 0; - color: @bone; - font-size: 0.82rem; -} - -.mgne-chat-card .chat-actor, -.mgne-chat-card .chat-subtitle, -.mgne-chat-card .chat-formula, -.mgne-chat-card .chat-special { - margin: 0; + color: darken(@label-ink, 22%); + font-size: 0.78rem; + line-height: 1.2; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .mgne-chat-card .chat-actor { - color: @iron; + margin: 0; + color: darken(@label-ink, 12%); + font-size: 0.68rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } -.mgne-chat-card .chat-formula { - color: @iron; - - code { - color: @parchment; - background: fade(@bg-void, 75%); - padding: 0.1em 0.42em; - border-radius: 3px; - } -} - -.mgne-chat-card .chat-result-line { - display: flex; - justify-content: space-between; - align-items: end; - padding: 0.38rem 0.55rem; - border: 1px solid fade(@gold-acid, 28%); - border-radius: @radius-sm; - background: fade(@bg-void, 78%); -} - -.mgne-chat-card .chat-result-label { +.mgne-chat-card .chat-mode-badge { .caps-heading(); - font-size: 0.62rem; - color: @parchment; + font-size: 0.6rem; + letter-spacing: 0.1em; + padding: 0.15rem 0.45rem; + border-radius: 999px; + background: fade(@bg-void, 70%); + border: 1px solid fade(@bone, 22%); + color: @ash; + flex-shrink: 0; + line-height: 1.3; } -.mgne-chat-card .chat-result-total { - font-family: @font-display; - font-size: 1.08rem; - color: @parchment; +.mgne-chat-card .chat-card-body { + display: flex; + flex-direction: column; + gap: 0.4rem; } -.mgne-chat-card .chat-outcome, -.mgne-chat-card .chat-damage-total { +// Subtitle line +.mgne-chat-card .chat-subtitle { + margin: 0; + color: darken(@label-soft, 10%); + font-size: 0.72rem; + letter-spacing: 0.03em; +} + +// Formula display +.mgne-chat-card .chat-formula-wrap { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.25rem 0.5rem; + background: fade(@bg-void, 60%); + border-radius: @radius-sm; + border: 1px solid fade(@bone, 10%); +} + +.mgne-chat-card .chat-formula-label { + .caps-heading(); + font-size: 0.6rem; + color: @gold-acid; + letter-spacing: 0.08em; + flex-shrink: 0; +} + +.mgne-chat-card .chat-formula-code { + font-family: "Courier New", monospace; + font-size: 0.76rem; + color: @parchment; + background: fade(@bg-void, 50%); + padding: 0.08rem 0.45rem; + border-radius: 3px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +// Outcome display (check results, morale) +.mgne-chat-card .chat-outcome { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.4rem 0.55rem; + border-radius: @radius-sm; + background: fade(@bg-void, 68%); + border-left: 3px solid fade(@ember-bright, 60%); + &.has-tooltip { cursor: pointer; user-select: none; - &:hover { filter: brightness(1.12); } + &:hover { filter: brightness(1.1); } } + + .chat-outcome-icon { + flex-shrink: 0; + font-size: 0.85rem; + width: 1.2rem; + text-align: center; + opacity: 0.8; + } + + .chat-outcome-label { + .caps-heading(); + flex: 1; + font-size: 0.72rem; + letter-spacing: 0.06em; + color: lighten(@ember-bright, 12%); + } + + .chat-outcome-total { + font-family: @font-display; + font-size: 1.18rem; + font-weight: 700; + color: @parchment; + line-height: 1; + } + .chat-tooltip-icon { - opacity: 0.55; - font-size: 0.75em; - margin-left: 0.3rem; - vertical-align: middle; + opacity: 0.5; + font-size: 0.7rem; + margin-left: 0.15rem; + flex-shrink: 0; transition: opacity 0.15s; } + &.tooltip-open .chat-tooltip-icon { opacity: 1; } } +// Damage total display +.mgne-chat-card .chat-damage-total { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.45rem 0.6rem; + border-radius: @radius-sm; + background: fade(@bg-void, 68%); + border-left: 3px solid fade(@ember-bright, 60%); + + &.has-tooltip { + cursor: pointer; + user-select: none; + &:hover { filter: brightness(1.1); } + } + + .chat-damage-label { + .caps-heading(); + font-size: 0.65rem; + letter-spacing: 0.06em; + color: @ash; + flex: 1; + } + + .chat-damage-number { + font-family: @font-display; + font-size: 1.3rem; + font-weight: 700; + color: lighten(@ember-bright, 8%); + line-height: 1; + } + + .chat-tooltip-icon { + opacity: 0.5; + font-size: 0.7rem; + flex-shrink: 0; + transition: opacity 0.15s; + } + + &.tooltip-open .chat-tooltip-icon { opacity: 1; } +} + +// Outcome classes — success/crit/steady color +.mgne-chat-card.outcome-critical-success, +.mgne-chat-card.outcome-success, +.mgne-chat-card.outcome-steady { + .chat-outcome { + border-left-color: fade(@verdigris, 75%); + .chat-outcome-label { color: lighten(@verdigris, 28%); } + .chat-outcome-icon { color: lighten(@verdigris, 30%); } + } + .chat-damage-total { + border-left-color: fade(@verdigris, 60%); + .chat-damage-number { color: lighten(@verdigris, 25%); } + } +} + +// Outcome classes — failure/broken/fumble color +.mgne-chat-card.outcome-failure, +.mgne-chat-card.outcome-broken, +.mgne-chat-card.outcome-fumble { + .chat-outcome { + border-left-color: fade(@ember-bright, 75%); + .chat-outcome-label { color: lighten(@ember-bright, 18%); } + .chat-outcome-icon { color: lighten(@blood, 10%); } + } + .chat-damage-total { + border-left-color: fade(@ember-bright, 60%); + } +} + // Dice tooltip reveal panel .mgne-chat-card .chat-dice-tooltip { - margin-top: 0.4rem; - padding: 0.4rem 0.55rem; + padding: 0.35rem 0.5rem; background: fade(@bg-void, 85%); - border: 1px solid fade(@bone, 22%); + border: 1px solid fade(@bone, 18%); border-radius: @radius-sm; - // Foundry's standard dice-roll markup .dice-roll { display: flex; flex-direction: column; - gap: 0.2rem; + gap: 0.15rem; } .dice-formula { font-family: "Courier New", monospace; - font-size: 0.72rem; - color: fade(@parchment, 78%); + font-size: 0.7rem; + color: fade(@parchment, 72%); } .dice-tooltip { - font-size: 0.78rem; + font-size: 0.75rem; } .dice { - margin: 0.15rem 0; + margin: 0.1rem 0; } .die-icon, .die-face { color: @gold-acid; - font-size: 0.8rem; + font-size: 0.78rem; } - .part-formula { color: fade(@parchment, 82%); font-size: 0.72rem; } + .part-formula { color: fade(@parchment, 78%); font-size: 0.7rem; } .part-total { color: @parchment; font-weight: 600; } .max { color: lighten(@verdigris, 20%); } .min { color: lighten(@ember-bright, 10%); } .dice-total { - font-family: "CastorTwoMGNE", serif; - font-size: 1.05rem; + font-family: @font-display; + font-size: 1rem; color: @gold-acid; - text-align: right; - border-top: 1px solid fade(@bone, 20%); + text-align: center; + border-top: 1px solid fade(@bone, 16%); padding-top: 0.2rem; - margin-top: 0.15rem; + margin-top: 0.1rem; } } -.mgne-chat-card .chat-outcome { - .caps-heading(); - margin: 0; - padding: 0.3rem 0.55rem; +// Special text +.mgne-chat-card .chat-special-wrap { + display: flex; + align-items: flex-start; + gap: 0.4rem; + padding: 0.35rem 0.5rem; + border-left: 2px solid fade(@ember-bright, 40%); + background: fade(@bg-input, 80%); border-radius: @radius-sm; - background: fade(@bg-void, 72%); - border-left: 3px solid fade(@ember-bright, 70%); - color: lighten(@ember-bright, 12%); - font-size: 0.8rem; } -.mgne-chat-card .chat-special { - padding: 0.42rem 0.55rem; - border-left: 3px solid fade(@ember-bright, 55%); - background: fade(@bg-input, 85%); +.mgne-chat-card .chat-special-icon { + flex-shrink: 0; + font-size: 0.7rem; + color: @ember-bright; + margin-top: 0.08rem; +} + +.mgne-chat-card .chat-special-text { color: @parchment; + font-size: 0.72rem; + line-height: 1.4; } -.mgne-chat-card.outcome-critical-success, -.mgne-chat-card.outcome-success, -.mgne-chat-card.outcome-steady { - border-color: fade(@verdigris, 42%); +// Omen reminders +.mgne-chat-card .chat-omen-remind, +.mgne-chat-card .chat-omen-used { + margin: 0; + padding: 0.35rem 0.5rem; + border-radius: @radius-sm; + font-size: 0.7rem; + display: flex; + align-items: center; + gap: 0.35rem; +} - .chat-outcome { - color: lighten(@verdigris, 28%); - border-left-color: fade(@verdigris, 80%); +.mgne-chat-card .chat-omen-remind { + background: fade(@gold-acid, 18%); + border: 1px solid fade(@gold-acid, 35%); + color: lighten(@gold-acid, 18%); + + i { + color: @gold-acid; + font-size: 0.7rem; } } -.mgne-chat-card.outcome-failure, -.mgne-chat-card.outcome-broken, -.mgne-chat-card.outcome-fumble { - border-color: fade(@blood, 48%); +.mgne-chat-card .chat-omen-neutralize { + background: fade(@ember-bright, 18%); + border-color: fade(@ember-bright, 35%); + color: lighten(@ember-bright, 15%); - .chat-outcome { - color: lighten(@ember-bright, 18%); - border-left-color: fade(@ember-bright, 80%); + i { + color: @ember-bright; } } -.mgne-chat-card.mode-apply-damage .chat-result-total, -.mgne-chat-card.mode-damage .chat-result-total { - color: lighten(@ember-bright, 8%); +.mgne-chat-card .chat-omen-used { + background: fade(@verdigris, 18%); + border: 1px solid fade(@verdigris, 32%); + color: lighten(@verdigris, 32%); + + i { + color: lighten(@verdigris, 35%); + font-size: 0.7rem; + } } +// Card action buttons container .mgne-chat-card .chat-card-actions { - margin-top: 0.2rem; + margin-top: 0.1rem; } +// Roll damage button .mgne-roll-damage-btn { display: flex; align-items: center; justify-content: center; - gap: 0.45rem; + gap: 0.4rem; width: 100%; padding: 0.38rem 0.7rem; border: 1px solid @ember-bright; @@ -207,7 +369,7 @@ background: @ember; color: #f8ede0; font-family: @font-display; - font-size: 0.78rem; + font-size: 0.76rem; font-weight: 600; letter-spacing: 0.06em; cursor: pointer; @@ -215,7 +377,7 @@ .dmg-formula { color: #fff5e8; - font-size: 0.75rem; + font-size: 0.73rem; font-weight: 700; } @@ -242,11 +404,12 @@ } } +// Omen reroll button .mgne-omen-reroll-btn { display: flex; align-items: center; justify-content: center; - gap: 0.45rem; + gap: 0.4rem; width: 100%; padding: 0.38rem 0.7rem; border: 1px solid @gold-acid; @@ -254,7 +417,7 @@ background: darken(@gold-acid, 15%); color: #fff5d0; font-family: @font-display; - font-size: 0.78rem; + font-size: 0.76rem; font-weight: 600; letter-spacing: 0.06em; cursor: pointer; @@ -267,8 +430,9 @@ } } +// Apply damage select .chat-apply-actions { - margin-top: 0.35rem; + margin-top: 0.25rem; } .mgne-apply-damage-select { @@ -279,7 +443,7 @@ background: @bg-char; color: @bone; font-family: @font-body; - font-size: 0.8rem; + font-size: 0.78rem; font-weight: 600; cursor: pointer; transition: border-color 0.15s, background 0.15s; diff --git a/module/config/system.mjs b/module/config/system.mjs index 7370893..d039571 100644 --- a/module/config/system.mjs +++ b/module/config/system.mjs @@ -139,7 +139,7 @@ export const SYSTEM = { { name: "Clothing (Average)", type: "armor", armorDie: "d2", penalty: 0 }, { name: "Helm", type: "armor", armorDie: "d2", penalty: 0 }, { name: "Medium Shield", type: "shield", armorDie: "d4", penalty: 0 }, - { name: "Gambeson", type: "armor", armorDie: "d4", penalty: 0 }, + { name: "Gambeson", type: "armor", armorDie: "d2", penalty: 0 }, { name: "Padded Leather", type: "armor", armorDie: "d4", penalty: 1 }, { name: "Chain Shirt", type: "armor", armorDie: "d6", penalty: 1 }, { name: "Half Plate", type: "armor", armorDie: "d8", penalty: 2 }, diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index b752b82..c706c0d 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -48,14 +48,28 @@ function numericOptions(min, max, current = null) { }) } +const OUTCOME_ICONS = { + "critical-success": '', + "success": '', + "steady": '', + "failure": '', + "broken": '', + "fumble": '', + "rolled": '', +} + +const SPECIAL_ICONS = { + default: '', +} + async function renderCard(context) { const outcomeClass = `${context.outcome ?? ""}` .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-|-$/g, "") - const eyebrow = context.eyebrow ?? getChatModeLabel(context.mode ?? "generic") - const normalizedEyebrow = `${eyebrow}`.trim().toLowerCase() - const normalizedLabel = `${context.label ?? ""}`.trim().toLowerCase() + const modeLabel = getChatModeLabel(context.mode ?? "generic") + const outcomeIcon = OUTCOME_ICONS[outcomeClass] || "" + const specialIcon = SPECIAL_ICONS.default // Render dice tooltip HTML if a roll was provided const diceTooltip = context._roll ? await context._roll.render() : null @@ -63,8 +77,10 @@ async function renderCard(context) { return foundry.applications.handlebars.renderTemplate(`systems/${SYSTEM_ID}/templates/chat-message.hbs`, { ...context, modeClass: context.mode ?? "generic", - eyebrow: "", + modeLabel, outcomeClass, + outcomeIcon, + specialIcon, diceTooltip, }) } @@ -208,7 +224,7 @@ export default class MGNERoll { return { roll, broken } } - static async rollDamage({ actor, item }) { + static async rollDamage({ actor, item, targetActor = null }) { const damageBonus = await actor.consumePendingDamageBonus(item.id) const multiplier = damageBonus?.multiplier ?? 1 const baseFormula = item.system.damage || "1" @@ -242,7 +258,7 @@ export default class MGNERoll { mode: "damage", actorName: actor.name, actorImg: actor.img, - label: `${item.name} Damage`, + label: f("MGNE.Roll.ItemDamageLabel", { item: item.name }), subtitle: null, formula: roll.formula, total: roll.total, @@ -252,6 +268,7 @@ export default class MGNERoll { showApplyButton: true, damageTotal: roll.total, damageCritical: isCritical, + damageTargetActorId: targetActor?.id ?? null, _roll: roll, }) @@ -264,7 +281,7 @@ export default class MGNERoll { return { roll } } - static async rollFlatDamage({ actor, label, formula }) { + static async rollFlatDamage({ actor, label, formula, targetActor = null }) { const damageBonus = await actor.consumePendingDamageBonus("profile-attack") const multiplier = damageBonus?.multiplier ?? 1 const baseFormula = formula || "1" @@ -284,6 +301,7 @@ export default class MGNERoll { showApplyButton: true, damageTotal: roll.total, damageCritical: isCritical, + damageTargetActorId: targetActor?.id ?? null, _roll: roll, }) diff --git a/module/models/character.mjs b/module/models/character.mjs index 83b05b7..17f835f 100644 --- a/module/models/character.mjs +++ b/module/models/character.mjs @@ -54,7 +54,7 @@ export default class MGNECharacter extends foundry.abstract.TypeDataModel { // Compute current load per RAW: // Only items with a weight field count — features and creature-traits are excluded - // trivial = 0, light = 10 per slot, normal = 1, heavy = fills remaining capacity (max 1) + // trivial = 0, light = 10 per slot, normal = 1, heavy = 2 let normalLoad = 0 let lightCount = 0 let heavyCount = 0 @@ -71,15 +71,7 @@ export default class MGNECharacter extends foundry.abstract.TypeDataModel { this.lightItemCount = lightCount this.heavyItemCount = heavyCount - if (heavyCount >= 2) { - // Can't carry two heavy items — automatically overloaded - this.currentLoad = this.carryCapacity + (heavyCount - 1) - } else if (heavyCount === 1) { - // Heavy fills remaining capacity; other items fit alongside it - this.currentLoad = Math.max(normalLoad, this.carryCapacity) - } else { - this.currentLoad = normalLoad - } + this.currentLoad = normalLoad + heavyCount * 2 this.overloaded = this.currentLoad > this.carryCapacity } diff --git a/package-lock.json b/package-lock.json index d39cc39..25dcb38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,9 +7,11 @@ "": { "name": "fvtt-machine-gods-noxian-expanse", "version": "0.1.0", + "hasInstallScript": true, "license": "UNLICENSED", "devDependencies": { "@foundryvtt/foundryvtt-cli": "^3.0.3", + "classic-level": "^3.0.0", "less": "^4.6.4", "patch-package": "^8.0.1" } @@ -36,6 +38,53 @@ "node": ">17.0.0" } }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/abstract-level": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz", + "integrity": "sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/classic-level": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz", + "integrity": "sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/@seald-io/binary-search-tree": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@seald-io/binary-search-tree/-/binary-search-tree-1.0.3.tgz", @@ -62,22 +111,21 @@ "license": "BSD-2-Clause" }, "node_modules/abstract-level": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz", - "integrity": "sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-3.1.1.tgz", + "integrity": "sha512-CW2gKbJFTuX1feMvOrvsVMmijAOgI9kg2Ie9Dq3gOcMt/dVVoVmqNlLcEUCT13NxHFMEajcUcVBIplbyDroDiw==", "dev": true, "license": "MIT", "dependencies": { "buffer": "^6.0.3", - "catering": "^2.1.0", "is-buffer": "^2.0.5", - "level-supports": "^4.0.0", + "level-supports": "^6.2.0", "level-transcoder": "^1.0.1", - "module-error": "^1.0.1", - "queue-microtask": "^1.2.3" + "maybe-combine-errors": "^1.0.0", + "module-error": "^1.0.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/ansi-regex": { @@ -278,21 +326,20 @@ } }, "node_modules/classic-level": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz", - "integrity": "sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-3.0.0.tgz", + "integrity": "sha512-yGy8j8LjPbN0Bh3+ygmyYvrmskVita92pD/zCoalfcC9XxZj6iDtZTAnz+ot7GG8p9KLTG+MZ84tSA4AhkgVZQ==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.0", + "abstract-level": "^3.1.0", "module-error": "^1.0.1", "napi-macros": "^2.2.2", "node-gyp-build": "^4.3.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/cliui": { @@ -1017,13 +1064,13 @@ } }, "node_modules/level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-6.2.0.tgz", + "integrity": "sha512-QNxVXP0IRnBmMsJIh+sb2kwNCYcKciQZJEt+L1hPCHrKNELllXhvrlClVHXBYZVT+a7aTSM6StgNXdAldoab3w==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=16" } }, "node_modules/level-transcoder": { @@ -1085,6 +1132,16 @@ "node": ">= 0.4" } }, + "node_modules/maybe-combine-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/maybe-combine-errors/-/maybe-combine-errors-1.0.0.tgz", + "integrity": "sha512-eefp6IduNPT6fVdwPp+1NgD0PML1NU5P6j1Mj5nz1nidX8/sWY7119WL8vTAHgqfsY74TzW0w1XPgdYEKkGZ5A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", diff --git a/package.json b/package.json index 960b646..c3d48ec 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ }, "devDependencies": { "@foundryvtt/foundryvtt-cli": "^3.0.3", + "classic-level": "^3.0.0", "less": "^4.6.4", "patch-package": "^8.0.1" } diff --git a/packs-system/armor/000080.log b/packs-system/armor/000019.log similarity index 100% rename from packs-system/armor/000080.log rename to packs-system/armor/000019.log diff --git a/packs-system/armor/000021.ldb b/packs-system/armor/000021.ldb new file mode 100644 index 0000000..5b14307 Binary files /dev/null and b/packs-system/armor/000021.ldb differ diff --git a/packs-system/armor/000034.ldb b/packs-system/armor/000034.ldb deleted file mode 100644 index b186cc7..0000000 Binary files a/packs-system/armor/000034.ldb and /dev/null differ diff --git a/packs-system/armor/000082.ldb b/packs-system/armor/000082.ldb deleted file mode 100644 index 676c07d..0000000 Binary files a/packs-system/armor/000082.ldb and /dev/null differ diff --git a/packs-system/armor/CURRENT b/packs-system/armor/CURRENT index 741d918..056df57 100644 --- a/packs-system/armor/CURRENT +++ b/packs-system/armor/CURRENT @@ -1 +1 @@ -MANIFEST-000078 +MANIFEST-000017 diff --git a/packs-system/armor/LOG b/packs-system/armor/LOG index c1e8ee7..9401fc6 100644 --- a/packs-system/armor/LOG +++ b/packs-system/armor/LOG @@ -1,15 +1,13 @@ -2026/06/04-19:59:31.303282 7f480abff6c0 Recovering log #75 -2026/06/04-19:59:31.312491 7f480abff6c0 Delete type=3 #73 -2026/06/04-19:59:31.312518 7f480abff6c0 Delete type=0 #75 -2026/06/04-20:00:50.106068 7f4808bfb6c0 Level-0 table #81: started -2026/06/04-20:00:50.109748 7f4808bfb6c0 Level-0 table #81: 1354 bytes OK -2026/06/04-20:00:50.116095 7f4808bfb6c0 Delete type=0 #79 -2026/06/04-20:00:50.133136 7f4808bfb6c0 Manual compaction at level-0 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) -2026/06/04-20:00:50.133294 7f4808bfb6c0 Manual compaction at level-1 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 130 : 1 -2026/06/04-20:00:50.133299 7f4808bfb6c0 Compacting 1@1 + 1@2 files -2026/06/04-20:00:50.136397 7f4808bfb6c0 Generated table #82@1: 1 keys, 685 bytes -2026/06/04-20:00:50.136409 7f4808bfb6c0 Compacted 1@1 + 1@2 files => 685 bytes -2026/06/04-20:00:50.142598 7f4808bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ] -2026/06/04-20:00:50.142662 7f4808bfb6c0 Delete type=2 #77 -2026/06/04-20:00:50.142750 7f4808bfb6c0 Delete type=2 #81 -2026/06/04-20:00:50.170090 7f4808bfb6c0 Manual compaction at level-1 from '!items!null' @ 130 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/06/08-22:14:53.428299 7f5208bff6c0 Delete type=3 #1 +2026/06/08-22:19:11.056868 7f51ba7fc6c0 Level-0 table #20: started +2026/06/08-22:19:11.059874 7f51ba7fc6c0 Level-0 table #20: 1820 bytes OK +2026/06/08-22:19:11.066080 7f51ba7fc6c0 Delete type=0 #18 +2026/06/08-22:19:11.078344 7f51ba7fc6c0 Manual compaction at level-0 from '!items!mgne-arm-chainshirt' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 9 : 1 +2026/06/08-22:19:11.078355 7f51ba7fc6c0 Compacting 3@0 + 0@1 files +2026/06/08-22:19:11.081644 7f51ba7fc6c0 Generated table #21@0: 9 keys, 1445 bytes +2026/06/08-22:19:11.081666 7f51ba7fc6c0 Compacted 3@0 + 0@1 files => 1445 bytes +2026/06/08-22:19:11.087510 7f51ba7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/06/08-22:19:11.087564 7f51ba7fc6c0 Delete type=2 #5 +2026/06/08-22:19:11.087613 7f51ba7fc6c0 Delete type=2 #15 +2026/06/08-22:19:11.087653 7f51ba7fc6c0 Delete type=2 #20 +2026/06/08-22:19:11.094063 7f51ba7fc6c0 Manual compaction at level-0 from '!items!null' @ 9 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs-system/armor/LOG.old b/packs-system/armor/LOG.old index c52bc09..48c2dcd 100644 --- a/packs-system/armor/LOG.old +++ b/packs-system/armor/LOG.old @@ -1,15 +1,5 @@ -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) +2026/06/08-22:14:53.414330 7f5208bff6c0 Log #14: 0 ops saved to Table #16 OK +2026/06/08-22:14:53.414360 7f5208bff6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/armor/000014.log: OK +2026/06/08-22:14:53.414379 7f5208bff6c0 Table #5: 8 entries OK +2026/06/08-22:14:53.414393 7f5208bff6c0 Table #15: 8 entries OK +2026/06/08-22:14:53.417435 7f5208bff6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/armor; recovered 2 files; 3045 bytes. Some data may have been lost. **** diff --git a/packs-system/armor/MANIFEST-000017 b/packs-system/armor/MANIFEST-000017 new file mode 100644 index 0000000..0753f99 Binary files /dev/null and b/packs-system/armor/MANIFEST-000017 differ diff --git a/packs-system/armor/MANIFEST-000078 b/packs-system/armor/MANIFEST-000078 deleted file mode 100644 index 0ea1c3c..0000000 Binary files a/packs-system/armor/MANIFEST-000078 and /dev/null differ diff --git a/packs-system/companions/000080.log b/packs-system/armor/lost/000014.log similarity index 100% rename from packs-system/companions/000080.log rename to packs-system/armor/lost/000014.log diff --git a/packs-system/features/000080.log b/packs-system/companions/000017.log similarity index 100% rename from packs-system/features/000080.log rename to packs-system/companions/000017.log diff --git a/packs-system/companions/000019.ldb b/packs-system/companions/000019.ldb new file mode 100644 index 0000000..15e2857 Binary files /dev/null and b/packs-system/companions/000019.ldb differ diff --git a/packs-system/companions/000034.ldb b/packs-system/companions/000034.ldb deleted file mode 100644 index 84c7520..0000000 Binary files a/packs-system/companions/000034.ldb and /dev/null differ diff --git a/packs-system/companions/000082.ldb b/packs-system/companions/000082.ldb deleted file mode 100644 index 7ede5d8..0000000 Binary files a/packs-system/companions/000082.ldb and /dev/null differ diff --git a/packs-system/companions/CURRENT b/packs-system/companions/CURRENT index 741d918..42c62b6 100644 --- a/packs-system/companions/CURRENT +++ b/packs-system/companions/CURRENT @@ -1 +1 @@ -MANIFEST-000078 +MANIFEST-000015 diff --git a/packs-system/companions/LOG b/packs-system/companions/LOG index 14cc42d..b561b5b 100644 --- a/packs-system/companions/LOG +++ b/packs-system/companions/LOG @@ -1,15 +1,13 @@ -2026/06/04-19:59:31.279596 7f48093fc6c0 Recovering log #75 -2026/06/04-19:59:31.289218 7f48093fc6c0 Delete type=3 #73 -2026/06/04-19:59:31.289235 7f48093fc6c0 Delete type=0 #75 -2026/06/04-20:00:50.045800 7f4808bfb6c0 Level-0 table #81: started -2026/06/04-20:00:50.049176 7f4808bfb6c0 Level-0 table #81: 4899 bytes OK -2026/06/04-20:00:50.055679 7f4808bfb6c0 Delete type=0 #79 -2026/06/04-20:00:50.066108 7f4808bfb6c0 Manual compaction at level-0 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at (end) -2026/06/04-20:00:50.076443 7f4808bfb6c0 Manual compaction at level-1 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at '!actors!null' @ 66 : 1 -2026/06/04-20:00:50.076453 7f4808bfb6c0 Compacting 1@1 + 1@2 files -2026/06/04-20:00:50.079696 7f4808bfb6c0 Generated table #82@1: 1 keys, 1984 bytes -2026/06/04-20:00:50.079711 7f4808bfb6c0 Compacted 1@1 + 1@2 files => 1984 bytes -2026/06/04-20:00:50.085900 7f4808bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ] -2026/06/04-20:00:50.085969 7f4808bfb6c0 Delete type=2 #77 -2026/06/04-20:00:50.086069 7f4808bfb6c0 Delete type=2 #81 -2026/06/04-20:00:50.096347 7f4808bfb6c0 Manual compaction at level-1 from '!actors!null' @ 66 : 1 .. '!actors!null' @ 0 : 0; will stop at (end) +2026/06/08-22:14:53.395457 7f5208bff6c0 Delete type=3 #1 +2026/06/08-22:19:10.911852 7f51ba7fc6c0 Level-0 table #18: started +2026/06/08-22:19:10.915426 7f51ba7fc6c0 Level-0 table #18: 4899 bytes OK +2026/06/08-22:19:10.921268 7f51ba7fc6c0 Delete type=0 #16 +2026/06/08-22:19:10.949522 7f51ba7fc6c0 Manual compaction at level-0 from '!actors!mgne-comp-beguiled-noble' @ 72057594037927935 : 1 .. '!actors!null' @ 0 : 0; will stop at '!actors!null' @ 5 : 1 +2026/06/08-22:19:10.949526 7f51ba7fc6c0 Compacting 3@0 + 0@1 files +2026/06/08-22:19:10.952376 7f51ba7fc6c0 Generated table #19@0: 5 keys, 3562 bytes +2026/06/08-22:19:10.952384 7f51ba7fc6c0 Compacted 3@0 + 0@1 files => 3562 bytes +2026/06/08-22:19:10.958012 7f51ba7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/06/08-22:19:10.958266 7f51ba7fc6c0 Delete type=2 #5 +2026/06/08-22:19:10.958306 7f51ba7fc6c0 Delete type=2 #13 +2026/06/08-22:19:10.958337 7f51ba7fc6c0 Delete type=2 #18 +2026/06/08-22:19:10.985998 7f51ba7fc6c0 Manual compaction at level-0 from '!actors!null' @ 5 : 1 .. '!actors!null' @ 0 : 0; will stop at (end) diff --git a/packs-system/companions/LOG.old b/packs-system/companions/LOG.old index 1e17b10..d414f23 100644 --- a/packs-system/companions/LOG.old +++ b/packs-system/companions/LOG.old @@ -1,15 +1,5 @@ -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) +2026/06/08-22:14:53.381718 7f5208bff6c0 Log #12: 0 ops saved to Table #14 OK +2026/06/08-22:14:53.381752 7f5208bff6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/companions/000012.log: OK +2026/06/08-22:14:53.381773 7f5208bff6c0 Table #5: 4 entries OK +2026/06/08-22:14:53.381792 7f5208bff6c0 Table #13: 4 entries OK +2026/06/08-22:14:53.384902 7f5208bff6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/companions; recovered 2 files; 7496 bytes. Some data may have been lost. **** diff --git a/packs-system/companions/MANIFEST-000015 b/packs-system/companions/MANIFEST-000015 new file mode 100644 index 0000000..638eda3 Binary files /dev/null and b/packs-system/companions/MANIFEST-000015 differ diff --git a/packs-system/companions/MANIFEST-000078 b/packs-system/companions/MANIFEST-000078 deleted file mode 100644 index 99efb2b..0000000 Binary files a/packs-system/companions/MANIFEST-000078 and /dev/null differ diff --git a/packs-system/names/000082.log b/packs-system/companions/lost/000012.log similarity index 100% rename from packs-system/names/000082.log rename to packs-system/companions/lost/000012.log diff --git a/packs-system/resonations/000080.log b/packs-system/features/000017.log similarity index 100% rename from packs-system/resonations/000080.log rename to packs-system/features/000017.log diff --git a/packs-system/features/000034.ldb b/packs-system/features/000019.ldb similarity index 61% rename from packs-system/features/000034.ldb rename to packs-system/features/000019.ldb index 2014f0e..843a0e9 100644 Binary files a/packs-system/features/000034.ldb and b/packs-system/features/000019.ldb differ diff --git a/packs-system/features/000082.ldb b/packs-system/features/000082.ldb deleted file mode 100644 index 1e359ac..0000000 Binary files a/packs-system/features/000082.ldb and /dev/null differ diff --git a/packs-system/features/CURRENT b/packs-system/features/CURRENT index 741d918..42c62b6 100644 --- a/packs-system/features/CURRENT +++ b/packs-system/features/CURRENT @@ -1 +1 @@ -MANIFEST-000078 +MANIFEST-000015 diff --git a/packs-system/features/LOG b/packs-system/features/LOG index 54edeaf..79044cf 100644 --- a/packs-system/features/LOG +++ b/packs-system/features/LOG @@ -1,15 +1,13 @@ -2026/06/04-19:59:31.268808 7f480a3fe6c0 Recovering log #75 -2026/06/04-19:59:31.278025 7f480a3fe6c0 Delete type=3 #73 -2026/06/04-19:59:31.278064 7f480a3fe6c0 Delete type=0 #75 -2026/06/04-20:00:50.055792 7f4808bfb6c0 Level-0 table #81: started -2026/06/04-20:00:50.059981 7f4808bfb6c0 Level-0 table #81: 10404 bytes OK -2026/06/04-20:00:50.065983 7f4808bfb6c0 Delete type=0 #79 -2026/06/04-20:00:50.096324 7f4808bfb6c0 Manual compaction at level-0 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) -2026/06/04-20:00:50.096480 7f4808bfb6c0 Manual compaction at level-1 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 578 : 1 -2026/06/04-20:00:50.096485 7f4808bfb6c0 Compacting 1@1 + 1@2 files -2026/06/04-20:00:50.099620 7f4808bfb6c0 Generated table #82@1: 1 keys, 728 bytes -2026/06/04-20:00:50.099636 7f4808bfb6c0 Compacted 1@1 + 1@2 files => 728 bytes -2026/06/04-20:00:50.105851 7f4808bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ] -2026/06/04-20:00:50.105910 7f4808bfb6c0 Delete type=2 #77 -2026/06/04-20:00:50.105999 7f4808bfb6c0 Delete type=2 #81 -2026/06/04-20:00:50.133122 7f4808bfb6c0 Manual compaction at level-1 from '!items!null' @ 578 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/06/08-22:14:53.380282 7f51baffd6c0 Delete type=3 #1 +2026/06/08-22:19:10.931121 7f51ba7fc6c0 Level-0 table #18: started +2026/06/08-22:19:10.934184 7f51ba7fc6c0 Level-0 table #18: 10411 bytes OK +2026/06/08-22:19:10.939850 7f51ba7fc6c0 Delete type=0 #16 +2026/06/08-22:19:10.967505 7f51ba7fc6c0 Manual compaction at level-0 from '!items!mgne-feat-11' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 37 : 1 +2026/06/08-22:19:10.967509 7f51ba7fc6c0 Compacting 3@0 + 0@1 files +2026/06/08-22:19:10.971430 7f51ba7fc6c0 Generated table #19@0: 37 keys, 8891 bytes +2026/06/08-22:19:10.971443 7f51ba7fc6c0 Compacted 3@0 + 0@1 files => 8891 bytes +2026/06/08-22:19:10.977132 7f51ba7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/06/08-22:19:10.977169 7f51ba7fc6c0 Delete type=2 #5 +2026/06/08-22:19:10.977215 7f51ba7fc6c0 Delete type=2 #13 +2026/06/08-22:19:10.977242 7f51ba7fc6c0 Delete type=2 #18 +2026/06/08-22:19:10.986012 7f51ba7fc6c0 Manual compaction at level-0 from '!items!null' @ 37 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs-system/features/LOG.old b/packs-system/features/LOG.old index 65a4fe8..a163f0e 100644 --- a/packs-system/features/LOG.old +++ b/packs-system/features/LOG.old @@ -1,15 +1,5 @@ -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) +2026/06/08-22:14:53.366714 7f51baffd6c0 Log #12: 0 ops saved to Table #14 OK +2026/06/08-22:14:53.366760 7f51baffd6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/features/000012.log: OK +2026/06/08-22:14:53.366800 7f51baffd6c0 Table #5: 36 entries OK +2026/06/08-22:14:53.366827 7f51baffd6c0 Table #13: 36 entries OK +2026/06/08-22:14:53.369778 7f51baffd6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/features; recovered 2 files; 19088 bytes. Some data may have been lost. **** diff --git a/packs-system/features/MANIFEST-000015 b/packs-system/features/MANIFEST-000015 new file mode 100644 index 0000000..02754ff Binary files /dev/null and b/packs-system/features/MANIFEST-000015 differ diff --git a/packs-system/features/MANIFEST-000078 b/packs-system/features/MANIFEST-000078 deleted file mode 100644 index 3f450a4..0000000 Binary files a/packs-system/features/MANIFEST-000078 and /dev/null differ diff --git a/packs-system/scenes/000016.log b/packs-system/features/lost/000012.log similarity index 100% rename from packs-system/scenes/000016.log rename to packs-system/features/lost/000012.log diff --git a/packs-system/weapons/000080.log b/packs-system/names/000018.log similarity index 100% rename from packs-system/weapons/000080.log rename to packs-system/names/000018.log diff --git a/packs-system/names/000020.ldb b/packs-system/names/000020.ldb new file mode 100644 index 0000000..b04fbfd Binary files /dev/null and b/packs-system/names/000020.ldb differ diff --git a/packs-system/names/000084.ldb b/packs-system/names/000084.ldb deleted file mode 100644 index 38e4e07..0000000 Binary files a/packs-system/names/000084.ldb and /dev/null differ diff --git a/packs-system/names/CURRENT b/packs-system/names/CURRENT index e73ded3..32108be 100644 --- a/packs-system/names/CURRENT +++ b/packs-system/names/CURRENT @@ -1 +1 @@ -MANIFEST-000080 +MANIFEST-000016 diff --git a/packs-system/names/LOG b/packs-system/names/LOG index 17e75c1..e1262c6 100644 --- a/packs-system/names/LOG +++ b/packs-system/names/LOG @@ -1,15 +1,12 @@ -2026/06/04-19:59:31.314227 7f480a3fe6c0 Recovering log #77 -2026/06/04-19:59:31.324228 7f480a3fe6c0 Delete type=3 #75 -2026/06/04-19:59:31.324261 7f480a3fe6c0 Delete type=0 #77 -2026/06/04-20:00:50.116271 7f4808bfb6c0 Level-0 table #83: started -2026/06/04-20:00:50.120528 7f4808bfb6c0 Level-0 table #83: 36363 bytes OK -2026/06/04-20:00:50.126851 7f4808bfb6c0 Delete type=0 #81 -2026/06/04-20:00:50.133146 7f4808bfb6c0 Manual compaction at level-0 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zwUjCB2xwyG4KtF8' @ 0 : 0; will stop at (end) -2026/06/04-20:00:50.142815 7f4808bfb6c0 Manual compaction at level-1 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zwUjCB2xwyG4KtF8' @ 0 : 0; will stop at '!tables.results!zwUjCB2xwyG4KtF8' @ 6608 : 1 -2026/06/04-20:00:50.142822 7f4808bfb6c0 Compacting 1@1 + 1@2 files -2026/06/04-20:00:50.147353 7f4808bfb6c0 Generated table #84@1: 436 keys, 40657 bytes -2026/06/04-20:00:50.147367 7f4808bfb6c0 Compacted 1@1 + 1@2 files => 40657 bytes -2026/06/04-20:00:50.153433 7f4808bfb6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/06/04-20:00:50.153502 7f4808bfb6c0 Delete type=2 #79 -2026/06/04-20:00:50.153631 7f4808bfb6c0 Delete type=2 #83 -2026/06/04-20:00:50.170103 7f4808bfb6c0 Manual compaction at level-1 from '!tables.results!zwUjCB2xwyG4KtF8' @ 6608 : 1 .. '!tables.results!zwUjCB2xwyG4KtF8' @ 0 : 0; will stop at (end) +2026/06/08-22:14:53.442808 7f5208bff6c0 Delete type=3 #1 +2026/06/08-22:19:10.998524 7f51ba7fc6c0 Level-0 table #19: started +2026/06/08-22:19:11.001773 7f51ba7fc6c0 Level-0 table #19: 36644 bytes OK +2026/06/08-22:19:11.007734 7f51ba7fc6c0 Delete type=0 #17 +2026/06/08-22:19:11.017605 7f51ba7fc6c0 Manual compaction at level-0 from '!tables!mgne-tbl-armor' @ 72057594037927935 : 1 .. '!tables.results!zsVzjhOcmPM5BpOa' @ 0 : 0; will stop at '!tables.results!zu1umyi8Rap9kjGg' @ 660 : 0 +2026/06/08-22:19:11.017609 7f51ba7fc6c0 Compacting 2@0 + 0@1 files +2026/06/08-22:19:11.021331 7f51ba7fc6c0 Generated table #20@0: 436 keys, 40467 bytes +2026/06/08-22:19:11.021354 7f51ba7fc6c0 Compacted 2@0 + 0@1 files => 40467 bytes +2026/06/08-22:19:11.027529 7f51ba7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/06/08-22:19:11.027616 7f51ba7fc6c0 Delete type=2 #14 +2026/06/08-22:19:11.027682 7f51ba7fc6c0 Delete type=2 #19 +2026/06/08-22:19:11.040159 7f51ba7fc6c0 Manual compaction at level-0 from '!tables.results!zu1umyi8Rap9kjGg' @ 660 : 0 .. '!tables.results!zsVzjhOcmPM5BpOa' @ 0 : 0; will stop at (end) diff --git a/packs-system/names/LOG.old b/packs-system/names/LOG.old index 61ae15c..991810d 100644 --- a/packs-system/names/LOG.old +++ b/packs-system/names/LOG.old @@ -1,15 +1,4 @@ -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) +2026/06/08-22:14:53.429821 7f5208bff6c0 Log #12: 0 ops saved to Table #15 OK +2026/06/08-22:14:53.429856 7f5208bff6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/names/000012.log: OK +2026/06/08-22:14:53.429946 7f5208bff6c0 Table #14: 436 entries OK +2026/06/08-22:14:53.432967 7f5208bff6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/names; recovered 1 files; 40343 bytes. Some data may have been lost. **** diff --git a/packs-system/names/MANIFEST-000016 b/packs-system/names/MANIFEST-000016 new file mode 100644 index 0000000..d583c9a Binary files /dev/null and b/packs-system/names/MANIFEST-000016 differ diff --git a/packs-system/names/MANIFEST-000080 b/packs-system/names/MANIFEST-000080 deleted file mode 100644 index 98c54aa..0000000 Binary files a/packs-system/names/MANIFEST-000080 and /dev/null differ diff --git a/packs-system/names/lost/000012.log b/packs-system/names/lost/000012.log new file mode 100644 index 0000000..e69de29 diff --git a/packs-system/resonations/000017.log b/packs-system/resonations/000017.log new file mode 100644 index 0000000..e69de29 diff --git a/packs-system/resonations/000019.ldb b/packs-system/resonations/000019.ldb new file mode 100644 index 0000000..41c1bb0 Binary files /dev/null and b/packs-system/resonations/000019.ldb differ diff --git a/packs-system/resonations/000034.ldb b/packs-system/resonations/000034.ldb deleted file mode 100644 index 22f0cc0..0000000 Binary files a/packs-system/resonations/000034.ldb and /dev/null differ diff --git a/packs-system/resonations/000082.ldb b/packs-system/resonations/000082.ldb deleted file mode 100644 index 3aa59e1..0000000 Binary files a/packs-system/resonations/000082.ldb and /dev/null differ diff --git a/packs-system/resonations/CURRENT b/packs-system/resonations/CURRENT index 741d918..42c62b6 100644 --- a/packs-system/resonations/CURRENT +++ b/packs-system/resonations/CURRENT @@ -1 +1 @@ -MANIFEST-000078 +MANIFEST-000015 diff --git a/packs-system/resonations/LOG b/packs-system/resonations/LOG index de692db..960c09c 100644 --- a/packs-system/resonations/LOG +++ b/packs-system/resonations/LOG @@ -1,15 +1,13 @@ -2026/06/04-19:59:31.255965 7f48093fc6c0 Recovering log #75 -2026/06/04-19:59:31.266393 7f48093fc6c0 Delete type=3 #73 -2026/06/04-19:59:31.266452 7f48093fc6c0 Delete type=0 #75 -2026/06/04-20:00:50.024423 7f4808bfb6c0 Level-0 table #81: started -2026/06/04-20:00:50.028206 7f4808bfb6c0 Level-0 table #81: 7108 bytes OK -2026/06/04-20:00:50.034820 7f4808bfb6c0 Delete type=0 #79 -2026/06/04-20:00:50.066089 7f4808bfb6c0 Manual compaction at level-0 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) -2026/06/04-20:00:50.066131 7f4808bfb6c0 Manual compaction at level-1 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 322 : 1 -2026/06/04-20:00:50.066135 7f4808bfb6c0 Compacting 1@1 + 1@2 files -2026/06/04-20:00:50.069225 7f4808bfb6c0 Generated table #82@1: 1 keys, 911 bytes -2026/06/04-20:00:50.069242 7f4808bfb6c0 Compacted 1@1 + 1@2 files => 911 bytes -2026/06/04-20:00:50.075815 7f4808bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ] -2026/06/04-20:00:50.076200 7f4808bfb6c0 Delete type=2 #77 -2026/06/04-20:00:50.076357 7f4808bfb6c0 Delete type=2 #81 -2026/06/04-20:00:50.096339 7f4808bfb6c0 Manual compaction at level-1 from '!items!null' @ 322 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/06/08-22:14:53.363783 7f51bbfff6c0 Delete type=3 #1 +2026/06/08-22:19:10.921385 7f51ba7fc6c0 Level-0 table #18: started +2026/06/08-22:19:10.924862 7f51ba7fc6c0 Level-0 table #18: 7117 bytes OK +2026/06/08-22:19:10.931063 7f51ba7fc6c0 Delete type=0 #16 +2026/06/08-22:19:10.958364 7f51ba7fc6c0 Manual compaction at level-0 from '!items!mgne-res-accelerate' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 21 : 1 +2026/06/08-22:19:10.958368 7f51ba7fc6c0 Compacting 3@0 + 0@1 files +2026/06/08-22:19:10.961342 7f51ba7fc6c0 Generated table #19@0: 21 keys, 6260 bytes +2026/06/08-22:19:10.961359 7f51ba7fc6c0 Compacted 3@0 + 0@1 files => 6260 bytes +2026/06/08-22:19:10.967342 7f51ba7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/06/08-22:19:10.967422 7f51ba7fc6c0 Delete type=2 #5 +2026/06/08-22:19:10.967460 7f51ba7fc6c0 Delete type=2 #13 +2026/06/08-22:19:10.967485 7f51ba7fc6c0 Delete type=2 #18 +2026/06/08-22:19:10.986005 7f51ba7fc6c0 Manual compaction at level-0 from '!items!null' @ 21 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs-system/resonations/LOG.old b/packs-system/resonations/LOG.old index f0b5440..ab6bd49 100644 --- a/packs-system/resonations/LOG.old +++ b/packs-system/resonations/LOG.old @@ -1,15 +1,5 @@ -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) +2026/06/08-22:14:53.349042 7f51bbfff6c0 Log #12: 0 ops saved to Table #14 OK +2026/06/08-22:14:53.349146 7f51bbfff6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/resonations/000012.log: OK +2026/06/08-22:14:53.349200 7f51bbfff6c0 Table #5: 20 entries OK +2026/06/08-22:14:53.349226 7f51bbfff6c0 Table #13: 20 entries OK +2026/06/08-22:14:53.352182 7f51bbfff6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/resonations; recovered 2 files; 13154 bytes. Some data may have been lost. **** diff --git a/packs-system/resonations/MANIFEST-000015 b/packs-system/resonations/MANIFEST-000015 new file mode 100644 index 0000000..2d7a69b Binary files /dev/null and b/packs-system/resonations/MANIFEST-000015 differ diff --git a/packs-system/resonations/MANIFEST-000078 b/packs-system/resonations/MANIFEST-000078 deleted file mode 100644 index c88a040..0000000 Binary files a/packs-system/resonations/MANIFEST-000078 and /dev/null differ diff --git a/packs-system/resonations/lost/000012.log b/packs-system/resonations/lost/000012.log new file mode 100644 index 0000000..e69de29 diff --git a/packs-system/scenes/000005.ldb b/packs-system/scenes/000005.ldb deleted file mode 100644 index 41c249d..0000000 Binary files a/packs-system/scenes/000005.ldb and /dev/null differ diff --git a/packs-system/scenes/000067.log b/packs-system/scenes/000067.log new file mode 100644 index 0000000..e69de29 diff --git a/packs-system/scenes/000069.ldb b/packs-system/scenes/000069.ldb new file mode 100644 index 0000000..d03584e Binary files /dev/null and b/packs-system/scenes/000069.ldb differ diff --git a/packs-system/scenes/CURRENT b/packs-system/scenes/CURRENT index 23b73d9..625c880 100644 --- a/packs-system/scenes/CURRENT +++ b/packs-system/scenes/CURRENT @@ -1 +1 @@ -MANIFEST-000014 +MANIFEST-000065 diff --git a/packs-system/scenes/LOG b/packs-system/scenes/LOG index b36d0e5..ecc2d37 100644 --- a/packs-system/scenes/LOG +++ b/packs-system/scenes/LOG @@ -1,8 +1,15 @@ -2026/06/04-19:59:31.337020 7f480a3fe6c0 Recovering log #12 -2026/06/04-19:59:31.346261 7f480a3fe6c0 Delete type=3 #10 -2026/06/04-19:59:31.346300 7f480a3fe6c0 Delete type=0 #12 -2026/06/04-20:00:50.126988 7f4808bfb6c0 Level-0 table #17: started -2026/06/04-20:00:50.127020 7f4808bfb6c0 Level-0 table #17: 0 bytes OK -2026/06/04-20:00:50.133026 7f4808bfb6c0 Delete type=0 #15 -2026/06/04-20:00:50.133229 7f4808bfb6c0 Manual compaction at level-0 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end) -2026/06/04-20:00:50.133257 7f4808bfb6c0 Manual compaction at level-1 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end) +2026/06/08-22:14:53.456377 7f5208bff6c0 Recovering log #63 +2026/06/08-22:14:53.466701 7f5208bff6c0 Delete type=3 #61 +2026/06/08-22:14:53.466728 7f5208bff6c0 Delete type=0 #63 +2026/06/08-22:19:11.007802 7f51ba7fc6c0 Level-0 table #68: started +2026/06/08-22:19:11.011119 7f51ba7fc6c0 Level-0 table #68: 3062 bytes OK +2026/06/08-22:19:11.017527 7f51ba7fc6c0 Delete type=0 #66 +2026/06/08-22:19:11.034073 7f51ba7fc6c0 Manual compaction at level-0 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end) +2026/06/08-22:19:11.040181 7f51ba7fc6c0 Manual compaction at level-1 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 5 : 1 +2026/06/08-22:19:11.040185 7f51ba7fc6c0 Compacting 1@1 + 1@2 files +2026/06/08-22:19:11.043830 7f51ba7fc6c0 Generated table #69@1: 2 keys, 1600 bytes +2026/06/08-22:19:11.043850 7f51ba7fc6c0 Compacted 1@1 + 1@2 files => 1600 bytes +2026/06/08-22:19:11.050713 7f51ba7fc6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/06/08-22:19:11.050812 7f51ba7fc6c0 Delete type=2 #5 +2026/06/08-22:19:11.050908 7f51ba7fc6c0 Delete type=2 #68 +2026/06/08-22:19:11.066169 7f51ba7fc6c0 Manual compaction at level-1 from '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 5 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end) diff --git a/packs-system/scenes/LOG.old b/packs-system/scenes/LOG.old index 46ef740..d0ec7e4 100644 --- a/packs-system/scenes/LOG.old +++ b/packs-system/scenes/LOG.old @@ -1,8 +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) +2026/06/08-22:12:19.424205 7f51bb7fe6c0 Recovering log #59 +2026/06/08-22:12:19.435666 7f51bb7fe6c0 Delete type=3 #57 +2026/06/08-22:12:19.435692 7f51bb7fe6c0 Delete type=0 #59 +2026/06/08-22:14:44.678825 7f51ba7fc6c0 Level-0 table #64: started +2026/06/08-22:14:44.678844 7f51ba7fc6c0 Level-0 table #64: 0 bytes OK +2026/06/08-22:14:44.684759 7f51ba7fc6c0 Delete type=0 #62 +2026/06/08-22:14:44.700835 7f51ba7fc6c0 Manual compaction at level-0 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end) +2026/06/08-22:14:44.700850 7f51ba7fc6c0 Manual compaction at level-1 from '!scenes!D6yaY8sk0WN8mCr5' @ 72057594037927935 : 1 .. '!scenes.levels!D6yaY8sk0WN8mCr5.defaultLevel0000' @ 0 : 0; will stop at (end) diff --git a/packs-system/scenes/MANIFEST-000014 b/packs-system/scenes/MANIFEST-000014 deleted file mode 100644 index 00b760c..0000000 Binary files a/packs-system/scenes/MANIFEST-000014 and /dev/null differ diff --git a/packs-system/scenes/MANIFEST-000065 b/packs-system/scenes/MANIFEST-000065 new file mode 100644 index 0000000..329658c Binary files /dev/null and b/packs-system/scenes/MANIFEST-000065 differ diff --git a/packs-system/weapons/000019.log b/packs-system/weapons/000019.log new file mode 100644 index 0000000..e69de29 diff --git a/packs-system/weapons/000021.ldb b/packs-system/weapons/000021.ldb new file mode 100644 index 0000000..577cabc Binary files /dev/null and b/packs-system/weapons/000021.ldb differ diff --git a/packs-system/weapons/000034.ldb b/packs-system/weapons/000034.ldb deleted file mode 100644 index 26e98d3..0000000 Binary files a/packs-system/weapons/000034.ldb and /dev/null differ diff --git a/packs-system/weapons/000082.ldb b/packs-system/weapons/000082.ldb deleted file mode 100644 index ba3c285..0000000 Binary files a/packs-system/weapons/000082.ldb and /dev/null differ diff --git a/packs-system/weapons/CURRENT b/packs-system/weapons/CURRENT index 741d918..056df57 100644 --- a/packs-system/weapons/CURRENT +++ b/packs-system/weapons/CURRENT @@ -1 +1 @@ -MANIFEST-000078 +MANIFEST-000017 diff --git a/packs-system/weapons/LOG b/packs-system/weapons/LOG index a623252..808d5d6 100644 --- a/packs-system/weapons/LOG +++ b/packs-system/weapons/LOG @@ -1,15 +1,13 @@ -2026/06/04-19:59:31.291257 7f480abff6c0 Recovering log #75 -2026/06/04-19:59:31.301289 7f480abff6c0 Delete type=3 #73 -2026/06/04-19:59:31.301323 7f480abff6c0 Delete type=0 #75 -2026/06/04-20:00:50.034965 7f4808bfb6c0 Level-0 table #81: started -2026/06/04-20:00:50.038649 7f4808bfb6c0 Level-0 table #81: 1966 bytes OK -2026/06/04-20:00:50.045673 7f4808bfb6c0 Delete type=0 #79 -2026/06/04-20:00:50.066100 7f4808bfb6c0 Manual compaction at level-0 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) -2026/06/04-20:00:50.086146 7f4808bfb6c0 Manual compaction at level-1 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 194 : 1 -2026/06/04-20:00:50.086154 7f4808bfb6c0 Compacting 1@1 + 1@2 files -2026/06/04-20:00:50.089546 7f4808bfb6c0 Generated table #82@1: 1 keys, 626 bytes -2026/06/04-20:00:50.089562 7f4808bfb6c0 Compacted 1@1 + 1@2 files => 626 bytes -2026/06/04-20:00:50.096082 7f4808bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ] -2026/06/04-20:00:50.096151 7f4808bfb6c0 Delete type=2 #77 -2026/06/04-20:00:50.096257 7f4808bfb6c0 Delete type=2 #81 -2026/06/04-20:00:50.096468 7f4808bfb6c0 Manual compaction at level-1 from '!items!null' @ 194 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/06/08-22:14:53.412970 7f51bb7fe6c0 Delete type=3 #1 +2026/06/08-22:19:10.939887 7f51ba7fc6c0 Level-0 table #20: started +2026/06/08-22:19:10.942756 7f51ba7fc6c0 Level-0 table #20: 2478 bytes OK +2026/06/08-22:19:10.949471 7f51ba7fc6c0 Delete type=0 #18 +2026/06/08-22:19:10.977266 7f51ba7fc6c0 Manual compaction at level-0 from '!items!mgne-wpn-club' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 13 : 1 +2026/06/08-22:19:10.977270 7f51ba7fc6c0 Compacting 3@0 + 0@1 files +2026/06/08-22:19:10.980140 7f51ba7fc6c0 Generated table #21@0: 13 keys, 2314 bytes +2026/06/08-22:19:10.980158 7f51ba7fc6c0 Compacted 3@0 + 0@1 files => 2314 bytes +2026/06/08-22:19:10.985838 7f51ba7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/06/08-22:19:10.985892 7f51ba7fc6c0 Delete type=2 #5 +2026/06/08-22:19:10.985947 7f51ba7fc6c0 Delete type=2 #15 +2026/06/08-22:19:10.985973 7f51ba7fc6c0 Delete type=2 #20 +2026/06/08-22:19:10.986143 7f51ba7fc6c0 Manual compaction at level-0 from '!items!null' @ 13 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs-system/weapons/LOG.old b/packs-system/weapons/LOG.old index b3aa775..5929ac0 100644 --- a/packs-system/weapons/LOG.old +++ b/packs-system/weapons/LOG.old @@ -1,15 +1,5 @@ -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) +2026/06/08-22:14:53.398241 7f51bb7fe6c0 Log #14: 0 ops saved to Table #16 OK +2026/06/08-22:14:53.398301 7f51bb7fe6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/weapons/000014.log: OK +2026/06/08-22:14:53.398328 7f51bb7fe6c0 Table #5: 12 entries OK +2026/06/08-22:14:53.398345 7f51bb7fe6c0 Table #15: 12 entries OK +2026/06/08-22:14:53.402148 7f51bb7fe6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-machine-gods-noxian-expanse/packs-system/weapons; recovered 2 files; 4577 bytes. Some data may have been lost. **** diff --git a/packs-system/weapons/MANIFEST-000017 b/packs-system/weapons/MANIFEST-000017 new file mode 100644 index 0000000..c7e3bf4 Binary files /dev/null and b/packs-system/weapons/MANIFEST-000017 differ diff --git a/packs-system/weapons/MANIFEST-000078 b/packs-system/weapons/MANIFEST-000078 deleted file mode 100644 index b5fcddf..0000000 Binary files a/packs-system/weapons/MANIFEST-000078 and /dev/null differ diff --git a/packs-system/weapons/lost/000014.log b/packs-system/weapons/lost/000014.log new file mode 100644 index 0000000..e69de29 diff --git a/packs_src/armor/Chain_Shirt.yaml b/packs_src/armor/Chain_Shirt.yaml index aa776cc..ba454f8 100644 --- a/packs_src/armor/Chain_Shirt.yaml +++ b/packs_src/armor/Chain_Shirt.yaml @@ -5,7 +5,9 @@ type: armor img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/chain-shirt.svg system: armorDie: "d6" - currentDie: "d6" - penalty: -1 - description: "Interlocked metal rings. Good protection but heavy. Agility -1 DR." + penalty: 1 + weight: "normal" + description: "Interlocked metal rings. Good protection." equipped: false + durabilityDie: "d6" + broken: false diff --git a/packs_src/armor/Clothing_Average.yaml b/packs_src/armor/Clothing_Average.yaml index 877ec33..594ed5e 100644 --- a/packs_src/armor/Clothing_Average.yaml +++ b/packs_src/armor/Clothing_Average.yaml @@ -5,7 +5,9 @@ type: armor img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/clothing-average.svg system: armorDie: "d2" - currentDie: "d2" penalty: 0 + weight: "light" description: "Basic clothing offering minimal protection." equipped: false + durabilityDie: "d6" + broken: false diff --git a/packs_src/armor/Full_Plate.yaml b/packs_src/armor/Full_Plate.yaml index beac911..730a956 100644 --- a/packs_src/armor/Full_Plate.yaml +++ b/packs_src/armor/Full_Plate.yaml @@ -5,7 +5,9 @@ type: armor img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/full-plate.svg system: armorDie: "d10" - currentDie: "d10" - penalty: -3 - description: "Complete metal encasement. Maximum protection. Agility -3 DR." + penalty: 2 + weight: "heavy" + description: "Complete metal encasement. Maximum protection." equipped: false + durabilityDie: "d8" + broken: false diff --git a/packs_src/armor/Gambeson.yaml b/packs_src/armor/Gambeson.yaml index 7f261c1..d81ffec 100644 --- a/packs_src/armor/Gambeson.yaml +++ b/packs_src/armor/Gambeson.yaml @@ -5,7 +5,9 @@ type: armor img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/gambeson.svg system: armorDie: "d2" - currentDie: "d2" penalty: 0 + weight: "normal" description: "Padded cloth armor. Light and flexible." equipped: false + durabilityDie: "d6" + broken: false diff --git a/packs_src/armor/Half_Plate.yaml b/packs_src/armor/Half_Plate.yaml index ad77839..c6a4874 100644 --- a/packs_src/armor/Half_Plate.yaml +++ b/packs_src/armor/Half_Plate.yaml @@ -5,7 +5,9 @@ type: armor img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/half-plate.svg system: armorDie: "d8" - currentDie: "d8" - penalty: -2 - description: "Heavy metal plates covering vital areas. Agility -2 DR." + penalty: 2 + weight: "heavy" + description: "Heavy metal plates covering vital areas." equipped: false + durabilityDie: "d8" + broken: false diff --git a/packs_src/armor/Helm.yaml b/packs_src/armor/Helm.yaml index 6e91bb6..790a179 100644 --- a/packs_src/armor/Helm.yaml +++ b/packs_src/armor/Helm.yaml @@ -5,7 +5,9 @@ type: armor img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/helm.svg system: armorDie: "d2" - currentDie: "d2" penalty: 0 + weight: "normal" description: "A protective head covering. Bonus armor item." equipped: false + durabilityDie: "d6" + broken: false diff --git a/packs_src/armor/Medium_Shield.yaml b/packs_src/armor/Medium_Shield.yaml index 646fa45..8eae575 100644 --- a/packs_src/armor/Medium_Shield.yaml +++ b/packs_src/armor/Medium_Shield.yaml @@ -5,7 +5,9 @@ type: shield img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/medium-shield.svg system: armorDie: "d4" - currentDie: "d4" - penalty: -1 - description: "A sturdy wooden and metal shield. Can be broken to negate all damage from one attack. Agility -1 DR." + penalty: 0 + weight: "normal" + description: "A sturdy wooden and metal shield. +1 Armor, +2 DR to Agility checks. Can be broken to reduce incoming attack damage by D8." equipped: false + durabilityDie: "d8" + broken: false diff --git a/packs_src/armor/Padded_Leather.yaml b/packs_src/armor/Padded_Leather.yaml index dccfaf3..81d4d36 100644 --- a/packs_src/armor/Padded_Leather.yaml +++ b/packs_src/armor/Padded_Leather.yaml @@ -5,7 +5,9 @@ type: armor img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/padded-leather.svg system: armorDie: "d4" - currentDie: "d4" - penalty: 0 + penalty: 1 + weight: "normal" description: "Hardened leather over padding. Moderate protection." equipped: false + durabilityDie: "d6" + broken: false diff --git a/packs_src/weapons/Club.yaml b/packs_src/weapons/Club.yaml index 5f91445..bcf8526 100644 --- a/packs_src/weapons/Club.yaml +++ b/packs_src/weapons/Club.yaml @@ -4,10 +4,14 @@ name: "Club" type: weapon img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/club.svg system: - damage: "1d4" + damage: "1d6" category: "melee" - range: "" - properties: "" - description: "A simple bludgeoning weapon. One-handed." + range: "Touch" + properties: [durant] + weight: "normal" + description: "A simple bludgeoning weapon. Wielded one-handed. Durable." equipped: false - usageDie: "d6" + quantity: 1 + usageDie: "d8" + durabilityDie: "d8" + broken: false diff --git a/packs_src/weapons/Dagger.yaml b/packs_src/weapons/Dagger.yaml index 066934a..47cf43c 100644 --- a/packs_src/weapons/Dagger.yaml +++ b/packs_src/weapons/Dagger.yaml @@ -6,8 +6,12 @@ img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/dagger.svg system: damage: "1d4" category: "melee" - range: "" - properties: "" - description: "A short blade. Can be thrown." + range: "Touch" + properties: [fling, precise, razored] + weight: "light" + description: "A short blade. Can be thrown. Precise, Razored." equipped: false + quantity: 1 usageDie: "d6" + durabilityDie: "d6" + broken: false diff --git a/packs_src/weapons/Halberd.yaml b/packs_src/weapons/Halberd.yaml index 2c0e0bd..c006e98 100644 --- a/packs_src/weapons/Halberd.yaml +++ b/packs_src/weapons/Halberd.yaml @@ -6,8 +6,12 @@ img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/halberd.svg system: damage: "1d10" category: "melee" - range: "" - properties: "" - description: "A polearm with axe and spike. Two-handed. Reach." + range: "Touch" + properties: [ringing, two-handed, unwieldy] + weight: "heavy" + description: "A polearm with axe and spike. Two-handed. Ringing, Unwieldy." equipped: false + quantity: 1 usageDie: "d8" + durabilityDie: "d8" + broken: false diff --git a/packs_src/weapons/Handaxe.yaml b/packs_src/weapons/Handaxe.yaml index 4c67a07..38db3e5 100644 --- a/packs_src/weapons/Handaxe.yaml +++ b/packs_src/weapons/Handaxe.yaml @@ -6,8 +6,12 @@ img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/handaxe.svg system: damage: "1d6" category: "melee" - range: "" - properties: "" - description: "A versatile one-handed axe. Can be thrown." + range: "Touch" + properties: [durant, razored] + weight: "normal" + description: "A sturdy one-handed axe. Durable, Razored." equipped: false - usageDie: "d6" + quantity: 1 + usageDie: "d8" + durabilityDie: "d8" + broken: false diff --git a/packs_src/weapons/Heavy_Crossbow_and_Quiver.yaml b/packs_src/weapons/Heavy_Crossbow_and_Quiver.yaml index 67d7f26..ead87c7 100644 --- a/packs_src/weapons/Heavy_Crossbow_and_Quiver.yaml +++ b/packs_src/weapons/Heavy_Crossbow_and_Quiver.yaml @@ -4,10 +4,14 @@ name: "Heavy Crossbow and Quiver" type: weapon img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/heavy-crossbow.svg system: - damage: "1d8" + damage: "1d10" category: "ranged" - range: "" - properties: "" + range: "200/800" + properties: [ammo, overbearing, two-handed, unwieldy] + weight: "heavy" description: "A powerful crossbow. Comes with bolts. Ranged. Slow to reload." equipped: false + quantity: 1 usageDie: "d8" + durabilityDie: "d6" + broken: false diff --git a/packs_src/weapons/Longsword.yaml b/packs_src/weapons/Longsword.yaml index 3965c2d..7c150ed 100644 --- a/packs_src/weapons/Longsword.yaml +++ b/packs_src/weapons/Longsword.yaml @@ -6,8 +6,12 @@ img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/longsword.svg system: damage: "1d8" category: "melee" - range: "" - properties: "" - description: "A versatile fighting blade. One or two-handed." + range: "Touch" + properties: [fragile, versatile] + weight: "normal" + description: "A versatile fighting blade. One or two-handed. Fragile." equipped: false + quantity: 1 usageDie: "d8" + durabilityDie: "d4" + broken: false diff --git a/packs_src/weapons/Maul.yaml b/packs_src/weapons/Maul.yaml index 2f3580c..915c43d 100644 --- a/packs_src/weapons/Maul.yaml +++ b/packs_src/weapons/Maul.yaml @@ -4,10 +4,14 @@ name: "Maul" type: weapon img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/maul.svg system: - damage: "1d10" + damage: "1d12" category: "melee" - range: "" - properties: "" + range: "Touch" + properties: [two-handed] + weight: "heavy" description: "A massive two-handed bludgeon. Two-handed." equipped: false + quantity: 1 usageDie: "d8" + durabilityDie: "d6" + broken: false diff --git a/packs_src/weapons/Quarterstaff.yaml b/packs_src/weapons/Quarterstaff.yaml index 1a628e7..4ce2303 100644 --- a/packs_src/weapons/Quarterstaff.yaml +++ b/packs_src/weapons/Quarterstaff.yaml @@ -4,10 +4,14 @@ name: "Quarterstaff" type: weapon img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/quarterstaff.svg system: - damage: "1d4" + damage: "1d6" category: "melee" - range: "" - properties: "" - description: "A long wooden staff. Two-handed." + range: "Touch" + properties: [durant, parrying, precise, two-handed] + weight: "normal" + description: "A long wooden staff. Two-handed. Durable, Parrying, Precise." equipped: false + quantity: 1 usageDie: "d8" + durabilityDie: "d8" + broken: false diff --git a/packs_src/weapons/Rapier.yaml b/packs_src/weapons/Rapier.yaml index 138aad4..656dd2d 100644 --- a/packs_src/weapons/Rapier.yaml +++ b/packs_src/weapons/Rapier.yaml @@ -4,10 +4,14 @@ name: "Rapier" type: weapon img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/rapier.svg system: - damage: "1d6" + damage: "1d8" category: "melee" - range: "" - properties: "" - description: "A swift and precise thrusting sword." + range: "Touch" + properties: [fragile, precise] + weight: "normal" + description: "A swift and precise thrusting sword. Fragile." equipped: false + quantity: 1 usageDie: "d8" + durabilityDie: "d4" + broken: false diff --git a/packs_src/weapons/Shortbow_and_Quiver.yaml b/packs_src/weapons/Shortbow_and_Quiver.yaml index cb124c3..1cd76cb 100644 --- a/packs_src/weapons/Shortbow_and_Quiver.yaml +++ b/packs_src/weapons/Shortbow_and_Quiver.yaml @@ -6,8 +6,12 @@ img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/shortbow.svg system: damage: "1d6" category: "ranged" - range: "" - properties: "" - description: "A light bow. Comes with a quiver of arrows. Ranged." + range: "100/400" + properties: [ammo, glinting, precise, razored, two-handed] + weight: "normal" + description: "A light bow. Comes with a quiver of arrows. Ranged. Precise, Razored, Glinting." equipped: false + quantity: 1 usageDie: "d8" + durabilityDie: "d6" + broken: false diff --git a/packs_src/weapons/Spear.yaml b/packs_src/weapons/Spear.yaml index bd7f9e8..fd2aeee 100644 --- a/packs_src/weapons/Spear.yaml +++ b/packs_src/weapons/Spear.yaml @@ -4,10 +4,14 @@ name: "Spear" type: weapon img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/spear.svg system: - damage: "1d6" + damage: "1d8" category: "melee" - range: "" - properties: "" - description: "A thrusting polearm. Can be thrown. One or two-handed." + range: "Touch" + properties: [precise, two-handed] + weight: "normal" + description: "A thrusting polearm. Two-handed. Precise." equipped: false + quantity: 1 usageDie: "d8" + durabilityDie: "d6" + broken: false diff --git a/packs_src/weapons/Whip.yaml b/packs_src/weapons/Whip.yaml index 79b9214..28bc94f 100644 --- a/packs_src/weapons/Whip.yaml +++ b/packs_src/weapons/Whip.yaml @@ -6,8 +6,12 @@ img: systems/fvtt-machine-gods-noxian-expanse/assets/icons/whip.svg system: damage: "1d4" category: "melee" - range: "" - properties: "" - description: "A flexible lash with reach." + range: "Touch" + properties: [finesse, binding] + weight: "normal" + description: "A flexible lash with reach. Finesse." equipped: false + quantity: 1 usageDie: "d8" + durabilityDie: "d6" + broken: false diff --git a/templates/chat-message.hbs b/templates/chat-message.hbs index a65d97d..3019fae 100644 --- a/templates/chat-message.hbs +++ b/templates/chat-message.hbs @@ -1,34 +1,48 @@
    + {{#if showApplyButton}}data-damage-total="{{damageTotal}}" data-damage-critical="{{damageCritical}}"{{/if}} + {{#if damageTargetActorId}}data-target-actor-id="{{damageTargetActorId}}"{{/if}}>
    {{#if actorImg}}{{actorName}}{{/if}} -
    +

    {{label}}

    -

    {{actorName}}

    + {{actorName}}
    + {{#if modeLabel}}{{modeLabel}}{{/if}}
    - {{#if subtitle}}

    {{subtitle}}

    {{/if}} - {{#if formula}}

    {{formula}}

    {{/if}} + {{#if subtitle}}

    {{subtitle}}

    {{/if}} + {{#if formula}} +
    + {{localize "MGNE.Chat.Formula"}} + {{formula}} +
    + {{/if}} {{#if outcome}}
    + {{{outcomeIcon}}} {{outcome}} {{total}} {{#if diceTooltip}}{{/if}}
    {{else if total}}
    - {{total}} + {{localize "MGNE.Chat.Result"}} + {{total}} {{#if diceTooltip}}{{/if}}
    {{/if}} {{#if diceTooltip}} {{/if}} - {{#if specialText}}

    {{specialText}}

    {{/if}} - {{#if omenNeutralizeReminder}}

    💡 {{omenNeutralizeReminder}}

    {{/if}} - {{#if omenRerollReminder}}

    💡 {{omenRerollReminder}}

    {{/if}} - {{#if omenMaximized}}

    ★ {{localize "MGNE.Roll.OmenMaximizedDamage"}}

    {{/if}} + {{#if specialText}} +
    + {{{specialIcon}}} + {{specialText}} +
    + {{/if}} + {{#if omenNeutralizeReminder}}

    {{omenNeutralizeReminder}}

    {{/if}} + {{#if omenRerollReminder}}

    {{omenRerollReminder}}

    {{/if}} + {{#if omenMaximized}}

    {{localize "MGNE.Roll.OmenMaximizedDamage"}}

    {{/if}} {{#if showOmenRerollButton}}