diff --git a/lang/en.json b/lang/en.json index 6c00772..8fb0a9b 100644 --- a/lang/en.json +++ b/lang/en.json @@ -493,7 +493,7 @@ "messageLethargyKO": "Lethargy stil ongoing ...", "messageProgressionKO": "{name} can't attack this second.", "messageProgressionOKMonster": "{name} can attack this second with {weapon}.", - "messageProgressionKOMonster": "{name} can't attack this second." + "messageProgressionKOMonster": "{name} can't attack this second (dice result {roll})." }, "Opponent": { "FIELDS": {} diff --git a/module/applications/combat.mjs b/module/applications/combat.mjs index 2f87ff1..cc4caef 100644 --- a/module/applications/combat.mjs +++ b/module/applications/combat.mjs @@ -138,7 +138,6 @@ export class LethalFantasyCombat extends Combat { } async nextRound() { - console.log('NEXT ROUND') this.turnsDone = false let turn = this.turn === null ? null : 0; // Preserve the fact that it's no-one's turn currently. @@ -162,13 +161,12 @@ export class LethalFantasyCombat extends Combat { for (let c of this.combatants) { if ( nextRound >= c.initiative) { - c.update({ 'system.progressionCount': c.system.progressionCount + 1 }); let user = game.users.find(u => u.active && u.character && u.character.id === c.actor.id); if (user?.hasPlayerOwner) { game.socket.emit(`system.${SYSTEM.id}`, { type: "rollProgressionDice", progressionCount: c.system.progressionCount+1, actorId: c.actor.id, combatId: this.id, combatantId: c.id }); } else { user = game.users.find(u => u.active && u.isGM); - c.actor.system.rollProgressionDice(this.id, c.id, c.system.progressionCount+1); + c.actor.system.rollProgressionDice(this.id, c.id); } } } diff --git a/module/applications/sheets/monster-sheet.mjs b/module/applications/sheets/monster-sheet.mjs index b14dea4..311756d 100644 --- a/module/applications/sheets/monster-sheet.mjs +++ b/module/applications/sheets/monster-sheet.mjs @@ -166,71 +166,8 @@ export default class LethalFantasyMonsterSheet extends LethalFantasyActorSheet { async _onRoll(event, target) { if (this.isEditMode) return const rollType = event.target.dataset.rollType - let rollTarget let rollKey = event.target.dataset.rollKey - switch (rollType) { - case "monster-attack": - case "monster-defense": - case "monster-damage": - rollTarget = foundry.utils.duplicate(this.document.system.attacks[rollKey]) - rollTarget.rollKey = rollKey - break - case "monster-skill": - rollTarget = foundry.utils.duplicate(this.document.system.resists[rollKey]) - rollTarget.rollKey = rollKey - break - case "save": - rollTarget = foundry.utils.duplicate(this.document.system.saves[rollKey]) - rollTarget.rollKey = rollKey - rollTarget.rollDice = event.target.dataset?.rollDice - break - case "weapon-damage-small": - case "weapon-damage-medium": - case "weapon-attack": - case "weapon-defense": - let weapon = this.actor.items.find((i) => i.type === "weapon" && i.id === rollKey) - let skill - let skills = this.actor.items.filter((i) => i.type === "skill" && i.name.toLowerCase() === weapon.name.toLowerCase()) - if (skills.length > 0) { - skill = this.getBestWeaponClassSkill(skills, rollType, 1.0) - } else { - skills = this.actor.items.filter((i) => i.type === "skill" && i.name.toLowerCase().replace(" skill", "") === weapon.name.toLowerCase()) - if (skills.length > 0) { - skill = this.getBestWeaponClassSkill(skills, rollType, 1.0) - } else { - skills = this.actor.items.filter((i) => i.type === "skill" && i.system.weaponClass === weapon.system.weaponClass) - if (skills.length > 0) { - skill = this.getBestWeaponClassSkill(skills, rollType, 0.5) - } else { - skills = this.actor.items.filter((i) => i.type === "skill" && i.system.weaponClass.includes(SYSTEM.WEAPON_CATEGORIES[weapon.system.weaponClass])) - if (skills.length > 0) { - skill = this.getBestWeaponClassSkill(skills, rollType, 0.25) - } else { - ui.notifications.warn(game.i18n.localize("LETHALFANTASY.Notifications.skillNotFound")) - return - } - } - } - } - if (!weapon || !skill) { - console.error("Weapon or skill not found", weapon, skill) - ui.notifications.warn(game.i18n.localize("LETHALFANTASY.Notifications.skillNotFound")) - return - } - rollTarget = skill - rollTarget.weapon = weapon - rollTarget.weaponSkillModifier = skill.weaponSkillModifier - rollTarget.rollKey = rollKey - rollTarget.combat = foundry.utils.duplicate(this.actor.system.combat) - break - default: - ui.notifications.error(game.i18n.localize("LETHALFANTASY.Notifications.rollTypeNotFound") + String(rollType)) - break - } - - // In all cases - console.log(rollTarget) - await this.document.system.roll(rollType, rollTarget) + let rollDice = event.target.dataset?.rollDice || "0" + this.actor.system.prepareMonsterRoll(rollType, rollKey, rollDice) } - // #endregion } diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index b702b3e..91a2fa4 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -41,6 +41,7 @@ export default class LethalFantasyActor extends Actor { } } + /* *************************************************/ getBestWeaponClassSkill(skills, rollType, multiplier = 1.0) { let maxValue = 0 let goodSkill = skills[0] @@ -68,6 +69,7 @@ export default class LethalFantasyActor extends Actor { return goodSkill } + /* *************************************************/ async prepareRoll(rollType, rollKey, rollDice ) { console.log("Preparing roll", rollType, rollKey, rollDice) let rollTarget diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index 95ebafe..648f063 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -221,8 +221,8 @@ export default class LethalFantasyRoll extends Roll { hasChangeDice = false options.rollTarget.value = options.rollTarget.actorModifiers.levelSpellModifier + options.rollTarget.actorModifiers.intSpellModifier options.rollTarget.charModifier = options.rollTarget.actorModifiers.intSpellModifier - hasStaticModifier = true // options.rollType === "spell-power" - hasModifier = true //options.rollType !== "spell-attack" + hasStaticModifier = options.rollType === "spell-power" + hasModifier = options.rollType !== "spell-attack" options.rollTarget.staticModifier = options.rollTarget.actorLevel } else if (options.rollType === "miracle" || options.rollType === "miracle-attack" || options.rollType === "miracle-power") { @@ -234,8 +234,8 @@ export default class LethalFantasyRoll extends Roll { hasChangeDice = false options.rollTarget.value = options.rollTarget.actorModifiers.levelMiracleModifier + options.rollTarget.actorModifiers.chaMiracleModifier options.rollTarget.charModifier = options.rollTarget.actorModifiers.chaMiracleModifier - hasStaticModifier = true // options.rollType === "spell-power" - hasModifier = true // options.rollType !== "miracle-attack" + hasStaticModifier = options.rollType === "spell-power" + hasModifier = options.rollType !== "miracle-attack" options.rollTarget.staticModifier = options.rollTarget.actorLevel } else if (options.rollType === "shield-roll") { @@ -302,6 +302,7 @@ export default class LethalFantasyRoll extends Roll { rollType: options.rollType, rollTarget: options.rollTarget, rollName: options.rollName, + actorName: options.actorName, rollModes, hasModifier, hasFavor, @@ -373,7 +374,7 @@ export default class LethalFantasyRoll extends Roll { if (hasStaticModifier) { modifierFormula += ` + ${options.rollTarget.staticModifier}` } - modifierFormula += ` + ${options.rollTarget.charModifier}` + // modifierFormula += ` + ${options.rollTarget.charModifier}` let sign = fullModifier < 0 ? "-" : "+" if (hasExplode) { titleFormula = `${dice}E ${sign} ${modifierFormula}` @@ -543,6 +544,7 @@ export default class LethalFantasyRoll extends Roll { return rollBase } + /* ***********************************************************/ static async promptInitiative(options = {}) { const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) const fieldRollMode = new foundry.data.fields.StringField({ @@ -603,6 +605,7 @@ export default class LethalFantasyRoll extends Roll { } + /* ***********************************************************/ static async promptCombatAction(options = {}) { const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) @@ -641,22 +644,22 @@ export default class LethalFantasyRoll extends Roll { }) } else if (currentAction.type === "spell" || currentAction.type === "miracle") { let label = "" - if ( currentAction.spellStatus === "castingTime") { + if (currentAction.spellStatus === "castingTime") { label = "Wait casting time" } - if ( currentAction.spellStatus === "toBeCasted") { + if (currentAction.spellStatus === "toBeCasted") { label = "Cast spell/miracle" } - if ( currentAction.spellStatus === "lethargy") { + if (currentAction.spellStatus === "lethargy") { label = "Roll lethargy dice" } buttons.push({ - action: "roll", - label: label, - callback: (event, button, dialog) => { - return "rollLethargyDice" - }, - }) + action: "roll", + label: label, + callback: (event, button, dialog) => { + return "rollLethargyDice" + }, + }) } } else { buttons.push({ @@ -731,8 +734,8 @@ export default class LethalFantasyRoll extends Roll { if (currentAction) { if (rollContext === "rollLethargyDice") { - if ( currentAction.spellStatus === "castingTime") { - if ( currentAction.castingTime < currentAction.system.castingTime) { + if (currentAction.spellStatus === "castingTime") { + if (currentAction.castingTime < currentAction.system.castingTime) { let message = `Casting time : ${currentAction.name}, count : ${currentAction.castingTime}/${currentAction.system.castingTime}` ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: combatant.actor }) }) currentAction.castingTime += 1 @@ -747,8 +750,8 @@ export default class LethalFantasyRoll extends Roll { return } } - if ( currentAction.spellStatus === "toBeCasted") { - combatant.actor.prepareRoll( (currentAction.type === "spell") ? "spell-attack" : "miracle-attack" , currentAction._id) + if (currentAction.spellStatus === "toBeCasted") { + combatant.actor.prepareRoll((currentAction.type === "spell") ? "spell-attack" : "miracle-attack", currentAction._id) if (currentAction.type === "spell") { currentAction.spellStatus = "lethargy" await combatant.setFlag(SYSTEM.id, "currentAction", foundry.utils.duplicate(currentAction)) @@ -758,7 +761,7 @@ export default class LethalFantasyRoll extends Roll { } return } - if ( currentAction.spellStatus === "lethargy") { + if (currentAction.spellStatus === "lethargy") { // Roll lethargy dice let dice = LethalFantasyUtils.getLethargyDice(currentAction.system.level) let roll = new Roll(dice) @@ -772,7 +775,7 @@ export default class LethalFantasyRoll extends Roll { // Update the combatant progression count await combatant.setFlag(SYSTEM.id, "currentAction", "") // Display the action selection window again - combatant.actor.system.rollProgressionDice(options.combatId, options.combatantId ) + combatant.actor.system.rollProgressionDice(options.combatId, options.combatantId) } else { // Notify that the player cannot act now with a chat message currentAction.progressionCount += 1 @@ -839,7 +842,7 @@ export default class LethalFantasyRoll extends Roll { } } - + /* ***********************************************************/ static async promptProgressionDice(options = {}) { const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) @@ -1011,6 +1014,7 @@ export default class LethalFantasyRoll extends Roll { } } + /* ***********************************************************/ static async promptRangedDefense(rollTarget) { const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) diff --git a/module/models/monster.mjs b/module/models/monster.mjs index a3e5cd8..6b9b24e 100644 --- a/module/models/monster.mjs +++ b/module/models/monster.mjs @@ -76,7 +76,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel } return new fields.SchemaField(schema, { label }) } - // Add 4 attackFields in an attack schema + // Add 4 attackFields in an attack schema schema.attacks = new fields.SchemaField({ attack1: attackField("1"), attack2: attackField("2"), @@ -145,6 +145,73 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel await roll.toMessage({}, { rollMode: roll.options.rollMode }) } + async prepareMonsterRoll(rollType, rollKey, rollDice) { + let rollTarget + switch (rollType) { + case "monster-attack": + case "monster-defense": + case "monster-damage": + rollTarget = foundry.utils.duplicate(this.attacks[rollKey]) + rollTarget.rollKey = rollKey + break + case "monster-skill": + rollTarget = foundry.utils.duplicate(this.resists[rollKey]) + rollTarget.rollKey = rollKey + break + case "save": + rollTarget = foundry.utils.duplicate(this.saves[rollKey]) + rollTarget.rollKey = rollKey + rollTarget.rollDice = rollDice + break + case "weapon-damage-small": + case "weapon-damage-medium": + case "weapon-attack": + case "weapon-defense": + let weapon = this.actor.items.find((i) => i.type === "weapon" && i.id === rollKey) + let skill + let skills = this.actor.items.filter((i) => i.type === "skill" && i.name.toLowerCase() === weapon.name.toLowerCase()) + if (skills.length > 0) { + skill = this.getBestWeaponClassSkill(skills, rollType, 1.0) + } else { + skills = this.actor.items.filter((i) => i.type === "skill" && i.name.toLowerCase().replace(" skill", "") === weapon.name.toLowerCase()) + if (skills.length > 0) { + skill = this.getBestWeaponClassSkill(skills, rollType, 1.0) + } else { + skills = this.actor.items.filter((i) => i.type === "skill" && i.system.weaponClass === weapon.system.weaponClass) + if (skills.length > 0) { + skill = this.getBestWeaponClassSkill(skills, rollType, 0.5) + } else { + skills = this.actor.items.filter((i) => i.type === "skill" && i.system.weaponClass.includes(SYSTEM.WEAPON_CATEGORIES[weapon.system.weaponClass])) + if (skills.length > 0) { + skill = this.getBestWeaponClassSkill(skills, rollType, 0.25) + } else { + ui.notifications.warn(game.i18n.localize("LETHALFANTASY.Notifications.skillNotFound")) + return + } + } + } + } + if (!weapon || !skill) { + console.error("Weapon or skill not found", weapon, skill) + ui.notifications.warn(game.i18n.localize("LETHALFANTASY.Notifications.skillNotFound")) + return + } + rollTarget = skill + rollTarget.weapon = weapon + rollTarget.weaponSkillModifier = skill.weaponSkillModifier + rollTarget.rollKey = rollKey + rollTarget.combat = foundry.utils.duplicate(this.combat) + break + default: + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Notifications.rollTypeNotFound") + String(rollType)) + break + } + + // In all cases + console.log(rollTarget) + await this.roll(rollType, rollTarget) + } + async rollInitiative(combatId = undefined, combatantId = undefined) { const hasTarget = false @@ -164,7 +231,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel await roll.toMessage({}, { rollMode: roll.options.rollMode }) } - async rollProgressionDice(combatId, combatantId, rollProgressionCount) { + async rollProgressionDice(combatId, combatantId) { const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) const fieldRollMode = new foundry.data.fields.StringField({ @@ -175,7 +242,8 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel let roll = new Roll("1D8") await roll.evaluate() - let max = rollProgressionCount + let combatant = game.combats.get(combatId)?.combatants?.get(combatantId) + let msg = await roll.toMessage({ flavor: `Progression Roll for ${this.parent.name}` } ) if (game?.dice3d) { await game.dice3d.waitFor3DAnimationByMessageID(msg.id) @@ -188,14 +256,14 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel hasAttack = true let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionOKMonster", { isMonster: true, name: this.parent.name, weapon: attack.name, roll: roll.total }) ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: this.parent }) }) + this.prepareMonsterRoll("monster-attack", key) } } if (!hasAttack) { let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionKOMonster", { isMonster: true, name: this.parent.name, roll: roll.total }) ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: this.parent }) }) - } + } } } - diff --git a/packs-system/lf-equipment/000221.log b/packs-system/lf-equipment/000225.log similarity index 100% rename from packs-system/lf-equipment/000221.log rename to packs-system/lf-equipment/000225.log diff --git a/packs-system/lf-equipment/CURRENT b/packs-system/lf-equipment/CURRENT index 7d68d99..449897e 100644 --- a/packs-system/lf-equipment/CURRENT +++ b/packs-system/lf-equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000219 +MANIFEST-000223 diff --git a/packs-system/lf-equipment/LOG b/packs-system/lf-equipment/LOG index abcf656..107f827 100644 --- a/packs-system/lf-equipment/LOG +++ b/packs-system/lf-equipment/LOG @@ -1,8 +1,8 @@ -2025/04/21-17:09:30.765172 7f5dceffd6c0 Recovering log #217 -2025/04/21-17:09:30.774995 7f5dceffd6c0 Delete type=3 #215 -2025/04/21-17:09:30.775106 7f5dceffd6c0 Delete type=0 #217 -2025/04/21-17:40:19.481504 7f5dcd3ff6c0 Level-0 table #222: started -2025/04/21-17:40:19.481549 7f5dcd3ff6c0 Level-0 table #222: 0 bytes OK -2025/04/21-17:40:19.518709 7f5dcd3ff6c0 Delete type=0 #220 -2025/04/21-17:40:19.572101 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) -2025/04/21-17:40:19.634424 7f5dcd3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) +2025/04/22-07:53:33.108355 7f5dcf7fe6c0 Recovering log #221 +2025/04/22-07:53:33.118876 7f5dcf7fe6c0 Delete type=3 #219 +2025/04/22-07:53:33.119001 7f5dcf7fe6c0 Delete type=0 #221 +2025/04/22-08:41:45.602694 7f5dcd3ff6c0 Level-0 table #226: started +2025/04/22-08:41:45.602769 7f5dcd3ff6c0 Level-0 table #226: 0 bytes OK +2025/04/22-08:41:45.608936 7f5dcd3ff6c0 Delete type=0 #224 +2025/04/22-08:41:45.629902 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) +2025/04/22-08:41:45.629976 7f5dcd3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-equipment/LOG.old b/packs-system/lf-equipment/LOG.old index f2a64fe..abcf656 100644 --- a/packs-system/lf-equipment/LOG.old +++ b/packs-system/lf-equipment/LOG.old @@ -1,8 +1,8 @@ -2025/04/17-17:21:12.564483 7f5c837fe6c0 Recovering log #213 -2025/04/17-17:21:12.575284 7f5c837fe6c0 Delete type=3 #211 -2025/04/17-17:21:12.575342 7f5c837fe6c0 Delete type=0 #213 -2025/04/17-17:34:42.493086 7f5c81bff6c0 Level-0 table #218: started -2025/04/17-17:34:42.493111 7f5c81bff6c0 Level-0 table #218: 0 bytes OK -2025/04/17-17:34:42.499036 7f5c81bff6c0 Delete type=0 #216 -2025/04/17-17:34:42.518959 7f5c81bff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) -2025/04/17-17:34:42.519032 7f5c81bff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) +2025/04/21-17:09:30.765172 7f5dceffd6c0 Recovering log #217 +2025/04/21-17:09:30.774995 7f5dceffd6c0 Delete type=3 #215 +2025/04/21-17:09:30.775106 7f5dceffd6c0 Delete type=0 #217 +2025/04/21-17:40:19.481504 7f5dcd3ff6c0 Level-0 table #222: started +2025/04/21-17:40:19.481549 7f5dcd3ff6c0 Level-0 table #222: 0 bytes OK +2025/04/21-17:40:19.518709 7f5dcd3ff6c0 Delete type=0 #220 +2025/04/21-17:40:19.572101 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) +2025/04/21-17:40:19.634424 7f5dcd3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-equipment/MANIFEST-000219 b/packs-system/lf-equipment/MANIFEST-000223 similarity index 72% rename from packs-system/lf-equipment/MANIFEST-000219 rename to packs-system/lf-equipment/MANIFEST-000223 index 7c55db2..f686d8c 100644 Binary files a/packs-system/lf-equipment/MANIFEST-000219 and b/packs-system/lf-equipment/MANIFEST-000223 differ diff --git a/packs-system/lf-gifts/000220.log b/packs-system/lf-gifts/000224.log similarity index 100% rename from packs-system/lf-gifts/000220.log rename to packs-system/lf-gifts/000224.log diff --git a/packs-system/lf-gifts/CURRENT b/packs-system/lf-gifts/CURRENT index e00ef3d..a8d01b2 100644 --- a/packs-system/lf-gifts/CURRENT +++ b/packs-system/lf-gifts/CURRENT @@ -1 +1 @@ -MANIFEST-000218 +MANIFEST-000222 diff --git a/packs-system/lf-gifts/LOG b/packs-system/lf-gifts/LOG index a0c2de4..f718874 100644 --- a/packs-system/lf-gifts/LOG +++ b/packs-system/lf-gifts/LOG @@ -1,8 +1,8 @@ -2025/04/21-17:09:30.778463 7f5dcdffb6c0 Recovering log #216 -2025/04/21-17:09:30.789411 7f5dcdffb6c0 Delete type=3 #214 -2025/04/21-17:09:30.789468 7f5dcdffb6c0 Delete type=0 #216 -2025/04/21-17:40:19.406720 7f5dcd3ff6c0 Level-0 table #221: started -2025/04/21-17:40:19.406774 7f5dcd3ff6c0 Level-0 table #221: 0 bytes OK -2025/04/21-17:40:19.446347 7f5dcd3ff6c0 Delete type=0 #219 -2025/04/21-17:40:19.572073 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) -2025/04/21-17:40:19.572119 7f5dcd3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/04/22-07:53:33.123478 7f5dceffd6c0 Recovering log #220 +2025/04/22-07:53:33.137098 7f5dceffd6c0 Delete type=3 #218 +2025/04/22-07:53:33.137188 7f5dceffd6c0 Delete type=0 #220 +2025/04/22-08:41:45.623210 7f5dcd3ff6c0 Level-0 table #225: started +2025/04/22-08:41:45.623299 7f5dcd3ff6c0 Level-0 table #225: 0 bytes OK +2025/04/22-08:41:45.629704 7f5dcd3ff6c0 Delete type=0 #223 +2025/04/22-08:41:45.629962 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/04/22-08:41:45.630021 7f5dcd3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-gifts/LOG.old b/packs-system/lf-gifts/LOG.old index a042dc7..a0c2de4 100644 --- a/packs-system/lf-gifts/LOG.old +++ b/packs-system/lf-gifts/LOG.old @@ -1,8 +1,8 @@ -2025/04/17-17:21:12.578876 7f5c82ffd6c0 Recovering log #212 -2025/04/17-17:21:12.589060 7f5c82ffd6c0 Delete type=3 #210 -2025/04/17-17:21:12.589120 7f5c82ffd6c0 Delete type=0 #212 -2025/04/17-17:34:42.486913 7f5c81bff6c0 Level-0 table #217: started -2025/04/17-17:34:42.486964 7f5c81bff6c0 Level-0 table #217: 0 bytes OK -2025/04/17-17:34:42.492952 7f5c81bff6c0 Delete type=0 #215 -2025/04/17-17:34:42.518936 7f5c81bff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) -2025/04/17-17:34:42.519016 7f5c81bff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/04/21-17:09:30.778463 7f5dcdffb6c0 Recovering log #216 +2025/04/21-17:09:30.789411 7f5dcdffb6c0 Delete type=3 #214 +2025/04/21-17:09:30.789468 7f5dcdffb6c0 Delete type=0 #216 +2025/04/21-17:40:19.406720 7f5dcd3ff6c0 Level-0 table #221: started +2025/04/21-17:40:19.406774 7f5dcd3ff6c0 Level-0 table #221: 0 bytes OK +2025/04/21-17:40:19.446347 7f5dcd3ff6c0 Delete type=0 #219 +2025/04/21-17:40:19.572073 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/04/21-17:40:19.572119 7f5dcd3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-gifts/MANIFEST-000218 b/packs-system/lf-gifts/MANIFEST-000218 deleted file mode 100644 index 724fd6e..0000000 Binary files a/packs-system/lf-gifts/MANIFEST-000218 and /dev/null differ diff --git a/packs-system/lf-gifts/MANIFEST-000222 b/packs-system/lf-gifts/MANIFEST-000222 new file mode 100644 index 0000000..54abe03 Binary files /dev/null and b/packs-system/lf-gifts/MANIFEST-000222 differ diff --git a/packs-system/lf-skills/000220.log b/packs-system/lf-skills/000224.log similarity index 100% rename from packs-system/lf-skills/000220.log rename to packs-system/lf-skills/000224.log diff --git a/packs-system/lf-skills/CURRENT b/packs-system/lf-skills/CURRENT index e00ef3d..a8d01b2 100644 --- a/packs-system/lf-skills/CURRENT +++ b/packs-system/lf-skills/CURRENT @@ -1 +1 @@ -MANIFEST-000218 +MANIFEST-000222 diff --git a/packs-system/lf-skills/LOG b/packs-system/lf-skills/LOG index 0f07f91..7ea5322 100644 --- a/packs-system/lf-skills/LOG +++ b/packs-system/lf-skills/LOG @@ -1,8 +1,8 @@ -2025/04/21-17:09:30.749204 7f5dce7fc6c0 Recovering log #216 -2025/04/21-17:09:30.759893 7f5dce7fc6c0 Delete type=3 #214 -2025/04/21-17:09:30.760044 7f5dce7fc6c0 Delete type=0 #216 -2025/04/21-17:40:19.292988 7f5dcd3ff6c0 Level-0 table #221: started -2025/04/21-17:40:19.293026 7f5dcd3ff6c0 Level-0 table #221: 0 bytes OK -2025/04/21-17:40:19.329102 7f5dcd3ff6c0 Delete type=0 #219 -2025/04/21-17:40:19.406586 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2025/04/21-17:40:19.406620 7f5dcd3ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/04/22-07:53:33.091484 7f5dce7fc6c0 Recovering log #220 +2025/04/22-07:53:33.102983 7f5dce7fc6c0 Delete type=3 #218 +2025/04/22-07:53:33.103111 7f5dce7fc6c0 Delete type=0 #220 +2025/04/22-08:41:45.609074 7f5dcd3ff6c0 Level-0 table #225: started +2025/04/22-08:41:45.609111 7f5dcd3ff6c0 Level-0 table #225: 0 bytes OK +2025/04/22-08:41:45.615192 7f5dcd3ff6c0 Delete type=0 #223 +2025/04/22-08:41:45.629926 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/04/22-08:41:45.629989 7f5dcd3ff6c0 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 58658fd..0f07f91 100644 --- a/packs-system/lf-skills/LOG.old +++ b/packs-system/lf-skills/LOG.old @@ -1,8 +1,8 @@ -2025/04/17-17:21:12.549824 7f5c827fc6c0 Recovering log #212 -2025/04/17-17:21:12.560061 7f5c827fc6c0 Delete type=3 #210 -2025/04/17-17:21:12.560203 7f5c827fc6c0 Delete type=0 #212 -2025/04/17-17:34:42.505447 7f5c81bff6c0 Level-0 table #217: started -2025/04/17-17:34:42.505471 7f5c81bff6c0 Level-0 table #217: 0 bytes OK -2025/04/17-17:34:42.518767 7f5c81bff6c0 Delete type=0 #215 -2025/04/17-17:34:42.518998 7f5c81bff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2025/04/17-17:34:42.519066 7f5c81bff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/04/21-17:09:30.749204 7f5dce7fc6c0 Recovering log #216 +2025/04/21-17:09:30.759893 7f5dce7fc6c0 Delete type=3 #214 +2025/04/21-17:09:30.760044 7f5dce7fc6c0 Delete type=0 #216 +2025/04/21-17:40:19.292988 7f5dcd3ff6c0 Level-0 table #221: started +2025/04/21-17:40:19.293026 7f5dcd3ff6c0 Level-0 table #221: 0 bytes OK +2025/04/21-17:40:19.329102 7f5dcd3ff6c0 Delete type=0 #219 +2025/04/21-17:40:19.406586 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/04/21-17:40:19.406620 7f5dcd3ff6c0 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-000218 b/packs-system/lf-skills/MANIFEST-000218 deleted file mode 100644 index 75378fd..0000000 Binary files a/packs-system/lf-skills/MANIFEST-000218 and /dev/null differ diff --git a/packs-system/lf-skills/MANIFEST-000222 b/packs-system/lf-skills/MANIFEST-000222 new file mode 100644 index 0000000..037b884 Binary files /dev/null and b/packs-system/lf-skills/MANIFEST-000222 differ diff --git a/packs-system/lf-vulnerabilities/000220.log b/packs-system/lf-vulnerabilities/000224.log similarity index 100% rename from packs-system/lf-vulnerabilities/000220.log rename to packs-system/lf-vulnerabilities/000224.log diff --git a/packs-system/lf-vulnerabilities/CURRENT b/packs-system/lf-vulnerabilities/CURRENT index e00ef3d..a8d01b2 100644 --- a/packs-system/lf-vulnerabilities/CURRENT +++ b/packs-system/lf-vulnerabilities/CURRENT @@ -1 +1 @@ -MANIFEST-000218 +MANIFEST-000222 diff --git a/packs-system/lf-vulnerabilities/LOG b/packs-system/lf-vulnerabilities/LOG index 8b413c8..ab2a8f1 100644 --- a/packs-system/lf-vulnerabilities/LOG +++ b/packs-system/lf-vulnerabilities/LOG @@ -1,8 +1,8 @@ -2025/04/21-17:09:30.792733 7f5dcf7fe6c0 Recovering log #216 -2025/04/21-17:09:30.802787 7f5dcf7fe6c0 Delete type=3 #214 -2025/04/21-17:09:30.802873 7f5dcf7fe6c0 Delete type=0 #216 -2025/04/21-17:40:19.329256 7f5dcd3ff6c0 Level-0 table #221: started -2025/04/21-17:40:19.329290 7f5dcd3ff6c0 Level-0 table #221: 0 bytes OK -2025/04/21-17:40:19.360850 7f5dcd3ff6c0 Delete type=0 #219 -2025/04/21-17:40:19.406600 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2025/04/21-17:40:19.406634 7f5dcd3ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/04/22-07:53:33.143404 7f5dcdffb6c0 Recovering log #220 +2025/04/22-07:53:33.157266 7f5dcdffb6c0 Delete type=3 #218 +2025/04/22-07:53:33.157351 7f5dcdffb6c0 Delete type=0 #220 +2025/04/22-08:41:45.615323 7f5dcd3ff6c0 Level-0 table #225: started +2025/04/22-08:41:45.615360 7f5dcd3ff6c0 Level-0 table #225: 0 bytes OK +2025/04/22-08:41:45.622976 7f5dcd3ff6c0 Delete type=0 #223 +2025/04/22-08:41:45.629946 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/04/22-08:41:45.630005 7f5dcd3ff6c0 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 6493586..8b413c8 100644 --- a/packs-system/lf-vulnerabilities/LOG.old +++ b/packs-system/lf-vulnerabilities/LOG.old @@ -1,8 +1,8 @@ -2025/04/17-17:21:12.592168 7f5c83fff6c0 Recovering log #212 -2025/04/17-17:21:12.602692 7f5c83fff6c0 Delete type=3 #210 -2025/04/17-17:21:12.602743 7f5c83fff6c0 Delete type=0 #212 -2025/04/17-17:34:42.499156 7f5c81bff6c0 Level-0 table #217: started -2025/04/17-17:34:42.499188 7f5c81bff6c0 Level-0 table #217: 0 bytes OK -2025/04/17-17:34:42.505329 7f5c81bff6c0 Delete type=0 #215 -2025/04/17-17:34:42.518977 7f5c81bff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2025/04/17-17:34:42.519047 7f5c81bff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/04/21-17:09:30.792733 7f5dcf7fe6c0 Recovering log #216 +2025/04/21-17:09:30.802787 7f5dcf7fe6c0 Delete type=3 #214 +2025/04/21-17:09:30.802873 7f5dcf7fe6c0 Delete type=0 #216 +2025/04/21-17:40:19.329256 7f5dcd3ff6c0 Level-0 table #221: started +2025/04/21-17:40:19.329290 7f5dcd3ff6c0 Level-0 table #221: 0 bytes OK +2025/04/21-17:40:19.360850 7f5dcd3ff6c0 Delete type=0 #219 +2025/04/21-17:40:19.406600 7f5dcd3ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/04/21-17:40:19.406634 7f5dcd3ff6c0 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-000218 b/packs-system/lf-vulnerabilities/MANIFEST-000222 similarity index 71% rename from packs-system/lf-vulnerabilities/MANIFEST-000218 rename to packs-system/lf-vulnerabilities/MANIFEST-000222 index e8ba5fa..fc4f0fa 100644 Binary files a/packs-system/lf-vulnerabilities/MANIFEST-000218 and b/packs-system/lf-vulnerabilities/MANIFEST-000222 differ diff --git a/templates/combat-action-dialog.hbs b/templates/combat-action-dialog.hbs index 0efb03c..0516daf 100644 --- a/templates/combat-action-dialog.hbs +++ b/templates/combat-action-dialog.hbs @@ -1,7 +1,7 @@
- {{localize "LETHALFANTASY.Label.combatAction"}} + {{localize "LETHALFANTASY.Label.combatAction"}} for {{actorName}} {{#if currentAction}} diff --git a/templates/roll-dialog.hbs b/templates/roll-dialog.hbs index e0a4bf1..b36ca6c 100644 --- a/templates/roll-dialog.hbs +++ b/templates/roll-dialog.hbs @@ -1,7 +1,7 @@
- {{localize (concat "LETHALFANTASY.Label." rollType)}} + {{localize (concat "LETHALFANTASY.Label." rollType)}} - {{actorName}} {{#if (match rollType "attack")}}
Attack roll !
@@ -19,7 +19,7 @@
{{localize "LETHALFANTASY.Label.baseModifier"}} : {{rollTarget.charModifier}}
{{localize "LETHALFANTASY.Label.weapon"}} : {{rollTarget.weapon.name}}
{{localize "LETHALFANTASY.Label.skill"}} : {{rollTarget.name}}
-
{{localize "LETHALFANTASY.Label.skillBonus"}} : {{rollTarget.weaponSkillModifier}}
+
{{localize "LETHALFANTASY.Label.skillBonus"}} : {{rollTarget.weaponSkillModifier}}
{{/if}} {{#if (match rollType "attack")}} @@ -29,16 +29,16 @@ {{/if}} {{#if (match rollType "defense")}}
Add Granted Defense Dice - +
{{/if}} {{#if (match rollType "damage")}}
Add Granted Damage Dice - +
{{/if}} - {{#if rollTarget.staticModifier}} + {{#if rollTarget.staticModifier}}
Static modifier : +{{rollTarget.staticModifier}}
{{/if}}