Fix hp < 0 and D30 with D20 bonus roll

This commit is contained in:
2026-06-11 20:48:46 +02:00
parent c20750caa7
commit ea7acf6bf8
29 changed files with 130 additions and 110 deletions
+12 -5
View File
@@ -570,7 +570,7 @@ Hooks.on("createChatMessage", async (message) => {
// ── D30 bonus dice (defense) — resolved before grit/luck/shield ─────── // ── D30 bonus dice (defense) — resolved before grit/luck/shield ───────
if (defenseD30message && !defenseD30Processed && isPrimaryController(defender)) { if (defenseD30message && !defenseD30Processed && isPrimaryController(defender)) {
const d30Result = await LethalFantasyUtils.processD30BonusDice(defenseD30message, "defense", null, defender) const d30Result = await LethalFantasyUtils.processD30BonusDice(defenseD30message, "defense", null, defender, true)
if (d30Result.modifier) { if (d30Result.modifier) {
defenseRoll += d30Result.modifier defenseRoll += d30Result.modifier
if (d30Result.modifier > 0) { if (d30Result.modifier > 0) {
@@ -778,11 +778,12 @@ Hooks.on("createChatMessage", async (message) => {
if (mulliganRestart) continue if (mulliganRestart) continue
// ── D30 bonus dice (attack) — resolved before grit/luck ──────────────── // ── D30 bonus dice (attack) — resolved before grit/luck ────────────────
if (attackD30message && !attackD30Processed && isPrimaryController(attacker)) { if (attackD30message && !attackD30Processed) {
const d30Result = await LethalFantasyUtils.processD30BonusDice(attackD30message, "attack", attackNaturalRoll, attacker) const canDialog = isPrimaryController(attacker)
const d30Result = await LethalFantasyUtils.processD30BonusDice(attackD30message, "attack", attackNaturalRoll, attacker, canDialog)
if (d30Result.modifier) { if (d30Result.modifier) {
attackRollFinal += d30Result.modifier attackRollFinal += d30Result.modifier
if (d30Result.modifier > 0) { if (d30Result.modifier > 0 && canDialog) {
await createReactionMessage(attacker, await createReactionMessage(attacker,
`<p><strong>${attackerName}</strong> gains <strong>+${d30Result.modifier}</strong> from D30 bonus die for attack.</p>` `<p><strong>${attackerName}</strong> gains <strong>+${d30Result.modifier}</strong> from D30 bonus die for attack.</p>`
) )
@@ -790,27 +791,33 @@ Hooks.on("createChatMessage", async (message) => {
} }
if (d30Result.specialEffect === "auto") { if (d30Result.specialEffect === "auto") {
attackRollFinal = defenseRoll + 1 // auto-hit attackRollFinal = defenseRoll + 1 // auto-hit
if (canDialog) {
await createReactionMessage(attacker, await createReactionMessage(attacker,
`<p><strong>${attackerName}</strong> uses <strong>${d30Result.specialName || "Special Strike"}</strong> from D30 — attack automatically hits!</p>` `<p><strong>${attackerName}</strong> uses <strong>${d30Result.specialName || "Special Strike"}</strong> from D30 — attack automatically hits!</p>`
) )
} }
if (d30Result.specialEffect === "flag") { }
if (d30Result.specialEffect === "flag" && canDialog) {
await createReactionMessage(attacker, await createReactionMessage(attacker,
`<p>D30 — <strong>${d30Result.specialName || "Special Effect"}</strong> triggered for ${attackerName}!</p>` `<p>D30 — <strong>${d30Result.specialName || "Special Effect"}</strong> triggered for ${attackerName}!</p>`
) )
} }
if (d30Result.specialEffect === "bleed") { if (d30Result.specialEffect === "bleed") {
d30Bleed = true d30Bleed = true
if (canDialog) {
await createReactionMessage(attacker, await createReactionMessage(attacker,
`<p>D30 — <strong>Bleeding/Internal Injury</strong> on hit! Damage past DR will cause a bleeding wound.</p>` `<p>D30 — <strong>Bleeding/Internal Injury</strong> on hit! Damage past DR will cause a bleeding wound.</p>`
) )
} }
}
if (d30Result.specialEffect === "damageMultiplier") { if (d30Result.specialEffect === "damageMultiplier") {
d30DamageMultiplier = d30Result.multiplier d30DamageMultiplier = d30Result.multiplier
if (canDialog) {
await createReactionMessage(attacker, await createReactionMessage(attacker,
`<p>D30 — <strong>x${d30Result.multiplier} damage</strong> before damage reduction!</p>` `<p>D30 — <strong>x${d30Result.multiplier} damage</strong> before damage reduction!</p>`
) )
} }
}
attackD30Processed = true attackD30Processed = true
} }
-3
View File
@@ -72,9 +72,6 @@ export default class LethalFantasyActor extends Actor {
/* *************************************************/ /* *************************************************/
async applyDamage(hpLoss) { async applyDamage(hpLoss) {
let hp = this.system.hp.value + hpLoss let hp = this.system.hp.value + hpLoss
if (hp < 0) {
hp = 0
}
this.update({ "system.hp.value": hp }) this.update({ "system.hp.value": hp })
} }
+1 -1
View File
@@ -63,7 +63,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
} }
schema.hp = new fields.SchemaField({ schema.hp = new fields.SchemaField({
value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), value: new fields.NumberField({ ...requiredInteger, initial: 1 }),
average: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), average: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
wounds: new fields.ArrayField(new fields.SchemaField(woundFieldSchema), { wounds: new fields.ArrayField(new fields.SchemaField(woundFieldSchema), {
+19 -3
View File
@@ -548,7 +548,7 @@ export default class LethalFantasyUtils {
* @param {Object} actor The actor (for dice3d display) * @param {Object} actor The actor (for dice3d display)
* @returns {Promise<{modifier: number, specialEffect: string|null, specialName: string|null}>} * @returns {Promise<{modifier: number, specialEffect: string|null, specialName: string|null}>}
*/ */
static async processD30BonusDice(d30Message, side, naturalRoll = null, actor = null) { static async processD30BonusDice(d30Message, side, naturalRoll = null, actor = null, canDialog = true) {
if (!d30Message) return { modifier: 0, specialEffect: null, specialName: null } if (!d30Message) return { modifier: 0, specialEffect: null, specialName: null }
const validTargets = side === "attack" ? ["attack", "spell_attack"] : ["defense", "spell_defense"] const validTargets = side === "attack" ? ["attack", "spell_attack"] : ["defense", "spell_defense"]
@@ -556,12 +556,26 @@ export default class LethalFantasyUtils {
// ── Simple bonus_dice type ── auto-roll if target matches // ── Simple bonus_dice type ── auto-roll if target matches
if (d30Message.type === "bonus_dice") { if (d30Message.type === "bonus_dice") {
if (!validTargets.includes(d30Message.target)) return { modifier: 0, specialEffect: null, specialName: null } if (!validTargets.includes(d30Message.target)) return { modifier: 0, specialEffect: null, specialName: null }
const modifier = await this._rollD30BonusDie(d30Message.dice, actor) const modifier = await this._rollD30BonusDie(d30Message.dice, actor, !canDialog)
return { modifier, specialEffect: null, specialName: null } return { modifier, specialEffect: null, specialName: null }
} }
// ── Choice type ── present all options to the player // ── Choice type ── present all options to the player
if (d30Message.type === "choice") { if (d30Message.type === "choice") {
// Try to find a bonus_dice option matching this side
const autoBonus = d30Message.choices.find(c => c.type === "bonus_dice" && validTargets.includes(c.target))
// If we can't show dialogs (wrong client), auto-roll bonus dice if available
if (!canDialog) {
if (autoBonus) {
const modifier = await this._rollD30BonusDie(autoBonus.dice, actor, true)
return { modifier, specialEffect: null, specialName: null }
}
// No bonus dice available on this side — just report as flag
const first = d30Message.choices[0]
return { modifier: 0, specialEffect: "flag", specialName: first?.type || "choice" }
}
const buttons = d30Message.choices.map(c => { const buttons = d30Message.choices.map(c => {
let label let label
let icon let icon
@@ -642,17 +656,19 @@ export default class LethalFantasyUtils {
* @param {Object} actor Actor for chat message speaker * @param {Object} actor Actor for chat message speaker
* @returns {Promise<number>} The roll total * @returns {Promise<number>} The roll total
*/ */
static async _rollD30BonusDie(formula, actor) { static async _rollD30BonusDie(formula, actor, silent = false) {
const cleaned = formula.replace(/NE$/i, "").replace("E", "") const cleaned = formula.replace(/NE$/i, "").replace("E", "")
const roll = new Roll(cleaned) const roll = new Roll(cleaned)
await roll.evaluate() await roll.evaluate()
if (game?.dice3d) { if (game?.dice3d) {
await game.dice3d.showForRoll(roll, game.user, true) await game.dice3d.showForRoll(roll, game.user, true)
} }
if (!silent) {
await ChatMessage.create({ await ChatMessage.create({
content: `<p>D30 bonus: rolled <strong>${cleaned.toUpperCase()}</strong> = <strong>${roll.total}</strong></p>`, content: `<p>D30 bonus: rolled <strong>${cleaned.toUpperCase()}</strong> = <strong>${roll.total}</strong></p>`,
speaker: ChatMessage.getSpeaker({ actor }) speaker: ChatMessage.getSpeaker({ actor })
}) })
}
return roll.total return roll.total
} }
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000627 MANIFEST-000631
+8 -8
View File
@@ -1,8 +1,8 @@
2026/06/10-19:56:01.455200 7f301cbff6c0 Recovering log #625 2026/06/11-20:25:36.058631 7f37427ed6c0 Recovering log #629
2026/06/10-19:56:01.464323 7f301cbff6c0 Delete type=3 #623 2026/06/11-20:25:36.068520 7f37427ed6c0 Delete type=3 #627
2026/06/10-19:56:01.464355 7f301cbff6c0 Delete type=0 #625 2026/06/11-20:25:36.068574 7f37427ed6c0 Delete type=0 #629
2026/06/10-20:16:07.843239 7f2fce7fc6c0 Level-0 table #630: started 2026/06/11-20:41:45.938413 7f3740fff6c0 Level-0 table #634: started
2026/06/10-20:16:07.843267 7f2fce7fc6c0 Level-0 table #630: 0 bytes OK 2026/06/11-20:41:45.938512 7f3740fff6c0 Level-0 table #634: 0 bytes OK
2026/06/10-20:16:07.849298 7f2fce7fc6c0 Delete type=0 #628 2026/06/11-20:41:45.945312 7f3740fff6c0 Delete type=0 #632
2026/06/10-20:16:07.849522 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.965586 7f3740fff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2026/06/10-20:16:07.849556 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.965944 7f3740fff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/25-11:43:40.059603 7f88315ff6c0 Recovering log #621 2026/06/10-19:56:01.455200 7f301cbff6c0 Recovering log #625
2026/05/25-11:43:40.071136 7f88315ff6c0 Delete type=3 #619 2026/06/10-19:56:01.464323 7f301cbff6c0 Delete type=3 #623
2026/05/25-11:43:40.071202 7f88315ff6c0 Delete type=0 #621 2026/06/10-19:56:01.464355 7f301cbff6c0 Delete type=0 #625
2026/05/25-12:29:17.727995 7f87e2ffd6c0 Level-0 table #626: started 2026/06/10-20:16:07.843239 7f2fce7fc6c0 Level-0 table #630: started
2026/05/25-12:29:17.728028 7f87e2ffd6c0 Level-0 table #626: 0 bytes OK 2026/06/10-20:16:07.843267 7f2fce7fc6c0 Level-0 table #630: 0 bytes OK
2026/05/25-12:29:17.733783 7f87e2ffd6c0 Delete type=0 #624 2026/06/10-20:16:07.849298 7f2fce7fc6c0 Delete type=0 #628
2026/05/25-12:29:17.740143 7f87e2ffd6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.849522 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2026/05/25-12:29:17.740167 7f87e2ffd6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.849556 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000624 MANIFEST-000628
+8 -8
View File
@@ -1,8 +1,8 @@
2026/06/10-19:56:01.470668 7f2fcffff6c0 Recovering log #622 2026/06/11-20:25:36.074598 7f37437ef6c0 Recovering log #626
2026/06/10-19:56:01.480292 7f2fcffff6c0 Delete type=3 #620 2026/06/11-20:25:36.084983 7f37437ef6c0 Delete type=3 #624
2026/06/10-19:56:01.480316 7f2fcffff6c0 Delete type=0 #622 2026/06/11-20:25:36.085075 7f37437ef6c0 Delete type=0 #626
2026/06/10-20:16:07.810643 7f2fce7fc6c0 Level-0 table #627: started 2026/06/11-20:41:45.965954 7f3740fff6c0 Level-0 table #631: started
2026/06/10-20:16:07.810662 7f2fce7fc6c0 Level-0 table #627: 0 bytes OK 2026/06/11-20:41:45.965991 7f3740fff6c0 Level-0 table #631: 0 bytes OK
2026/06/10-20:16:07.816355 7f2fce7fc6c0 Delete type=0 #625 2026/06/11-20:41:45.972550 7f3740fff6c0 Delete type=0 #629
2026/06/10-20:16:07.823439 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.992980 7f3740fff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
2026/06/10-20:16:07.823453 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.993323 7f3740fff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/25-11:43:40.077580 7f87e37fe6c0 Recovering log #618 2026/06/10-19:56:01.470668 7f2fcffff6c0 Recovering log #622
2026/05/25-11:43:40.087750 7f87e37fe6c0 Delete type=3 #616 2026/06/10-19:56:01.480292 7f2fcffff6c0 Delete type=3 #620
2026/05/25-11:43:40.087800 7f87e37fe6c0 Delete type=0 #618 2026/06/10-19:56:01.480316 7f2fcffff6c0 Delete type=0 #622
2026/05/25-12:29:17.758832 7f87e2ffd6c0 Level-0 table #623: started 2026/06/10-20:16:07.810643 7f2fce7fc6c0 Level-0 table #627: started
2026/05/25-12:29:17.758858 7f87e2ffd6c0 Level-0 table #623: 0 bytes OK 2026/06/10-20:16:07.810662 7f2fce7fc6c0 Level-0 table #627: 0 bytes OK
2026/05/25-12:29:17.764622 7f87e2ffd6c0 Delete type=0 #621 2026/06/10-20:16:07.816355 7f2fce7fc6c0 Delete type=0 #625
2026/05/25-12:29:17.777473 7f87e2ffd6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.823439 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
2026/05/25-12:29:17.784124 7f87e2ffd6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.823453 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000629 MANIFEST-000633
+8 -8
View File
@@ -1,8 +1,8 @@
2026/06/10-19:56:01.439055 7f2fcffff6c0 Recovering log #627 2026/06/11-20:25:36.041244 7f3742fee6c0 Recovering log #631
2026/06/10-19:56:01.451210 7f2fcffff6c0 Delete type=3 #625 2026/06/11-20:25:36.052153 7f3742fee6c0 Delete type=3 #629
2026/06/10-19:56:01.451236 7f2fcffff6c0 Delete type=0 #627 2026/06/11-20:25:36.052218 7f3742fee6c0 Delete type=0 #631
2026/06/10-20:16:07.804529 7f2fce7fc6c0 Level-0 table #632: started 2026/06/11-20:41:45.958653 7f3740fff6c0 Level-0 table #636: started
2026/06/10-20:16:07.804550 7f2fce7fc6c0 Level-0 table #632: 0 bytes OK 2026/06/11-20:41:45.958703 7f3740fff6c0 Level-0 table #636: 0 bytes OK
2026/06/10-20:16:07.810504 7f2fce7fc6c0 Delete type=0 #630 2026/06/11-20:41:45.965435 7f3740fff6c0 Delete type=0 #634
2026/06/10-20:16:07.823431 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.965798 7f3740fff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2026/06/10-20:16:07.823457 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.965918 7f3740fff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/25-11:43:40.044921 7f87e3fff6c0 Recovering log #623 2026/06/10-19:56:01.439055 7f2fcffff6c0 Recovering log #627
2026/05/25-11:43:40.054992 7f87e3fff6c0 Delete type=3 #621 2026/06/10-19:56:01.451210 7f2fcffff6c0 Delete type=3 #625
2026/05/25-11:43:40.055048 7f87e3fff6c0 Delete type=0 #623 2026/06/10-19:56:01.451236 7f2fcffff6c0 Delete type=0 #627
2026/05/25-12:29:17.710484 7f87e2ffd6c0 Level-0 table #628: started 2026/06/10-20:16:07.804529 7f2fce7fc6c0 Level-0 table #632: started
2026/05/25-12:29:17.710568 7f87e2ffd6c0 Level-0 table #628: 0 bytes OK 2026/06/10-20:16:07.804550 7f2fce7fc6c0 Level-0 table #632: 0 bytes OK
2026/05/25-12:29:17.716928 7f87e2ffd6c0 Delete type=0 #626 2026/06/10-20:16:07.810504 7f2fce7fc6c0 Delete type=0 #630
2026/05/25-12:29:17.740121 7f87e2ffd6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.823431 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2026/05/25-12:29:17.758707 7f87e2ffd6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.823457 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000324 MANIFEST-000328
+8 -8
View File
@@ -1,8 +1,8 @@
2026/06/10-19:56:01.497944 7f301cbff6c0 Recovering log #322 2026/06/11-20:25:36.103531 7f37437ef6c0 Recovering log #326
2026/06/10-19:56:01.506991 7f301cbff6c0 Delete type=3 #320 2026/06/11-20:25:36.114200 7f37437ef6c0 Delete type=3 #324
2026/06/10-19:56:01.507034 7f301cbff6c0 Delete type=0 #322 2026/06/11-20:25:36.114249 7f37437ef6c0 Delete type=0 #326
2026/06/10-20:16:07.829554 7f2fce7fc6c0 Level-0 table #327: started 2026/06/11-20:41:45.972686 7f3740fff6c0 Level-0 table #331: started
2026/06/10-20:16:07.829571 7f2fce7fc6c0 Level-0 table #327: 0 bytes OK 2026/06/11-20:41:45.972724 7f3740fff6c0 Level-0 table #331: 0 bytes OK
2026/06/10-20:16:07.836328 7f2fce7fc6c0 Delete type=0 #325 2026/06/11-20:41:45.979068 7f3740fff6c0 Delete type=0 #329
2026/06/10-20:16:07.849487 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.993007 7f3740fff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2026/06/10-20:16:07.849533 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.993301 7f3740fff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/25-11:43:40.107633 7f8830dfe6c0 Recovering log #318 2026/06/10-19:56:01.497944 7f301cbff6c0 Recovering log #322
2026/05/25-11:43:40.118039 7f8830dfe6c0 Delete type=3 #316 2026/06/10-19:56:01.506991 7f301cbff6c0 Delete type=3 #320
2026/05/25-11:43:40.118104 7f8830dfe6c0 Delete type=0 #318 2026/06/10-19:56:01.507034 7f301cbff6c0 Delete type=0 #322
2026/05/25-12:29:17.777484 7f87e2ffd6c0 Level-0 table #323: started 2026/06/10-20:16:07.829554 7f2fce7fc6c0 Level-0 table #327: started
2026/05/25-12:29:17.777511 7f87e2ffd6c0 Level-0 table #323: 0 bytes OK 2026/06/10-20:16:07.829571 7f2fce7fc6c0 Level-0 table #327: 0 bytes OK
2026/05/25-12:29:17.784021 7f87e2ffd6c0 Delete type=0 #321 2026/06/10-20:16:07.836328 7f2fce7fc6c0 Delete type=0 #325
2026/05/25-12:29:17.784188 7f87e2ffd6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.849487 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2026/05/25-12:29:17.803354 7f87e2ffd6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.849533 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000623 MANIFEST-000627
+8 -8
View File
@@ -1,8 +1,8 @@
2026/06/10-19:56:01.483620 7f2fceffd6c0 Recovering log #621 2026/06/11-20:25:36.088952 7f37427ed6c0 Recovering log #625
2026/06/10-19:56:01.493981 7f2fceffd6c0 Delete type=3 #619 2026/06/11-20:25:36.100017 7f37427ed6c0 Delete type=3 #623
2026/06/10-19:56:01.494004 7f2fceffd6c0 Delete type=0 #621 2026/06/11-20:25:36.100073 7f37427ed6c0 Delete type=0 #625
2026/06/10-20:16:07.797521 7f2fce7fc6c0 Level-0 table #626: started 2026/06/11-20:41:45.945442 7f3740fff6c0 Level-0 table #630: started
2026/06/10-20:16:07.797566 7f2fce7fc6c0 Level-0 table #626: 0 bytes OK 2026/06/11-20:41:45.945486 7f3740fff6c0 Level-0 table #630: 0 bytes OK
2026/06/10-20:16:07.804440 7f2fce7fc6c0 Delete type=0 #624 2026/06/11-20:41:45.951778 7f3740fff6c0 Delete type=0 #628
2026/06/10-20:16:07.823416 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.965603 7f3740fff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2026/06/10-20:16:07.823449 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) 2026/06/11-20:41:45.965769 7f3740fff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/25-11:43:40.093877 7f87e3fff6c0 Recovering log #617 2026/06/10-19:56:01.483620 7f2fceffd6c0 Recovering log #621
2026/05/25-11:43:40.103670 7f87e3fff6c0 Delete type=3 #615 2026/06/10-19:56:01.493981 7f2fceffd6c0 Delete type=3 #619
2026/05/25-11:43:40.103720 7f87e3fff6c0 Delete type=0 #617 2026/06/10-19:56:01.494004 7f2fceffd6c0 Delete type=0 #621
2026/05/25-12:29:17.764689 7f87e2ffd6c0 Level-0 table #622: started 2026/06/10-20:16:07.797521 7f2fce7fc6c0 Level-0 table #626: started
2026/05/25-12:29:17.764705 7f87e2ffd6c0 Level-0 table #622: 0 bytes OK 2026/06/10-20:16:07.797566 7f2fce7fc6c0 Level-0 table #626: 0 bytes OK
2026/05/25-12:29:17.770486 7f87e2ffd6c0 Delete type=0 #620 2026/06/10-20:16:07.804440 7f2fce7fc6c0 Delete type=0 #624
2026/05/25-12:29:17.784104 7f87e2ffd6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.823416 7f2fce7fc6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2026/05/25-12:29:17.784130 7f87e2ffd6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) 2026/06/10-20:16:07.823449 7f2fce7fc6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)