diff --git a/modules/applications/sheets/base-actor-sheet.mjs b/modules/applications/sheets/base-actor-sheet.mjs index a09fc5c..cb5673b 100644 --- a/modules/applications/sheets/base-actor-sheet.mjs +++ b/modules/applications/sheets/base-actor-sheet.mjs @@ -77,6 +77,14 @@ export default class LesOubliesActorSheet extends HandlebarsApplicationMixin(fou } } + _prepareWeaponEntries(items = []) { + return items.map((item) => ({ + ...item.toObject(), + id: item.id, + displayDamage: LesOubliesUtility.formatWeaponDamage(this.document, item), + })) + } + _onRender(context, options) { super._onRender(context, options) } diff --git a/modules/applications/sheets/base-item-sheet.mjs b/modules/applications/sheets/base-item-sheet.mjs index 9cf49b2..c5c2995 100644 --- a/modules/applications/sheets/base-item-sheet.mjs +++ b/modules/applications/sheets/base-item-sheet.mjs @@ -105,6 +105,9 @@ export default class LesOubliesItemSheet extends HandlebarsApplicationMixin(foun choiceSets, enriched, enrichedDescription: foundry.utils.getProperty(enriched, "description") ?? "", + weaponDamagePreview: this.document.type === "arme" + ? LesOubliesUtility.formatWeaponDamage(this.document.parent instanceof Actor ? this.document.parent : null, this.document) + : "", } } diff --git a/modules/applications/sheets/creature-sheet.mjs b/modules/applications/sheets/creature-sheet.mjs index abdce43..56f22f5 100644 --- a/modules/applications/sheets/creature-sheet.mjs +++ b/modules/applications/sheets/creature-sheet.mjs @@ -44,7 +44,7 @@ export default class LesOubliesCreatureSheet extends LesOubliesActorSheet { context.derived = this.document.getDerivedOverview() context.skillGroups = this.document.getGroupedCompetences() context.spells = this.document.getEmbeddedItems("sortilege") - context.weapons = this.document.getEmbeddedItems("arme") + context.weapons = this._prepareWeaponEntries(this.document.getEmbeddedItems("arme")) context.armors = this.document.getEmbeddedItems("armure") context.equipment = this.document.getEmbeddedItems("equipement") return context diff --git a/modules/applications/sheets/personnage-sheet.mjs b/modules/applications/sheets/personnage-sheet.mjs index 2ab6380..d34866b 100644 --- a/modules/applications/sheets/personnage-sheet.mjs +++ b/modules/applications/sheets/personnage-sheet.mjs @@ -64,7 +64,7 @@ export default class LesOubliesPersonnageSheet extends LesOubliesActorSheet { context.skillGroups.slice(splitIndex), ] context.spells = this.document.getEmbeddedItems("sortilege") - context.weapons = this.document.getEmbeddedItems("arme") + context.weapons = this._prepareWeaponEntries(this.document.getEmbeddedItems("arme")) context.equippedWeapons = context.weapons.filter((item) => item.system.equipped) context.armors = this.document.getEmbeddedItems("armure") context.equipment = this.document.getEmbeddedItems("equipement") diff --git a/modules/les-oublies-main.js b/modules/les-oublies-main.js index 288951d..3cc498d 100644 --- a/modules/les-oublies-main.js +++ b/modules/les-oublies-main.js @@ -6,6 +6,8 @@ import { LesOubliesRolls } from "./les-oublies-rolls.js" import * as models from "./models/index.mjs" import * as sheets from "./applications/sheets/_module.mjs" +const DEFAULT_PERSONNAGE_TOKEN_TEXTURE = "systems/fvtt-les-oublies/assets/tokens/border_token_oublies.webp" + function ensureSystemStyles() { const href = `systems/${game.system.id}/css/les-oublies.css` const existingLink = document.querySelector(`link[href$="${href}"]`) @@ -19,6 +21,13 @@ function ensureSystemStyles() { document.head.append(link) } +function usesFoundryDefaultTokenTexture(actor, data) { + const tokenTexture = foundry.utils.getProperty(data, "prototypeToken.texture.src") + ?? foundry.utils.getProperty(actor, "prototypeToken.texture.src") + ?? "" + return !tokenTexture || tokenTexture === CONST.DEFAULT_TOKEN || tokenTexture === "icons/svg/mystery-man.svg" +} + Hooks.once("init", function () { console.info("Les Oubliés | Initialisation du système") ensureSystemStyles() @@ -67,3 +76,16 @@ Hooks.once("init", function () { LesOubliesUtility.registerHandlebarsHelpers() }) + +Hooks.on("preCreateActor", function (actor, data) { + if (actor.type !== "personnage") return + if (!usesFoundryDefaultTokenTexture(actor, data)) return + + actor.updateSource({ + prototypeToken: { + texture: { + src: DEFAULT_PERSONNAGE_TOKEN_TEXTURE, + }, + }, + }) +}) diff --git a/modules/les-oublies-rolls.js b/modules/les-oublies-rolls.js index 7063535..8002e16 100644 --- a/modules/les-oublies-rolls.js +++ b/modules/les-oublies-rolls.js @@ -289,10 +289,13 @@ export class LesOubliesRolls { const result = await this.resolveTest(actor, data) if (!result) return null + const initiativeScore = Math.min(Math.max(Math.ceil(result.final / 2), 0), 12) + await this.#syncInitiativeToCombat(actor, initiativeScore) + return this.#createChatMessage(actor, { ...result, mode: "initiative", - initiativeScore: Math.min(Math.max(Math.ceil(result.final / 2), 0), 12), + initiativeScore, successLabel: null, }) } @@ -716,14 +719,7 @@ export class LesOubliesRolls { } const pool = this.#buildPool(options.rollMode, options.extraDie) - const dice = [] - for (let index = 0; index < pool.length; index += 1) { - const spec = pool[index] - dice.push(await this.#rollExplodingDie({ - ...spec, - index, - })) - } + const dice = await this.#rollExplodingPool(pool) const selectedIndex = this.#needsSelection(dice) ? await this.#promptDieSelection(actor, options.label, dice) @@ -792,6 +788,23 @@ export class LesOubliesRolls { }) } + static async #syncInitiativeToCombat(actor, initiativeScore) { + if (!game.combat || !actor?.id) return false + + const combatants = game.combat.combatants.filter((combatant) => combatant.actorId === actor.id) + if (!combatants.length) { + ui.notifications.warn(`${actor.name} n'est pas présent dans le combat actif.`) + return false + } + + await game.combat.updateEmbeddedDocuments("Combatant", combatants.map((combatant) => ({ + _id: combatant.id, + initiative: initiativeScore, + }))) + + return true + } + static async #createConfrontationMessage(actor, data, actionData = null) { const attacker = await this.resolveTest(actor, { label: data.attackerLabel, @@ -1507,38 +1520,82 @@ export class LesOubliesRolls { return dice } - static async #rollExplodingDie({ type, index, source = "base" }) { - const faces = [] - const rolls = [] - let total = 0 - let lastFace = 12 - - while (lastFace === 12) { - const roll = await this.#evaluateDisplayedRoll("1d12") - lastFace = Number(roll.total ?? 0) - rolls.push(roll) - faces.push(lastFace) - total += lastFace - } - - const typeLabel = game.i18n.localize(`LESOUBLIES.rolls.dice.${type}`) - return { + static async #rollExplodingPool(pool) { + const dice = pool.map(({ type, source = "base" }, index) => ({ index, type, - typeLabel, + typeLabel: game.i18n.localize(`LESOUBLIES.rolls.dice.${type}`), source, sourceLabel: source === "extra" ? game.i18n.localize("LESOUBLIES.rolls.extraDie") : null, - faces, - rolls, - firstFace: faces[0] ?? 0, - total, - exploded: faces.length > 1, - breakdown: faces.join(" + "), + faces: [], + rolls: [], + total: 0, + })) + + let pendingDice = [...dice] + while (pendingDice.length) { + const roll = await this.#evaluateDisplayedRoll( + Array.from({ length: pendingDice.length }, () => "1d12").join(" + "), + (pendingRoll) => this.#applyDieAppearances(pendingRoll, pendingDice), + ) + + const dieTerms = roll.terms.filter((term) => Number(term.faces ?? 0) === 12) + const nextPendingDice = [] + + pendingDice.forEach((die, index) => { + const face = Number(dieTerms[index]?.results?.[0]?.result ?? 0) + die.rolls.push(roll) + die.faces.push(face) + die.total += face + if (face === 12) nextPendingDice.push(die) + }) + + pendingDice = nextPendingDice + } + + return dice.map((die) => ({ + ...die, + firstFace: die.faces[0] ?? 0, + exploded: die.faces.length > 1, + breakdown: die.faces.join(" + "), + })) + } + + static #applyDieAppearances(roll, dice) { + const dieTerms = roll.terms.filter((term) => Number(term.faces ?? 0) === 12) + dieTerms.forEach((term, index) => { + term.options ??= {} + term.options.appearance = this.#getDieAppearance(dice[index]?.type) + }) + } + + static #getDieAppearance(type) { + switch (type) { + case "songes": + return { + foreground: "#111111", + background: "#f3efe4", + outline: "#b8aa87", + } + case "cauchemar": + return { + foreground: "#f4f0e8", + background: "#111111", + outline: "#5d5d5d", + } + default: + return { + foreground: "#201813", + background: "#ddd0b0", + outline: "#8d5c3b", + } } } - static async #evaluateDisplayedRoll(formula) { - const roll = await (new Roll(formula)).evaluate() + static async #evaluateDisplayedRoll(formula, configureRoll = null) { + const roll = typeof formula === "string" ? new Roll(formula) : formula + if (configureRoll) configureRoll(roll) + await roll.evaluate() await this.#showDiceSoNice(roll) return roll } @@ -2059,16 +2116,7 @@ export class LesOubliesRolls { } static #getWeaponBaseDamage(actor, weapon) { - const damageText = String(weapon?.system?.damage || "") - const parsed = this.#extractFirstInteger(damageText) - if (parsed !== null) return parsed - - const explicitValue = Number(weapon?.system?.sizeValue ?? 0) - if (explicitValue > 0) return explicitValue - - const actorSize = Number(actor?.system?.size?.value ?? 0) - const sizeModifier = Number(weapon?.system?.sizeModifier ?? 0) - return Math.max(actorSize + sizeModifier, 0) + return LesOubliesUtility.getWeaponBaseDamage(actor, weapon) } static #extractFirstInteger(text) { diff --git a/modules/les-oublies-utility.js b/modules/les-oublies-utility.js index 9251d6c..0ae5fe1 100644 --- a/modules/les-oublies-utility.js +++ b/modules/les-oublies-utility.js @@ -97,6 +97,32 @@ export class LesOubliesUtility { return [...documents].sort((left, right) => left.name.localeCompare(right.name, "fr")) } + static getWeaponBaseDamage(actor, weapon) { + const sizeMode = String(weapon?.system?.sizeMode || "").toLowerCase() + if (sizeMode === "variable") { + const actorSize = Number(actor?.system?.size?.value ?? 0) + const sizeModifier = Number(weapon?.system?.sizeModifier ?? 0) + return Math.max(actorSize + sizeModifier, 0) + } + + const explicitValue = Number(weapon?.system?.sizeValue ?? 0) + if (explicitValue > 0) return explicitValue + + const damageText = String(weapon?.system?.damage || "") + const match = damageText.match(/-?\d+/) + return match ? Number(match[0]) : 0 + } + + static formatWeaponDamage(actor, weapon) { + const baseLabel = String(weapon?.system?.damage || "").trim() + const baseDamage = this.getWeaponBaseDamage(actor, weapon) + const sizeMode = String(weapon?.system?.sizeMode || "").toLowerCase() + if (sizeMode === "variable" || /taille/i.test(baseLabel)) { + return baseLabel ? `${baseLabel} (${baseDamage})` : String(baseDamage) + } + return baseLabel || String(baseDamage) + } + static uniqueStrings(values = []) { return [...new Set((Array.isArray(values) ? values : []) .map((value) => String(value ?? "").trim()) diff --git a/packs/armes/000003.log b/packs/armes/000003.log deleted file mode 100644 index 8ed317b..0000000 Binary files a/packs/armes/000003.log and /dev/null differ diff --git a/packs/armes/000013.log b/packs/armes/000013.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/armes/000015.ldb b/packs/armes/000015.ldb new file mode 100644 index 0000000..fd48d9c Binary files /dev/null and b/packs/armes/000015.ldb differ diff --git a/packs/armes/LOG b/packs/armes/LOG index 8265f58..45a08a0 100644 --- a/packs/armes/LOG +++ b/packs/armes/LOG @@ -1 +1 @@ -2026/05/04-10:50:49.098074 7f9b5cbfd6c0 Delete type=3 #1 +2026/05/04-20:19:31.964617 7f037d7ed6c0 Delete type=3 #1 diff --git a/packs/armes/MANIFEST-000002 b/packs/armes/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/armes/MANIFEST-000002 and /dev/null differ diff --git a/packs/armures/000003.log b/packs/armures/000003.log deleted file mode 100644 index c37f7c5..0000000 Binary files a/packs/armures/000003.log and /dev/null differ diff --git a/packs/armures/000013.log b/packs/armures/000013.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/armures/000015.ldb b/packs/armures/000015.ldb new file mode 100644 index 0000000..81eda25 Binary files /dev/null and b/packs/armures/000015.ldb differ diff --git a/packs/armures/LOG b/packs/armures/LOG index 5fb9527..90368af 100644 --- a/packs/armures/LOG +++ b/packs/armures/LOG @@ -1 +1 @@ -2026/05/04-10:50:49.164577 7f9b4ffff6c0 Delete type=3 #1 +2026/05/04-20:19:32.040110 7f037cfec6c0 Delete type=3 #1 diff --git a/packs/armures/MANIFEST-000002 b/packs/armures/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/armures/MANIFEST-000002 and /dev/null differ diff --git a/packs/competences/000003.log b/packs/competences/000003.log deleted file mode 100644 index 4551308..0000000 Binary files a/packs/competences/000003.log and /dev/null differ diff --git a/packs/competences/000013.log b/packs/competences/000013.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/competences/000015.ldb b/packs/competences/000015.ldb new file mode 100644 index 0000000..6afce28 Binary files /dev/null and b/packs/competences/000015.ldb differ diff --git a/packs/competences/LOG b/packs/competences/LOG index 8d99145..a2f0fa8 100644 --- a/packs/competences/LOG +++ b/packs/competences/LOG @@ -1 +1 @@ -2026/05/04-10:50:49.395797 7f9b5cbfd6c0 Delete type=3 #1 +2026/05/04-20:19:32.300821 7f037d7ed6c0 Delete type=3 #1 diff --git a/packs/competences/MANIFEST-000002 b/packs/competences/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/competences/MANIFEST-000002 and /dev/null differ diff --git a/packs/equipements/000003.log b/packs/equipements/000003.log deleted file mode 100644 index 802d98d..0000000 Binary files a/packs/equipements/000003.log and /dev/null differ diff --git a/packs/equipements/000013.log b/packs/equipements/000013.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/equipements/000015.ldb b/packs/equipements/000015.ldb new file mode 100644 index 0000000..b52734f Binary files /dev/null and b/packs/equipements/000015.ldb differ diff --git a/packs/equipements/LOG b/packs/equipements/LOG index b8f90de..34a13f5 100644 --- a/packs/equipements/LOG +++ b/packs/equipements/LOG @@ -1 +1 @@ -2026/05/04-10:50:49.240415 7f9b5dbff6c0 Delete type=3 #1 +2026/05/04-20:19:32.128147 7f037e7ef6c0 Delete type=3 #1 diff --git a/packs/equipements/MANIFEST-000002 b/packs/equipements/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/equipements/MANIFEST-000002 and /dev/null differ diff --git a/packs/metiers/000003.log b/packs/metiers/000003.log deleted file mode 100644 index f52226d..0000000 Binary files a/packs/metiers/000003.log and /dev/null differ diff --git a/packs/metiers/000013.log b/packs/metiers/000013.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/metiers/000015.ldb b/packs/metiers/000015.ldb new file mode 100644 index 0000000..d7794fc Binary files /dev/null and b/packs/metiers/000015.ldb differ diff --git a/packs/metiers/LOG b/packs/metiers/LOG index ce1a346..033b7dd 100644 --- a/packs/metiers/LOG +++ b/packs/metiers/LOG @@ -1 +1 @@ -2026/05/04-10:50:49.609281 7f9b5d3fe6c0 Delete type=3 #1 +2026/05/04-20:19:32.576403 7f037dfee6c0 Delete type=3 #1 diff --git a/packs/metiers/MANIFEST-000002 b/packs/metiers/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/metiers/MANIFEST-000002 and /dev/null differ diff --git a/packs/pouvoirs-compagnie/000003.log b/packs/pouvoirs-compagnie/000003.log deleted file mode 100644 index 4eb4c51..0000000 Binary files a/packs/pouvoirs-compagnie/000003.log and /dev/null differ diff --git a/packs/pouvoirs-compagnie/000013.log b/packs/pouvoirs-compagnie/000013.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/pouvoirs-compagnie/000015.ldb b/packs/pouvoirs-compagnie/000015.ldb new file mode 100644 index 0000000..a04a6a2 Binary files /dev/null and b/packs/pouvoirs-compagnie/000015.ldb differ diff --git a/packs/pouvoirs-compagnie/LOG b/packs/pouvoirs-compagnie/LOG index cdbd004..129cd97 100644 --- a/packs/pouvoirs-compagnie/LOG +++ b/packs/pouvoirs-compagnie/LOG @@ -1 +1 @@ -2026/05/04-10:50:49.319307 7f9b5d3fe6c0 Delete type=3 #1 +2026/05/04-20:19:32.214437 7f037dfee6c0 Delete type=3 #1 diff --git a/packs/pouvoirs-compagnie/MANIFEST-000002 b/packs/pouvoirs-compagnie/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/pouvoirs-compagnie/MANIFEST-000002 and /dev/null differ diff --git a/packs/races/000003.log b/packs/races/000003.log deleted file mode 100644 index e3618d7..0000000 Binary files a/packs/races/000003.log and /dev/null differ diff --git a/packs/races/000013.log b/packs/races/000013.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/races/000015.ldb b/packs/races/000015.ldb new file mode 100644 index 0000000..934919b Binary files /dev/null and b/packs/races/000015.ldb differ diff --git a/packs/races/LOG b/packs/races/LOG index eb41fe2..603598e 100644 --- a/packs/races/LOG +++ b/packs/races/LOG @@ -1 +1 @@ -2026/05/04-10:50:49.459120 7f9b4ffff6c0 Delete type=3 #1 +2026/05/04-20:19:32.413325 7f037cfec6c0 Delete type=3 #1 diff --git a/packs/races/MANIFEST-000002 b/packs/races/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/races/MANIFEST-000002 and /dev/null differ diff --git a/packs/sortileges/000003.log b/packs/sortileges/000003.log deleted file mode 100644 index 0b03067..0000000 Binary files a/packs/sortileges/000003.log and /dev/null differ diff --git a/packs/sortileges/000013.log b/packs/sortileges/000013.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/sortileges/000015.ldb b/packs/sortileges/000015.ldb new file mode 100644 index 0000000..4760fcf Binary files /dev/null and b/packs/sortileges/000015.ldb differ diff --git a/packs/sortileges/LOG b/packs/sortileges/LOG index 6803036..87cffcd 100644 --- a/packs/sortileges/LOG +++ b/packs/sortileges/LOG @@ -1 +1 @@ -2026/05/04-10:50:49.677244 7f9b5cbfd6c0 Delete type=3 #1 +2026/05/04-20:19:32.651585 7f037d7ed6c0 Delete type=3 #1 diff --git a/packs/sortileges/MANIFEST-000002 b/packs/sortileges/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/sortileges/MANIFEST-000002 and /dev/null differ diff --git a/packs/tribus/000003.log b/packs/tribus/000003.log deleted file mode 100644 index 027b006..0000000 Binary files a/packs/tribus/000003.log and /dev/null differ diff --git a/packs/tribus/000013.log b/packs/tribus/000013.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/tribus/000015.ldb b/packs/tribus/000015.ldb new file mode 100644 index 0000000..ca115f7 Binary files /dev/null and b/packs/tribus/000015.ldb differ diff --git a/packs/tribus/LOG b/packs/tribus/LOG index d7356f3..32ef761 100644 --- a/packs/tribus/LOG +++ b/packs/tribus/LOG @@ -1 +1 @@ -2026/05/04-10:50:49.540176 7f9b5dbff6c0 Delete type=3 #1 +2026/05/04-20:19:32.499232 7f037e7ef6c0 Delete type=3 #1 diff --git a/packs/tribus/MANIFEST-000002 b/packs/tribus/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/tribus/MANIFEST-000002 and /dev/null differ diff --git a/templates/actor-creature-sheet-v5.hbs b/templates/actor-creature-sheet-v5.hbs index 16110e5..a996783 100644 --- a/templates/actor-creature-sheet-v5.hbs +++ b/templates/actor-creature-sheet-v5.hbs @@ -118,7 +118,7 @@
{{#each weapons as |item|}}
-
{{item.name}}
{{item.system.damage}}
+
{{item.name}}
{{item.displayDamage}}
{{/each}} diff --git a/templates/actor-personnage-sheet-v18.hbs b/templates/actor-personnage-sheet-v18.hbs index 5fe544c..5e07c05 100644 --- a/templates/actor-personnage-sheet-v18.hbs +++ b/templates/actor-personnage-sheet-v18.hbs @@ -188,7 +188,7 @@ {{#if equippedWeapons.length}} {{#each equippedWeapons as |item|}}
-
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.displayDamage}}
{{/each}} @@ -198,101 +198,100 @@
-
-
-
-

{{localize "LESOUBLIES.ui.magie"}}

- +
+
+

{{localize "LESOUBLIES.labels.threadReserves"}}

+ +
+
+
+

{{localize "LESOUBLIES.labels.personalReserve"}}

+
+ + +
+
+ + +
+
+ + +
-
- {{#each spells as |item|}} -
-
- {{item.name}} -
{{item.system.tradition}} / {{item.system.polarity}} / coût {{item.system.cost}}
-
-
- - - -
-
- {{/each}} -
-
-
-
-

{{localize "LESOUBLIES.labels.threadReserves"}}

- -
-
-
-

{{localize "LESOUBLIES.labels.personalReserve"}}

+
+

{{localize "LESOUBLIES.labels.companyReserve"}}

+ {{#if derived.compagnie}}
- + {{derived.companyReserves.songesThreads}}
- + {{derived.companyReserves.cauchemarThreads}}
- + {{derived.companyReserves.emptyGlobes}}
-
-
-

{{localize "LESOUBLIES.labels.companyReserve"}}

- {{#if derived.compagnie}} -
- - {{derived.companyReserves.songesThreads}} -
-
- - {{derived.companyReserves.cauchemarThreads}} -
-
- - {{derived.companyReserves.emptyGlobes}} -
- -
-
- {{localize "LESOUBLIES.labels.threadSonges"}} - -
- - -
-
-
- {{localize "LESOUBLIES.labels.threadCauchemar"}} - -
- - -
-
-
- {{localize "LESOUBLIES.labels.emptyGlobes"}} - -
- - -
+
+
+ {{localize "LESOUBLIES.labels.threadSonges"}} + +
+ +
- {{else}} -

Liez une compagnie pour gérer une réserve commune de fils et de globes.

- {{/if}} -
+
+ {{localize "LESOUBLIES.labels.threadCauchemar"}} + +
+ + +
+
+
+ {{localize "LESOUBLIES.labels.emptyGlobes"}} + +
+ + +
+
+
+ {{else}} +

Liez une compagnie pour gérer une réserve commune de fils et de globes.

+ {{/if}}
-

Les dépenses en fils rendent automatiquement autant de globes vides à la réserve utilisée.

-
-
+
+

Les dépenses en fils rendent automatiquement autant de globes vides à la réserve utilisée.

+ + +
+
+

{{localize "LESOUBLIES.ui.magie"}}

+ +
+
+ {{#each spells as |item|}} +
+
+ {{item.name}} +
{{item.system.tradition}} / {{item.system.polarity}} / coût {{item.system.cost}}
+
+
+ + + +
+
+ {{/each}} +
+
+
@@ -308,7 +307,7 @@
{{#each weapons as |item|}}
-
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}{{#if item.system.equipped}} - Équipée{{/if}}
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.displayDamage}}{{#if item.system.equipped}} - Équipée{{/if}}
{{/each}} diff --git a/templates/item-arme-sheet-v2.hbs b/templates/item-arme-sheet-v2.hbs index cd13d8c..ca88777 100644 --- a/templates/item-arme-sheet-v2.hbs +++ b/templates/item-arme-sheet-v2.hbs @@ -16,6 +16,9 @@

Race restreinte : {{system.restrictedRace}}

+ {{#if weaponDamagePreview}} +

Dégâts calculés : {{weaponDamagePreview}}

+ {{/if}}

{{localize "LESOUBLIES.labels.description"}}