diff --git a/lang/en.json b/lang/en.json index 8f968ed..c08acef 100644 --- a/lang/en.json +++ b/lang/en.json @@ -385,6 +385,9 @@ "divinityPoints": "Divinity points", "aetherPoints": "Aether points", "attacks": "Attacks", + "attackMode": "Attack Mode", + "meleeModeLabel": "Melee (8 attacks)", + "rangedModeLabel": "Ranged (4 attacks)", "monster": "Monster", "Resist": "Resist", "resist": "Resist", diff --git a/lethal-fantasy.mjs b/lethal-fantasy.mjs index 643a85a..910a70a 100644 --- a/lethal-fantasy.mjs +++ b/lethal-fantasy.mjs @@ -597,7 +597,7 @@ Hooks.on("createChatMessage", async (message) => {

${attackerName} rolled ${attackRoll}

${defenderName} currently has ${defenseRoll}

- ${defenseD30message ? `

D30 special: ${defenseD30message}

` : ""} + ${defenseD30message ? `

D30 special: ${defenseD30message.description}

` : ""}

Choose how to improve the defense before resolving the hit.

@@ -751,7 +751,7 @@ Hooks.on("createChatMessage", async (message) => {

${attackerName} currently has ${attackRollFinal}

${defenderName} rolled ${defenseRoll}

- ${attackD30message ? `

D30 special: ${attackD30message}

` : ""} + ${attackD30message ? `

D30 special: ${attackD30message.description}

` : ""}

Choose how to improve the attack before resolving the combat result.

diff --git a/module/config/d30_results_tables.json b/module/config/d30_results_tables.json index 632d79f..c8b6741 100644 --- a/module/config/d30_results_tables.json +++ b/module/config/d30_results_tables.json @@ -1,148 +1,283 @@ { "d30_dice_results": { "30": { - "melee_attack": "Possible Lethal or Vital Strike or Add D20E to Attack", - "ranged_attack": "Possible Lethal or Vital Strike or Add D20E to Attack", - "melee_defense": "Possible Flawless or Legendary Defense or Add D20E to Defense", - "arcane_spell_attack": "Possible Lethal or Vital Magical Strike or Add D20E to Spell Attack", - "arcane_spell_defense": "Possible Spell Catastrophe or adds D20E to Spell Defense", - "skill_rolls": "Skill Succeeds Regardless of Opposing Roll" + "melee_attack": { + "type": "choice", + "choices": [ + { "type": "special_strike", "options": ["lethal", "vital"] }, + { "type": "bonus_dice", "dice": "D20E", "target": "attack" } + ], + "description": "Possible Lethal or Vital Strike or Add D20E to Attack" + }, + "ranged_attack": { + "type": "choice", + "choices": [ + { "type": "special_strike", "options": ["lethal", "vital"] }, + { "type": "bonus_dice", "dice": "D20E", "target": "attack" } + ], + "description": "Possible Lethal or Vital Strike or Add D20E to Attack" + }, + "melee_defense": { + "type": "choice", + "choices": [ + { "type": "special_defense", "options": ["flawless", "legendary"] }, + { "type": "bonus_dice", "dice": "D20E", "target": "defense" } + ], + "description": "Possible Flawless or Legendary Defense or Add D20E to Defense" + }, + "arcane_spell_attack": { + "type": "choice", + "choices": [ + { "type": "special_strike", "options": ["lethal_magical", "vital_magical"] }, + { "type": "bonus_dice", "dice": "D20E", "target": "spell_attack" } + ], + "description": "Possible Lethal or Vital Magical Strike or Add D20E to Spell Attack" + }, + "arcane_spell_defense": { + "type": "choice", + "choices": [ + { "type": "spell_calamity" }, + { "type": "bonus_dice", "dice": "D20E", "target": "spell_defense" } + ], + "description": "Possible Spell Catastrophe or adds D20E to Spell Defense" + }, + "skill_rolls": { + "type": "skill_auto_success", + "description": "Skill Succeeds Regardless of Opposing Roll" + } }, "29": { - "melee_attack": "Gain 1 Grit", - "ranged_attack": "Gain 1 Grit", - "melee_defense": "Gain 1 Grit", - "arcane_spell_attack": "Gain 1 Grit", - "arcane_spell_defense": "Gain 1 Grit", - "skill_rolls": "Gain 1 Grit" + "melee_attack": { "type": "gain_grit", "amount": 1, "description": "Gain 1 Grit" }, + "ranged_attack": { "type": "gain_grit", "amount": 1, "description": "Gain 1 Grit" }, + "melee_defense": { "type": "gain_grit", "amount": 1, "description": "Gain 1 Grit" }, + "arcane_spell_attack": { "type": "gain_grit", "amount": 1, "description": "Gain 1 Grit" }, + "arcane_spell_defense": { "type": "gain_grit", "amount": 1, "description": "Gain 1 Grit" }, + "skill_rolls": { "type": "gain_grit", "amount": 1, "description": "Gain 1 Grit" } }, "28": { - "melee_attack": "Shield Destruction", - "ranged_attack": "empty", - "melee_defense": "empty", - "arcane_spell_attack": "empty", - "arcane_spell_defense": "empty", - "skill_rolls": "empty" + "melee_attack": { "type": "shield_destruction", "description": "Shield Destruction" } }, "27": { - "melee_attack": "Granted D6 (1-6) Attack Modifier for This Melee Attack", - "ranged_attack": "Granted D6 (1-6) Attack Modifier for This Ranged Attack", - "melee_defense": "Granted 1 Luck dice for Use in This Combat Only", - "arcane_spell_attack": "No Spell Lethargy the Aether Approves of Characters Efforts", - "arcane_spell_defense": "Caster Suffers Severe pain and will be under a flash of pain for 1D6E seconds", - "skill_rolls": "empty" + "melee_attack": { + "type": "bonus_dice", "dice": "D6", "target": "attack", + "description": "Granted D6 (1-6) Attack Modifier for This Melee Attack" + }, + "ranged_attack": { + "type": "bonus_dice", "dice": "D6", "target": "attack", + "description": "Granted D6 (1-6) Attack Modifier for This Ranged Attack" + }, + "melee_defense": { + "type": "luck_die", "scope": "combat", + "description": "Granted 1 Luck dice for Use in This Combat Only" + }, + "arcane_spell_attack": { + "type": "no_lethargy", + "description": "No Spell Lethargy the Aether Approves of Characters Efforts" + }, + "arcane_spell_defense": { + "type": "flash_of_pain", "duration_dice": "1D6E", "target": "caster", + "description": "Caster Suffers Severe pain and will be under a flash of pain for 1D6E seconds" + } }, "26": { - "melee_attack": "Shield Destruction", - "ranged_attack": "empty", - "melee_defense": "empty", - "arcane_spell_attack": "empty", - "arcane_spell_defense": "empty", - "skill_rolls": "empty" + "melee_attack": { "type": "shield_destruction", "description": "Shield Destruction" } }, "25": { - "melee_attack": "empty", - "ranged_attack": "empty", - "melee_defense": "empty", - "arcane_spell_attack": "empty", - "arcane_spell_defense": "empty", - "skill_rolls": "Add 1 to Skill Roll" + "skill_rolls": { + "type": "bonus_flat", "amount": 1, "target": "skill", + "description": "Add 1 to Skill Roll" + } }, "21": { - "melee_attack": "Hit Inflicts Flash of Pain 1D6E seconds", - "ranged_attack": "Hit Inflicts Flash of Pain 1D6E seconds", - "melee_defense": "Defender Recovers or ignores any flash of pain", - "arcane_spell_attack": "Magical Damage inflicts Flash of pain 1D6E seconds", - "arcane_spell_defense": "Caster Suffers Severe pain and will be under a flash of pain for 1D6E seconds", - "skill_rolls": "Granted D6 (1-6) Skill Modifier for this Skill Attempt" + "melee_attack": { + "type": "flash_of_pain", "duration_dice": "1D6E", "target": "defender", + "description": "Hit Inflicts Flash of Pain 1D6E seconds" + }, + "ranged_attack": { + "type": "flash_of_pain", "duration_dice": "1D6E", "target": "defender", + "description": "Hit Inflicts Flash of Pain 1D6E seconds" + }, + "melee_defense": { + "type": "recover_pain", + "description": "Defender Recovers or ignores any flash of pain" + }, + "arcane_spell_attack": { + "type": "flash_of_pain", "duration_dice": "1D6E", "target": "defender", + "description": "Magical Damage inflicts Flash of pain 1D6E seconds" + }, + "arcane_spell_defense": { + "type": "flash_of_pain", "duration_dice": "1D6E", "target": "caster", + "description": "Caster Suffers Severe pain and will be under a flash of pain for 1D6E seconds" + }, + "skill_rolls": { + "type": "bonus_dice", "dice": "D6", "target": "skill", + "description": "Granted D6 (1-6) Skill Modifier for this Skill Attempt" + } }, "20": { - "melee_attack": "Possible Vicious Strike or Add D12 to attack", - "ranged_attack": "Possible Vicious Strike or add D12 to attack", - "melee_defense": "Possible 20/20 defense that avoids Any Attack Except a Lethal Strike or adds D12 to defense", - "arcane_spell_attack": "Possible Vicious Application of a Magical Attack or add D12 to attack", - "arcane_spell_defense": "Possible 20/20 Spell defense that Saves Against Any Magical Attack Except a Lethal Magical Strike or add D12 to defense", - "skill_rolls": "20 Added to Skill Roll" + "melee_attack": { + "type": "choice", + "choices": [ + { "type": "special_strike", "options": ["vicious"] }, + { "type": "bonus_dice", "dice": "D12", "target": "attack" } + ], + "description": "Possible Vicious Strike or Add D12 to attack" + }, + "ranged_attack": { + "type": "choice", + "choices": [ + { "type": "special_strike", "options": ["vicious"] }, + { "type": "bonus_dice", "dice": "D12", "target": "attack" } + ], + "description": "Possible Vicious Strike or add D12 to attack" + }, + "melee_defense": { + "type": "choice", + "choices": [ + { "type": "special_defense", "options": ["perfect"] }, + { "type": "bonus_dice", "dice": "D12", "target": "defense" } + ], + "description": "Possible 20/20 defense that avoids Any Attack Except a Lethal Strike or adds D12 to defense" + }, + "arcane_spell_attack": { + "type": "choice", + "choices": [ + { "type": "special_strike", "options": ["vicious_magical"] }, + { "type": "bonus_dice", "dice": "D12", "target": "spell_attack" } + ], + "description": "Possible Vicious Application of a Magical Attack or add D12 to attack" + }, + "arcane_spell_defense": { + "type": "choice", + "choices": [ + { "type": "special_defense", "options": ["perfect_spell"] }, + { "type": "bonus_dice", "dice": "D12", "target": "spell_defense" } + ], + "description": "Possible 20/20 Spell defense that Saves Against Any Magical Attack Except a Lethal Magical Strike or add D12 to defense" + }, + "skill_rolls": { + "type": "bonus_flat", "amount": 20, "target": "skill", + "description": "20 Added to Skill Roll" + } }, "15": { - "melee_attack": "Bleed, Knock-back on Hit", - "ranged_attack": "Bleed", - "melee_defense": "Kick, Punch or Shield Bash", - "arcane_spell_attack": "empty", - "arcane_spell_defense": "empty", - "skill_rolls": "Add 1 to Skill Roll" - }, - "13": { - "melee_attack": "empty", - "ranged_attack": "empty", - "melee_defense": "empty", - "arcane_spell_attack": "empty", - "arcane_spell_defense": "empty", - "skill_rolls": "empty" + "melee_attack": { + "type": "combo", + "effects": [ + { "type": "bleed" }, + { "type": "knockback" } + ], + "description": "Bleed, Knock-back on Hit" + }, + "ranged_attack": { "type": "bleed", "description": "Bleed" }, + "melee_defense": { + "type": "counter_attack", + "options": ["kick", "punch", "shield_bash"], + "description": "Kick, Punch or Shield Bash" + }, + "skill_rolls": { + "type": "bonus_flat", "amount": 1, "target": "skill", + "description": "Add 1 to Skill Roll" + } }, + "13": {}, "11": { - "melee_attack": "Flurry Attack or Hit to Miss", - "ranged_attack": "Roll 2x Damage Dice", - "melee_defense": "empty", - "arcane_spell_attack": "empty", - "arcane_spell_defense": "empty", - "skill_rolls": "empty" + "melee_attack": { + "type": "flurry", "condition": "hit_or_miss", + "description": "Flurry Attack or Hit to Miss" + }, + "ranged_attack": { "type": "double_damage_dice", "description": "Roll 2x Damage Dice" } }, "10": { - "melee_attack": "Bleed, Knock-back on Hit", - "ranged_attack": "Bleed", - "melee_defense": "Kick, Punch or Shield Bash", - "arcane_spell_attack": "empty", - "arcane_spell_defense": "empty", - "skill_rolls": "Add 1 to Skill Roll" + "melee_attack": { + "type": "combo", + "effects": [ + { "type": "bleed" }, + { "type": "knockback" } + ], + "description": "Bleed, Knock-back on Hit" + }, + "ranged_attack": { "type": "bleed", "description": "Bleed" }, + "melee_defense": { + "type": "counter_attack", + "options": ["kick", "punch", "shield_bash"], + "description": "Kick, Punch or Shield Bash" + }, + "skill_rolls": { + "type": "bonus_flat", "amount": 1, "target": "skill", + "description": "Add 1 to Skill Roll" + } }, "8": { - "melee_attack": "Mulligan, Can Choose to Re-roll This Attack", - "ranged_attack": "Mulligan, Can Choose to Re-Roll This Attack", - "melee_defense": "Mulligan, Can Choose to Re-Roll This Defense", - "arcane_spell_attack": "Mulligan, Can Re-Roll This Spell Attack", - "arcane_spell_defense": "Mulligan, Can Re-Roll This Spell Defense", - "skill_rolls": "Mulligan, Can Re-Roll This Skill roll" + "melee_attack": { "type": "mulligan", "description": "Mulligan, Can Choose to Re-roll This Attack" }, + "ranged_attack": { "type": "mulligan", "description": "Mulligan, Can Choose to Re-Roll This Attack" }, + "melee_defense": { "type": "mulligan", "description": "Mulligan, Can Choose to Re-Roll This Defense" }, + "arcane_spell_attack": { "type": "mulligan", "description": "Mulligan, Can Re-Roll This Spell Attack" }, + "arcane_spell_defense": { "type": "mulligan", "description": "Mulligan, Can Re-Roll This Spell Defense" }, + "skill_rolls": { "type": "mulligan", "description": "Mulligan, Can Re-Roll This Skill roll" } }, "7": { - "melee_attack": "Flurry Attack on Hit or Miss", - "ranged_attack": "Roll 2x Damage Dice", - "melee_defense": "empty", - "arcane_spell_attack": "empty", - "arcane_spell_defense": "empty", - "skill_rolls": "empty" + "melee_attack": { + "type": "flurry", "condition": "hit_or_miss", + "description": "Flurry Attack on Hit or Miss" + }, + "ranged_attack": { "type": "double_damage_dice", "description": "Roll 2x Damage Dice" } }, "5": { - "melee_attack": "Bleed, Knock-back on Hit", - "ranged_attack": "Bleed", - "melee_defense": "Kick, Punch, or Shield Bash", - "arcane_spell_attack": "empty", - "arcane_spell_defense": "empty", - "skill_rolls": "Add 1 to Skill Roll" + "melee_attack": { + "type": "combo", + "effects": [ + { "type": "bleed" }, + { "type": "knockback" } + ], + "description": "Bleed, Knock-back on Hit" + }, + "ranged_attack": { "type": "bleed", "description": "Bleed" }, + "melee_defense": { + "type": "counter_attack", + "options": ["kick", "punch", "shield_bash"], + "description": "Kick, Punch, or Shield Bash" + }, + "skill_rolls": { + "type": "bonus_flat", "amount": 1, "target": "skill", + "description": "Add 1 to Skill Roll" + } }, "3": { - "melee_attack": "Triple Damage", - "ranged_attack": "Triple Damage", - "melee_defense": "DR Tripled including Shield", - "arcane_spell_attack": "Triple Damage on Spell Damage", - "arcane_spell_defense": "D12 Added to Spell Defense Modifier", - "skill_rolls": "empty" + "melee_attack": { "type": "damage_multiplier", "multiplier": 3, "description": "Triple Damage" }, + "ranged_attack": { "type": "damage_multiplier", "multiplier": 3, "description": "Triple Damage" }, + "melee_defense": { + "type": "dr_multiplier", "multiplier": 3, "includes_shield": true, + "description": "DR Tripled including Shield" + }, + "arcane_spell_attack": { "type": "damage_multiplier", "multiplier": 3, "description": "Triple Damage on Spell Damage" }, + "arcane_spell_defense": { + "type": "bonus_dice", "dice": "D12", "target": "spell_defense", + "description": "D12 Added to Spell Defense Modifier" + } }, "2": { - "melee_attack": "Double Damage", - "ranged_attack": "Double Damage", - "melee_defense": "DR Doubled including Shield", - "arcane_spell_attack": "Double Damage on Spell Damage", - "arcane_spell_defense": "D6 Added to Spell Defense Modifier", - "skill_rolls": "empty" + "melee_attack": { "type": "damage_multiplier", "multiplier": 2, "description": "Double Damage" }, + "ranged_attack": { "type": "damage_multiplier", "multiplier": 2, "description": "Double Damage" }, + "melee_defense": { + "type": "dr_multiplier", "multiplier": 2, "includes_shield": true, + "description": "DR Doubled including Shield" + }, + "arcane_spell_attack": { "type": "damage_multiplier", "multiplier": 2, "description": "Double Damage on Spell Damage" }, + "arcane_spell_defense": { + "type": "bonus_dice", "dice": "D6", "target": "spell_defense", + "description": "D6 Added to Spell Defense Modifier" + } }, "1": { - "melee_attack": "empty", - "ranged_attack": "Possible Fumble Ranged ammo is broken unrecoverable", - "melee_defense": "empty", - "arcane_spell_attack": "Possible Spell Calamity or Catastrophe", - "arcane_spell_defense": "empty", - "skill_rolls": "empty" + "ranged_attack": { + "type": "fumble", "detail": "ranged_ammo_broken", + "description": "Possible Fumble Ranged ammo is broken unrecoverable" + }, + "arcane_spell_attack": { + "type": "spell_calamity", + "description": "Possible Spell Calamity or Catastrophe" + } } }, "definitions": { diff --git a/module/documents/d30-roll.mjs b/module/documents/d30-roll.mjs index eb6eac8..984c48f 100644 --- a/module/documents/d30-roll.mjs +++ b/module/documents/d30-roll.mjs @@ -47,11 +47,11 @@ export default class D30Roll { } /** - * Récupère le résultat d'un jet de D30 + * Récupère le résultat d'un jet de D30 sous forme d'objet structuré. * @param {number} diceValue La valeur du dé (1-30) * @param {string} rollType Le type de jet externe (ex: "weapon-attack", "spell-attack", etc.) * @param {Object} weapon L'arme ou l'objet utilisé (optionnel, nécessaire pour certains types) - * @returns {string|null} Le résultat correspondant ou null si vide/non trouvé + * @returns {Object|null} L'objet effet `{ type, description, ...fields }` ou null si aucun effet */ static getResult(diceValue, rollType, weapon = null) { if (!this.resultsTable) { @@ -59,13 +59,11 @@ export default class D30Roll { return null } - // Validation des paramètres if (diceValue < 1 || diceValue > 30) { console.warn(`D30Roll | Invalid dice value: ${diceValue}. Must be between 1 and 30.`) return null } - // Convert external rollType to internal rollType const internalType = this.convertToInternalType(rollType, weapon) if (!internalType) { @@ -85,13 +83,16 @@ export default class D30Roll { } const result = resultEntry[internalType] + return result ?? null + } - // Retourne null si le résultat est "empty" - if (result === "empty" || !result) { - return null - } - - return result + /** + * Retourne le type d'effet d'un résultat D30. + * @param {Object|null} result L'objet retourné par getResult() + * @returns {string|null} Le type d'effet ou null + */ + static getEffectType(result) { + return result?.type ?? null } /** @@ -177,11 +178,11 @@ export default class D30Roll { /** * Vérifie si un résultat est vide - * @param {string} result Le résultat à vérifier + * @param {Object|null} result Le résultat à vérifier * @returns {boolean} True si le résultat est vide */ static isEmptyResult(result) { - return !result || result === "empty" + return !result || !result.type } /** diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index 49edb20..ff4cf20 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -1105,6 +1105,7 @@ export default class LethalFantasyRoll extends Roll { // Merge rollContext object into options object options = { ...options, ...rollContext } options.rollName = "Ranged Defense" + options.rollType = "weapon-defense" const rollBase = new this(rollContext.movement, options.data, rollData) const rollModifier = new Roll(modifierFormula, options.data, rollData) @@ -1112,6 +1113,7 @@ export default class LethalFantasyRoll extends Roll { await rollBase.evaluate() let rollD30 = await new Roll("1D30").evaluate() options.D30result = rollD30.total + options.D30message = D30Roll.getResult(rollD30.total, options.rollType, options.rollTarget?.weapon) let badResult = 0 if (rollContext.movement.includes("kh")) { @@ -1154,6 +1156,7 @@ export default class LethalFantasyRoll extends Roll { rollBase.options.rollTarget = options.rollTarget rollBase.options.titleFormula = `1D20E + ${modifierFormula}` rollBase.options.D30result = options.D30result + rollBase.options.D30message = options.D30message rollBase.options.rollName = "Ranged Defense" rollBase.options.badResult = badResult rollBase.options.rollData = foundry.utils.duplicate(rollData) diff --git a/module/models/monster.mjs b/module/models/monster.mjs index a478874..ca5060c 100644 --- a/module/models/monster.mjs +++ b/module/models/monster.mjs @@ -127,6 +127,19 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel attack2: attackField("2") }) + schema.attackMode = new fields.StringField({ + required: true, + nullable: false, + initial: "melee", + choices: { melee: "Melee", ranged: "Ranged" } + }) + + schema.rangedAttacks = new fields.SchemaField({ + attack1: attackField("1"), + attack2: attackField("2"), + attack3: attackField("3"), + attack4: attackField("4") + }) return schema } @@ -165,14 +178,16 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel switch (rollType) { case "monster-attack": case "monster-defense": - case "monster-damage": - rollTarget = foundry.utils.duplicate(this.attacks[rollKey]) + case "monster-damage": { + const attacksSet = this.attackMode === "ranged" ? this.rangedAttacks : this.attacks + rollTarget = foundry.utils.duplicate(attacksSet[rollKey]) rollTarget.rollKey = rollKey // Si damageModifier est fourni (depuis le chat), l'utiliser au lieu de celui de la fiche if (damageModifier !== undefined && rollType === "monster-damage") { rollTarget.damageModifier = damageModifier } break + } case "monster-attack-hth": case "monster-defense-hth": case "monster-damage-hth": @@ -304,8 +319,9 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel } let hasAttack = false - for (let key in this.attacks) { - let attack = this.attacks[key] + const attacksSet = this.attackMode === "ranged" ? this.rangedAttacks : this.attacks + for (let key in attacksSet) { + let attack = attacksSet[key] if (attack.enabled && attack.attackScore > 0 && attack.attackScore === roll.total) { hasAttack = true const messageContent = await foundry.applications.handlebars.renderTemplate( diff --git a/module/utils.mjs b/module/utils.mjs index 0b4476e..0a9ec7b 100644 --- a/module/utils.mjs +++ b/module/utils.mjs @@ -304,7 +304,8 @@ export default class LethalFantasyUtils { // Pour les monstres, récupérer les attaques activées if (isMonster) { - const enabledAttacks = Object.entries(defender.system.attacks).filter(([key, attack]) => attack.enabled) + const attacksSet = defender.system.attackMode === "ranged" ? defender.system.rangedAttacks : defender.system.attacks + const enabledAttacks = Object.entries(attacksSet).filter(([key, attack]) => attack.enabled) if (enabledAttacks.length === 0) { ui.notifications.warn("No enabled attacks available for defense") @@ -448,7 +449,7 @@ export default class LethalFantasyUtils { /* -------------------------------------------- */ static hasD30Reroll(d30Message) { - return /mulligan|re-?roll/i.test(d30Message || "") + return d30Message?.type === "mulligan" } /* -------------------------------------------- */ diff --git a/packs-system/lf-equipment/000573.log b/packs-system/lf-equipment/000577.log similarity index 100% rename from packs-system/lf-equipment/000573.log rename to packs-system/lf-equipment/000577.log diff --git a/packs-system/lf-equipment/CURRENT b/packs-system/lf-equipment/CURRENT index 45484f2..2c49926 100644 --- a/packs-system/lf-equipment/CURRENT +++ b/packs-system/lf-equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000571 +MANIFEST-000575 diff --git a/packs-system/lf-equipment/LOG b/packs-system/lf-equipment/LOG index d4840b5..c67727a 100644 --- a/packs-system/lf-equipment/LOG +++ b/packs-system/lf-equipment/LOG @@ -1,8 +1,8 @@ -2026/04/17-23:19:16.304838 7fc1d9fbd6c0 Recovering log #569 -2026/04/17-23:19:16.314937 7fc1d9fbd6c0 Delete type=3 #567 -2026/04/17-23:19:16.314986 7fc1d9fbd6c0 Delete type=0 #569 -2026/04/17-23:21:33.253358 7fc1d8fbb6c0 Level-0 table #574: started -2026/04/17-23:21:33.253399 7fc1d8fbb6c0 Level-0 table #574: 0 bytes OK -2026/04/17-23:21:33.259366 7fc1d8fbb6c0 Delete type=0 #572 -2026/04/17-23:21:33.272517 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) -2026/04/17-23:21:33.272537 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2026/04/29-20:13:54.005832 7fed937fe6c0 Recovering log #573 +2026/04/29-20:13:54.016172 7fed937fe6c0 Delete type=3 #571 +2026/04/29-20:13:54.016279 7fed937fe6c0 Delete type=0 #573 +2026/04/29-20:27:06.418200 7feb10fff6c0 Level-0 table #578: started +2026/04/29-20:27:06.418231 7feb10fff6c0 Level-0 table #578: 0 bytes OK +2026/04/29-20:27:06.424568 7feb10fff6c0 Delete type=0 #576 +2026/04/29-20:27:06.431809 7feb10fff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2026/04/29-20:27:06.431871 7feb10fff6c0 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/LOG.old b/packs-system/lf-equipment/LOG.old index 3077eb6..d4840b5 100644 --- a/packs-system/lf-equipment/LOG.old +++ b/packs-system/lf-equipment/LOG.old @@ -1,8 +1,8 @@ -2026/04/17-15:59:28.854423 7fc1d9fbd6c0 Recovering log #565 -2026/04/17-15:59:28.865018 7fc1d9fbd6c0 Delete type=3 #563 -2026/04/17-15:59:28.865088 7fc1d9fbd6c0 Delete type=0 #565 -2026/04/17-17:32:42.752073 7fc1d8fbb6c0 Level-0 table #570: started -2026/04/17-17:32:42.752102 7fc1d8fbb6c0 Level-0 table #570: 0 bytes OK -2026/04/17-17:32:42.757979 7fc1d8fbb6c0 Delete type=0 #568 -2026/04/17-17:32:42.764071 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) -2026/04/17-17:32:42.764104 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2026/04/17-23:19:16.304838 7fc1d9fbd6c0 Recovering log #569 +2026/04/17-23:19:16.314937 7fc1d9fbd6c0 Delete type=3 #567 +2026/04/17-23:19:16.314986 7fc1d9fbd6c0 Delete type=0 #569 +2026/04/17-23:21:33.253358 7fc1d8fbb6c0 Level-0 table #574: started +2026/04/17-23:21:33.253399 7fc1d8fbb6c0 Level-0 table #574: 0 bytes OK +2026/04/17-23:21:33.259366 7fc1d8fbb6c0 Delete type=0 #572 +2026/04/17-23:21:33.272517 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2026/04/17-23:21:33.272537 7fc1d8fbb6c0 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-000571 b/packs-system/lf-equipment/MANIFEST-000575 similarity index 71% rename from packs-system/lf-equipment/MANIFEST-000571 rename to packs-system/lf-equipment/MANIFEST-000575 index bcdd7fc..9a42ede 100644 Binary files a/packs-system/lf-equipment/MANIFEST-000571 and b/packs-system/lf-equipment/MANIFEST-000575 differ diff --git a/packs-system/lf-gifts/000570.log b/packs-system/lf-gifts/000574.log similarity index 100% rename from packs-system/lf-gifts/000570.log rename to packs-system/lf-gifts/000574.log diff --git a/packs-system/lf-gifts/CURRENT b/packs-system/lf-gifts/CURRENT index b9c2169..394967e 100644 --- a/packs-system/lf-gifts/CURRENT +++ b/packs-system/lf-gifts/CURRENT @@ -1 +1 @@ -MANIFEST-000568 +MANIFEST-000572 diff --git a/packs-system/lf-gifts/LOG b/packs-system/lf-gifts/LOG index b54e8f2..bcc0a2e 100644 --- a/packs-system/lf-gifts/LOG +++ b/packs-system/lf-gifts/LOG @@ -1,8 +1,8 @@ -2026/04/17-23:19:16.318519 7fc1da7be6c0 Recovering log #566 -2026/04/17-23:19:16.328366 7fc1da7be6c0 Delete type=3 #564 -2026/04/17-23:19:16.328429 7fc1da7be6c0 Delete type=0 #566 -2026/04/17-23:21:33.266428 7fc1d8fbb6c0 Level-0 table #571: started -2026/04/17-23:21:33.266454 7fc1d8fbb6c0 Level-0 table #571: 0 bytes OK -2026/04/17-23:21:33.272429 7fc1d8fbb6c0 Delete type=0 #569 -2026/04/17-23:21:33.272532 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) -2026/04/17-23:21:33.272553 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2026/04/29-20:13:54.023030 7fed93fff6c0 Recovering log #570 +2026/04/29-20:13:54.032615 7fed93fff6c0 Delete type=3 #568 +2026/04/29-20:13:54.032677 7fed93fff6c0 Delete type=0 #570 +2026/04/29-20:27:06.286266 7feb10fff6c0 Level-0 table #575: started +2026/04/29-20:27:06.286286 7feb10fff6c0 Level-0 table #575: 0 bytes OK +2026/04/29-20:27:06.292048 7feb10fff6c0 Delete type=0 #573 +2026/04/29-20:27:06.299186 7feb10fff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2026/04/29-20:27:06.299236 7feb10fff6c0 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 68715d0..b54e8f2 100644 --- a/packs-system/lf-gifts/LOG.old +++ b/packs-system/lf-gifts/LOG.old @@ -1,8 +1,8 @@ -2026/04/17-15:59:28.871085 7fc1dafbf6c0 Recovering log #562 -2026/04/17-15:59:28.880683 7fc1dafbf6c0 Delete type=3 #560 -2026/04/17-15:59:28.880729 7fc1dafbf6c0 Delete type=0 #562 -2026/04/17-17:32:42.744598 7fc1d8fbb6c0 Level-0 table #567: started -2026/04/17-17:32:42.744627 7fc1d8fbb6c0 Level-0 table #567: 0 bytes OK -2026/04/17-17:32:42.751972 7fc1d8fbb6c0 Delete type=0 #565 -2026/04/17-17:32:42.764061 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) -2026/04/17-17:32:42.764085 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2026/04/17-23:19:16.318519 7fc1da7be6c0 Recovering log #566 +2026/04/17-23:19:16.328366 7fc1da7be6c0 Delete type=3 #564 +2026/04/17-23:19:16.328429 7fc1da7be6c0 Delete type=0 #566 +2026/04/17-23:21:33.266428 7fc1d8fbb6c0 Level-0 table #571: started +2026/04/17-23:21:33.266454 7fc1d8fbb6c0 Level-0 table #571: 0 bytes OK +2026/04/17-23:21:33.272429 7fc1d8fbb6c0 Delete type=0 #569 +2026/04/17-23:21:33.272532 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2026/04/17-23:21:33.272553 7fc1d8fbb6c0 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-000568 b/packs-system/lf-gifts/MANIFEST-000572 similarity index 77% rename from packs-system/lf-gifts/MANIFEST-000568 rename to packs-system/lf-gifts/MANIFEST-000572 index b52357a..673685c 100644 Binary files a/packs-system/lf-gifts/MANIFEST-000568 and b/packs-system/lf-gifts/MANIFEST-000572 differ diff --git a/packs-system/lf-skills/000575.log b/packs-system/lf-skills/000579.log similarity index 100% rename from packs-system/lf-skills/000575.log rename to packs-system/lf-skills/000579.log diff --git a/packs-system/lf-skills/CURRENT b/packs-system/lf-skills/CURRENT index 6c5f53c..d767468 100644 --- a/packs-system/lf-skills/CURRENT +++ b/packs-system/lf-skills/CURRENT @@ -1 +1 @@ -MANIFEST-000573 +MANIFEST-000577 diff --git a/packs-system/lf-skills/LOG b/packs-system/lf-skills/LOG index 1f0efce..40005ea 100644 --- a/packs-system/lf-skills/LOG +++ b/packs-system/lf-skills/LOG @@ -1,8 +1,8 @@ -2026/04/17-23:19:16.291897 7fc1dafbf6c0 Recovering log #571 -2026/04/17-23:19:16.301798 7fc1dafbf6c0 Delete type=3 #569 -2026/04/17-23:19:16.301852 7fc1dafbf6c0 Delete type=0 #571 -2026/04/17-23:21:33.247119 7fc1d8fbb6c0 Level-0 table #576: started -2026/04/17-23:21:33.247158 7fc1d8fbb6c0 Level-0 table #576: 0 bytes OK -2026/04/17-23:21:33.253108 7fc1d8fbb6c0 Delete type=0 #574 -2026/04/17-23:21:33.272508 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2026/04/17-23:21:33.272542 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2026/04/29-20:13:53.990808 7fed927fc6c0 Recovering log #575 +2026/04/29-20:13:54.001559 7fed927fc6c0 Delete type=3 #573 +2026/04/29-20:13:54.001699 7fed927fc6c0 Delete type=0 #575 +2026/04/29-20:27:06.273802 7feb10fff6c0 Level-0 table #580: started +2026/04/29-20:27:06.273877 7feb10fff6c0 Level-0 table #580: 0 bytes OK +2026/04/29-20:27:06.280252 7feb10fff6c0 Delete type=0 #578 +2026/04/29-20:27:06.299161 7feb10fff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2026/04/29-20:27:06.299217 7feb10fff6c0 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 bb36810..1f0efce 100644 --- a/packs-system/lf-skills/LOG.old +++ b/packs-system/lf-skills/LOG.old @@ -1,8 +1,8 @@ -2026/04/17-15:59:28.839432 7fc1da7be6c0 Recovering log #567 -2026/04/17-15:59:28.849242 7fc1da7be6c0 Delete type=3 #565 -2026/04/17-15:59:28.849292 7fc1da7be6c0 Delete type=0 #567 -2026/04/17-17:32:42.764151 7fc1d8fbb6c0 Level-0 table #572: started -2026/04/17-17:32:42.764181 7fc1d8fbb6c0 Level-0 table #572: 0 bytes OK -2026/04/17-17:32:42.770357 7fc1d8fbb6c0 Delete type=0 #570 -2026/04/17-17:32:42.789018 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2026/04/17-17:32:42.789049 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2026/04/17-23:19:16.291897 7fc1dafbf6c0 Recovering log #571 +2026/04/17-23:19:16.301798 7fc1dafbf6c0 Delete type=3 #569 +2026/04/17-23:19:16.301852 7fc1dafbf6c0 Delete type=0 #571 +2026/04/17-23:21:33.247119 7fc1d8fbb6c0 Level-0 table #576: started +2026/04/17-23:21:33.247158 7fc1d8fbb6c0 Level-0 table #576: 0 bytes OK +2026/04/17-23:21:33.253108 7fc1d8fbb6c0 Delete type=0 #574 +2026/04/17-23:21:33.272508 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2026/04/17-23:21:33.272542 7fc1d8fbb6c0 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-000573 b/packs-system/lf-skills/MANIFEST-000577 similarity index 71% rename from packs-system/lf-skills/MANIFEST-000573 rename to packs-system/lf-skills/MANIFEST-000577 index 7dba4af..c7a4020 100644 Binary files a/packs-system/lf-skills/MANIFEST-000573 and b/packs-system/lf-skills/MANIFEST-000577 differ diff --git a/packs-system/lf-spells-miracles/000270.log b/packs-system/lf-spells-miracles/000274.log similarity index 100% rename from packs-system/lf-spells-miracles/000270.log rename to packs-system/lf-spells-miracles/000274.log diff --git a/packs-system/lf-spells-miracles/CURRENT b/packs-system/lf-spells-miracles/CURRENT index df84f3d..d9f5a7d 100644 --- a/packs-system/lf-spells-miracles/CURRENT +++ b/packs-system/lf-spells-miracles/CURRENT @@ -1 +1 @@ -MANIFEST-000268 +MANIFEST-000272 diff --git a/packs-system/lf-spells-miracles/LOG b/packs-system/lf-spells-miracles/LOG index 0399271..bf7d562 100644 --- a/packs-system/lf-spells-miracles/LOG +++ b/packs-system/lf-spells-miracles/LOG @@ -1,8 +1,8 @@ -2026/04/17-23:19:16.342745 7fc1d9fbd6c0 Recovering log #266 -2026/04/17-23:19:16.352598 7fc1d9fbd6c0 Delete type=3 #264 -2026/04/17-23:19:16.352656 7fc1d9fbd6c0 Delete type=0 #266 -2026/04/17-23:21:33.291630 7fc1d8fbb6c0 Level-0 table #271: started -2026/04/17-23:21:33.291664 7fc1d8fbb6c0 Level-0 table #271: 0 bytes OK -2026/04/17-23:21:33.297690 7fc1d8fbb6c0 Delete type=0 #269 -2026/04/17-23:21:33.297852 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) -2026/04/17-23:21:33.297866 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2026/04/29-20:13:54.051682 7fed937fe6c0 Recovering log #270 +2026/04/29-20:13:54.062010 7fed937fe6c0 Delete type=3 #268 +2026/04/29-20:13:54.062071 7fed937fe6c0 Delete type=0 #270 +2026/04/29-20:27:06.292128 7feb10fff6c0 Level-0 table #275: started +2026/04/29-20:27:06.292152 7feb10fff6c0 Level-0 table #275: 0 bytes OK +2026/04/29-20:27:06.299041 7feb10fff6c0 Delete type=0 #273 +2026/04/29-20:27:06.299199 7feb10fff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2026/04/29-20:27:06.299226 7feb10fff6c0 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 3b55b06..0399271 100644 --- a/packs-system/lf-spells-miracles/LOG.old +++ b/packs-system/lf-spells-miracles/LOG.old @@ -1,8 +1,8 @@ -2026/04/17-15:59:28.899464 7fc1d97bc6c0 Recovering log #262 -2026/04/17-15:59:28.910004 7fc1d97bc6c0 Delete type=3 #260 -2026/04/17-15:59:28.910074 7fc1d97bc6c0 Delete type=0 #262 -2026/04/17-17:32:42.770457 7fc1d8fbb6c0 Level-0 table #267: started -2026/04/17-17:32:42.770479 7fc1d8fbb6c0 Level-0 table #267: 0 bytes OK -2026/04/17-17:32:42.777091 7fc1d8fbb6c0 Delete type=0 #265 -2026/04/17-17:32:42.789028 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) -2026/04/17-17:32:42.789054 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2026/04/17-23:19:16.342745 7fc1d9fbd6c0 Recovering log #266 +2026/04/17-23:19:16.352598 7fc1d9fbd6c0 Delete type=3 #264 +2026/04/17-23:19:16.352656 7fc1d9fbd6c0 Delete type=0 #266 +2026/04/17-23:21:33.291630 7fc1d8fbb6c0 Level-0 table #271: started +2026/04/17-23:21:33.291664 7fc1d8fbb6c0 Level-0 table #271: 0 bytes OK +2026/04/17-23:21:33.297690 7fc1d8fbb6c0 Delete type=0 #269 +2026/04/17-23:21:33.297852 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2026/04/17-23:21:33.297866 7fc1d8fbb6c0 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-000268 b/packs-system/lf-spells-miracles/MANIFEST-000272 similarity index 72% rename from packs-system/lf-spells-miracles/MANIFEST-000268 rename to packs-system/lf-spells-miracles/MANIFEST-000272 index 6014cd7..788479a 100644 Binary files a/packs-system/lf-spells-miracles/MANIFEST-000268 and b/packs-system/lf-spells-miracles/MANIFEST-000272 differ diff --git a/packs-system/lf-vulnerabilities/000569.log b/packs-system/lf-vulnerabilities/000573.log similarity index 100% rename from packs-system/lf-vulnerabilities/000569.log rename to packs-system/lf-vulnerabilities/000573.log diff --git a/packs-system/lf-vulnerabilities/CURRENT b/packs-system/lf-vulnerabilities/CURRENT index b06900d..45484f2 100644 --- a/packs-system/lf-vulnerabilities/CURRENT +++ b/packs-system/lf-vulnerabilities/CURRENT @@ -1 +1 @@ -MANIFEST-000567 +MANIFEST-000571 diff --git a/packs-system/lf-vulnerabilities/LOG b/packs-system/lf-vulnerabilities/LOG index b87c271..3b18380 100644 --- a/packs-system/lf-vulnerabilities/LOG +++ b/packs-system/lf-vulnerabilities/LOG @@ -1,8 +1,8 @@ -2026/04/17-23:19:16.330906 7fc1dafbf6c0 Recovering log #565 -2026/04/17-23:19:16.340561 7fc1dafbf6c0 Delete type=3 #563 -2026/04/17-23:19:16.340605 7fc1dafbf6c0 Delete type=0 #565 -2026/04/17-23:21:33.259495 7fc1d8fbb6c0 Level-0 table #570: started -2026/04/17-23:21:33.259518 7fc1d8fbb6c0 Level-0 table #570: 0 bytes OK -2026/04/17-23:21:33.266305 7fc1d8fbb6c0 Delete type=0 #568 -2026/04/17-23:21:33.272525 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2026/04/17-23:21:33.272548 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2026/04/29-20:13:54.036694 7fed92ffd6c0 Recovering log #569 +2026/04/29-20:13:54.047834 7fed92ffd6c0 Delete type=3 #567 +2026/04/29-20:13:54.047922 7fed92ffd6c0 Delete type=0 #569 +2026/04/29-20:27:06.280338 7feb10fff6c0 Level-0 table #574: started +2026/04/29-20:27:06.280357 7feb10fff6c0 Level-0 table #574: 0 bytes OK +2026/04/29-20:27:06.286179 7feb10fff6c0 Delete type=0 #572 +2026/04/29-20:27:06.299174 7feb10fff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2026/04/29-20:27:06.299209 7feb10fff6c0 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 182f7e7..b87c271 100644 --- a/packs-system/lf-vulnerabilities/LOG.old +++ b/packs-system/lf-vulnerabilities/LOG.old @@ -1,8 +1,8 @@ -2026/04/17-15:59:28.886104 7fc1da7be6c0 Recovering log #561 -2026/04/17-15:59:28.896104 7fc1da7be6c0 Delete type=3 #559 -2026/04/17-15:59:28.896157 7fc1da7be6c0 Delete type=0 #561 -2026/04/17-17:32:42.758102 7fc1d8fbb6c0 Level-0 table #566: started -2026/04/17-17:32:42.758128 7fc1d8fbb6c0 Level-0 table #566: 0 bytes OK -2026/04/17-17:32:42.763950 7fc1d8fbb6c0 Delete type=0 #564 -2026/04/17-17:32:42.764079 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2026/04/17-17:32:42.764099 7fc1d8fbb6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2026/04/17-23:19:16.330906 7fc1dafbf6c0 Recovering log #565 +2026/04/17-23:19:16.340561 7fc1dafbf6c0 Delete type=3 #563 +2026/04/17-23:19:16.340605 7fc1dafbf6c0 Delete type=0 #565 +2026/04/17-23:21:33.259495 7fc1d8fbb6c0 Level-0 table #570: started +2026/04/17-23:21:33.259518 7fc1d8fbb6c0 Level-0 table #570: 0 bytes OK +2026/04/17-23:21:33.266305 7fc1d8fbb6c0 Delete type=0 #568 +2026/04/17-23:21:33.272525 7fc1d8fbb6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2026/04/17-23:21:33.272548 7fc1d8fbb6c0 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-000567 b/packs-system/lf-vulnerabilities/MANIFEST-000571 similarity index 72% rename from packs-system/lf-vulnerabilities/MANIFEST-000567 rename to packs-system/lf-vulnerabilities/MANIFEST-000571 index e7105db..9fa51f8 100644 Binary files a/packs-system/lf-vulnerabilities/MANIFEST-000567 and b/packs-system/lf-vulnerabilities/MANIFEST-000571 differ diff --git a/templates/chat-message.hbs b/templates/chat-message.hbs index ca3e522..f7476f3 100644 --- a/templates/chat-message.hbs +++ b/templates/chat-message.hbs @@ -127,7 +127,7 @@ {{#if D30message}}
- {{D30message}} + {{D30message.description}}
{{/if}} diff --git a/templates/monster-combat.hbs b/templates/monster-combat.hbs index 11f2c16..39ea3ca 100644 --- a/templates/monster-combat.hbs +++ b/templates/monster-combat.hbs @@ -18,7 +18,16 @@
{{localize "LETHALFANTASY.Label.attacks"}} -
+
+ + +
+ + {{#if (eq system.attackMode "melee")}} +
{{#each system.attacks as |item key|}}
@@ -64,6 +73,54 @@
{{/each}}
+ {{else}} +
+ {{#each system.rangedAttacks as |item key|}} +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + + + + + + + + + + +
+ +
+ {{/each}} +
+ {{/if}}