diff --git a/css/fvtt-lethal-fantasy.css b/css/fvtt-lethal-fantasy.css index a3f77e0..da5516d 100644 --- a/css/fvtt-lethal-fantasy.css +++ b/css/fvtt-lethal-fantasy.css @@ -2634,6 +2634,21 @@ i.lethalfantasy { max-width: 8rem; margin-left: 1rem; } +.dialog-warning { + margin: 0.4rem 0.2rem 0.2rem; + padding: 0.35rem 0.5rem; + border-left: 3px solid #c8941a; + background: rgba(200, 148, 26, 0.12); + border-radius: 3px; + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 0.9); + color: #7a5400; + line-height: 1.4; +} +.dialog-warning i { + color: #c8941a; + margin-right: 0.4rem; +} .lethalfantasy.dice-roll, .fvtt-lethal-fantasy.dice-roll, .message.lethalfantasy.dice-roll, diff --git a/lang/en.json b/lang/en.json index dae5123..7aa69bc 100644 --- a/lang/en.json +++ b/lang/en.json @@ -507,7 +507,40 @@ "weapon-damage-small": "Weapon damage small", "combatProgressionStart": "Combat start threshold", "miracle": "Miracle", - "titleStandard": "Standard Roll" + "titleStandard": "Standard Roll", + "privateRoll": "Private Roll", + "current": "Current", + "max": "Max", + "speed": "Speed", + "bonuses": "Bonuses", + "handToHandAttacks": "Hand To Hand Attacks", + "beyondSkill": "Beyond Skill", + "letItFly": "Let It Fly!", + "class": "Class", + "mortal": "Mortal", + "alignment": "Alignment", + "age": "Age", + "height": "Height", + "weight": "Weight", + "eyes": "Eyes", + "hair": "Hair", + "magicUser": "Magic User", + "clericUser": "Cleric User", + "lastHdRoll": "Last HD roll", + "naturalDR": "Natural DR", + "magicalDR": "Magical DR", + "saveBonus": "Save bonus (1/5 levels)", + "spellBonus": "Spell bonus (1/5 levels)", + "miracleBonus": "Miracle bonus (1/5 levels)", + "devPointsTotal": "Dev. Points (Total)", + "devPointsRem": "Dev. Points (Rem.)", + "length": "Length", + "vision": "Vision", + "damageType": "Damage Type", + "components": "Components", + "coverRanged": "Cover vs ranged attacks", + "standing": "Standing", + "crouching": "Crouching" }, "Miracle": { "FIELDS": { @@ -563,6 +596,15 @@ }, "savingThrow": { "label": "Saving throw" + }, + "damageDiceOverpowered": { + "label": "Overpowered Damage Dice" + }, + "damageDiceOverpowered2": { + "label": "Overpowered 2 Damage Dice" + }, + "damageDice": { + "label": "Damage Dice" } } }, @@ -684,7 +726,8 @@ "label": "Min" } } - } + }, + "autoDestruction": "Auto-Destruction" }, "Skill": { "Category": { @@ -809,6 +852,12 @@ }, "damageDice": { "label": "Damage dice" + }, + "damageDiceOverpowered": { + "label": "Overpowered Damage Dice" + }, + "damageDiceOverpowered2": { + "label": "Overpowered 2 Damage Dice" } }, "Range": { @@ -843,7 +892,9 @@ } } }, - "Warning": {}, + "Warning": { + "defenseShieldOrder": "To avoid a hit without using the shield, roll Grit or Luck first — then roll the shield." + }, "Weapon": { "FIELDS": { "isAgile": { @@ -989,7 +1040,16 @@ "progressionCount": "Progression count:" }, "Combat": { - "RollMonsters": "Roll Monsters" + "RollMonsters": "Roll Monsters", + "monstersNotRolledTitle": "Monsters Not Rolled", + "monstersNotRolledMsg": "Monsters have not rolled this second. Proceed anyway?", + "proceedYes": "Proceed", + "proceedNo": "Cancel", + "spellDRDialogTitle": "Spell Damage — Apply DR?", + "spellDRDialogMsg": "Enter a damage reduction value to subtract, or click No DR to apply full damage.", + "spellDRLabel": "DR:", + "spellNoDR": "No DR", + "spellApplyDR": "Apply DR" }, "EquipmentCategories": { "ClassKit": "Class Kit", diff --git a/lethal-fantasy.mjs b/lethal-fantasy.mjs index 40994bf..9e08ba2 100644 --- a/lethal-fantasy.mjs +++ b/lethal-fantasy.mjs @@ -339,22 +339,48 @@ Hooks.on("renderChatMessageHTML", (message, html, data) => { return } - // Pour les sorts, rouler les dés de dégâts avec option bypass DR + // Pour les sorts, rouler les dés de dégâts avec DR manuelle optionnelle if (damageType === "spell" && damageFormula) { - const bypassArmor = await foundry.applications.api.DialogV2.confirm({ - window: { title: "Spell Damage" }, + const manualDR = await foundry.applications.api.DialogV2.wait({ + window: { title: game.i18n.localize("LETHALFANTASY.Combat.spellDRDialogTitle") }, classes: ["lethalfantasy"], - content: "

Does this spell's damage bypass armor DR?

", - yes: { label: "Yes (ignore armor)", icon: "fa-solid fa-wand-magic-sparkles" }, - no: { label: "No (apply armor DR)", icon: "fa-solid fa-shield" } + 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, dialog) => Number(dialog.querySelector("[name='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: damageFormula, isDamage: true, rollData: { isDamage: true }, - bypassArmor: bypassArmor ?? false, + manualDR: manualDR, defenderId, defenderTokenId, actorId: actor.id, @@ -922,12 +948,14 @@ Hooks.on("createChatMessage", async (message) => { const damageTotal = message.rolls[0]?.options?.rollTotal || message.rolls[0]?.total || 0 const weaponName = message.rolls[0]?.options?.rollName || "Unknown Weapon" const attackerName = message.rolls[0]?.options?.actorName || "Unknown Attacker" + const rollType = message.rolls[0]?.options?.rollType - // Calculer les DR - const bypassArmor = message.rolls[0]?.options?.bypassArmor || false - const armorDR = bypassArmor ? 0 : (defender.computeDamageReduction() || 0) + // Calculer les DR — les sorts utilisent une DR manuelle saisie par l'utilisateur + const isSpellDamage = rollType === "spell-damage" + const manualDR = message.rolls[0]?.options?.manualDR ?? 0 const extraShieldDr = Number(message.rolls[0]?.options?.extraShieldDr) || 0 - const totalDR = armorDR + extraShieldDr + const armorDR = isSpellDamage ? manualDR : (defender.computeDamageReduction() || 0) + const totalDR = isSpellDamage ? manualDR : armorDR + extraShieldDr const finalDamage = Math.max(0, damageTotal - totalDR) // Prefer the token ID stored in roll options (set at attack time when the exact token is known). @@ -960,7 +988,9 @@ Hooks.on("createChatMessage", async (message) => { { targetName: defender.name, damage: finalDamage, - drText: bypassArmor ? "Armor DR bypassed (spell)" : (totalDR > 0 ? `Armor DR: ${armorDR}${extraShieldDr > 0 ? ` + Shield DR: ${extraShieldDr}` : ""}` : ""), + drText: isSpellDamage + ? (manualDR > 0 ? `Spell DR: ${manualDR}` : "No DR applied") + : (totalDR > 0 ? `Armor DR: ${armorDR}${extraShieldDr > 0 ? ` + Shield DR: ${extraShieldDr}` : ""}` : ""), weaponName: weaponName, attackerName: attackerName, rawDamage: damageTotal diff --git a/module/applications/combat.mjs b/module/applications/combat.mjs index 3ebd467..632088f 100644 --- a/module/applications/combat.mjs +++ b/module/applications/combat.mjs @@ -119,18 +119,12 @@ export class LethalFantasyCombat extends Combat { } async rollInitiative(ids, options) { - console.log("%%%%%%%%% Roll Initiative", ids, options); - ids = typeof ids === "string" ? [ids] : ids; - let messages = []; - let rollMode = game.settings.get("core", "rollMode"); - let updates = []; for (let cId of ids) { const c = this.combatants.get(cId); const playerOwner = game.users.find(u => u.active && !u.isGM && u.character?.id === c.actor.id); if (game.user.isGM && playerOwner) { - console.log("Rolling initiative for", c.actor.name); game.socket.emit(`system.${SYSTEM.id}`, { type: "rollInitiative", userId: playerOwner.id, actorId: c.actor.id, combatId: this.id, combatantId: c.id }); } else { await c.actor.system.rollInitiative(this.id, c.id); @@ -165,6 +159,8 @@ export class LethalFantasyCombat extends Combat { } else { ui.notifications.info(`No monsters act yet — earliest monster initiative is ${earliest} (current round: ${currentRound}).`); } + } else { + this._monsterProgressionRolledRound = currentRound; } } @@ -189,15 +185,12 @@ export class LethalFantasyCombat extends Combat { } async nextTurn() { - console.log("NEXT TURN"); - let turn = this.turn ?? -1; let skipDefeated = this.settings.skipDefeated; // Determine the next turn number let next = null; for (let [i, t] of this.turns.entries()) { - console.log("Turn", t); if (i <= turn) continue; if (skipDefeated && t.isDefeated) continue; next = i; @@ -221,7 +214,6 @@ export class LethalFantasyCombat extends Combat { this.turnsDone = false let turn = this.turn === null ? null : 0; // Preserve the fact that it's no-one's turn currently. - console.log("ROUND", this); let advanceTime = Math.max(this.turns.length - this.turn, 0) * CONFIG.time.turnTime; advanceTime += CONFIG.time.roundTime; @@ -239,6 +231,21 @@ export class LethalFantasyCombat extends Combat { return this; } + // Warn if eligible monsters have not rolled progression dice this round + const eligibleMonsters = this.combatants.filter( + c => c.actor?.type === "monster" && !c.isDefeated && c.initiative !== null && this.round >= c.initiative + ); + if (eligibleMonsters.length > 0 && this._monsterProgressionRolledRound !== this.round) { + const proceed = await foundry.applications.api.DialogV2.confirm({ + window: { title: game.i18n.localize("LETHALFANTASY.Combat.monstersNotRolledTitle") }, + content: `

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

`, + yes: { label: game.i18n.localize("LETHALFANTASY.Combat.proceedYes") }, + no: { label: game.i18n.localize("LETHALFANTASY.Combat.proceedNo") }, + rejectClose: false, + }); + if (!proceed) return this; + } + for (let c of this.combatants) { if (nextRound >= c.initiative) { if (c.actor.type === "monster") continue; // Monsters roll manually via the "Roll Monsters" button diff --git a/module/applications/free-roll.mjs b/module/applications/free-roll.mjs index 85466a9..76b89b5 100644 --- a/module/applications/free-roll.mjs +++ b/module/applications/free-roll.mjs @@ -142,11 +142,14 @@ export async function rollFreeDie(dieType, count = 1, explode = false) { ` const rollMode = game.settings.get("core", "rollMode") + // Normalize old-style rollMode keys (v12/v13) to new-style (v14), fallback to "public" + const modeMap = { publicroll: "public", gmroll: "gm", blindroll: "blind", selfroll: "self" } + const mode = modeMap[rollMode] ?? rollMode ?? "public" const msgData = { speaker: ChatMessage.getSpeaker(), content, sound: CONFIG.sounds.dice, + mode, } - ChatMessage.applyMode(msgData, rollMode) await ChatMessage.create(msgData) } diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index fad115b..61e4984 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -370,7 +370,9 @@ export default class LethalFantasyRoll extends Roll { beyondSkill = !!rollContext.beyondSkill letItFly = !!rollContext.letItFly saveSpell = !!rollContext.saveSpell - rollContext.visibility ||= rollContext.rollMode || game.settings.get("core", "rollMode") + const _rawMode = rollContext.rollMode || game.settings.get("core", "rollMode") + const _modeMap = { publicroll: "public", gmroll: "gm", blindroll: "blind", selfroll: "self" } + rollContext.visibility ||= _modeMap[_rawMode] ?? _rawMode ?? "public" rollContext.modifier ||= modifier rollContext.favor ||= "none" rollContext.changeDice ||= `${dice}` diff --git a/module/models/miracle.mjs b/module/models/miracle.mjs index c95d77a..e738127 100644 --- a/module/models/miracle.mjs +++ b/module/models/miracle.mjs @@ -35,6 +35,9 @@ export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel schema.attackRoll = new fields.StringField({ required: true, initial: "" }) schema.powerRoll = new fields.StringField({ required: true, initial: "" }) + schema.damageDice = new fields.StringField({ required: false, initial: "" }) + schema.damageDiceOverpowered = new fields.StringField({ required: false, initial: "" }) + schema.damageDiceOverpowered2 = new fields.StringField({ required: false, initial: "" }) return schema } diff --git a/module/models/monster.mjs b/module/models/monster.mjs index b9952d7..1a1dcd9 100644 --- a/module/models/monster.mjs +++ b/module/models/monster.mjs @@ -233,7 +233,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel await roll.toMessage({ flavor, speaker: ChatMessage.getSpeaker({ actor: this.parent }) - }) + }, { messageMode: roll.options.rollMode ?? game.settings.get("core", "rollMode") }) return } case "weapon-damage-small": diff --git a/module/models/spell.mjs b/module/models/spell.mjs index fb6be81..c068c67 100644 --- a/module/models/spell.mjs +++ b/module/models/spell.mjs @@ -40,6 +40,8 @@ export default class LethalFantasySpell extends foundry.abstract.TypeDataModel { schema.attackRoll = new fields.StringField({ required: true, initial: "" }) schema.powerRoll = new fields.StringField({ required: true, initial: "" }) schema.damageDice = new fields.StringField({ required: false, initial: "" }) + schema.damageDiceOverpowered = new fields.StringField({ required: false, initial: "" }) + schema.damageDiceOverpowered2 = new fields.StringField({ required: false, initial: "" }) return schema } diff --git a/module/utils.mjs b/module/utils.mjs index 38c2c8b..eb2bcc9 100644 --- a/module/utils.mjs +++ b/module/utils.mjs @@ -862,20 +862,25 @@ export default class LethalFantasyUtils { } else if (data.attackRollType === "spell-attack" || data.attackRollType === "miracle-attack") { const attacker = game.actors.get(data.attackerId) const spell = attacker?.items.get(data.attackWeaponId) - const damageDice = spell?.system?.damageDice - if (damageDice) { - damageButton = ` -
- -
- ` + const tiers = [ + { formula: spell?.system?.damageDice, label: "Standard" }, + { formula: spell?.system?.damageDiceOverpowered, label: "Overpowered" }, + { formula: spell?.system?.damageDiceOverpowered2, label: "Overpowered 2" }, + ].filter(t => t.formula) + if (tiers.length) { + const buttons = tiers.map(t => { + const escapedFormula = Handlebars.escapeExpression(t.formula) + return ` + ` + }).join("") + damageButton = `
${buttons}
` } } } @@ -902,10 +907,10 @@ export default class LethalFantasyUtils {
${outcome === "shielded-hit" - ? ` ${data.attackerName} hits ${data.defenderName}, but the shield blocked — apply armor DR + shield DR ${data.shieldDamageReduction || 0}.` + ? ` ${data.defenderName} has blocked with shield — apply armor DR + shield DR ${data.shieldDamageReduction || 0}.` : isAttackWin ? ` ${data.attackerName} hits ${data.defenderName}!` - : ` ${data.defenderName} parries the attack!` + : ` ${data.defenderName} avoided the attack!` }
${damageButton} @@ -1195,7 +1200,7 @@ export default class LethalFantasyUtils { ChatMessage.create({ user: game.user.id, speaker: { alias: targetActor.name }, - mode: "gmroll", + mode: "gm", content: messageContent }) } diff --git a/packs-system/lf-equipment/000597.log b/packs-system/lf-equipment/000601.log similarity index 100% rename from packs-system/lf-equipment/000597.log rename to packs-system/lf-equipment/000601.log diff --git a/packs-system/lf-equipment/CURRENT b/packs-system/lf-equipment/CURRENT index 23755cb..4569ef0 100644 --- a/packs-system/lf-equipment/CURRENT +++ b/packs-system/lf-equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000595 +MANIFEST-000599 diff --git a/packs-system/lf-equipment/LOG b/packs-system/lf-equipment/LOG index ce9cf9c..1f3ea5c 100644 --- a/packs-system/lf-equipment/LOG +++ b/packs-system/lf-equipment/LOG @@ -1,8 +1,8 @@ -2026/05/18-07:32:52.671725 7f5a94bff6c0 Recovering log #593 -2026/05/18-07:32:52.684619 7f5a94bff6c0 Delete type=3 #591 -2026/05/18-07:32:52.684760 7f5a94bff6c0 Delete type=0 #593 -2026/05/18-07:58:12.225439 7f5a467fc6c0 Level-0 table #598: started -2026/05/18-07:58:12.225593 7f5a467fc6c0 Level-0 table #598: 0 bytes OK -2026/05/18-07:58:12.232817 7f5a467fc6c0 Delete type=0 #596 -2026/05/18-07:58:12.252837 7f5a467fc6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) -2026/05/18-07:58:12.252955 7f5a467fc6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +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) diff --git a/packs-system/lf-equipment/LOG.old b/packs-system/lf-equipment/LOG.old index f9593fc..ce9cf9c 100644 --- a/packs-system/lf-equipment/LOG.old +++ b/packs-system/lf-equipment/LOG.old @@ -1,8 +1,8 @@ -2026/05/17-11:57:50.231387 7f16423fc6c0 Recovering log #589 -2026/05/17-11:57:50.249229 7f16423fc6c0 Delete type=3 #587 -2026/05/17-11:57:50.249281 7f16423fc6c0 Delete type=0 #589 -2026/05/17-13:21:53.429711 7f1641bfb6c0 Level-0 table #594: started -2026/05/17-13:21:53.429759 7f1641bfb6c0 Level-0 table #594: 0 bytes OK -2026/05/17-13:21:53.437714 7f1641bfb6c0 Delete type=0 #592 -2026/05/17-13:21:53.449134 7f1641bfb6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) -2026/05/17-13:21:53.461721 7f1641bfb6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2026/05/18-07:32:52.671725 7f5a94bff6c0 Recovering log #593 +2026/05/18-07:32:52.684619 7f5a94bff6c0 Delete type=3 #591 +2026/05/18-07:32:52.684760 7f5a94bff6c0 Delete type=0 #593 +2026/05/18-07:58:12.225439 7f5a467fc6c0 Level-0 table #598: started +2026/05/18-07:58:12.225593 7f5a467fc6c0 Level-0 table #598: 0 bytes OK +2026/05/18-07:58:12.232817 7f5a467fc6c0 Delete type=0 #596 +2026/05/18-07:58:12.252837 7f5a467fc6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end) +2026/05/18-07:58:12.252955 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-000595 b/packs-system/lf-equipment/MANIFEST-000599 similarity index 71% rename from packs-system/lf-equipment/MANIFEST-000595 rename to packs-system/lf-equipment/MANIFEST-000599 index f4d8cf0..8dd20da 100644 Binary files a/packs-system/lf-equipment/MANIFEST-000595 and b/packs-system/lf-equipment/MANIFEST-000599 differ diff --git a/packs-system/lf-gifts/000594.log b/packs-system/lf-gifts/000598.log similarity index 100% rename from packs-system/lf-gifts/000594.log rename to packs-system/lf-gifts/000598.log diff --git a/packs-system/lf-gifts/CURRENT b/packs-system/lf-gifts/CURRENT index 736cc3e..86fbd4e 100644 --- a/packs-system/lf-gifts/CURRENT +++ b/packs-system/lf-gifts/CURRENT @@ -1 +1 @@ -MANIFEST-000592 +MANIFEST-000596 diff --git a/packs-system/lf-gifts/LOG b/packs-system/lf-gifts/LOG index ea55386..f780df8 100644 --- a/packs-system/lf-gifts/LOG +++ b/packs-system/lf-gifts/LOG @@ -1,8 +1,8 @@ -2026/05/18-07:32:52.700651 7f5a477fe6c0 Recovering log #590 -2026/05/18-07:32:52.712680 7f5a477fe6c0 Delete type=3 #588 -2026/05/18-07:32:52.712814 7f5a477fe6c0 Delete type=0 #590 -2026/05/18-07:58:12.232998 7f5a467fc6c0 Level-0 table #595: started -2026/05/18-07:58:12.233130 7f5a467fc6c0 Level-0 table #595: 0 bytes OK -2026/05/18-07:58:12.244133 7f5a467fc6c0 Delete type=0 #593 -2026/05/18-07:58:12.252873 7f5a467fc6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) -2026/05/18-07:58:12.252977 7f5a467fc6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +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) diff --git a/packs-system/lf-gifts/LOG.old b/packs-system/lf-gifts/LOG.old index aa26a98..ea55386 100644 --- a/packs-system/lf-gifts/LOG.old +++ b/packs-system/lf-gifts/LOG.old @@ -1,8 +1,8 @@ -2026/05/17-11:57:50.260046 7f16433fe6c0 Recovering log #586 -2026/05/17-11:57:50.276348 7f16433fe6c0 Delete type=3 #584 -2026/05/17-11:57:50.276460 7f16433fe6c0 Delete type=0 #586 -2026/05/17-13:21:53.474443 7f1641bfb6c0 Level-0 table #591: started -2026/05/17-13:21:53.474485 7f1641bfb6c0 Level-0 table #591: 0 bytes OK -2026/05/17-13:21:53.481502 7f1641bfb6c0 Delete type=0 #589 -2026/05/17-13:21:53.490389 7f1641bfb6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) -2026/05/17-13:21:53.512946 7f1641bfb6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2026/05/18-07:32:52.700651 7f5a477fe6c0 Recovering log #590 +2026/05/18-07:32:52.712680 7f5a477fe6c0 Delete type=3 #588 +2026/05/18-07:32:52.712814 7f5a477fe6c0 Delete type=0 #590 +2026/05/18-07:58:12.232998 7f5a467fc6c0 Level-0 table #595: started +2026/05/18-07:58:12.233130 7f5a467fc6c0 Level-0 table #595: 0 bytes OK +2026/05/18-07:58:12.244133 7f5a467fc6c0 Delete type=0 #593 +2026/05/18-07:58:12.252873 7f5a467fc6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end) +2026/05/18-07:58:12.252977 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-000592 b/packs-system/lf-gifts/MANIFEST-000596 similarity index 77% rename from packs-system/lf-gifts/MANIFEST-000592 rename to packs-system/lf-gifts/MANIFEST-000596 index 958abae..6933bcd 100644 Binary files a/packs-system/lf-gifts/MANIFEST-000592 and b/packs-system/lf-gifts/MANIFEST-000596 differ diff --git a/packs-system/lf-skills/000599.log b/packs-system/lf-skills/000603.log similarity index 100% rename from packs-system/lf-skills/000599.log rename to packs-system/lf-skills/000603.log diff --git a/packs-system/lf-skills/CURRENT b/packs-system/lf-skills/CURRENT index f61c775..4a4c8ce 100644 --- a/packs-system/lf-skills/CURRENT +++ b/packs-system/lf-skills/CURRENT @@ -1 +1 @@ -MANIFEST-000597 +MANIFEST-000601 diff --git a/packs-system/lf-skills/LOG b/packs-system/lf-skills/LOG index b19bc74..23ee6e0 100644 --- a/packs-system/lf-skills/LOG +++ b/packs-system/lf-skills/LOG @@ -1,8 +1,8 @@ -2026/05/18-07:32:52.650924 7f5a47fff6c0 Recovering log #595 -2026/05/18-07:32:52.662191 7f5a47fff6c0 Delete type=3 #593 -2026/05/18-07:32:52.662331 7f5a47fff6c0 Delete type=0 #595 -2026/05/18-07:58:12.218060 7f5a467fc6c0 Level-0 table #600: started -2026/05/18-07:58:12.218402 7f5a467fc6c0 Level-0 table #600: 0 bytes OK -2026/05/18-07:58:12.225237 7f5a467fc6c0 Delete type=0 #598 -2026/05/18-07:58:12.244392 7f5a467fc6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2026/05/18-07:58:12.252899 7f5a467fc6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +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) diff --git a/packs-system/lf-skills/LOG.old b/packs-system/lf-skills/LOG.old index b950e04..b19bc74 100644 --- a/packs-system/lf-skills/LOG.old +++ b/packs-system/lf-skills/LOG.old @@ -1,8 +1,8 @@ -2026/05/17-11:57:50.206131 7f1643bff6c0 Recovering log #591 -2026/05/17-11:57:50.222037 7f1643bff6c0 Delete type=3 #589 -2026/05/17-11:57:50.222089 7f1643bff6c0 Delete type=0 #591 -2026/05/17-13:21:53.292176 7f1641bfb6c0 Level-0 table #596: started -2026/05/17-13:21:53.292219 7f1641bfb6c0 Level-0 table #596: 0 bytes OK -2026/05/17-13:21:53.299322 7f1641bfb6c0 Delete type=0 #594 -2026/05/17-13:21:53.306548 7f1641bfb6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2026/05/17-13:21:53.318889 7f1641bfb6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2026/05/18-07:32:52.650924 7f5a47fff6c0 Recovering log #595 +2026/05/18-07:32:52.662191 7f5a47fff6c0 Delete type=3 #593 +2026/05/18-07:32:52.662331 7f5a47fff6c0 Delete type=0 #595 +2026/05/18-07:58:12.218060 7f5a467fc6c0 Level-0 table #600: started +2026/05/18-07:58:12.218402 7f5a467fc6c0 Level-0 table #600: 0 bytes OK +2026/05/18-07:58:12.225237 7f5a467fc6c0 Delete type=0 #598 +2026/05/18-07:58:12.244392 7f5a467fc6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2026/05/18-07:58:12.252899 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-000597 b/packs-system/lf-skills/MANIFEST-000601 similarity index 71% rename from packs-system/lf-skills/MANIFEST-000597 rename to packs-system/lf-skills/MANIFEST-000601 index 158060f..f6cfaf0 100644 Binary files a/packs-system/lf-skills/MANIFEST-000597 and b/packs-system/lf-skills/MANIFEST-000601 differ diff --git a/packs-system/lf-spells-miracles/000294.log b/packs-system/lf-spells-miracles/000298.log similarity index 100% rename from packs-system/lf-spells-miracles/000294.log rename to packs-system/lf-spells-miracles/000298.log diff --git a/packs-system/lf-spells-miracles/CURRENT b/packs-system/lf-spells-miracles/CURRENT index 1c8246a..dc5e7f3 100644 --- a/packs-system/lf-spells-miracles/CURRENT +++ b/packs-system/lf-spells-miracles/CURRENT @@ -1 +1 @@ -MANIFEST-000292 +MANIFEST-000296 diff --git a/packs-system/lf-spells-miracles/LOG b/packs-system/lf-spells-miracles/LOG index b619089..64fbc4f 100644 --- a/packs-system/lf-spells-miracles/LOG +++ b/packs-system/lf-spells-miracles/LOG @@ -1,8 +1,8 @@ -2026/05/18-07:32:52.738234 7f5a477fe6c0 Recovering log #290 -2026/05/18-07:32:52.749839 7f5a477fe6c0 Delete type=3 #288 -2026/05/18-07:32:52.749970 7f5a477fe6c0 Delete type=0 #290 -2026/05/18-07:58:12.253340 7f5a467fc6c0 Level-0 table #295: started -2026/05/18-07:58:12.253449 7f5a467fc6c0 Level-0 table #295: 0 bytes OK -2026/05/18-07:58:12.261029 7f5a467fc6c0 Delete type=0 #293 -2026/05/18-07:58:12.286385 7f5a467fc6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) -2026/05/18-07:58:12.286487 7f5a467fc6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2026/05/18-17:40:11.831491 7f5a94bff6c0 Recovering log #294 +2026/05/18-17:40:11.842913 7f5a94bff6c0 Delete type=3 #292 +2026/05/18-17:40:11.843005 7f5a94bff6c0 Delete type=0 #294 +2026/05/18-20:25:54.257813 7f5a467fc6c0 Level-0 table #299: started +2026/05/18-20:25:54.257869 7f5a467fc6c0 Level-0 table #299: 0 bytes OK +2026/05/18-20:25:54.264186 7f5a467fc6c0 Delete type=0 #297 +2026/05/18-20:25:54.267118 7f5a467fc6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2026/05/18-20:25:54.296812 7f5a467fc6c0 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 458f5c6..b619089 100644 --- a/packs-system/lf-spells-miracles/LOG.old +++ b/packs-system/lf-spells-miracles/LOG.old @@ -1,8 +1,8 @@ -2026/05/17-11:57:50.303535 7f16433fe6c0 Recovering log #286 -2026/05/17-11:57:50.318955 7f16433fe6c0 Delete type=3 #284 -2026/05/17-11:57:50.319061 7f16433fe6c0 Delete type=0 #286 -2026/05/17-13:21:53.481662 7f1641bfb6c0 Level-0 table #291: started -2026/05/17-13:21:53.481693 7f1641bfb6c0 Level-0 table #291: 0 bytes OK -2026/05/17-13:21:53.490187 7f1641bfb6c0 Delete type=0 #289 -2026/05/17-13:21:53.502325 7f1641bfb6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) -2026/05/17-13:21:53.512979 7f1641bfb6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2026/05/18-07:32:52.738234 7f5a477fe6c0 Recovering log #290 +2026/05/18-07:32:52.749839 7f5a477fe6c0 Delete type=3 #288 +2026/05/18-07:32:52.749970 7f5a477fe6c0 Delete type=0 #290 +2026/05/18-07:58:12.253340 7f5a467fc6c0 Level-0 table #295: started +2026/05/18-07:58:12.253449 7f5a467fc6c0 Level-0 table #295: 0 bytes OK +2026/05/18-07:58:12.261029 7f5a467fc6c0 Delete type=0 #293 +2026/05/18-07:58:12.286385 7f5a467fc6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end) +2026/05/18-07:58:12.286487 7f5a467fc6c0 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-000292 b/packs-system/lf-spells-miracles/MANIFEST-000296 similarity index 72% rename from packs-system/lf-spells-miracles/MANIFEST-000292 rename to packs-system/lf-spells-miracles/MANIFEST-000296 index d50030d..f9eeda4 100644 Binary files a/packs-system/lf-spells-miracles/MANIFEST-000292 and b/packs-system/lf-spells-miracles/MANIFEST-000296 differ diff --git a/packs-system/lf-vulnerabilities/000593.log b/packs-system/lf-vulnerabilities/000597.log similarity index 100% rename from packs-system/lf-vulnerabilities/000593.log rename to packs-system/lf-vulnerabilities/000597.log diff --git a/packs-system/lf-vulnerabilities/CURRENT b/packs-system/lf-vulnerabilities/CURRENT index df90b48..23755cb 100644 --- a/packs-system/lf-vulnerabilities/CURRENT +++ b/packs-system/lf-vulnerabilities/CURRENT @@ -1 +1 @@ -MANIFEST-000591 +MANIFEST-000595 diff --git a/packs-system/lf-vulnerabilities/LOG b/packs-system/lf-vulnerabilities/LOG index bd4dddf..81e9341 100644 --- a/packs-system/lf-vulnerabilities/LOG +++ b/packs-system/lf-vulnerabilities/LOG @@ -1,8 +1,8 @@ -2026/05/18-07:32:52.720162 7f5a94bff6c0 Recovering log #589 -2026/05/18-07:32:52.731519 7f5a94bff6c0 Delete type=3 #587 -2026/05/18-07:32:52.731690 7f5a94bff6c0 Delete type=0 #589 -2026/05/18-07:58:12.244424 7f5a467fc6c0 Level-0 table #594: started -2026/05/18-07:58:12.244618 7f5a467fc6c0 Level-0 table #594: 0 bytes OK -2026/05/18-07:58:12.252579 7f5a467fc6c0 Delete type=0 #592 -2026/05/18-07:58:12.252922 7f5a467fc6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2026/05/18-07:58:12.252996 7f5a467fc6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2026/05/18-17:40:11.812004 7f5a47fff6c0 Recovering log #593 +2026/05/18-17:40:11.823277 7f5a47fff6c0 Delete type=3 #591 +2026/05/18-17:40:11.823388 7f5a47fff6c0 Delete type=0 #593 +2026/05/18-20:25:54.244177 7f5a467fc6c0 Level-0 table #598: started +2026/05/18-20:25:54.244222 7f5a467fc6c0 Level-0 table #598: 0 bytes OK +2026/05/18-20:25:54.250810 7f5a467fc6c0 Delete type=0 #596 +2026/05/18-20:25:54.251096 7f5a467fc6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2026/05/18-20:25:54.264461 7f5a467fc6c0 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 23422a2..bd4dddf 100644 --- a/packs-system/lf-vulnerabilities/LOG.old +++ b/packs-system/lf-vulnerabilities/LOG.old @@ -1,8 +1,8 @@ -2026/05/17-11:57:50.282340 7f16423fc6c0 Recovering log #585 -2026/05/17-11:57:50.297125 7f16423fc6c0 Delete type=3 #583 -2026/05/17-11:57:50.297189 7f16423fc6c0 Delete type=0 #585 -2026/05/17-13:21:53.299508 7f1641bfb6c0 Level-0 table #590: started -2026/05/17-13:21:53.299854 7f1641bfb6c0 Level-0 table #590: 0 bytes OK -2026/05/17-13:21:53.306309 7f1641bfb6c0 Delete type=0 #588 -2026/05/17-13:21:53.318877 7f1641bfb6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2026/05/17-13:21:53.325564 7f1641bfb6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2026/05/18-07:32:52.720162 7f5a94bff6c0 Recovering log #589 +2026/05/18-07:32:52.731519 7f5a94bff6c0 Delete type=3 #587 +2026/05/18-07:32:52.731690 7f5a94bff6c0 Delete type=0 #589 +2026/05/18-07:58:12.244424 7f5a467fc6c0 Level-0 table #594: started +2026/05/18-07:58:12.244618 7f5a467fc6c0 Level-0 table #594: 0 bytes OK +2026/05/18-07:58:12.252579 7f5a467fc6c0 Delete type=0 #592 +2026/05/18-07:58:12.252922 7f5a467fc6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2026/05/18-07:58:12.252996 7f5a467fc6c0 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-000591 b/packs-system/lf-vulnerabilities/MANIFEST-000595 similarity index 72% rename from packs-system/lf-vulnerabilities/MANIFEST-000591 rename to packs-system/lf-vulnerabilities/MANIFEST-000595 index abc22aa..dd41442 100644 Binary files a/packs-system/lf-vulnerabilities/MANIFEST-000591 and b/packs-system/lf-vulnerabilities/MANIFEST-000595 differ diff --git a/styles/roll.less b/styles/roll.less index 60d9a36..d98c6d6 100644 --- a/styles/roll.less +++ b/styles/roll.less @@ -176,6 +176,22 @@ } } +.dialog-warning { + margin: 0.4rem 0.2rem 0.2rem; + padding: 0.35rem 0.5rem; + border-left: 3px solid #c8941a; + background: rgba(200, 148, 26, 0.12); + border-radius: 3px; + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 0.9); + color: #7a5400; + line-height: 1.4; + i { + color: #c8941a; + margin-right: 0.4rem; + } +} + .lethalfantasy, .fvtt-lethal-fantasy, .message.lethalfantasy, diff --git a/templates/character-biography.hbs b/templates/character-biography.hbs index 3f0c267..65960c6 100644 --- a/templates/character-biography.hbs +++ b/templates/character-biography.hbs @@ -9,95 +9,95 @@ {{localize "LETHALFANTASY.Label.biodata"}}
- Class + {{localize "LETHALFANTASY.Label.class"}} {{formInput systemFields.biodata.fields.class value=system.biodata.class }}
- Level + {{localize "LETHALFANTASY.Label.level"}} {{formInput systemFields.biodata.fields.level value=system.biodata.level }}
- Mortal + {{localize "LETHALFANTASY.Label.mortal"}} {{formInput systemFields.biodata.fields.mortal value=system.biodata.mortal }}
- Alignment + {{localize "LETHALFANTASY.Label.alignment"}} {{formInput systemFields.biodata.fields.alignment value=system.biodata.alignment }}
- Age + {{localize "LETHALFANTASY.Label.age"}} {{formInput systemFields.biodata.fields.age value=system.biodata.age}}
- Height + {{localize "LETHALFANTASY.Label.height"}} {{formInput systemFields.biodata.fields.height value=system.biodata.height }}
- Weight + {{localize "LETHALFANTASY.Label.weight"}} {{formInput systemFields.biodata.fields.weight value=system.biodata.weight }}
- Eyes + {{localize "LETHALFANTASY.Label.eyes"}} {{formInput systemFields.biodata.fields.eyes value=system.biodata.eyes }}
- Hair + {{localize "LETHALFANTASY.Label.hair"}} {{formInput systemFields.biodata.fields.hair value=system.biodata.hair }}
- Dev. Points (Total) + {{localize "LETHALFANTASY.Label.devPointsTotal"}} {{formInput systemFields.developmentPoints.fields.total value=system.developmentPoints.total }}
- Dev. Points (Rem.) + {{localize "LETHALFANTASY.Label.devPointsRem"}} {{formInput systemFields.developmentPoints.fields.remaining value=system.developmentPoints.remaining }}
- Magic User + {{localize "LETHALFANTASY.Label.magicUser"}} {{formInput systemFields.biodata.fields.magicUser value=system.biodata.magicUser }}
- Cleric User + {{localize "LETHALFANTASY.Label.clericUser"}} {{formInput systemFields.biodata.fields.clericUser value=system.biodata.clericUser }}
- Save bonus (1/5levels) + {{localize "LETHALFANTASY.Label.saveBonus"}} {{formInput systemFields.modifiers.fields.saveModifier value=system.modifiers.saveModifier @@ -107,7 +107,7 @@ {{#if system.biodata.magicUser}}
- Spell bonus (1/5levels) + {{localize "LETHALFANTASY.Label.spellBonus"}} {{formInput systemFields.modifiers.fields.levelSpellModifier value=system.modifiers.levelSpellModifier @@ -117,7 +117,7 @@ {{/if}} {{#if system.biodata.clericUser}}
- Miracle bonus (1/5levels) + {{localize "LETHALFANTASY.Label.miracleBonus"}} {{formInput systemFields.modifiers.fields.levelMiracleModifier value=system.modifiers.levelMiracleModifier @@ -127,7 +127,7 @@ {{/if}}
- Last HD roll + {{localize "LETHALFANTASY.Label.lastHdRoll"}} {{formInput systemFields.biodata.fields.hpPerLevel value=system.biodata.hpPerLevel @@ -136,7 +136,7 @@
- Natural DR + {{localize "LETHALFANTASY.Label.naturalDR"}} {{formInput systemFields.biodata.fields.naturalDR value=system.biodata.naturalDR @@ -145,7 +145,7 @@
- Magical DR + {{localize "LETHALFANTASY.Label.magicalDR"}} {{formInput systemFields.biodata.fields.magicDR value=system.biodata.magicDR diff --git a/templates/character-miracles.hbs b/templates/character-miracles.hbs index f98e376..9957b8a 100644 --- a/templates/character-miracles.hbs +++ b/templates/character-miracles.hbs @@ -5,12 +5,12 @@ {{localize "LETHALFANTASY.Label.divinityPoints"}}
- Current + {{localize "LETHALFANTASY.Label.current"}} {{formField systemFields.divinityPoints.fields.value value=system.divinityPoints.value localize=true}} - Max + {{localize "LETHALFANTASY.Label.max"}} {{formField systemFields.divinityPoints.fields.max value=system.divinityPoints.max localize=true disabled=isPlayMode}}
diff --git a/templates/character-spells.hbs b/templates/character-spells.hbs index 7c3dc65..3a49176 100644 --- a/templates/character-spells.hbs +++ b/templates/character-spells.hbs @@ -5,12 +5,12 @@ {{localize "LETHALFANTASY.Label.aetherPoints"}}
- Current + {{localize "LETHALFANTASY.Label.current"}} {{formField systemFields.aetherPoints.fields.value value=system.aetherPoints.value localize=true}} - Max + {{localize "LETHALFANTASY.Label.max"}} {{formField systemFields.aetherPoints.fields.max value=system.aetherPoints.max localize=true disabled=isPlayMode}}
diff --git a/templates/chat-message.hbs b/templates/chat-message.hbs index f7476f3..58137c6 100644 --- a/templates/chat-message.hbs +++ b/templates/chat-message.hbs @@ -40,32 +40,32 @@ {{#if (eq rollData.favor "favor")}}
- Favor + {{localize "LETHALFANTASY.Label.favor"}}
{{/if}} {{#if (eq rollData.favor "disfavor")}}
- Disfavor + {{localize "LETHALFANTASY.Label.disfavor"}}
{{/if}} {{#if rollData.letItFly}}
- Let It Fly! + {{localize "LETHALFANTASY.Label.letItFly"}}
{{/if}} {{#if rollData.pointBlank}}
- Point Blank + {{localize "LETHALFANTASY.Label.pointBlank"}}
{{/if}} {{#if rollData.beyondSkill}}
- Beyond Skill + {{localize "LETHALFANTASY.Label.beyondSkill"}}
{{/if}} @@ -111,7 +111,7 @@ {{#unless isPrivate}}
-
Total
+
{{localize "LETHALFANTASY.Label.total"}}
{{total}}
@@ -177,7 +177,7 @@ {{else}}
- Private Roll + {{localize "LETHALFANTASY.Label.privateRoll"}}
{{/unless}} diff --git a/templates/miracle.hbs b/templates/miracle.hbs index fdc35c8..b538398 100644 --- a/templates/miracle.hbs +++ b/templates/miracle.hbs @@ -7,7 +7,7 @@ {{formField systemFields.miracleType value=system.miracleType}} {{formField systemFields.level value=system.level}} - +
{{formField systemFields.components.fields.verbal value=system.components.verbal}} {{formField systemFields.components.fields.somatic value=system.components.somatic}} @@ -27,6 +27,9 @@ {{formField systemFields.areaAffected value=system.areaAffected}} {{formField systemFields.duration value=system.duration}} {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.damageDice value=system.damageDice}} + {{formField systemFields.damageDiceOverpowered value=system.damageDiceOverpowered}} + {{formField systemFields.damageDiceOverpowered2 value=system.damageDiceOverpowered2}} diff --git a/templates/monster-biography.hbs b/templates/monster-biography.hbs index 5db62ad..3964d99 100644 --- a/templates/monster-biography.hbs +++ b/templates/monster-biography.hbs @@ -6,23 +6,23 @@
- Alignment + {{localize "LETHALFANTASY.Label.alignment"}} {{formInput systemFields.biodata.fields.alignment value=system.biodata.alignment }}
- Height + {{localize "LETHALFANTASY.Label.height"}} {{formInput systemFields.biodata.fields.height value=system.biodata.height }}
- Weight + {{localize "LETHALFANTASY.Label.weight"}} {{formInput systemFields.biodata.fields.weight value=system.biodata.weight }}
- Length + {{localize "LETHALFANTASY.Label.length"}} {{formInput systemFields.biodata.fields.length value=system.biodata.length }}
- Vision + {{localize "LETHALFANTASY.Label.vision"}} {{formInput systemFields.biodata.fields.vision value=system.biodata.vision }}
diff --git a/templates/monster-combat.hbs b/templates/monster-combat.hbs index be014a2..fe2665a 100644 --- a/templates/monster-combat.hbs +++ b/templates/monster-combat.hbs @@ -160,7 +160,7 @@
- Hand To Hand Attacks + {{localize "LETHALFANTASY.Label.handToHandAttacks"}}
{{#each system.combatHTH as |item key|}}
diff --git a/templates/roll-dialog.hbs b/templates/roll-dialog.hbs index 9424411..2c06f98 100644 --- a/templates/roll-dialog.hbs +++ b/templates/roll-dialog.hbs @@ -91,6 +91,10 @@
Add Granted Defense Dice
+
+ + {{localize "LETHALFANTASY.Warning.defenseShieldOrder"}} +
{{/if}} {{#if (match rollType "damage")}}
Add Granted Damage Dice diff --git a/templates/shield.hbs b/templates/shield.hbs index 44da932..27baa17 100644 --- a/templates/shield.hbs +++ b/templates/shield.hbs @@ -22,9 +22,9 @@ {{formField systemFields.hascover value=system.hascover}} {{#if system.hascover}} - +
- +
{{formField systemFields.standing.fields.min value=system.standing.min @@ -33,7 +33,7 @@
- +
{{formField systemFields.crouching.fields.min value=system.crouching.min diff --git a/templates/spell.hbs b/templates/spell.hbs index 7ebba5f..300e5ff 100644 --- a/templates/spell.hbs +++ b/templates/spell.hbs @@ -7,7 +7,7 @@ {{formField systemFields.level value=system.level}} {{formField systemFields.cost value=system.cost}} - +
{{formField systemFields.components.fields.verbal value=system.components.verbal}} {{formField systemFields.components.fields.somatic value=system.components.somatic}} @@ -31,6 +31,8 @@ {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} {{formField systemFields.criticalType value=system.criticalType}} {{formField systemFields.damageDice value=system.damageDice}} + {{formField systemFields.damageDiceOverpowered value=system.damageDiceOverpowered}} + {{formField systemFields.damageDiceOverpowered2 value=system.damageDiceOverpowered2}}
diff --git a/templates/weapon.hbs b/templates/weapon.hbs index 9c239b0..56ed3e1 100644 --- a/templates/weapon.hbs +++ b/templates/weapon.hbs @@ -10,14 +10,14 @@ {{formField systemFields.weaponType value=system.weaponType localize=true}} {{formField systemFields.weaponClass value=system.weaponClass localize=true}} - +
{{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}}
- +
{{formField systemFields.damage.fields.damageS value=system.damage.damageS}} {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} @@ -34,7 +34,7 @@ {{/if}} {{#if (eq system.weaponType "ranged")}} - +
{{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} @@ -47,7 +47,7 @@ {{formField systemFields.defense value=system.defense}} - +
{{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} @@ -60,7 +60,7 @@ {{formField systemFields.equipped value=system.equipped}} - +
{{formField systemFields.bonuses.fields.attackBonus value=system.bonuses.attackBonus}} {{formField systemFields.bonuses.fields.defenseBonus value=system.bonuses.defenseBonus}}