diff --git a/css/fvtt-lethal-fantasy.css b/css/fvtt-lethal-fantasy.css index 718af03..b8d2145 100644 --- a/css/fvtt-lethal-fantasy.css +++ b/css/fvtt-lethal-fantasy.css @@ -2218,6 +2218,54 @@ i.lethalfantasy { border-color: var(--color-dark-6); color: var(--color-dark-2); } +.application.dialog.lethalfantasy .apply-damage-dialog .dialog-content { + padding: 6px; + font-size: calc(var(--font-size-standard) * 1); +} +.application.dialog.lethalfantasy .apply-damage-dialog .dialog-content .header { + text-align: center; + padding: 4px; + margin-bottom: 6px; + background-color: rgba(0, 0, 0, 0.1); + border-radius: 3px; +} +.application.dialog.lethalfantasy .apply-damage-dialog .dialog-content .damage-summary { + display: flex; + justify-content: space-between; + align-items: center; + padding: 4px 6px; + margin-bottom: 6px; + background-color: rgba(139, 0, 0, 0.1); + border-radius: 3px; +} +.application.dialog.lethalfantasy .apply-damage-dialog .dialog-content .damage-summary .damage-value { + color: var(--color-level-error); + font-size: calc(var(--font-size-standard) * 1.2); + font-weight: bold; +} +.application.dialog.lethalfantasy .apply-damage-dialog .dialog-content .dr-summary { + display: flex; + justify-content: space-around; + gap: 4px; + padding: 3px; + margin-bottom: 6px; + font-size: calc(var(--font-size-standard) * 0.85); + background-color: rgba(0, 0, 0, 0.05); + border-radius: 3px; +} +.application.dialog.lethalfantasy .apply-damage-dialog .dialog-content .damage-options .option-line { + display: flex; + justify-content: space-between; + align-items: center; + padding: 3px 6px; + margin: 2px 0; + background-color: rgba(0, 0, 0, 0.05); + border-radius: 3px; +} +.application.dialog.lethalfantasy .apply-damage-dialog .dialog-content .damage-options .option-line strong { + color: var(--color-dark-1); + font-size: calc(var(--font-size-standard) * 1.05); +} .lethalfantasy-roll-dialog fieldset { padding: 4px; } @@ -2261,9 +2309,16 @@ i.lethalfantasy { min-width: 5rem; max-width: 5em; } +.dialog-form .form-footer { + padding: 4px; + gap: 4px; +} .dialog-form .form-footer button { - min-width: 14rem; - min-height: 3.2rem; + min-width: 8rem; + min-height: 2rem; + padding: 2px 6px; + margin: 0; + font-size: calc(var(--font-size-standard) * 0.9); } .dialog-modifier { display: flex; @@ -2356,6 +2411,62 @@ i.lethalfantasy { font-size: calc(var(--font-size-standard) * 1); text-shadow: 0 0 10px var(--color-shadow-primary); } +.dice-roll .damage-result { + width: 100%; + padding: 8px; +} +.dice-roll .damage-result ul { + padding: 0; + margin: 0; +} +.dice-roll .damage-result .li-apply-wounds { + list-style: none; + margin-top: 10px; + padding: 0; + display: none; +} +.dice-roll .damage-result .li-apply-wounds > div:first-child { + font-weight: bold; + margin-bottom: 8px; + font-size: calc(var(--font-size-standard) * 0.95); + text-align: center; +} +.dice-roll .damage-result .li-apply-wounds .combatants-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 6px; + margin-top: 5px; + padding: 8px; + background-color: rgba(0, 0, 0, 0.1); + border-radius: 5px; +} +.dice-roll .damage-result .li-apply-wounds .combatants-grid .apply-wounds-btn { + padding: 6px 10px; + background: linear-gradient(to bottom, #5a5850 0%, #4b4a44 100%); + border: 1px solid #2b2a24; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); + color: #f0f0e0; + cursor: pointer; + border-radius: 4px; + font-size: calc(var(--font-size-standard) * 0.85); + font-weight: 500; + text-align: center; + transition: all 0.2s ease; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} +.dice-roll .damage-result .li-apply-wounds .combatants-grid .apply-wounds-btn:hover { + background: linear-gradient(to bottom, #6a6860 0%, #5a5850 100%); + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4); + transform: translateY(-1px); + border-color: #3b3a34; +} +.dice-roll .damage-result .li-apply-wounds .combatants-grid .apply-wounds-btn:active { + transform: translateY(0); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); +} #token-hud .hp-loss-wrap { position: absolute; left: 75px; diff --git a/lang/en.json b/lang/en.json index 6adf180..6b92bf7 100644 --- a/lang/en.json +++ b/lang/en.json @@ -282,6 +282,7 @@ }, "Label": { "agility": "Dexterity", + "applyDamage": "Apply damage to:", "gotoToken": "Go to token", "combatAction": "Combat action", "currentAction": "Current ongoing action", @@ -421,7 +422,9 @@ "monster-damage": "Monster damage", "monster-defense": "Monster defense", "weapons": "Weapons", - "wis": "WIS" + "wis": "WIS", + "weapon-damage-medium": "Weapon damage medium", + "weapon-damage-small": "Weapon damage small" }, "Miracle": { "FIELDS": { @@ -856,6 +859,20 @@ "melee": "Melee", "ranged": "Ranged" } + }, + "Dialog": { + "applyDamageTo": "Apply damage to", + "weapon": "Weapon", + "totalDamage": "Total Damage", + "damageReduction": "Damage Reduction", + "armorDR": "Armor DR", + "shieldDR": "Shield DR", + "totalDR": "Total DR", + "selectOption": "Select damage application option", + "noDR": "No DR", + "withArmor": "With Armor DR only", + "withAll": "With Armor + Shield DR", + "damage": "damage" } }, "TYPES": { diff --git a/lethal-fantasy.mjs b/lethal-fantasy.mjs index 5fd69b9..7f25888 100644 --- a/lethal-fantasy.mjs +++ b/lethal-fantasy.mjs @@ -152,6 +152,39 @@ Hooks.on(hookName, (message, html, data) => { }) } } + + // Gestion du survol et du clic sur les boutons de dégâts pour les GMs + if (game.user.isGM) { + // Show damage buttons only for GM + $(html).find(".li-apply-wounds").each((i, btn) => { + btn.style.display = "block" + }) + + $(html).find(".apply-wounds-btn").hover( + function (event) { + // Mouse enter - select the token and pan to it + let combatantId = $(this).data("combatant-id") + if (combatantId && game.combat) { + let combatant = game.combat.combatants.get(combatantId) + if (combatant?.token) { + let token = canvas.tokens.get(combatant.token.id) + if (token) { + token.control({ releaseOthers: true }) + canvas.animatePan(token.center) + } + } + } + }, + function (event) { + // Mouse leave - release selection + canvas.tokens.releaseAll() + } + ) + + $(html).find(".apply-wounds-btn").click((event) => { + LethalFantasyUtils.applyDamage(message, event) + }) + } }) Hooks.on("getCombatTrackerEntryContext", (html, options) => { diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 54f3deb..688f3cf 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -65,7 +65,7 @@ export default class LethalFantasyActor extends Actor { } } } - goodSkill.weaponSkillModifier = maxValue * multiplier + goodSkill.weaponSkillModifier = Math.ceil(maxValue * multiplier) return goodSkill } @@ -119,6 +119,27 @@ export default class LethalFantasyActor extends Actor { return defenseValue } + /* *************************************************/ + fuzzyNameSearchWeaponSkills(weaponName, weaponClass=null) { + // Get all weapon skills without the " skill" suffix + let skills = this.items.filter((i) => i.type === "skill" && i.system.weaponClass === weaponClass && i.system.category === "weapon") + // Remove parenthesis in the weapon name for better matching + weaponName = weaponName.replace(/\(.*?\)/g, "").trim() + // Now search if we find all the words of the weapon name in the skill name + skills = skills.filter((s) => { + let skillName = s.name.toLowerCase().replace(" skill", "").trim() + let wName = weaponName.toLowerCase().trim() + let wWords = wName.split(" ") + for (let w of wWords) { + if (!skillName.includes(w)) { + return false + } + } + return true + }) + return skills + } + /* *************************************************/ async prepareRoll(rollType, rollKey, rollDice) { console.log("Preparing roll", rollType, rollKey, rollDice) @@ -179,19 +200,19 @@ export default class LethalFantasyActor extends Actor { case "weapon-defense": { let weapon = this.items.find((i) => i.type === "weapon" && i.id === rollKey) let skill - let skills = this.items.filter((i) => i.type === "skill" && i.name.toLowerCase() === weapon.name.toLowerCase()) + let skills = this.items.filter((i) => i.type === "skill" && i.system.category === "weapon" && i.name.toLowerCase() === weapon.name.toLowerCase()) if (skills.length > 0) { skill = this.getBestWeaponClassSkill(skills, rollType, 1.0) } else { - skills = this.items.filter((i) => i.type === "skill" && i.name.toLowerCase().replace(" skill", "") === weapon.name.toLowerCase()) + skills = this.fuzzyNameSearchWeaponSkills(weapon.name, weapon.system.weaponClass) if (skills.length > 0) { skill = this.getBestWeaponClassSkill(skills, rollType, 1.0) } else { - skills = this.items.filter((i) => i.type === "skill" && i.system.weaponClass === weapon.system.weaponClass) + skills = this.items.filter((i) => i.type === "skill" && i.system.category === "weapon" && i.system.weaponClass === weapon.system.weaponClass) if (skills.length > 0) { skill = this.getBestWeaponClassSkill(skills, rollType, 0.5) } else { - skills = this.items.filter((i) => i.type === "skill" && i.system.weaponClass.includes(SYSTEM.WEAPON_CATEGORIES[weapon.system.weaponClass])) + skills = this.items.filter((i) => i.type === "skill" && i.system.category === "weapon" && i.system.weaponClass.includes(SYSTEM.WEAPON_CATEGORIES[weapon.system.weaponClass])) if (skills.length > 0) { skill = this.getBestWeaponClassSkill(skills, rollType, 0.25) } else { diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index d6fbf0c..b698335 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -260,14 +260,17 @@ export default class LethalFantasyRoll extends Roll { } else if (options.rollType.includes("weapon-damage")) { options.rollName = options.rollTarget.name + options.isDamage = true hasModifier = true hasChangeDice = false let damageBonus = (options.rollTarget.weapon.system.applyStrengthDamageBonus) ? options.rollTarget.combat.damageModifier : 0 options.rollTarget.value = damageBonus + options.rollTarget.weaponSkillModifier + options.rollTarget.weapon.system.bonuses.damageBonus options.rollTarget.charModifier = damageBonus if (options.rollType.includes("small")) { + options.damageSmall = true dice = options.rollTarget.weapon.system.damage.damageS } else { + options.damageMedium = true dice = options.rollTarget.weapon.system.damage.damageM } dice = dice.replace("E", "") @@ -474,6 +477,9 @@ export default class LethalFantasyRoll extends Roll { actorImage: options.actorImage, rollMode: rollContext.visibility, hasTarget: options.hasTarget, + isDamage: options.isDamage, + damageSmall: options.damageSmall, + damageMedium: options.damageMedium, pointBlank, beyondSkill, letItFly, @@ -1123,6 +1129,16 @@ export default class LethalFantasyRoll extends Roll { * Generates the data required for rendering a roll chat card. */ async _getChatCardData(isPrivate) { + // Générer la liste des combatants de la scène + let combatants = [] + if (game?.combat?.combatants && this.rollData?.isDamage) { + for (let c of game.combat.combatants) { + if (c.actorId !== this.actorId) { + combatants.push({ id: c.id, name: c.name }) + } + } + } + const cardData = { css: [SYSTEM.id, "dice-roll"], data: this.data, @@ -1146,7 +1162,8 @@ export default class LethalFantasyRoll extends Roll { D30result: this.D30result, badResult: this.badResult, rollData: this.rollData, - isPrivate: isPrivate + isPrivate: isPrivate, + combatants: combatants } cardData.cssClass = cardData.css.join(" ") cardData.tooltip = isPrivate ? "" : await this.getTooltip() diff --git a/module/utils.mjs b/module/utils.mjs index 7e41065..eb1206a 100644 --- a/module/utils.mjs +++ b/module/utils.mjs @@ -22,43 +22,43 @@ export default class LethalFantasyUtils { static setHookListeners() { Hooks.on('renderTokenHUD', async (hud, html, token) => { - const lossHPButton = await foundry.applications.handlebars.renderTemplate('systems/fvtt-lethal-fantasy/templates/loss-hp-hud.hbs', {} ) + const lossHPButton = await foundry.applications.handlebars.renderTemplate('systems/fvtt-lethal-fantasy/templates/loss-hp-hud.hbs', {}) $(html).find('div.left').append(lossHPButton); - $(html).find('img.lethal-hp-loss-hud').click((event) => { - event.preventDefault(); - let hpMenu = $(html).find('.hp-loss-wrap')[0] - if (hpMenu.classList.contains("hp-loss-hud-disabled")) { - $(html).find('.hp-loss-wrap')[0].classList.add('hp-loss-hud-active'); - $(html).find('.hp-loss-wrap')[0].classList.remove('hp-loss-hud-disabled'); - $(html).find('.hp-loss-wrap')[1].classList.add('hp-loss-hud-active'); - $(html).find('.hp-loss-wrap')[1].classList.remove('hp-loss-hud-disabled'); - $(html).find('.hp-loss-wrap')[2].classList.add('hp-loss-hud-active'); - $(html).find('.hp-loss-wrap')[2].classList.remove('hp-loss-hud-disabled'); - } else { - $(html).find('.hp-loss-wrap')[0].classList.remove('hp-loss-hud-active'); - $(html).find('.hp-loss-wrap')[0].classList.add('hp-loss-hud-disabled'); - $(html).find('.hp-loss-wrap')[1].classList.remove('hp-loss-hud-active'); - $(html).find('.hp-loss-wrap')[1].classList.add('hp-loss-hud-disabled'); - $(html).find('.hp-loss-wrap')[2].classList.remove('hp-loss-hud-active'); - $(html).find('.hp-loss-wrap')[2].classList.add('hp-loss-hud-disabled'); - } - }) - $(html).find('.loss-hp-hud-click').click((event) => { - event.preventDefault(); - let hpLoss = event.currentTarget.dataset.hpValue; - if (token) { - let tokenFull = canvas.tokens.placeables.find( t => t.id === token._id); - console.log(tokenFull, token) - let actor = tokenFull.actor; - actor.applyDamage(Number(hpLoss)); - $(html).find('.hp-loss-wrap')[0].classList.remove('hp-loss-hud-active'); - $(html).find('.hp-loss-wrap')[0].classList.add('hp-loss-hud-disabled'); - $(html).find('.hp-loss-wrap')[1].classList.remove('hp-loss-hud-active'); - $(html).find('.hp-loss-wrap')[1].classList.add('hp-loss-hud-disabled'); - $(html).find('.hp-loss-wrap')[2].classList.remove('hp-loss-hud-active'); - $(html).find('.hp-loss-wrap')[2].classList.add('hp-loss-hud-disabled'); - } - }) + $(html).find('img.lethal-hp-loss-hud').click((event) => { + event.preventDefault(); + let hpMenu = $(html).find('.hp-loss-wrap')[0] + if (hpMenu.classList.contains("hp-loss-hud-disabled")) { + $(html).find('.hp-loss-wrap')[0].classList.add('hp-loss-hud-active'); + $(html).find('.hp-loss-wrap')[0].classList.remove('hp-loss-hud-disabled'); + $(html).find('.hp-loss-wrap')[1].classList.add('hp-loss-hud-active'); + $(html).find('.hp-loss-wrap')[1].classList.remove('hp-loss-hud-disabled'); + $(html).find('.hp-loss-wrap')[2].classList.add('hp-loss-hud-active'); + $(html).find('.hp-loss-wrap')[2].classList.remove('hp-loss-hud-disabled'); + } else { + $(html).find('.hp-loss-wrap')[0].classList.remove('hp-loss-hud-active'); + $(html).find('.hp-loss-wrap')[0].classList.add('hp-loss-hud-disabled'); + $(html).find('.hp-loss-wrap')[1].classList.remove('hp-loss-hud-active'); + $(html).find('.hp-loss-wrap')[1].classList.add('hp-loss-hud-disabled'); + $(html).find('.hp-loss-wrap')[2].classList.remove('hp-loss-hud-active'); + $(html).find('.hp-loss-wrap')[2].classList.add('hp-loss-hud-disabled'); + } + }) + $(html).find('.loss-hp-hud-click').click((event) => { + event.preventDefault(); + let hpLoss = event.currentTarget.dataset.hpValue; + if (token) { + let tokenFull = canvas.tokens.placeables.find(t => t.id === token._id); + console.log(tokenFull, token) + let actor = tokenFull.actor; + actor.applyDamage(Number(hpLoss)); + $(html).find('.hp-loss-wrap')[0].classList.remove('hp-loss-hud-active'); + $(html).find('.hp-loss-wrap')[0].classList.add('hp-loss-hud-disabled'); + $(html).find('.hp-loss-wrap')[1].classList.remove('hp-loss-hud-active'); + $(html).find('.hp-loss-wrap')[1].classList.add('hp-loss-hud-disabled'); + $(html).find('.hp-loss-wrap')[2].classList.remove('hp-loss-hud-active'); + $(html).find('.hp-loss-wrap')[2].classList.add('hp-loss-hud-disabled'); + } + }) }) } @@ -246,4 +246,100 @@ export default class LethalFantasyUtils { } } + /* -------------------------------------------- */ + static async applyDamage(message, event) { + // Récupérer les données du message + let combatantId = event.currentTarget.dataset.combatantId + if (!combatantId || !game.combat) { + ui.notifications.error("No combatant selected") + return + } + + let combatant = game.combat.combatants.get(combatantId) + if (!combatant) { + ui.notifications.error("Combatant not found") + return + } + + let targetActor = combatant.token?.actor || game.actors.get(combatant.actorId) + if (!targetActor) { + ui.notifications.error("Target actor not found") + return + } + + // Récupérer les données de dégâts du message + let damageTotal = message.rolls[0]?.total || 0 + let weaponName = message.rolls[0]?.options?.rollTarget?.weapon?.name || "Unknown Weapon" + + // Calculer les DR + let armorDR = targetActor.computeDamageReduction() || 0 + let shieldDR = targetActor.getShieldDR() || 0 + let totalDR = armorDR + shieldDR + + // Créer le dialogue + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-lethal-fantasy/templates/apply-damage-dialog.hbs", + { + targetName: targetActor.name, + weaponName: weaponName, + damageTotal: damageTotal, + armorDR: armorDR, + shieldDR: shieldDR, + totalDR: totalDR, + damageNoDR: damageTotal, + damageWithArmor: Math.max(0, damageTotal - armorDR), + damageWithAll: Math.max(0, damageTotal - totalDR) + } + ) + + const result = await foundry.applications.api.DialogV2.wait({ + window: { title: "Apply Damage" }, + classes: ["lethalfantasy"], + position: { width: 280 }, + content, + buttons: [ + { + action: "noDR", + label: "No DR", + callback: () => ({ drType: "none", damage: damageTotal }) + }, + { + action: "armorDR", + label: "With Armor DR", + callback: () => ({ drType: "armor", damage: Math.max(0, damageTotal - armorDR) }) + }, + { + action: "allDR", + label: "With Armor + Shield DR", + callback: () => ({ drType: "all", damage: Math.max(0, damageTotal - totalDR) }) + }, + { + action: "cancel", + label: "Cancel", + callback: () => null + } + ], + rejectClose: false + }) + + if (result && result.damage !== undefined) { + await targetActor.applyDamage(-result.damage) + + // Message de confirmation + let drText = "" + if (result.drType === "armor") { + drText = ` (Armor DR: ${armorDR})` + } else if (result.drType === "all") { + drText = ` (Total DR: ${totalDR})` + } + + ChatMessage.create({ + user: game.user.id, + speaker: { alias: targetActor.name }, + rollMode: "gmroll", + content: `${targetActor.name} takes ${result.damage} damage${drText} from ${weaponName}` + }) + } + } + } diff --git a/packs-system/lf-equipment/000458.log b/packs-system/lf-equipment/000462.log similarity index 100% rename from packs-system/lf-equipment/000458.log rename to packs-system/lf-equipment/000462.log diff --git a/packs-system/lf-equipment/000323.ldb b/packs-system/lf-equipment/000464.ldb similarity index 97% rename from packs-system/lf-equipment/000323.ldb rename to packs-system/lf-equipment/000464.ldb index 8095960..3aa6c1d 100644 Binary files a/packs-system/lf-equipment/000323.ldb and b/packs-system/lf-equipment/000464.ldb differ diff --git a/packs-system/lf-equipment/CURRENT b/packs-system/lf-equipment/CURRENT index ce3e56b..bc93ad8 100644 --- a/packs-system/lf-equipment/CURRENT +++ b/packs-system/lf-equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000456 +MANIFEST-000460 diff --git a/packs-system/lf-equipment/LOG b/packs-system/lf-equipment/LOG index 878967b..51883e3 100644 --- a/packs-system/lf-equipment/LOG +++ b/packs-system/lf-equipment/LOG @@ -1,8 +1,15 @@ -2025/12/06-15:17:13.631288 7f19dd7fa6c0 Recovering log #454 -2025/12/06-15:17:13.737044 7f19dd7fa6c0 Delete type=3 #452 -2025/12/06-15:17:13.737119 7f19dd7fa6c0 Delete type=0 #454 -2025/12/06-16:41:02.244527 7f19dbff76c0 Level-0 table #459: started -2025/12/06-16:41:02.244570 7f19dbff76c0 Level-0 table #459: 0 bytes OK -2025/12/06-16:41:02.281825 7f19dbff76c0 Delete type=0 #457 -2025/12/06-16:41:02.281990 7f19dbff76c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) -2025/12/06-16:41:02.282024 7f19dbff76c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2025/12/14-09:09:25.826835 7f17053ff6c0 Recovering log #458 +2025/12/14-09:09:25.838032 7f17053ff6c0 Delete type=3 #456 +2025/12/14-09:09:25.838116 7f17053ff6c0 Delete type=0 #458 +2025/12/14-20:45:56.707785 7f16eeffd6c0 Level-0 table #463: started +2025/12/14-20:45:56.710879 7f16eeffd6c0 Level-0 table #463: 1677 bytes OK +2025/12/14-20:45:56.716936 7f16eeffd6c0 Delete type=0 #461 +2025/12/14-20:45:56.730287 7f16eeffd6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2025/12/14-20:45:56.730345 7f16eeffd6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at '!items!VFHTlDVKj2yNJEWi' @ 1129 : 1 +2025/12/14-20:45:56.730356 7f16eeffd6c0 Compacting 1@1 + 1@2 files +2025/12/14-20:45:56.736659 7f16eeffd6c0 Generated table #464@1: 485 keys, 217363 bytes +2025/12/14-20:45:56.736680 7f16eeffd6c0 Compacted 1@1 + 1@2 files => 217363 bytes +2025/12/14-20:45:56.742890 7f16eeffd6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2025/12/14-20:45:56.742996 7f16eeffd6c0 Delete type=2 #323 +2025/12/14-20:45:56.743249 7f16eeffd6c0 Delete type=2 #463 +2025/12/14-20:45:56.750017 7f16eeffd6c0 Manual compaction at level-1 from '!items!VFHTlDVKj2yNJEWi' @ 1129 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-equipment/LOG.old b/packs-system/lf-equipment/LOG.old index 1bf025e..878967b 100644 --- a/packs-system/lf-equipment/LOG.old +++ b/packs-system/lf-equipment/LOG.old @@ -1,8 +1,8 @@ -2025/11/07-07:57:26.850226 7f14baffd6c0 Recovering log #450 -2025/11/07-07:57:26.860132 7f14baffd6c0 Delete type=3 #448 -2025/11/07-07:57:26.860209 7f14baffd6c0 Delete type=0 #450 -2025/11/07-07:58:43.705140 7f14b8ff96c0 Level-0 table #455: started -2025/11/07-07:58:43.705171 7f14b8ff96c0 Level-0 table #455: 0 bytes OK -2025/11/07-07:58:43.711108 7f14b8ff96c0 Delete type=0 #453 -2025/11/07-07:58:43.724495 7f14b8ff96c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) -2025/11/07-07:58:43.724532 7f14b8ff96c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2025/12/06-15:17:13.631288 7f19dd7fa6c0 Recovering log #454 +2025/12/06-15:17:13.737044 7f19dd7fa6c0 Delete type=3 #452 +2025/12/06-15:17:13.737119 7f19dd7fa6c0 Delete type=0 #454 +2025/12/06-16:41:02.244527 7f19dbff76c0 Level-0 table #459: started +2025/12/06-16:41:02.244570 7f19dbff76c0 Level-0 table #459: 0 bytes OK +2025/12/06-16:41:02.281825 7f19dbff76c0 Delete type=0 #457 +2025/12/06-16:41:02.281990 7f19dbff76c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2025/12/06-16:41:02.282024 7f19dbff76c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-equipment/MANIFEST-000456 b/packs-system/lf-equipment/MANIFEST-000456 deleted file mode 100644 index 9276784..0000000 Binary files a/packs-system/lf-equipment/MANIFEST-000456 and /dev/null differ diff --git a/packs-system/lf-equipment/MANIFEST-000460 b/packs-system/lf-equipment/MANIFEST-000460 new file mode 100644 index 0000000..7b92e01 Binary files /dev/null and b/packs-system/lf-equipment/MANIFEST-000460 differ diff --git a/packs-system/lf-gifts/000458.log b/packs-system/lf-gifts/000462.log similarity index 100% rename from packs-system/lf-gifts/000458.log rename to packs-system/lf-gifts/000462.log diff --git a/packs-system/lf-gifts/CURRENT b/packs-system/lf-gifts/CURRENT index ce3e56b..bc93ad8 100644 --- a/packs-system/lf-gifts/CURRENT +++ b/packs-system/lf-gifts/CURRENT @@ -1 +1 @@ -MANIFEST-000456 +MANIFEST-000460 diff --git a/packs-system/lf-gifts/LOG b/packs-system/lf-gifts/LOG index 1ffd2ad..633e808 100644 --- a/packs-system/lf-gifts/LOG +++ b/packs-system/lf-gifts/LOG @@ -1,8 +1,8 @@ -2025/12/06-15:17:13.747297 7f19dc7f86c0 Recovering log #454 -2025/12/06-15:17:13.857630 7f19dc7f86c0 Delete type=3 #452 -2025/12/06-15:17:13.857707 7f19dc7f86c0 Delete type=0 #454 -2025/12/06-16:41:02.159042 7f19dbff76c0 Level-0 table #459: started -2025/12/06-16:41:02.159069 7f19dbff76c0 Level-0 table #459: 0 bytes OK -2025/12/06-16:41:02.201619 7f19dbff76c0 Delete type=0 #457 -2025/12/06-16:41:02.281970 7f19dbff76c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) -2025/12/06-16:41:02.282008 7f19dbff76c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2025/12/14-09:09:25.859023 7f16ef7fe6c0 Recovering log #458 +2025/12/14-09:09:25.869163 7f16ef7fe6c0 Delete type=3 #456 +2025/12/14-09:09:25.869258 7f16ef7fe6c0 Delete type=0 #458 +2025/12/14-20:45:56.717084 7f16eeffd6c0 Level-0 table #463: started +2025/12/14-20:45:56.717117 7f16eeffd6c0 Level-0 table #463: 0 bytes OK +2025/12/14-20:45:56.723011 7f16eeffd6c0 Delete type=0 #461 +2025/12/14-20:45:56.730301 7f16eeffd6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2025/12/14-20:45:56.743359 7f16eeffd6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-gifts/LOG.old b/packs-system/lf-gifts/LOG.old index d73ae86..1ffd2ad 100644 --- a/packs-system/lf-gifts/LOG.old +++ b/packs-system/lf-gifts/LOG.old @@ -1,8 +1,8 @@ -2025/11/07-07:57:26.863923 7f14b9ffb6c0 Recovering log #450 -2025/11/07-07:57:26.873909 7f14b9ffb6c0 Delete type=3 #448 -2025/11/07-07:57:26.873962 7f14b9ffb6c0 Delete type=0 #450 -2025/11/07-07:58:43.711204 7f14b8ff96c0 Level-0 table #455: started -2025/11/07-07:58:43.711230 7f14b8ff96c0 Level-0 table #455: 0 bytes OK -2025/11/07-07:58:43.718265 7f14b8ff96c0 Delete type=0 #453 -2025/11/07-07:58:43.724502 7f14b8ff96c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) -2025/11/07-07:58:43.724539 7f14b8ff96c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2025/12/06-15:17:13.747297 7f19dc7f86c0 Recovering log #454 +2025/12/06-15:17:13.857630 7f19dc7f86c0 Delete type=3 #452 +2025/12/06-15:17:13.857707 7f19dc7f86c0 Delete type=0 #454 +2025/12/06-16:41:02.159042 7f19dbff76c0 Level-0 table #459: started +2025/12/06-16:41:02.159069 7f19dbff76c0 Level-0 table #459: 0 bytes OK +2025/12/06-16:41:02.201619 7f19dbff76c0 Delete type=0 #457 +2025/12/06-16:41:02.281970 7f19dbff76c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2025/12/06-16:41:02.282008 7f19dbff76c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-gifts/MANIFEST-000456 b/packs-system/lf-gifts/MANIFEST-000460 similarity index 77% rename from packs-system/lf-gifts/MANIFEST-000456 rename to packs-system/lf-gifts/MANIFEST-000460 index ab25ad2..c0e2be4 100644 Binary files a/packs-system/lf-gifts/MANIFEST-000456 and b/packs-system/lf-gifts/MANIFEST-000460 differ diff --git a/packs-system/lf-skills/000460.log b/packs-system/lf-skills/000464.log similarity index 100% rename from packs-system/lf-skills/000460.log rename to packs-system/lf-skills/000464.log diff --git a/packs-system/lf-skills/CURRENT b/packs-system/lf-skills/CURRENT index ce16427..dd4dce9 100644 --- a/packs-system/lf-skills/CURRENT +++ b/packs-system/lf-skills/CURRENT @@ -1 +1 @@ -MANIFEST-000458 +MANIFEST-000462 diff --git a/packs-system/lf-skills/LOG b/packs-system/lf-skills/LOG index 440ac03..4b5027d 100644 --- a/packs-system/lf-skills/LOG +++ b/packs-system/lf-skills/LOG @@ -1,8 +1,8 @@ -2025/12/06-15:17:13.504137 7f19ddffb6c0 Recovering log #456 -2025/12/06-15:17:13.609897 7f19ddffb6c0 Delete type=3 #454 -2025/12/06-15:17:13.609952 7f19ddffb6c0 Delete type=0 #456 -2025/12/06-16:41:02.201733 7f19dbff76c0 Level-0 table #461: started -2025/12/06-16:41:02.201761 7f19dbff76c0 Level-0 table #461: 0 bytes OK -2025/12/06-16:41:02.244399 7f19dbff76c0 Delete type=0 #459 -2025/12/06-16:41:02.281980 7f19dbff76c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2025/12/06-16:41:02.282016 7f19dbff76c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/12/14-09:09:25.806646 7f16effff6c0 Recovering log #460 +2025/12/14-09:09:25.817606 7f16effff6c0 Delete type=3 #458 +2025/12/14-09:09:25.817666 7f16effff6c0 Delete type=0 #460 +2025/12/14-20:45:56.701142 7f16eeffd6c0 Level-0 table #465: started +2025/12/14-20:45:56.701194 7f16eeffd6c0 Level-0 table #465: 0 bytes OK +2025/12/14-20:45:56.707652 7f16eeffd6c0 Delete type=0 #463 +2025/12/14-20:45:56.730266 7f16eeffd6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/12/14-20:45:56.730327 7f16eeffd6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-skills/LOG.old b/packs-system/lf-skills/LOG.old index b725464..440ac03 100644 --- a/packs-system/lf-skills/LOG.old +++ b/packs-system/lf-skills/LOG.old @@ -1,8 +1,8 @@ -2025/11/07-07:57:26.836688 7f14b97fa6c0 Recovering log #451 -2025/11/07-07:57:26.847365 7f14b97fa6c0 Delete type=3 #449 -2025/11/07-07:57:26.847456 7f14b97fa6c0 Delete type=0 #451 -2025/11/07-07:58:43.699007 7f14b8ff96c0 Level-0 table #457: started -2025/11/07-07:58:43.699056 7f14b8ff96c0 Level-0 table #457: 0 bytes OK -2025/11/07-07:58:43.705029 7f14b8ff96c0 Delete type=0 #455 -2025/11/07-07:58:43.724484 7f14b8ff96c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2025/11/07-07:58:43.724525 7f14b8ff96c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/12/06-15:17:13.504137 7f19ddffb6c0 Recovering log #456 +2025/12/06-15:17:13.609897 7f19ddffb6c0 Delete type=3 #454 +2025/12/06-15:17:13.609952 7f19ddffb6c0 Delete type=0 #456 +2025/12/06-16:41:02.201733 7f19dbff76c0 Level-0 table #461: started +2025/12/06-16:41:02.201761 7f19dbff76c0 Level-0 table #461: 0 bytes OK +2025/12/06-16:41:02.244399 7f19dbff76c0 Delete type=0 #459 +2025/12/06-16:41:02.281980 7f19dbff76c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/12/06-16:41:02.282016 7f19dbff76c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-skills/MANIFEST-000458 b/packs-system/lf-skills/MANIFEST-000462 similarity index 71% rename from packs-system/lf-skills/MANIFEST-000458 rename to packs-system/lf-skills/MANIFEST-000462 index 6de0719..3f05c72 100644 Binary files a/packs-system/lf-skills/MANIFEST-000458 and b/packs-system/lf-skills/MANIFEST-000462 differ diff --git a/packs-system/lf-spells-miracles/000158.log b/packs-system/lf-spells-miracles/000162.log similarity index 100% rename from packs-system/lf-spells-miracles/000158.log rename to packs-system/lf-spells-miracles/000162.log diff --git a/packs-system/lf-spells-miracles/CURRENT b/packs-system/lf-spells-miracles/CURRENT index c16f179..a437bda 100644 --- a/packs-system/lf-spells-miracles/CURRENT +++ b/packs-system/lf-spells-miracles/CURRENT @@ -1 +1 @@ -MANIFEST-000156 +MANIFEST-000160 diff --git a/packs-system/lf-spells-miracles/LOG b/packs-system/lf-spells-miracles/LOG index 8690b9a..cf28379 100644 --- a/packs-system/lf-spells-miracles/LOG +++ b/packs-system/lf-spells-miracles/LOG @@ -1,8 +1,8 @@ -2025/12/06-15:17:13.990000 7f19dcff96c0 Recovering log #154 -2025/12/06-15:17:14.078163 7f19dcff96c0 Delete type=3 #152 -2025/12/06-15:17:14.078227 7f19dcff96c0 Delete type=0 #154 -2025/12/06-16:41:02.444766 7f19dbff76c0 Level-0 table #159: started -2025/12/06-16:41:02.444810 7f19dbff76c0 Level-0 table #159: 0 bytes OK -2025/12/06-16:41:02.474131 7f19dbff76c0 Delete type=0 #157 -2025/12/06-16:41:02.619626 7f19dbff76c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) -2025/12/06-16:41:02.668537 7f19dbff76c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2025/12/14-09:09:25.891410 7f17053ff6c0 Recovering log #158 +2025/12/14-09:09:25.901634 7f17053ff6c0 Delete type=3 #156 +2025/12/14-09:09:25.901690 7f17053ff6c0 Delete type=0 #158 +2025/12/14-20:45:56.743394 7f16eeffd6c0 Level-0 table #163: started +2025/12/14-20:45:56.743431 7f16eeffd6c0 Level-0 table #163: 0 bytes OK +2025/12/14-20:45:56.749813 7f16eeffd6c0 Delete type=0 #161 +2025/12/14-20:45:56.767206 7f16eeffd6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2025/12/14-20:45:56.791687 7f16eeffd6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-spells-miracles/LOG.old b/packs-system/lf-spells-miracles/LOG.old index 884b9bb..8690b9a 100644 --- a/packs-system/lf-spells-miracles/LOG.old +++ b/packs-system/lf-spells-miracles/LOG.old @@ -1,8 +1,8 @@ -2025/11/07-07:57:26.889185 7f14ba7fc6c0 Recovering log #150 -2025/11/07-07:57:26.898546 7f14ba7fc6c0 Delete type=3 #148 -2025/11/07-07:57:26.898639 7f14ba7fc6c0 Delete type=0 #150 -2025/11/07-07:58:43.718395 7f14b8ff96c0 Level-0 table #155: started -2025/11/07-07:58:43.718429 7f14b8ff96c0 Level-0 table #155: 0 bytes OK -2025/11/07-07:58:43.724414 7f14b8ff96c0 Delete type=0 #153 -2025/11/07-07:58:43.724518 7f14b8ff96c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) -2025/11/07-07:58:43.724544 7f14b8ff96c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2025/12/06-15:17:13.990000 7f19dcff96c0 Recovering log #154 +2025/12/06-15:17:14.078163 7f19dcff96c0 Delete type=3 #152 +2025/12/06-15:17:14.078227 7f19dcff96c0 Delete type=0 #154 +2025/12/06-16:41:02.444766 7f19dbff76c0 Level-0 table #159: started +2025/12/06-16:41:02.444810 7f19dbff76c0 Level-0 table #159: 0 bytes OK +2025/12/06-16:41:02.474131 7f19dbff76c0 Delete type=0 #157 +2025/12/06-16:41:02.619626 7f19dbff76c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2025/12/06-16:41:02.668537 7f19dbff76c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-spells-miracles/MANIFEST-000156 b/packs-system/lf-spells-miracles/MANIFEST-000160 similarity index 72% rename from packs-system/lf-spells-miracles/MANIFEST-000156 rename to packs-system/lf-spells-miracles/MANIFEST-000160 index e9e1cdd..5ec6a10 100644 Binary files a/packs-system/lf-spells-miracles/MANIFEST-000156 and b/packs-system/lf-spells-miracles/MANIFEST-000160 differ diff --git a/packs-system/lf-vulnerabilities/000457.log b/packs-system/lf-vulnerabilities/000461.log similarity index 100% rename from packs-system/lf-vulnerabilities/000457.log rename to packs-system/lf-vulnerabilities/000461.log diff --git a/packs-system/lf-vulnerabilities/CURRENT b/packs-system/lf-vulnerabilities/CURRENT index d52c190..896b93a 100644 --- a/packs-system/lf-vulnerabilities/CURRENT +++ b/packs-system/lf-vulnerabilities/CURRENT @@ -1 +1 @@ -MANIFEST-000455 +MANIFEST-000459 diff --git a/packs-system/lf-vulnerabilities/LOG b/packs-system/lf-vulnerabilities/LOG index 6c07c05..bafd4d9 100644 --- a/packs-system/lf-vulnerabilities/LOG +++ b/packs-system/lf-vulnerabilities/LOG @@ -1,8 +1,8 @@ -2025/12/06-15:17:13.870724 7f19ddffb6c0 Recovering log #453 -2025/12/06-15:17:13.958289 7f19ddffb6c0 Delete type=3 #451 -2025/12/06-15:17:13.958388 7f19ddffb6c0 Delete type=0 #453 -2025/12/06-16:41:02.118716 7f19dbff76c0 Level-0 table #458: started -2025/12/06-16:41:02.121944 7f19dbff76c0 Level-0 table #458: 0 bytes OK -2025/12/06-16:41:02.158936 7f19dbff76c0 Delete type=0 #456 -2025/12/06-16:41:02.281954 7f19dbff76c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2025/12/06-16:41:02.282000 7f19dbff76c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/12/14-09:09:25.874671 7f16effff6c0 Recovering log #457 +2025/12/14-09:09:25.886173 7f16effff6c0 Delete type=3 #455 +2025/12/14-09:09:25.886272 7f16effff6c0 Delete type=0 #457 +2025/12/14-20:45:56.723132 7f16eeffd6c0 Level-0 table #462: started +2025/12/14-20:45:56.723164 7f16eeffd6c0 Level-0 table #462: 0 bytes OK +2025/12/14-20:45:56.730108 7f16eeffd6c0 Delete type=0 #460 +2025/12/14-20:45:56.730316 7f16eeffd6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/12/14-20:45:56.743378 7f16eeffd6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-vulnerabilities/LOG.old b/packs-system/lf-vulnerabilities/LOG.old index ed49363..6c07c05 100644 --- a/packs-system/lf-vulnerabilities/LOG.old +++ b/packs-system/lf-vulnerabilities/LOG.old @@ -1,8 +1,8 @@ -2025/11/07-07:57:26.876181 7f14b97fa6c0 Recovering log #449 -2025/11/07-07:57:26.886933 7f14b97fa6c0 Delete type=3 #447 -2025/11/07-07:57:26.887010 7f14b97fa6c0 Delete type=0 #449 -2025/11/07-07:58:43.747501 7f14b8ff96c0 Level-0 table #454: started -2025/11/07-07:58:43.747545 7f14b8ff96c0 Level-0 table #454: 0 bytes OK -2025/11/07-07:58:43.754307 7f14b8ff96c0 Delete type=0 #452 -2025/11/07-07:58:43.772388 7f14b8ff96c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2025/11/07-07:58:43.785957 7f14b8ff96c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/12/06-15:17:13.870724 7f19ddffb6c0 Recovering log #453 +2025/12/06-15:17:13.958289 7f19ddffb6c0 Delete type=3 #451 +2025/12/06-15:17:13.958388 7f19ddffb6c0 Delete type=0 #453 +2025/12/06-16:41:02.118716 7f19dbff76c0 Level-0 table #458: started +2025/12/06-16:41:02.121944 7f19dbff76c0 Level-0 table #458: 0 bytes OK +2025/12/06-16:41:02.158936 7f19dbff76c0 Delete type=0 #456 +2025/12/06-16:41:02.281954 7f19dbff76c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/12/06-16:41:02.282000 7f19dbff76c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-vulnerabilities/MANIFEST-000455 b/packs-system/lf-vulnerabilities/MANIFEST-000459 similarity index 72% rename from packs-system/lf-vulnerabilities/MANIFEST-000455 rename to packs-system/lf-vulnerabilities/MANIFEST-000459 index 9102b52..d285989 100644 Binary files a/packs-system/lf-vulnerabilities/MANIFEST-000455 and b/packs-system/lf-vulnerabilities/MANIFEST-000459 differ diff --git a/styles/chat.less b/styles/chat.less index 7c6ce7a..f8f8fd7 100644 --- a/styles/chat.less +++ b/styles/chat.less @@ -1,33 +1,34 @@ &.fortune { - img { - border: 0px; - } - .intro-chat { - border-radius: 20px; - display: flex; - flex-direction: row; - .intro-img { - padding: 5px; - width: 80px; - align-self: center; - } - .intro-right { - display: flex; - flex-direction: column; - .introText { - font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1.2); - width: 210px; - text-align: center; - } - } - } - .button.control, .fortune-accepted { - display: flex; - justify-content: center; - align-items: center; - font-size: calc(var(--font-size-standard) * 1.3); + img { + border: 0px; + } + .intro-chat { + border-radius: 20px; + display: flex; + flex-direction: row; + .intro-img { + padding: 5px; + width: 80px; + align-self: center; + } + .intro-right { + display: flex; + flex-direction: column; + .introText { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.2); + width: 210px; + text-align: center; } + } + } + .button.control, + .fortune-accepted { + display: flex; + justify-content: center; + align-items: center; + font-size: calc(var(--font-size-standard) * 1.3); + } } &.ask-roll { @@ -37,4 +38,4 @@ justify-content: center; font-family: var(--font-secondary); font-size: calc(var(--font-size-standard) * 1.2); -} \ No newline at end of file +} diff --git a/styles/roll.less b/styles/roll.less index 650f7c3..c9317c6 100644 --- a/styles/roll.less +++ b/styles/roll.less @@ -7,6 +7,65 @@ border-color: var(--color-dark-6); color: var(--color-dark-2); } + + .apply-damage-dialog { + .dialog-content { + padding: 6px; + font-size: calc(var(--font-size-standard) * 1); + + .header { + text-align: center; + padding: 4px; + margin-bottom: 6px; + background-color: rgba(0, 0, 0, 0.1); + border-radius: 3px; + } + + .damage-summary { + display: flex; + justify-content: space-between; + align-items: center; + padding: 4px 6px; + margin-bottom: 6px; + background-color: rgba(139, 0, 0, 0.1); + border-radius: 3px; + + .damage-value { + color: var(--color-level-error); + font-size: calc(var(--font-size-standard) * 1.2); + font-weight: bold; + } + } + + .dr-summary { + display: flex; + justify-content: space-around; + gap: 4px; + padding: 3px; + margin-bottom: 6px; + font-size: calc(var(--font-size-standard) * 0.85); + background-color: rgba(0, 0, 0, 0.05); + border-radius: 3px; + } + + .damage-options { + .option-line { + display: flex; + justify-content: space-between; + align-items: center; + padding: 3px 6px; + margin: 2px 0; + background-color: rgba(0, 0, 0, 0.05); + border-radius: 3px; + + strong { + color: var(--color-dark-1); + font-size: calc(var(--font-size-standard) * 1.05); + } + } + } + } + } } .lethalfantasy-roll-dialog { @@ -59,9 +118,14 @@ .dialog-form { .form-footer { + padding: 4px; + gap: 4px; button { - min-width: 14rem; - min-height: 3.2rem; + min-width: 8rem; + min-height: 2rem; + padding: 2px 6px; + margin: 0; + font-size: calc(var(--font-size-standard) * 0.9); } } } @@ -156,4 +220,68 @@ font-size: calc(var(--font-size-standard) * 1); text-shadow: 0 0 10px var(--color-shadow-primary); } + + .damage-result { + width: 100%; + padding: 8px; + + ul { + padding: 0; + margin: 0; + } + + .li-apply-wounds { + list-style: none; + margin-top: 10px; + padding: 0; + display: none; + + > div:first-child { + font-weight: bold; + margin-bottom: 8px; + font-size: calc(var(--font-size-standard) * 0.95); + text-align: center; + } + + .combatants-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 6px; + margin-top: 5px; + padding: 8px; + background-color: rgba(0, 0, 0, 0.1); + border-radius: 5px; + + .apply-wounds-btn { + padding: 6px 10px; + background: linear-gradient(to bottom, #5a5850 0%, #4b4a44 100%); + border: 1px solid #2b2a24; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); + color: #f0f0e0; + cursor: pointer; + border-radius: 4px; + font-size: calc(var(--font-size-standard) * 0.85); + font-weight: 500; + text-align: center; + transition: all 0.2s ease; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; + + &:hover { + background: linear-gradient(to bottom, #6a6860 0%, #5a5850 100%); + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4); + transform: translateY(-1px); + border-color: #3b3a34; + } + + &:active { + transform: translateY(0); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + } + } + } + } + } } diff --git a/templates/apply-damage-dialog.hbs b/templates/apply-damage-dialog.hbs new file mode 100644 index 0000000..107f649 --- /dev/null +++ b/templates/apply-damage-dialog.hbs @@ -0,0 +1,37 @@ +