From 9ccb0f90f0ccd43fbf87162b0ae51f4b7f206096 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnier Date: Wed, 20 May 2026 10:53:22 +0200 Subject: [PATCH] Other fixes for damage buttons from chat --- css/fvtt-lethal-fantasy.css | 113 ++++++++++++++---- lethal-fantasy.mjs | 6 +- .../applications/sheets/character-sheet.mjs | 78 +++++++++++- module/documents/roll.mjs | 26 ++-- module/utils.mjs | 4 +- .../lf-equipment/{000605.log => 000608.log} | 0 packs-system/lf-equipment/CURRENT | 2 +- packs-system/lf-equipment/LOG | 11 +- packs-system/lf-equipment/LOG.old | 16 +-- .../{MANIFEST-000603 => MANIFEST-000607} | Bin 178 -> 160 bytes .../lf-gifts/{000602.log => 000605.log} | 0 packs-system/lf-gifts/CURRENT | 2 +- packs-system/lf-gifts/LOG | 11 +- packs-system/lf-gifts/LOG.old | 16 +-- .../{MANIFEST-000600 => MANIFEST-000604} | Bin 247 -> 229 bytes .../lf-skills/{000607.log => 000610.log} | 0 packs-system/lf-skills/CURRENT | 2 +- packs-system/lf-skills/LOG | 11 +- packs-system/lf-skills/LOG.old | 16 +-- .../{MANIFEST-000605 => MANIFEST-000609} | Bin 178 -> 160 bytes .../{000302.log => 000305.log} | 0 packs-system/lf-spells-miracles/CURRENT | 2 +- packs-system/lf-spells-miracles/LOG | 11 +- packs-system/lf-spells-miracles/LOG.old | 16 +-- .../{MANIFEST-000300 => MANIFEST-000304} | Bin 177 -> 159 bytes .../{000601.log => 000604.log} | 0 packs-system/lf-vulnerabilities/CURRENT | 2 +- packs-system/lf-vulnerabilities/LOG | 11 +- packs-system/lf-vulnerabilities/LOG.old | 16 +-- .../{MANIFEST-000599 => MANIFEST-000603} | Bin 176 -> 159 bytes styles/chat.less | 60 ++++++++-- styles/roll.less | 59 +++++++-- templates/character-spells.hbs | 19 +++ 33 files changed, 362 insertions(+), 148 deletions(-) rename packs-system/lf-equipment/{000605.log => 000608.log} (100%) rename packs-system/lf-equipment/{MANIFEST-000603 => MANIFEST-000607} (71%) rename packs-system/lf-gifts/{000602.log => 000605.log} (100%) rename packs-system/lf-gifts/{MANIFEST-000600 => MANIFEST-000604} (77%) rename packs-system/lf-skills/{000607.log => 000610.log} (100%) rename packs-system/lf-skills/{MANIFEST-000605 => MANIFEST-000609} (71%) rename packs-system/lf-spells-miracles/{000302.log => 000305.log} (100%) rename packs-system/lf-spells-miracles/{MANIFEST-000300 => MANIFEST-000304} (72%) rename packs-system/lf-vulnerabilities/{000601.log => 000604.log} (100%) rename packs-system/lf-vulnerabilities/{MANIFEST-000599 => MANIFEST-000603} (72%) diff --git a/css/fvtt-lethal-fantasy.css b/css/fvtt-lethal-fantasy.css index 939b6a3..7b6e5f7 100644 --- a/css/fvtt-lethal-fantasy.css +++ b/css/fvtt-lethal-fantasy.css @@ -2161,34 +2161,66 @@ i.lethalfantasy { color: #d4af37; } .lethalfantasy .attack-result .attack-result-damage { - display: flex; - flex-wrap: wrap; - gap: 6px; - justify-content: center; + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 8px; +} +.lethalfantasy .attack-result .attack-result-damage.single-btn { + grid-template-columns: 1fr; + max-width: 280px; + margin: 0 auto; +} +.lethalfantasy .attack-result .attack-result-damage.spell-damage { + grid-template-columns: 1fr; + width: 100%; } .lethalfantasy .attack-result .attack-result-damage .roll-damage-btn { - padding: 8px 10px; + padding: 10px 14px; background: linear-gradient(to bottom, #8b0000 0%, #660000 100%); - border: 1px solid #ff0000; + border: 1px solid #4b0000; border-radius: 6px; color: #f0e6d2; font-weight: 600; font-size: calc(var(--font-size-standard) * 0.9); + text-align: center; white-space: nowrap; cursor: pointer; transition: all 0.2s ease; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.1); + display: flex; + align-items: center; + justify-content: center; + gap: 6px; + position: relative; + overflow: hidden; +} +.lethalfantasy .attack-result .attack-result-damage .roll-damage-btn::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.15), transparent); + transition: left 0.5s; +} +.lethalfantasy .attack-result .attack-result-damage .roll-damage-btn:hover::before { + left: 100%; +} +.lethalfantasy .attack-result .attack-result-damage .roll-damage-btn i { + font-size: calc(var(--font-size-standard) * 1.1); + filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5)); + flex-shrink: 0; } .lethalfantasy .attack-result .attack-result-damage .roll-damage-btn:hover { background: linear-gradient(to bottom, #a00000 0%, #7b0000 100%); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.15); transform: translateY(-2px); + border-color: #5b0000; } .lethalfantasy .attack-result .attack-result-damage .roll-damage-btn:active { transform: translateY(0); -} -.lethalfantasy .attack-result .attack-result-damage .roll-damage-btn i { - margin-right: 6px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4), inset 0 1px 3px rgba(0, 0, 0, 0.3); } .lethalfantasy .equipment-content { font-family: var(--font-primary); @@ -3963,35 +3995,74 @@ i.lethalfantasy { } .message .attack-result .attack-result-damage, .attack-result .attack-result-damage { - display: flex; + display: grid; + grid-template-columns: repeat(2, 1fr); gap: 8px; - justify-content: center; +} +.message .attack-result .attack-result-damage.single-btn, +.attack-result .attack-result-damage.single-btn { + grid-template-columns: 1fr; + max-width: 280px; + margin: 0 auto; +} +.message .attack-result .attack-result-damage.spell-damage, +.attack-result .attack-result-damage.spell-damage { + grid-template-columns: 1fr; + width: 100%; } .message .attack-result .attack-result-damage .roll-damage-btn, .attack-result .attack-result-damage .roll-damage-btn { - padding: 10px 16px; + padding: 10px 14px; background: linear-gradient(to bottom, #8b0000 0%, #660000 100%); - border: 1px solid #ff0000; + border: 1px solid #4b0000; border-radius: 6px; color: #f0e6d2; font-weight: 600; + font-size: calc(var(--font-size-standard) * 0.9); + text-align: center; + white-space: nowrap; cursor: pointer; transition: all 0.2s ease; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.1); + display: flex; + align-items: center; + justify-content: center; + gap: 6px; + position: relative; + overflow: hidden; +} +.message .attack-result .attack-result-damage .roll-damage-btn::before, +.attack-result .attack-result-damage .roll-damage-btn::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.15), transparent); + transition: left 0.5s; +} +.message .attack-result .attack-result-damage .roll-damage-btn:hover::before, +.attack-result .attack-result-damage .roll-damage-btn:hover::before { + left: 100%; +} +.message .attack-result .attack-result-damage .roll-damage-btn i, +.attack-result .attack-result-damage .roll-damage-btn i { + font-size: calc(var(--font-size-standard) * 1.1); + filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5)); + flex-shrink: 0; } .message .attack-result .attack-result-damage .roll-damage-btn:hover, .attack-result .attack-result-damage .roll-damage-btn:hover { background: linear-gradient(to bottom, #a00000 0%, #7b0000 100%); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.15); transform: translateY(-2px); + border-color: #5b0000; } .message .attack-result .attack-result-damage .roll-damage-btn:active, .attack-result .attack-result-damage .roll-damage-btn:active { transform: translateY(0); -} -.message .attack-result .attack-result-damage .roll-damage-btn i, -.attack-result .attack-result-damage .roll-damage-btn i { - margin-right: 6px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4), inset 0 1px 3px rgba(0, 0, 0, 0.3); } #token-hud .hp-loss-wrap { position: absolute; diff --git a/lethal-fantasy.mjs b/lethal-fantasy.mjs index 8549006..be656f1 100644 --- a/lethal-fantasy.mjs +++ b/lethal-fantasy.mjs @@ -369,7 +369,7 @@ Hooks.on("renderChatMessageHTML", (message, html, data) => { action: "applyDR", label: game.i18n.localize("LETHALFANTASY.Combat.spellApplyDR"), icon: "fa-solid fa-shield", - callback: (event, button, dialog) => Number(dialog.querySelector("[name='manualDr']")?.value) || 0 + callback: (event, button) => Number(button.form?.elements?.manualDr?.value) || 0 }, { action: "cancel", @@ -393,7 +393,7 @@ Hooks.on("renderChatMessageHTML", (message, html, data) => { actorName: actor.name, actorImage: actor.img } - const roll = new LethalFantasyRoll(damageFormula, {}, rollOpts) + const roll = new documents.LethalFantasyRoll(damageFormula, {}, rollOpts) await roll.evaluate() roll.options.rollTotal = roll.total if (game?.dice3d) await game.dice3d.showForRoll(roll, game.user, true) @@ -408,7 +408,7 @@ Hooks.on("renderChatMessageHTML", (message, html, data) => { } // Pour les monstres, utiliser prepareMonsterRoll - if (isMonster || actor.type === "monster") { + if (isMonster === "true" || actor.type === "monster") { await actor.system.prepareMonsterRoll("monster-damage", weaponId, undefined, undefined, damageModifier) return } diff --git a/module/applications/sheets/character-sheet.mjs b/module/applications/sheets/character-sheet.mjs index 405f21f..aebd2e6 100644 --- a/module/applications/sheets/character-sheet.mjs +++ b/module/applications/sheets/character-sheet.mjs @@ -22,6 +22,7 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet divinityPointsMinus: LethalFantasyCharacterSheet.#onDivinityPointsMinus, aetherPointsPlus: LethalFantasyCharacterSheet.#onAetherPointsPlus, aetherPointsMinus: LethalFantasyCharacterSheet.#onAetherPointsMinus, + rollSpellDamage: LethalFantasyCharacterSheet.#onRollSpellDamage, }, } @@ -70,10 +71,10 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, } if (this.actor.system.biodata.magicUser) { - tabs.spells = { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" } + tabs.spells = { id: "spells", group: "sheet", icon: "fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" } } if (this.actor.system.biodata.clericUser) { - tabs.miracles = { id: "miracles", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-hands-praying", label: "LETHALFANTASY.Label.miracles" } + tabs.miracles = { id: "miracles", group: "sheet", icon: "fa-solid fa-hands-praying", label: "LETHALFANTASY.Label.miracles" } } for (const v of Object.values(tabs)) { v.active = this.tabGroups[v.group] === v.id @@ -219,6 +220,79 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet this.actor.update({ "system.aetherPoints.value": points }) } + /** + * Handles spell damage roll from the spell sheet tab. + * Shows a DR dialog then rolls the appropriate damage formula. + * @param {PointerEvent} event + * @param {HTMLElement} target + */ + static async #onRollSpellDamage(event, target) { + if (this.isEditMode) return + const itemId = target.dataset.itemId + const tier = target.dataset.damageTier + const spell = this.actor.items.get(itemId) + if (!spell) return + + const formulaMap = { + standard: spell.system.damageDice, + overpowered: spell.system.damageDiceOverpowered, + overpowered2: spell.system.damageDiceOverpowered2, + } + const formula = formulaMap[tier] + if (!formula) return + + const manualDR = await foundry.applications.api.DialogV2.wait({ + window: { title: game.i18n.localize("LETHALFANTASY.Combat.spellDRDialogTitle") }, + classes: ["lethalfantasy"], + position: { width: 320 }, + content: `
+

${game.i18n.localize("LETHALFANTASY.Combat.spellDRDialogMsg")}

+
+ + +
+
`, + buttons: [ + { + action: "noDR", + label: game.i18n.localize("LETHALFANTASY.Combat.spellNoDR"), + icon: "fa-solid fa-wand-magic-sparkles", + callback: () => 0 + }, + { + action: "applyDR", + label: game.i18n.localize("LETHALFANTASY.Combat.spellApplyDR"), + icon: "fa-solid fa-shield", + callback: (event, button) => Number(button.form?.elements?.manualDr?.value) || 0 + }, + { + action: "cancel", + label: game.i18n.localize("LETHALFANTASY.Combat.proceedNo"), + callback: () => null + } + ], + rejectClose: false + }) + if (manualDR === null) return + + const rollOpts = { + type: "spell-damage", + rollType: "spell-damage", + rollName: `${spell.name} — ${formula}`, + isDamage: true, + rollData: { isDamage: true }, + manualDR, + actorId: this.actor.id, + actorName: this.actor.name, + actorImage: this.actor.img + } + const roll = new LethalFantasyRoll(formula, {}, rollOpts) + await roll.evaluate() + roll.options.rollTotal = roll.total + if (game?.dice3d) await game.dice3d.showForRoll(roll, game.user, true) + await roll.toMessage() + } + static #onCreateEquipment(event, target) { } diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index 61e4984..1fa827c 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -392,7 +392,7 @@ export default class LethalFantasyRoll extends Roll { label: label, callback: (event, button, dialog) => { console.log("Roll context", event, button, dialog) - let position = dialog.position + let position = dialog?.position game.user.setFlag(SYSTEM.id, "roll-dialog-pos", foundry.utils.duplicate(position)) const output = Array.from(button.form.elements).reduce((obj, input) => { if (input.name) obj[input.name] = input.value @@ -403,22 +403,22 @@ export default class LethalFantasyRoll extends Roll { }, ], actions: { - "selectGranted": (event, button, dialog) => { + "selectGranted": (event, button) => { hasGrantedDice = event.target.checked }, - "selectBeyondSkill": (event, button, dialog) => { + "selectBeyondSkill": (event, button) => { beyondSkill = button.checked }, - "selectPointBlank": (event, button, dialog) => { + "selectPointBlank": (event, button) => { pointBlank = button.checked }, - "selectLetItFly": (event, button, dialog) => { + "selectLetItFly": (event, button) => { letItFly = button.checked }, - "saveSpellCheck": (event, button, dialog) => { + "saveSpellCheck": (event, button) => { saveSpell = button.checked }, - "gotoToken": (event, button, dialog) => { + "gotoToken": (event, button) => { let tokenId = $(button).data("tokenId") let token = canvas.tokens?.get(tokenId) if (token) { @@ -710,7 +710,7 @@ export default class LethalFantasyRoll extends Roll { buttons: [ { label: label, - callback: (event, button, dialog) => { + callback: (event, button) => { const output = Array.from(button.form.elements).reduce((obj, input) => { if (input.name) obj[input.name] = input.value return obj @@ -778,7 +778,7 @@ export default class LethalFantasyRoll extends Roll { buttons.push({ action: "roll", label: "Roll progression dice", - callback: (event, button, dialog) => { + callback: (event, button) => { let pos = $('#combat-action-dialog').position() game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", pos) return "rollProgressionDice" @@ -804,7 +804,7 @@ export default class LethalFantasyRoll extends Roll { buttons.push({ action: "roll", label: label, - callback: (event, button, dialog) => { + callback: (event, button) => { let pos = $('#combat-action-dialog').position() game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", foundry.utils.duplicate(pos)) return "rollLethargyDice" @@ -815,7 +815,7 @@ export default class LethalFantasyRoll extends Roll { buttons.push({ action: "roll", label: "Select action", - callback: (event, button, dialog) => { + callback: (event, button) => { let pos = $('#combat-action-dialog').position() game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", foundry.utils.duplicate(pos)) const output = Array.from(button.form.elements).reduce((obj, input) => { @@ -830,7 +830,7 @@ export default class LethalFantasyRoll extends Roll { buttons.push({ action: "cancel", label: "Other action, not listed here", - callback: (event, button, dialog) => { + callback: (event, button) => { let pos = $('#combat-action-dialog').position() game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", foundry.utils.duplicate(pos)) return null; @@ -1077,7 +1077,7 @@ export default class LethalFantasyRoll extends Roll { buttons: [ { label: label, - callback: (event, button, dialog) => { + callback: (event, button) => { const output = Array.from(button.form.elements).reduce((obj, input) => { if (input.name) obj[input.name] = input.value return obj diff --git a/module/utils.mjs b/module/utils.mjs index d61f975..81d7850 100644 --- a/module/utils.mjs +++ b/module/utils.mjs @@ -854,7 +854,7 @@ export default class LethalFantasyUtils { ` } else if (data.attackRollType === "monster-attack") { damageButton = ` -
+
@@ -881,7 +881,7 @@ export default class LethalFantasyUtils { ${t.label} (${escapedFormula}) ` }).join("") - damageButton = `
${buttons}
` + damageButton = `
${buttons}
` } } } diff --git a/packs-system/lf-equipment/000605.log b/packs-system/lf-equipment/000608.log similarity index 100% rename from packs-system/lf-equipment/000605.log rename to packs-system/lf-equipment/000608.log diff --git a/packs-system/lf-equipment/CURRENT b/packs-system/lf-equipment/CURRENT index 5882c5f..888567a 100644 --- a/packs-system/lf-equipment/CURRENT +++ b/packs-system/lf-equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000603 +MANIFEST-000607 diff --git a/packs-system/lf-equipment/LOG b/packs-system/lf-equipment/LOG index 47bb3e7..7c2cdf1 100644 --- a/packs-system/lf-equipment/LOG +++ b/packs-system/lf-equipment/LOG @@ -1,8 +1,3 @@ -2026/05/19-10:50:35.862031 7f5a477fe6c0 Recovering log #601 -2026/05/19-10:50:35.923479 7f5a477fe6c0 Delete type=3 #599 -2026/05/19-10:50:35.923537 7f5a477fe6c0 Delete type=0 #601 -2026/05/19-10:51:28.990207 7f5a467fc6c0 Level-0 table #606: started -2026/05/19-10:51:28.990237 7f5a467fc6c0 Level-0 table #606: 0 bytes OK -2026/05/19-10:51:28.997402 7f5a467fc6c0 Delete type=0 #604 -2026/05/19-10:51:28.997604 7f5a467fc6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) -2026/05/19-10:51:28.997650 7f5a467fc6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2026/05/20-00:10:37.079181 7f0b1e7ee6c0 Recovering log #605 +2026/05/20-00:10:37.089613 7f0b1e7ee6c0 Delete type=3 #603 +2026/05/20-00:10:37.089671 7f0b1e7ee6c0 Delete type=0 #605 diff --git a/packs-system/lf-equipment/LOG.old b/packs-system/lf-equipment/LOG.old index 1f3ea5c..47bb3e7 100644 --- a/packs-system/lf-equipment/LOG.old +++ b/packs-system/lf-equipment/LOG.old @@ -1,8 +1,8 @@ -2026/05/18-17:40:11.769288 7f5a477fe6c0 Recovering log #597 -2026/05/18-17:40:11.780605 7f5a477fe6c0 Delete type=3 #595 -2026/05/18-17:40:11.780699 7f5a477fe6c0 Delete type=0 #597 -2026/05/18-20:25:54.228818 7f5a467fc6c0 Level-0 table #602: started -2026/05/18-20:25:54.230037 7f5a467fc6c0 Level-0 table #602: 0 bytes OK -2026/05/18-20:25:54.236369 7f5a467fc6c0 Delete type=0 #600 -2026/05/18-20:25:54.251050 7f5a467fc6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) -2026/05/18-20:25:54.251106 7f5a467fc6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2026/05/19-10:50:35.862031 7f5a477fe6c0 Recovering log #601 +2026/05/19-10:50:35.923479 7f5a477fe6c0 Delete type=3 #599 +2026/05/19-10:50:35.923537 7f5a477fe6c0 Delete type=0 #601 +2026/05/19-10:51:28.990207 7f5a467fc6c0 Level-0 table #606: started +2026/05/19-10:51:28.990237 7f5a467fc6c0 Level-0 table #606: 0 bytes OK +2026/05/19-10:51:28.997402 7f5a467fc6c0 Delete type=0 #604 +2026/05/19-10:51:28.997604 7f5a467fc6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2026/05/19-10:51:28.997650 7f5a467fc6c0 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-000603 b/packs-system/lf-equipment/MANIFEST-000607 similarity index 71% rename from packs-system/lf-equipment/MANIFEST-000603 rename to packs-system/lf-equipment/MANIFEST-000607 index 49b34982f852a3d2544ad67323b0fa296f1fa5e4..e27619c52b5832294af4b4f40e736f0a49e5ab54 100644 GIT binary patch delta 25 hcmdnQxPWm&pOC`xoATTYj7$$$I2o89varnK1OQ~e2GRfk delta 43 tcmZ3$xQTH>pUP_)bz5!*My5L~oD9r&Sy<+AUebS53KF>s61fi&0RRnm3uyoV diff --git a/packs-system/lf-gifts/000602.log b/packs-system/lf-gifts/000605.log similarity index 100% rename from packs-system/lf-gifts/000602.log rename to packs-system/lf-gifts/000605.log diff --git a/packs-system/lf-gifts/CURRENT b/packs-system/lf-gifts/CURRENT index 0b446e5..8dc750c 100644 --- a/packs-system/lf-gifts/CURRENT +++ b/packs-system/lf-gifts/CURRENT @@ -1 +1 @@ -MANIFEST-000600 +MANIFEST-000604 diff --git a/packs-system/lf-gifts/LOG b/packs-system/lf-gifts/LOG index dad88da..1928dc3 100644 --- a/packs-system/lf-gifts/LOG +++ b/packs-system/lf-gifts/LOG @@ -1,8 +1,3 @@ -2026/05/19-10:50:35.962917 7f5a46ffd6c0 Recovering log #598 -2026/05/19-10:50:36.018914 7f5a46ffd6c0 Delete type=3 #596 -2026/05/19-10:50:36.018977 7f5a46ffd6c0 Delete type=0 #598 -2026/05/19-10:51:28.983427 7f5a467fc6c0 Level-0 table #603: started -2026/05/19-10:51:28.983464 7f5a467fc6c0 Level-0 table #603: 0 bytes OK -2026/05/19-10:51:28.990020 7f5a467fc6c0 Delete type=0 #601 -2026/05/19-10:51:28.997591 7f5a467fc6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) -2026/05/19-10:51:28.997639 7f5a467fc6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2026/05/20-00:10:37.107483 7f0b1efef6c0 Recovering log #602 +2026/05/20-00:10:37.117907 7f0b1efef6c0 Delete type=3 #600 +2026/05/20-00:10:37.117968 7f0b1efef6c0 Delete type=0 #602 diff --git a/packs-system/lf-gifts/LOG.old b/packs-system/lf-gifts/LOG.old index f780df8..dad88da 100644 --- a/packs-system/lf-gifts/LOG.old +++ b/packs-system/lf-gifts/LOG.old @@ -1,8 +1,8 @@ -2026/05/18-17:40:11.793894 7f5a94bff6c0 Recovering log #594 -2026/05/18-17:40:11.804447 7f5a94bff6c0 Delete type=3 #592 -2026/05/18-17:40:11.804549 7f5a94bff6c0 Delete type=0 #594 -2026/05/18-20:25:54.236611 7f5a467fc6c0 Level-0 table #599: started -2026/05/18-20:25:54.236652 7f5a467fc6c0 Level-0 table #599: 0 bytes OK -2026/05/18-20:25:54.243997 7f5a467fc6c0 Delete type=0 #597 -2026/05/18-20:25:54.251069 7f5a467fc6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) -2026/05/18-20:25:54.264439 7f5a467fc6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2026/05/19-10:50:35.962917 7f5a46ffd6c0 Recovering log #598 +2026/05/19-10:50:36.018914 7f5a46ffd6c0 Delete type=3 #596 +2026/05/19-10:50:36.018977 7f5a46ffd6c0 Delete type=0 #598 +2026/05/19-10:51:28.983427 7f5a467fc6c0 Level-0 table #603: started +2026/05/19-10:51:28.983464 7f5a467fc6c0 Level-0 table #603: 0 bytes OK +2026/05/19-10:51:28.990020 7f5a467fc6c0 Delete type=0 #601 +2026/05/19-10:51:28.997591 7f5a467fc6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2026/05/19-10:51:28.997639 7f5a467fc6c0 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-000600 b/packs-system/lf-gifts/MANIFEST-000604 similarity index 77% rename from packs-system/lf-gifts/MANIFEST-000600 rename to packs-system/lf-gifts/MANIFEST-000604 index 5422bc9a2e0ae2a3f510544d83116a3d5aa3d29c..8c8e4cdd0dde8e78a524d01126069ada53ca830d 100644 GIT binary patch delta 25 hcmey)_>^(NWg!-SUu|v%My9(goD9tOSXg#50sv<`2D|_O delta 43 tcmaFL_?>aWWtGsg8V9)<7@2Oea56C8Vqw|MSQdNwG)UwYNaPMk1OP+g4F>=K diff --git a/packs-system/lf-skills/000607.log b/packs-system/lf-skills/000610.log similarity index 100% rename from packs-system/lf-skills/000607.log rename to packs-system/lf-skills/000610.log diff --git a/packs-system/lf-skills/CURRENT b/packs-system/lf-skills/CURRENT index 7139744..1b1ae9a 100644 --- a/packs-system/lf-skills/CURRENT +++ b/packs-system/lf-skills/CURRENT @@ -1 +1 @@ -MANIFEST-000605 +MANIFEST-000609 diff --git a/packs-system/lf-skills/LOG b/packs-system/lf-skills/LOG index 409b56c..8f85bfd 100644 --- a/packs-system/lf-skills/LOG +++ b/packs-system/lf-skills/LOG @@ -1,8 +1,3 @@ -2026/05/19-10:50:35.772455 7f5a46ffd6c0 Recovering log #603 -2026/05/19-10:50:35.837426 7f5a46ffd6c0 Delete type=3 #601 -2026/05/19-10:50:35.837512 7f5a46ffd6c0 Delete type=0 #603 -2026/05/19-10:51:28.969686 7f5a467fc6c0 Level-0 table #608: started -2026/05/19-10:51:28.969769 7f5a467fc6c0 Level-0 table #608: 0 bytes OK -2026/05/19-10:51:28.976467 7f5a467fc6c0 Delete type=0 #606 -2026/05/19-10:51:28.997558 7f5a467fc6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2026/05/19-10:51:28.997616 7f5a467fc6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2026/05/20-00:10:37.061485 7f0b1efef6c0 Recovering log #607 +2026/05/20-00:10:37.071572 7f0b1efef6c0 Delete type=3 #605 +2026/05/20-00:10:37.071684 7f0b1efef6c0 Delete type=0 #607 diff --git a/packs-system/lf-skills/LOG.old b/packs-system/lf-skills/LOG.old index 23ee6e0..409b56c 100644 --- a/packs-system/lf-skills/LOG.old +++ b/packs-system/lf-skills/LOG.old @@ -1,8 +1,8 @@ -2026/05/18-17:40:11.749971 7f5a46ffd6c0 Recovering log #599 -2026/05/18-17:40:11.761423 7f5a46ffd6c0 Delete type=3 #597 -2026/05/18-17:40:11.761520 7f5a46ffd6c0 Delete type=0 #599 -2026/05/18-20:25:54.219239 7f5a467fc6c0 Level-0 table #604: started -2026/05/18-20:25:54.219522 7f5a467fc6c0 Level-0 table #604: 0 bytes OK -2026/05/18-20:25:54.228610 7f5a467fc6c0 Delete type=0 #602 -2026/05/18-20:25:54.251028 7f5a467fc6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2026/05/18-20:25:54.251085 7f5a467fc6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2026/05/19-10:50:35.772455 7f5a46ffd6c0 Recovering log #603 +2026/05/19-10:50:35.837426 7f5a46ffd6c0 Delete type=3 #601 +2026/05/19-10:50:35.837512 7f5a46ffd6c0 Delete type=0 #603 +2026/05/19-10:51:28.969686 7f5a467fc6c0 Level-0 table #608: started +2026/05/19-10:51:28.969769 7f5a467fc6c0 Level-0 table #608: 0 bytes OK +2026/05/19-10:51:28.976467 7f5a467fc6c0 Delete type=0 #606 +2026/05/19-10:51:28.997558 7f5a467fc6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2026/05/19-10:51:28.997616 7f5a467fc6c0 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-000605 b/packs-system/lf-skills/MANIFEST-000609 similarity index 71% rename from packs-system/lf-skills/MANIFEST-000605 rename to packs-system/lf-skills/MANIFEST-000609 index 7058802ba9a8b009876ccee464a71fa07bfc5446..8518ddc2edb4ac5cc50f8b78f7d60d4c8c0f7263 100644 GIT binary patch delta 25 gcmdnQxPWm&pOBKZM;kW-Bhw=mP6p=3EG!RM0b5W8fdBvi delta 43 tcmZ3$xQTH>pUTS + {{#if item.system.damageDice}} + + S + + {{/if}} + {{#if item.system.damageDiceOverpowered}} + + O + + {{/if}} + {{#if item.system.damageDiceOverpowered2}} + + O2 + + {{/if}} +