diff --git a/css/les-oublies.css b/css/les-oublies.css index 8df000f..c0a5a6c 100644 --- a/css/les-oublies.css +++ b/css/les-oublies.css @@ -233,6 +233,9 @@ .fvtt-les-oublies .sheet-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } +.fvtt-les-oublies .sheet-grid-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} .fvtt-les-oublies .sheet-card { background: linear-gradient(180deg, var(--lo-panel), var(--lo-panel-heavy)), linear-gradient(135deg, rgba(255, 255, 255, 0.24), transparent); border: 1px solid rgba(133, 99, 74, 0.5); @@ -362,6 +365,46 @@ .fvtt-les-oublies .group-block + .group-block { margin-top: var(--lo-space-lg); } +.fvtt-les-oublies .reserve-card .reserve-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: var(--lo-space-sm); + margin-bottom: var(--lo-space-sm); +} +.fvtt-les-oublies .reserve-panel { + min-width: 0; + padding: 0.55rem 0.65rem; + border-radius: var(--lo-radius-lg); + background: linear-gradient(180deg, rgba(255, 250, 243, 0.7), rgba(230, 214, 185, 0.6)); + border: 1px solid rgba(130, 98, 71, 0.2); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5); +} +.fvtt-les-oublies .reserve-panel h3 { + margin-bottom: 0.45rem; +} +.fvtt-les-oublies .transfer-list { + display: flex; + flex-direction: column; + gap: 0.35rem; + margin-top: 0.45rem; +} +.fvtt-les-oublies .transfer-row { + display: grid; + grid-template-columns: minmax(0, 1fr) auto auto; + gap: 0.4rem; + align-items: center; +} +.fvtt-les-oublies .transfer-row strong { + min-width: 0; + font-size: var(--lo-font-body); +} +.fvtt-les-oublies .transfer-row input[type="number"] { + width: 3.6rem; + min-width: 3.6rem; +} +.fvtt-les-oublies .transfer-row .item-controls { + justify-content: flex-end; +} .fvtt-les-oublies .group-header { display: flex; align-items: center; @@ -723,8 +766,10 @@ } @media (max-width: 900px) { .fvtt-les-oublies .sheet-grid-2, + .fvtt-les-oublies .sheet-grid-3, .fvtt-les-oublies .profile-grid, - .fvtt-les-oublies .creation-slots { + .fvtt-les-oublies .creation-slots, + .fvtt-les-oublies .reserve-card .reserve-grid { grid-template-columns: 1fr; } .fvtt-les-oublies .hero-banner { diff --git a/css/les-oublies.css.map b/css/les-oublies.css.map index a6ae705..cb81cd6 100644 --- a/css/les-oublies.css.map +++ b/css/les-oublies.css.map @@ -1 +1 @@ -{"version":3,"sources":["../https:/fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Cormorant+Garamond:wght@400;500;600;700&family=IM+Fell+English+SC&display=swap","../components/sheets.less"],"names":[],"mappings":"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","file":"les-oublies.css","sourcesContent":[]} \ No newline at end of file +{"version":3,"sources":["../https:/fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Cormorant+Garamond:wght@400;500;600;700&family=IM+Fell+English+SC&display=swap","../components/sheets.less"],"names":[],"mappings":"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","file":"les-oublies.css","sourcesContent":[]} \ No newline at end of file diff --git a/lang/fr.json b/lang/fr.json index fd88021..9caadbc 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -169,6 +169,14 @@ "creditCauchemar": "Crédits Cauchemar", "pointsSonges": "Points de Songes", "pointsCauchemar": "Points de Cauchemar", + "threadReserves": "Fils et globes", + "personalReserve": "Réserve personnelle", + "companyReserve": "Réserve de compagnie", + "threadSonges": "Fils de Songes", + "threadCauchemar": "Fils de Cauchemar", + "emptyGlobes": "Globes vides", + "toCompany": "→ Compagnie", + "toActor": "← Perso", "degats": "Dégâts", "sortilegesSonges": "Sortilèges de Songes", "sortilegesCauchemar": "Sortilèges de Cauchemar", diff --git a/less/components/sheets.less b/less/components/sheets.less index 09b86b5..86f6c11 100644 --- a/less/components/sheets.less +++ b/less/components/sheets.less @@ -214,6 +214,10 @@ grid-template-columns: repeat(2, minmax(0, 1fr)); } + .sheet-grid-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .sheet-card { background: linear-gradient(180deg, var(--lo-panel), var(--lo-panel-heavy)), @@ -379,6 +383,54 @@ margin-top: var(--lo-space-lg); } + .reserve-card .reserve-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: var(--lo-space-sm); + margin-bottom: var(--lo-space-sm); + } + + .reserve-panel { + min-width: 0; + padding: 0.55rem 0.65rem; + border-radius: var(--lo-radius-lg); + background: linear-gradient(180deg, rgba(255, 250, 243, 0.7), rgba(230, 214, 185, 0.6)); + border: 1px solid rgba(130, 98, 71, 0.2); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5); + } + + .reserve-panel h3 { + margin-bottom: 0.45rem; + } + + .transfer-list { + display: flex; + flex-direction: column; + gap: 0.35rem; + margin-top: 0.45rem; + } + + .transfer-row { + display: grid; + grid-template-columns: minmax(0, 1fr) auto auto; + gap: 0.4rem; + align-items: center; + } + + .transfer-row strong { + min-width: 0; + font-size: var(--lo-font-body); + } + + .transfer-row input[type="number"] { + width: 3.6rem; + min-width: 3.6rem; + } + + .transfer-row .item-controls { + justify-content: flex-end; + } + .group-header { display: flex; align-items: center; @@ -833,8 +885,10 @@ @media (max-width: 900px) { .sheet-grid-2, + .sheet-grid-3, .profile-grid, - .creation-slots { + .creation-slots, + .reserve-card .reserve-grid { grid-template-columns: 1fr; } diff --git a/modules/applications/sheets/base-actor-sheet.mjs b/modules/applications/sheets/base-actor-sheet.mjs index d4dcad1..9a14398 100644 --- a/modules/applications/sheets/base-actor-sheet.mjs +++ b/modules/applications/sheets/base-actor-sheet.mjs @@ -37,6 +37,7 @@ export default class LesOubliesActorSheet extends HandlebarsApplicationMixin(fou openCombatPreset: LesOubliesActorSheet.#onOpenCombatPreset, openThreadHarvest: LesOubliesActorSheet.#onOpenThreadHarvest, openLinkedActor: LesOubliesActorSheet.#onOpenLinkedActor, + transferThread: LesOubliesActorSheet.#onTransferThread, }, } @@ -217,4 +218,26 @@ export default class LesOubliesActorSheet extends HandlebarsApplicationMixin(fou const actor = game.actors.get(actorId) if (actor) actor.sheet.render(true) } + + static async #onTransferThread(event, target) { + const resourceKey = target.dataset.resourceKey + const direction = target.dataset.direction || "toCompany" + if (!resourceKey || !this.document?.transferThreadReserve) return + + const row = target.closest("[data-transfer-row]") + const amountField = row?.querySelector?.("[data-transfer-amount]") + const amount = Math.max(Math.trunc(Number(amountField?.value ?? 1)), 0) + if (amount < 1) { + ui.notifications.warn("Indiquez une quantité à transférer.") + return + } + + const success = await this.document.transferThreadReserve(resourceKey, amount, direction) + if (!success) { + ui.notifications.warn("Transfert impossible avec les réserves actuelles.") + return + } + + this.render() + } } diff --git a/modules/applications/sheets/compagnie-sheet.mjs b/modules/applications/sheets/compagnie-sheet.mjs index ec49c2c..809ecc3 100644 --- a/modules/applications/sheets/compagnie-sheet.mjs +++ b/modules/applications/sheets/compagnie-sheet.mjs @@ -17,7 +17,7 @@ export default class LesOubliesCompagnieSheet extends LesOubliesActorSheet { static PARTS = { sheet: { - template: "systems/fvtt-les-oublies/templates/actor-compagnie-sheet-v4.hbs", + template: "systems/fvtt-les-oublies/templates/actor-compagnie-sheet-v5.hbs", }, } diff --git a/modules/applications/sheets/competence-sheet.mjs b/modules/applications/sheets/competence-sheet.mjs index a21923f..9791c84 100644 --- a/modules/applications/sheets/competence-sheet.mjs +++ b/modules/applications/sheets/competence-sheet.mjs @@ -3,7 +3,7 @@ import LesOubliesItemSheet from "./base-item-sheet.mjs" export default class LesOubliesCompetenceSheet extends LesOubliesItemSheet { static PARTS = { sheet: { - template: "systems/fvtt-les-oublies/templates/item-competence-sheet.hbs", + template: "systems/fvtt-les-oublies/templates/item-competence-sheet-v2.hbs", }, } } diff --git a/modules/applications/sheets/personnage-sheet.mjs b/modules/applications/sheets/personnage-sheet.mjs index b03924e..2ab6380 100644 --- a/modules/applications/sheets/personnage-sheet.mjs +++ b/modules/applications/sheets/personnage-sheet.mjs @@ -20,7 +20,7 @@ export default class LesOubliesPersonnageSheet extends LesOubliesActorSheet { static PARTS = { sheet: { - template: "systems/fvtt-les-oublies/templates/actor-personnage-sheet-v14.hbs", + template: "systems/fvtt-les-oublies/templates/actor-personnage-sheet-v18.hbs", }, } diff --git a/modules/les-oublies-actor.js b/modules/les-oublies-actor.js index f0e2d71..c31426e 100644 --- a/modules/les-oublies-actor.js +++ b/modules/les-oublies-actor.js @@ -4,6 +4,7 @@ import { LesOubliesRolls } from "./les-oublies-rolls.js" export class LesOubliesActor extends Actor { static CREATION_ITEM_TYPES = new Set(["race", "tribu", "metier"]) + static THREAD_RESOURCE_KEYS = new Set(["songesThreads", "cauchemarThreads", "emptyGlobes"]) prepareDerivedData() { super.prepareDerivedData() @@ -22,6 +23,18 @@ export class LesOubliesActor extends Actor { system.cauchemar.max = totals.cauchemarPoints system.songes.points = Math.clamp(Number(system.songes.points ?? totals.songesPoints), 0, totals.songesPoints) system.cauchemar.points = Math.clamp(Number(system.cauchemar.points ?? totals.cauchemarPoints), 0, totals.cauchemarPoints) + system.reserves.songesThreads = Math.max(Number(system.reserves?.songesThreads ?? 0), 0) + system.reserves.cauchemarThreads = Math.max(Number(system.reserves?.cauchemarThreads ?? 0), 0) + system.reserves.emptyGlobes = Math.max(Number(system.reserves?.emptyGlobes ?? 0), 0) + return + } + + if (this.type === "compagnie") { + const system = this.system + system.power.sharedDreamPoints = Math.max(Number(system.power?.sharedDreamPoints ?? 0), 0) + system.reserves.songesThreads = Math.max(Number(system.reserves?.songesThreads ?? 0), 0) + system.reserves.cauchemarThreads = Math.max(Number(system.reserves?.cauchemarThreads ?? 0), 0) + system.reserves.emptyGlobes = Math.max(Number(system.reserves?.emptyGlobes ?? 0), 0) return } @@ -62,6 +75,7 @@ export class LesOubliesActor extends Actor { async assignCreationItem(sourceItem) { if (!sourceItem || !LesOubliesActor.CREATION_ITEM_TYPES.has(sourceItem.type)) return null + const previousItem = this.getCreationItem(sourceItem.type) const itemData = sourceItem.toObject() delete itemData._id @@ -77,12 +91,19 @@ export class LesOubliesActor extends Actor { [`system.references.${sourceItem.type}Id`]: createdItem.id, }) + if (sourceItem.type === "race") { + await this.syncRaceProfiles({ currentRace: createdItem }) + await this.syncRaceDomains({ currentRace: createdItem, previousRace: previousItem }) + } + return createdItem } async clearCreationItem(type) { if (!LesOubliesActor.CREATION_ITEM_TYPES.has(type)) return + const previousItem = this.getCreationItem(type) + const existingIds = this.getEmbeddedItems(type).map((item) => item.id) if (existingIds.length) { await this.deleteEmbeddedDocuments("Item", existingIds, { renderSheet: false }) @@ -91,6 +112,11 @@ export class LesOubliesActor extends Actor { await this.update({ [`system.references.${type}Id`]: "", }) + + if (type === "race") { + await this.syncRaceProfiles({ currentRace: null }) + await this.syncRaceDomains({ currentRace: null, previousRace: previousItem }) + } } getCompagnie() { @@ -98,10 +124,94 @@ export class LesOubliesActor extends Actor { return compagnieId ? game.actors.get(compagnieId) ?? null : null } + getThreadReserveOwner(source = "actor") { + if (source === "company" || source === "compagnie") return this.getCompagnie() + return this + } + + getThreadReserves(source = "actor") { + const owner = this.getThreadReserveOwner(source) + return { + owner, + songesThreads: Math.max(Number(owner?.system?.reserves?.songesThreads ?? 0), 0), + cauchemarThreads: Math.max(Number(owner?.system?.reserves?.cauchemarThreads ?? 0), 0), + emptyGlobes: Math.max(Number(owner?.system?.reserves?.emptyGlobes ?? 0), 0), + } + } + + async transferThreadReserve(resourceKey, amount, direction = "toCompany") { + if (!LesOubliesActor.THREAD_RESOURCE_KEYS.has(resourceKey)) return false + const company = this.getCompagnie() + if (!company) return false + + const transferAmount = Math.max(Math.trunc(Number(amount ?? 0)), 0) + if (transferAmount < 1) return false + + const fromActor = direction === "toCompany" ? this : company + const toActor = direction === "toCompany" ? company : this + const current = Math.max(Number(fromActor.system?.reserves?.[resourceKey] ?? 0), 0) + if (current < transferAmount) return false + + const path = `system.reserves.${resourceKey}` + const targetCurrent = Math.max(Number(toActor.system?.reserves?.[resourceKey] ?? 0), 0) + + await fromActor.update({ [path]: current - transferAmount }) + await toActor.update({ [path]: targetCurrent + transferAmount }) + return true + } + getCompetenceByKey(skillKey) { return this.getEmbeddedItems("competence").find((item) => item.system.key === skillKey) ?? null } + getRaceLanguageDomains(race = this.getCreationItem("race")) { + return LesOubliesUtility.uniqueStrings(race?.system?.languageDomains ?? []) + } + + getRaceProfiles(race = this.getCreationItem("race")) { + const profiles = LesOubliesUtility.createEmptyProfiles() + for (const key of Object.keys(profiles)) { + profiles[key] = Math.trunc(Number(race?.system?.profiles?.[key] ?? 0)) + } + return profiles + } + + async syncRaceProfiles({ currentRace = this.getCreationItem("race") } = {}) { + if (this.type !== "personnage") return false + const profiles = this.getRaceProfiles(currentRace) + const updateData = Object.fromEntries( + Object.entries(profiles).map(([key, value]) => [`system.profils.${key}`, value]), + ) + await this.update(updateData) + if (currentRace) { + ui.notifications.info(`Profils raciaux appliqués depuis ${currentRace.name}.`) + } + return true + } + + async syncRaceDomains({ currentRace = this.getCreationItem("race"), previousRace = null } = {}) { + if (this.type !== "personnage") return false + + const competence = this.getCompetenceByKey("langues") + if (!competence) return false + + const currentAutoDomains = LesOubliesUtility.uniqueStrings(competence.system.fixedDomains ?? []) + const previousRaceDomains = previousRace + ? this.getRaceLanguageDomains(previousRace) + : currentAutoDomains + const autoDomainsToReplace = currentAutoDomains.length ? currentAutoDomains : previousRaceDomains + const nextAutoDomains = this.getRaceLanguageDomains(currentRace) + const manualDomains = LesOubliesUtility.uniqueStrings( + (competence.system.domains ?? []).filter((domain) => !autoDomainsToReplace.includes(domain)), + ) + + await competence.update({ + "system.fixedDomains": nextAutoDomains, + "system.domains": LesOubliesUtility.uniqueStrings([...manualDomains, ...nextAutoDomains]), + }) + return true + } + getSkillScoreByKey(skillKey) { const competence = this.getCompetenceByKey(skillKey) return competence ? this.computeSkillValue(competence) : 0 @@ -119,6 +229,8 @@ export class LesOubliesActor extends Actor { item, finalValue: this.computeSkillValue(item), profileLabel: LESOUBLIES_CONFIG.profileLabels[item.system.profileKey] ?? item.system.profileKey, + domains: LesOubliesUtility.uniqueStrings(item.system.domains ?? []), + fixedDomains: LesOubliesUtility.uniqueStrings(item.system.fixedDomains ?? []), })) } @@ -146,6 +258,8 @@ export class LesOubliesActor extends Actor { cauchemarMax: this.system.cauchemar?.max ?? this.system.cauchemar?.points ?? 0, songesPoints: this.system.songes?.points ?? 0, cauchemarPoints: this.system.cauchemar?.points ?? 0, + reserves: this.getThreadReserves(), + companyReserves: this.getThreadReserves("company"), race: this.getCreationItem("race"), tribu: this.getCreationItem("tribu"), metier: this.getCreationItem("metier"), diff --git a/modules/les-oublies-rolls.js b/modules/les-oublies-rolls.js index 873cb06..7063535 100644 --- a/modules/les-oublies-rolls.js +++ b/modules/les-oublies-rolls.js @@ -439,7 +439,12 @@ export class LesOubliesRolls { const data = await this.#promptSpellOptions(actor, spell) if (!data) return null - const activation = await this.#withActorLock(`spell:${actor.id}`, async () => { + const paymentMode = String(data.paymentMode || "points") + const paymentSource = this.#normalizeThreadReserveSource(data.paymentSource) + const paymentOwner = paymentMode === "fils" + ? this.#getThreadReserveOwner(actor, paymentSource) + : actor + const activation = await this.#withActorLock(`spell:${paymentOwner?.id ?? actor.id}:${paymentMode}`, async () => { const skill = actor.getCompetenceByKey?.(spell.system.skillKey) ?? null const skillBase = Number(skill?.system?.base ?? 0) if (skillBase < 1) { @@ -450,7 +455,6 @@ export class LesOubliesRolls { const métierMatch = this.#actorMatchesSpellGrant(actor, spell) const surcharge = !métierMatch const effectiveCost = Number(data.actualCost ?? 0) * (surcharge ? 2 : 1) - const paymentMode = String(data.paymentMode || "points") if (paymentMode === "points") { const resource = spell.system.polarity || "songes" const available = Number(actor.system?.[resource]?.points ?? 0) @@ -468,9 +472,43 @@ export class LesOubliesRolls { [`system.${resource}.points`]: Math.max(available - effectiveCost, 0), }) } + } else { + const reserve = this.#getThreadReserveState(actor, paymentSource) + if (!reserve.owner) { + ui.notifications.warn("Aucune réserve de compagnie n'est liée à ce personnage.") + return null + } + + const resourceKey = this.#getThreadResourceKey(spell.system.polarity) + const available = Number(reserve[resourceKey] ?? 0) + if (available < effectiveCost) { + ui.notifications.warn(game.i18n.format("LESOUBLIES.rolls.notEnoughResourceDetailed", { + resource: `${effectiveCost > 1 ? "fils" : "fil"} de ${spell.system.polarity === "cauchemar" ? "Cauchemar" : "Songes"}`, + actor: reserve.label, + required: effectiveCost, + available, + })) + return null + } + + if (effectiveCost > 0) { + await reserve.owner.update({ + [`system.reserves.${resourceKey}`]: Math.max(available - effectiveCost, 0), + "system.reserves.emptyGlobes": Number(reserve.emptyGlobes ?? 0) + effectiveCost, + }) + } } - return { métierMatch, surcharge, effectiveCost, paymentMode } + return { + métierMatch, + surcharge, + effectiveCost, + paymentMode, + paymentSource, + paymentSourceLabel: paymentMode === "fils" + ? this.#getThreadReserveLabel(actor, paymentSource) + : actor.name, + } }) if (!activation) return null @@ -487,6 +525,7 @@ export class LesOubliesRolls { costLabel: activation.paymentMode === "points" ? `${activation.effectiveCost} point${activation.effectiveCost > 1 ? "s" : ""} de ${spell.system.polarity === "cauchemar" ? "Cauchemar" : "Songes"}` : `${activation.effectiveCost} fil${activation.effectiveCost > 1 ? "s" : ""} de ${spell.system.polarity === "cauchemar" ? "Cauchemar" : "Songes"}`, + paymentSourceLabel: activation.paymentSourceLabel, métierMatch: activation.métierMatch, surcharge: activation.surcharge, notes: data.notes?.trim() || "", @@ -578,6 +617,17 @@ export class LesOubliesRolls { if (!data) return null const threadCount = Math.max(Number(data.threadCount ?? 1), 1) + const destinationSource = this.#normalizeThreadReserveSource(data.destinationSource) + const destinationReserve = this.#getThreadReserveState(actor, destinationSource) + if (!destinationReserve.owner) { + ui.notifications.warn("Aucune réserve de compagnie n'est liée à ce personnage.") + return null + } + if (Number(destinationReserve.emptyGlobes ?? 0) < threadCount) { + ui.notifications.warn(`${destinationReserve.label} ne dispose pas de suffisamment de globes vides pour stocker cette récolte.`) + return null + } + const damageTaken = threadCount const difficulty = -3 * (threadCount - 1) const result = await this.resolveTest(actor, { @@ -599,8 +649,11 @@ export class LesOubliesRolls { if (!result) return null await this.#applyDamageToActor(actor, damageTaken) - const durationRoll = await (new Roll("1d12")).evaluate() - const effectRoll = await (new Roll("1d12")).evaluate() + if (result.success) { + await this.#storeHarvestedThreads(actor, destinationSource, data.threadType, threadCount) + } + const durationRoll = await this.#evaluateDisplayedRoll("1d12") + const effectRoll = await this.#evaluateDisplayedRoll("1d12") const effectIndex = Number(effectRoll.total ?? 1) result.metadata.action.harvest = { threadType: data.threadType, @@ -611,6 +664,8 @@ export class LesOubliesRolls { sideEffectRoll: effectIndex, sideEffectText: HARVEST_SIDE_EFFECTS[effectIndex], sleeperLabel: data.sleeperLabel?.trim() || "Dormeur non précisé", + destinationLabel: destinationReserve.label, + stored: result.success, } return this.#createChatMessage(actor, result) @@ -1129,17 +1184,20 @@ export class LesOubliesRolls { const polarityLabel = spell.system.polarity === "cauchemar" ? game.i18n.localize("LESOUBLIES.ui.cauchemar") : game.i18n.localize("LESOUBLIES.ui.songes") + const threadReserves = this.#getThreadDialogState(actor) const content = await foundry.applications.handlebars.renderTemplate( - "systems/fvtt-les-oublies/templates/dialog-spell-activation.hbs", + "systems/fvtt-les-oublies/templates/dialog-spell-activation-v2.hbs", { actor, spell, resources: this.#getDialogResources(actor), + threadReserves, isMetierMatch, effectiveCostLabel: `${effectiveCost} point${effectiveCost > 1 ? "s" : ""} de ${polarityLabel}`, values: { actualCost: Number(spell.system.cost ?? 0), paymentMode: "points", + paymentSource: "actor", targetLabel: "", notes: "", }, @@ -1151,6 +1209,9 @@ export class LesOubliesRolls { title: `Activer ${spell.name}`, }, content, + render: (_event, dialog) => { + this.#bindSpellPaymentSelection(dialog, { actor, spell, effectiveCost }) + }, buttons: [ { action: "activate", @@ -1161,8 +1222,9 @@ export class LesOubliesRolls { if (!form) return null const data = this.#formToObject(form) return { - actualCost: Number(data.actualCost ?? spell.system.cost ?? 0), + actualCost: Math.max(Number(data.actualCost ?? spell.system.cost ?? 0), 0), paymentMode: String(data.paymentMode || "points"), + paymentSource: String(data.paymentSource || "actor"), targetLabel: String(data.targetLabel || ""), notes: String(data.notes || ""), } @@ -1338,16 +1400,19 @@ export class LesOubliesRolls { } static async #promptThreadHarvestOptions(actor) { + const threadReserves = this.#getThreadDialogState(actor) const content = await foundry.applications.handlebars.renderTemplate( - "systems/fvtt-les-oublies/templates/dialog-thread-harvest.hbs", + "systems/fvtt-les-oublies/templates/dialog-thread-harvest-v2.hbs", { actor, rollModes: this.getRollModes(), extraDieModes: this.getExtraDieModes(), resources: this.#getDialogResources(actor), + threadReserves, values: { threadType: "songes", threadCount: 1, + destinationSource: "actor", rollMode: this.getDefaultRollMode(actor), extraDie: "", sleeperLabel: "", @@ -1373,6 +1438,7 @@ export class LesOubliesRolls { return { threadType: String(data.threadType || "songes"), threadCount: Number(data.threadCount ?? 1), + destinationSource: String(data.destinationSource || "actor"), rollMode: String(data.rollMode || this.getDefaultRollMode(actor)), extraDie: String(data.extraDie || ""), sleeperLabel: String(data.sleeperLabel || ""), @@ -1443,12 +1509,14 @@ export class LesOubliesRolls { static async #rollExplodingDie({ type, index, source = "base" }) { const faces = [] + const rolls = [] let total = 0 let lastFace = 12 while (lastFace === 12) { - const roll = await (new Roll("1d12")).evaluate() + const roll = await this.#evaluateDisplayedRoll("1d12") lastFace = Number(roll.total ?? 0) + rolls.push(roll) faces.push(lastFace) total += lastFace } @@ -1461,6 +1529,7 @@ export class LesOubliesRolls { source, sourceLabel: source === "extra" ? game.i18n.localize("LESOUBLIES.rolls.extraDie") : null, faces, + rolls, firstFace: faces[0] ?? 0, total, exploded: faces.length > 1, @@ -1468,6 +1537,39 @@ export class LesOubliesRolls { } } + static async #evaluateDisplayedRoll(formula) { + const roll = await (new Roll(formula)).evaluate() + await this.#showDiceSoNice(roll) + return roll + } + + static async #showDiceSoNice(roll) { + if (!game.modules.get("dice-so-nice")?.active) return + if (!game.dice3d?.showForRoll) return + + const coreRollMode = game.settings.get("core", "rollMode") + let whisper = null + let blind = false + + switch (coreRollMode) { + case "blindroll": + blind = true + case "gmroll": + whisper = ChatMessage.getWhisperRecipients("GM").map((user) => user.id) + break + case "selfroll": + whisper = [game.user.id] + break + case "publicroll": + case "roll": + default: + whisper = null + break + } + + await game.dice3d.showForRoll(roll, game.user, true, whisper, blind) + } + static #needsSelection(dice) { return new Set(dice.map((die) => die.type)).size > 1 } @@ -1571,9 +1673,106 @@ export class LesOubliesRolls { songesPoints: Number(context.system.songes?.points ?? 0), cauchemarValue: Number(context.system.cauchemar?.value ?? 0), cauchemarPoints: Number(context.system.cauchemar?.points ?? 0), + songesThreads: Number(context.system.reserves?.songesThreads ?? 0), + cauchemarThreads: Number(context.system.reserves?.cauchemarThreads ?? 0), + emptyGlobes: Number(context.system.reserves?.emptyGlobes ?? 0), } } + static #normalizeThreadReserveSource(source) { + return ["company", "compagnie"].includes(String(source || "").toLowerCase()) ? "company" : "actor" + } + + static #getThreadReserveOwner(actor, source = "actor") { + return this.#normalizeThreadReserveSource(source) === "company" + ? actor?.getCompagnie?.() ?? null + : actor + } + + static #getThreadReserveLabel(actor, source = "actor") { + const normalized = this.#normalizeThreadReserveSource(source) + if (normalized === "actor") return "Réserve personnelle" + const company = this.#getThreadReserveOwner(actor, normalized) + return company ? `Réserve de compagnie — ${company.name}` : "Réserve de compagnie" + } + + static #getThreadResourceKey(polarity) { + return polarity === "cauchemar" ? "cauchemarThreads" : "songesThreads" + } + + static #getThreadReserveState(actor, source = "actor") { + const owner = this.#getThreadReserveOwner(actor, source) + return { + owner, + source: this.#normalizeThreadReserveSource(source), + label: this.#getThreadReserveLabel(actor, source), + songesThreads: Math.max(Number(owner?.system?.reserves?.songesThreads ?? 0), 0), + cauchemarThreads: Math.max(Number(owner?.system?.reserves?.cauchemarThreads ?? 0), 0), + emptyGlobes: Math.max(Number(owner?.system?.reserves?.emptyGlobes ?? 0), 0), + } + } + + static #getThreadDialogState(actor) { + const actorReserve = this.#getThreadReserveState(actor, "actor") + const companyReserve = this.#getThreadReserveState(actor, "company") + const options = [ + { value: "actor", label: actorReserve.label }, + ] + if (companyReserve.owner) options.push({ value: "company", label: companyReserve.label }) + return { + actor: actorReserve, + company: companyReserve, + options, + hasCompany: Boolean(companyReserve.owner), + } + } + + static async #storeHarvestedThreads(actor, destinationSource, threadType, threadCount) { + const reserve = this.#getThreadReserveState(actor, destinationSource) + if (!reserve.owner || threadCount < 1) return false + const resourceKey = this.#getThreadResourceKey(threadType) + await reserve.owner.update({ + [`system.reserves.${resourceKey}`]: Number(reserve[resourceKey] ?? 0) + threadCount, + "system.reserves.emptyGlobes": Math.max(Number(reserve.emptyGlobes ?? 0) - threadCount, 0), + }) + return true + } + + static #bindSpellPaymentSelection(dialog, { actor, spell, effectiveCost }) { + const root = this.#getDialogElement(dialog) + const form = root?.querySelector("form") + if (!form) return + + const modeField = form.elements.namedItem("paymentMode") + const sourceField = form.elements.namedItem("paymentSource") + const effectiveCostField = root.querySelector("[data-effective-cost]") + const sourceWrapper = root.querySelector("[data-payment-source]") + const sourceHint = root.querySelector("[data-payment-source-hint]") + + const update = () => { + const paymentMode = modeField instanceof HTMLSelectElement ? String(modeField.value || "points") : "points" + const paymentSource = sourceField instanceof HTMLSelectElement ? String(sourceField.value || "actor") : "actor" + const polarityLabel = spell.system.polarity === "cauchemar" ? "Cauchemar" : "Songes" + if (effectiveCostField instanceof HTMLInputElement) { + effectiveCostField.value = paymentMode === "points" + ? `${effectiveCost} point${effectiveCost > 1 ? "s" : ""} de ${polarityLabel}` + : `${effectiveCost} fil${effectiveCost > 1 ? "s" : ""} de ${polarityLabel}` + } + if (sourceWrapper instanceof HTMLElement) { + sourceWrapper.hidden = paymentMode !== "fils" + } + if (sourceHint instanceof HTMLElement) { + sourceHint.textContent = paymentMode === "fils" + ? `${this.#getThreadReserveLabel(actor, paymentSource)} utilisée. Les globes vidés y retournent automatiquement.` + : "La dépense se fait dans les points de Songes ou de Cauchemar du personnage." + } + } + + if (modeField instanceof HTMLSelectElement) modeField.addEventListener("change", update) + if (sourceField instanceof HTMLSelectElement) sourceField.addEventListener("change", update) + update() + } + static #createSpentResource(extraDie) { if (!extraDie) return null return { diff --git a/modules/les-oublies-utility.js b/modules/les-oublies-utility.js index 0ccc8e1..9251d6c 100644 --- a/modules/les-oublies-utility.js +++ b/modules/les-oublies-utility.js @@ -97,6 +97,12 @@ export class LesOubliesUtility { return [...documents].sort((left, right) => left.name.localeCompare(right.name, "fr")) } + static uniqueStrings(values = []) { + return [...new Set((Array.isArray(values) ? values : []) + .map((value) => String(value ?? "").trim()) + .filter(Boolean))] + } + static async prepareEnrichedHtml(documentName, type, systemData) { const htmlFields = game.system.documentTypes?.[documentName]?.[type]?.htmlFields ?? [] const enriched = {} diff --git a/modules/models/compagnie.mjs b/modules/models/compagnie.mjs index 074ce3a..bd55e82 100644 --- a/modules/models/compagnie.mjs +++ b/modules/models/compagnie.mjs @@ -21,6 +21,11 @@ export default class CompagnieDataModel extends foundry.abstract.TypeDataModel { label: new fields.StringField({ initial: "" }), details: new fields.StringField({ initial: "" }), }), { initial: [] }), + reserves: new fields.SchemaField({ + songesThreads: new fields.NumberField({ initial: 0, integer: true, min: 0 }), + cauchemarThreads: new fields.NumberField({ initial: 0, integer: true, min: 0 }), + emptyGlobes: new fields.NumberField({ initial: 0, integer: true, min: 0 }), + }), } } } diff --git a/modules/models/personnage.mjs b/modules/models/personnage.mjs index 725dd8f..91e793d 100644 --- a/modules/models/personnage.mjs +++ b/modules/models/personnage.mjs @@ -56,6 +56,11 @@ export default class PersonnageDataModel extends foundry.abstract.TypeDataModel money: new fields.SchemaField({ ecorces: new fields.NumberField({ initial: 0, integer: true, min: 0 }), }), + reserves: new fields.SchemaField({ + songesThreads: new fields.NumberField({ initial: 0, integer: true, min: 0 }), + cauchemarThreads: new fields.NumberField({ initial: 0, integer: true, min: 0 }), + emptyGlobes: new fields.NumberField({ initial: 0, integer: true, min: 0 }), + }), flagsNarratifs: new fields.SchemaField({ ombreDuTourment: new fields.BooleanField({ initial: false }), isCaptain: new fields.BooleanField({ initial: false }), diff --git a/packs/armes/000003.log b/packs/armes/000003.log deleted file mode 100644 index 582ccc8..0000000 Binary files a/packs/armes/000003.log and /dev/null differ diff --git a/packs/armes/000007.log b/packs/armes/000007.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/armes/000009.ldb b/packs/armes/000009.ldb new file mode 100644 index 0000000..a44c975 Binary files /dev/null and b/packs/armes/000009.ldb differ diff --git a/packs/armes/LOG b/packs/armes/LOG index 758a6be..c47050d 100644 --- a/packs/armes/LOG +++ b/packs/armes/LOG @@ -1 +1 @@ -2026/05/03-20:13:00.428719 7f25c15fe6c0 Delete type=3 #1 +2026/05/04-08:07:36.049759 7ff4349fd6c0 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 b3fad41..0000000 Binary files a/packs/armures/000003.log and /dev/null differ diff --git a/packs/armures/000007.log b/packs/armures/000007.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/armures/000009.ldb b/packs/armures/000009.ldb new file mode 100644 index 0000000..c02a216 Binary files /dev/null and b/packs/armures/000009.ldb differ diff --git a/packs/armures/LOG b/packs/armures/LOG index 671d2ce..409e851 100644 --- a/packs/armures/LOG +++ b/packs/armures/LOG @@ -1 +1 @@ -2026/05/03-20:13:00.445629 7f2577fff6c0 Delete type=3 #1 +2026/05/04-08:07:36.080095 7ff3e7fff6c0 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 efc2271..0000000 Binary files a/packs/competences/000003.log and /dev/null differ diff --git a/packs/competences/000007.log b/packs/competences/000007.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/competences/000009.ldb b/packs/competences/000009.ldb new file mode 100644 index 0000000..aa99b8b Binary files /dev/null and b/packs/competences/000009.ldb differ diff --git a/packs/competences/LOG b/packs/competences/LOG index 9e7981b..bf67512 100644 --- a/packs/competences/LOG +++ b/packs/competences/LOG @@ -1 +1 @@ -2026/05/03-20:13:00.492466 7f25c15fe6c0 Delete type=3 #1 +2026/05/04-08:07:36.144804 7ff4349fd6c0 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 72a5f14..0000000 Binary files a/packs/equipements/000003.log and /dev/null differ diff --git a/packs/equipements/000007.log b/packs/equipements/000007.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/equipements/000009.ldb b/packs/equipements/000009.ldb new file mode 100644 index 0000000..12651e0 Binary files /dev/null and b/packs/equipements/000009.ldb differ diff --git a/packs/equipements/LOG b/packs/equipements/LOG index 10ccbe0..039ef9c 100644 --- a/packs/equipements/LOG +++ b/packs/equipements/LOG @@ -1 +1 @@ -2026/05/03-20:13:00.461618 7f25c1dff6c0 Delete type=3 #1 +2026/05/04-08:07:36.101347 7ff4359ff6c0 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 19bd26f..0000000 Binary files a/packs/metiers/000003.log and /dev/null differ diff --git a/packs/metiers/000007.log b/packs/metiers/000007.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/metiers/000009.ldb b/packs/metiers/000009.ldb new file mode 100644 index 0000000..fa7ea03 Binary files /dev/null and b/packs/metiers/000009.ldb differ diff --git a/packs/metiers/LOG b/packs/metiers/LOG index 5282c63..52845e2 100644 --- a/packs/metiers/LOG +++ b/packs/metiers/LOG @@ -1 +1 @@ -2026/05/03-20:13:00.538848 7f25c0dfd6c0 Delete type=3 #1 +2026/05/04-08:07:36.206891 7ff4351fe6c0 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 0b9d2b7..0000000 Binary files a/packs/pouvoirs-compagnie/000003.log and /dev/null differ diff --git a/packs/pouvoirs-compagnie/000007.log b/packs/pouvoirs-compagnie/000007.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/pouvoirs-compagnie/000009.ldb b/packs/pouvoirs-compagnie/000009.ldb new file mode 100644 index 0000000..9f5d0d4 Binary files /dev/null and b/packs/pouvoirs-compagnie/000009.ldb differ diff --git a/packs/pouvoirs-compagnie/LOG b/packs/pouvoirs-compagnie/LOG index 7375a2d..ea31773 100644 --- a/packs/pouvoirs-compagnie/LOG +++ b/packs/pouvoirs-compagnie/LOG @@ -1 +1 @@ -2026/05/03-20:13:00.476671 7f25c0dfd6c0 Delete type=3 #1 +2026/05/04-08:07:36.123812 7ff4351fe6c0 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 4f2c391..0000000 Binary files a/packs/races/000003.log and /dev/null differ diff --git a/packs/races/000007.log b/packs/races/000007.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/races/000009.ldb b/packs/races/000009.ldb new file mode 100644 index 0000000..a3ce1d6 Binary files /dev/null and b/packs/races/000009.ldb differ diff --git a/packs/races/LOG b/packs/races/LOG index 0e1e14c..dc14cba 100644 --- a/packs/races/LOG +++ b/packs/races/LOG @@ -1 +1 @@ -2026/05/03-20:13:00.509155 7f2577fff6c0 Delete type=3 #1 +2026/05/04-08:07:36.166025 7ff3e7fff6c0 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 6a169ac..0000000 Binary files a/packs/sortileges/000003.log and /dev/null differ diff --git a/packs/sortileges/000007.log b/packs/sortileges/000007.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/sortileges/000009.ldb b/packs/sortileges/000009.ldb new file mode 100644 index 0000000..1000989 Binary files /dev/null and b/packs/sortileges/000009.ldb differ diff --git a/packs/sortileges/LOG b/packs/sortileges/LOG index 800afdc..3878286 100644 --- a/packs/sortileges/LOG +++ b/packs/sortileges/LOG @@ -1 +1 @@ -2026/05/03-20:13:00.554628 7f25c15fe6c0 Delete type=3 #1 +2026/05/04-08:07:36.229139 7ff4349fd6c0 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 e2ccc48..0000000 Binary files a/packs/tribus/000003.log and /dev/null differ diff --git a/packs/tribus/000007.log b/packs/tribus/000007.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/tribus/000009.ldb b/packs/tribus/000009.ldb new file mode 100644 index 0000000..9eaea43 Binary files /dev/null and b/packs/tribus/000009.ldb differ diff --git a/packs/tribus/LOG b/packs/tribus/LOG index 1ccac27..0a6cdea 100644 --- a/packs/tribus/LOG +++ b/packs/tribus/LOG @@ -1 +1 @@ -2026/05/03-20:13:00.523663 7f25c1dff6c0 Delete type=3 #1 +2026/05/04-08:07:36.186743 7ff4359ff6c0 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-compagnie-sheet-v5.hbs b/templates/actor-compagnie-sheet-v5.hbs new file mode 100644 index 0000000..1756f34 --- /dev/null +++ b/templates/actor-compagnie-sheet-v5.hbs @@ -0,0 +1,128 @@ +
+
+ +
+ +

+
+
+ + + +
+
+

{{localize "LESOUBLIES.labels.pouvoir"}}

+
+ + +
+
+ + +
+

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

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ {{formInput systemFields.power.fields.description enriched=enriched.power.description value=system.power.description name="system.power.description" toggled=true}} +
+

Items de pouvoir

+ +
+
+ {{#each powers as |item|}} +
+
{{item.name}}
{{item.system.activationCondition}}
+
+
+ {{/each}} +
+ {{#if primaryPower}} +
{{primaryPower.name}} — {{primaryPower.system.activationCondition}}
+ {{/if}} +
+
+ +
+
+
+

{{localize "LESOUBLIES.ui.membres"}}

+
+ + +
+
+ + +
+

Sélectionnez le capitaine et l'ombre du tourment parmi les personnages du monde.

+ {{#if captain}}

Capitaine : {{captain.name}}

{{/if}} + {{#if shadow}}

Ombre : {{shadow.name}}

{{/if}} +
    + {{#each members as |member|}} +
  • {{member.name}}
  • + {{/each}} +
+
+ +
+

{{localize "LESOUBLIES.labels.liensNarratifs"}}

+

{{localize "LESOUBLIES.ui.readOnlyCollection"}}

+
    + {{#each links as |link|}} +
  • {{link.label}} — {{link.sourceLabel}} -> {{link.targetLabel}} {{link.details}}
  • + {{/each}} +
+
+
+
+ +
+
+

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

+ {{formInput systemFields.description enriched=enriched.description value=system.description name="system.description" toggled=true}} +

{{localize "LESOUBLIES.labels.notes"}}

+ {{formInput systemFields.notes enriched=enriched.notes value=system.notes name="system.notes" toggled=true}} +
+
+
diff --git a/templates/actor-personnage-sheet-v15.hbs b/templates/actor-personnage-sheet-v15.hbs new file mode 100644 index 0000000..d95def8 --- /dev/null +++ b/templates/actor-personnage-sheet-v15.hbs @@ -0,0 +1,358 @@ +
+
+ +
+ +

+
+ + +
+
+ {{#each creationSlots as |slot|}} +
+
+
+

{{slot.label}}

+ {{#if slot.item}} + {{slot.item.name}} + {{else}} + Glisser ici + {{/if}} +
+ {{#if slot.item}} +
+ + {{#unless @root.isPlayMode}} + + {{/unless}} +
+ {{/if}} +
+
+ {{/each}} +
+
+
+ + + +
+
+
+

{{localize "LESOUBLIES.ui.derivedOverview"}}

+
+ + + {{derived.sizeLabel}} +
+
+ + + / {{derived.hpMax}} +
+
+ + + {{system.songes.points}} / {{system.songes.max}} pts +
+
+ + +
+
+ + +
+
+ + + {{system.cauchemar.points}} / {{system.cauchemar.max}} pts +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+

{{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.threadSonges"}} + +
+ + +
+
+
+ {{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.

+
+ +
+

{{localize "LESOUBLIES.labels.compagnie"}}

+
+ + +
+

{{localize "LESOUBLIES.labels.compagnie"}} : {{#if derived.compagnie}}{{derived.compagnie.name}}{{else}}—{{/if}}

+ {{#if activeCompanyPower}} +

{{localize "LESOUBLIES.labels.pouvoirCompagnieActif"}} : {{activeCompanyPower.name}} — {{activeCompanyPower.system.activationCondition}}

+ {{/if}} + {{#if derived.compagnie}} +
+ +
+ {{/if}} +
+
+ +
+ +
+
+
+

{{localize "LESOUBLIES.ui.competences"}}

+ +
+
+ {{#each skillColumns as |column|}} +
+ {{#each column as |group|}} +
+
+

{{group.label}}

+ +
+
+ {{#each group.items as |entry|}} +
+
+ {{entry.item.name}} + Base {{entry.item.system.base}} · {{group.label}} {{group.profileValue}} · {{localize "LESOUBLIES.labels.valeurFinale"}} {{entry.finalValue}} +
+
+ + + +
+
+ {{/each}} +
+
+ {{/each}} +
+ {{/each}} +
+
+
+ +
+
+
+

{{localize "LESOUBLIES.ui.combat"}}

+
+ + + + + +
+
+
+ {{#if equippedWeapons.length}} + {{#each equippedWeapons as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}
+
+
+ {{/each}} + {{else}} +

Aucune arme équipée.

+ {{/if}} +
+
+ +
+
+

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

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

{{localize "LESOUBLIES.ui.equipement"}}

+
+ + + +
+
+
+ {{#each weapons as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}{{#if item.system.equipped}} - Équipée{{/if}}
+
+
+ {{/each}} + {{#each armors as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.armure"}} - Prot {{item.system.protection}}
+
+
+ {{/each}} + {{#each equipment as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.equipement"}} - {{item.system.category}}
+
+
+ {{/each}} +
+
+
+ +
+
+

{{localize "LESOUBLIES.labels.identite"}}

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+

{{localize "LESOUBLIES.ui.notes"}}

+ + {{formInput systemFields.biodata.fields.description enriched=enriched.biodata.description value=system.biodata.description name="system.biodata.description" toggled=true}} + + {{formInput systemFields.biodata.fields.notes enriched=enriched.biodata.notes value=system.biodata.notes name="system.biodata.notes" toggled=true}} + + {{formInput systemFields.biodata.fields.gmnotes enriched=enriched.biodata.gmnotes value=system.biodata.gmnotes name="system.biodata.gmnotes" toggled=true}} + + {{formInput systemFields.visions enriched=enriched.visions value=system.visions name="system.visions" toggled=true}} +
+
+
diff --git a/templates/actor-personnage-sheet-v16.hbs b/templates/actor-personnage-sheet-v16.hbs new file mode 100644 index 0000000..9c81cbc --- /dev/null +++ b/templates/actor-personnage-sheet-v16.hbs @@ -0,0 +1,360 @@ +
+
+ +
+ +

+
+ + +
+
+ {{#each creationSlots as |slot|}} +
+
+
+

{{slot.label}}

+ {{#if slot.item}} + {{slot.item.name}} + {{else}} + Glisser ici + {{/if}} +
+ {{#if slot.item}} +
+ + {{#unless @root.isPlayMode}} + + {{/unless}} +
+ {{/if}} +
+
+ {{/each}} +
+
+
+ + + +
+
+
+

{{localize "LESOUBLIES.ui.derivedOverview"}}

+
+ + + {{derived.sizeLabel}} +
+
+ + + / {{derived.hpMax}} +
+
+ + + {{system.songes.points}} / {{system.songes.max}} pts +
+
+ + +
+
+ + +
+
+ + + {{system.cauchemar.points}} / {{system.cauchemar.max}} pts +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+

{{localize "LESOUBLIES.labels.compagnie"}}

+
+ + +
+

{{localize "LESOUBLIES.labels.compagnie"}} : {{#if derived.compagnie}}{{derived.compagnie.name}}{{else}}—{{/if}}

+ {{#if activeCompanyPower}} +

{{localize "LESOUBLIES.labels.pouvoirCompagnieActif"}} : {{activeCompanyPower.name}} — {{activeCompanyPower.system.activationCondition}}

+ {{/if}} + {{#if derived.compagnie}} +
+ +
+ {{/if}} +
+
+ +
+ +
+
+
+

{{localize "LESOUBLIES.ui.competences"}}

+ +
+
+ {{#each skillColumns as |column|}} +
+ {{#each column as |group|}} +
+
+

{{group.label}}

+ +
+
+ {{#each group.items as |entry|}} +
+
+ {{entry.item.name}} + Base {{entry.item.system.base}} · {{group.label}} {{group.profileValue}} · {{localize "LESOUBLIES.labels.valeurFinale"}} {{entry.finalValue}} +
+
+ + + +
+
+ {{/each}} +
+
+ {{/each}} +
+ {{/each}} +
+
+
+ +
+
+
+

{{localize "LESOUBLIES.ui.combat"}}

+
+ + + + + +
+
+
+ {{#if equippedWeapons.length}} + {{#each equippedWeapons as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}
+
+
+ {{/each}} + {{else}} +

Aucune arme équipée.

+ {{/if}} +
+
+ +
+
+
+

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

+ +
+
+ {{#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.threadSonges"}} + +
+ + +
+
+
+ {{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.

+
+
+
+ +
+
+
+

{{localize "LESOUBLIES.ui.equipement"}}

+
+ + + +
+
+
+ {{#each weapons as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}{{#if item.system.equipped}} - Équipée{{/if}}
+
+
+ {{/each}} + {{#each armors as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.armure"}} - Prot {{item.system.protection}}
+
+
+ {{/each}} + {{#each equipment as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.equipement"}} - {{item.system.category}}
+
+
+ {{/each}} +
+
+
+ +
+
+

{{localize "LESOUBLIES.labels.identite"}}

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+

{{localize "LESOUBLIES.ui.notes"}}

+ + {{formInput systemFields.biodata.fields.description enriched=enriched.biodata.description value=system.biodata.description name="system.biodata.description" toggled=true}} + + {{formInput systemFields.biodata.fields.notes enriched=enriched.biodata.notes value=system.biodata.notes name="system.biodata.notes" toggled=true}} + + {{formInput systemFields.biodata.fields.gmnotes enriched=enriched.biodata.gmnotes value=system.biodata.gmnotes name="system.biodata.gmnotes" toggled=true}} + + {{formInput systemFields.visions enriched=enriched.visions value=system.visions name="system.visions" toggled=true}} +
+
+
diff --git a/templates/actor-personnage-sheet-v17.hbs b/templates/actor-personnage-sheet-v17.hbs new file mode 100644 index 0000000..83bc75b --- /dev/null +++ b/templates/actor-personnage-sheet-v17.hbs @@ -0,0 +1,363 @@ +
+
+ +
+ +

+
+ + +
+
+ {{#each creationSlots as |slot|}} +
+
+
+

{{slot.label}}

+ {{#if slot.item}} + {{slot.item.name}} + {{else}} + Glisser ici + {{/if}} +
+ {{#if slot.item}} +
+ + {{#unless @root.isPlayMode}} + + {{/unless}} +
+ {{/if}} +
+
+ {{/each}} +
+
+
+ + + +
+
+
+

{{localize "LESOUBLIES.ui.derivedOverview"}}

+
+ + + {{derived.sizeLabel}} +
+
+ + + / {{derived.hpMax}} +
+
+ + + {{system.songes.points}} / {{system.songes.max}} pts +
+
+ + +
+
+ + +
+
+ + + {{system.cauchemar.points}} / {{system.cauchemar.max}} pts +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+

{{localize "LESOUBLIES.labels.compagnie"}}

+
+ + +
+

{{localize "LESOUBLIES.labels.compagnie"}} : {{#if derived.compagnie}}{{derived.compagnie.name}}{{else}}—{{/if}}

+ {{#if activeCompanyPower}} +

{{localize "LESOUBLIES.labels.pouvoirCompagnieActif"}} : {{activeCompanyPower.name}} — {{activeCompanyPower.system.activationCondition}}

+ {{/if}} + {{#if derived.compagnie}} +
+ +
+ {{/if}} +
+
+ +
+ +
+
+
+

{{localize "LESOUBLIES.ui.competences"}}

+ +
+
+ {{#each skillColumns as |column|}} +
+ {{#each column as |group|}} +
+
+

{{group.label}}

+ +
+
+ {{#each group.items as |entry|}} +
+
+ {{entry.item.name}} + Base {{entry.item.system.base}} · {{group.label}} {{group.profileValue}} · {{localize "LESOUBLIES.labels.valeurFinale"}} {{entry.finalValue}} + {{#if entry.domains.length}} + Domaines : {{join entry.domains ", "}} + {{/if}} +
+
+ + + +
+
+ {{/each}} +
+
+ {{/each}} +
+ {{/each}} +
+
+
+ +
+
+
+

{{localize "LESOUBLIES.ui.combat"}}

+
+ + + + + +
+
+
+ {{#if equippedWeapons.length}} + {{#each equippedWeapons as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}
+
+
+ {{/each}} + {{else}} +

Aucune arme équipée.

+ {{/if}} +
+
+ +
+
+
+

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

+ +
+
+ {{#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.threadSonges"}} + +
+ + +
+
+
+ {{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.

+
+
+
+ +
+
+
+

{{localize "LESOUBLIES.ui.equipement"}}

+
+ + + +
+
+
+ {{#each weapons as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}{{#if item.system.equipped}} - Équipée{{/if}}
+
+
+ {{/each}} + {{#each armors as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.armure"}} - Prot {{item.system.protection}}
+
+
+ {{/each}} + {{#each equipment as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.equipement"}} - {{item.system.category}}
+
+
+ {{/each}} +
+
+
+ +
+
+

{{localize "LESOUBLIES.labels.identite"}}

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+

{{localize "LESOUBLIES.ui.notes"}}

+ + {{formInput systemFields.biodata.fields.description enriched=enriched.biodata.description value=system.biodata.description name="system.biodata.description" toggled=true}} + + {{formInput systemFields.biodata.fields.notes enriched=enriched.biodata.notes value=system.biodata.notes name="system.biodata.notes" toggled=true}} + + {{formInput systemFields.biodata.fields.gmnotes enriched=enriched.biodata.gmnotes value=system.biodata.gmnotes name="system.biodata.gmnotes" toggled=true}} + + {{formInput systemFields.visions enriched=enriched.visions value=system.visions name="system.visions" toggled=true}} +
+
+
diff --git a/templates/actor-personnage-sheet-v18.hbs b/templates/actor-personnage-sheet-v18.hbs new file mode 100644 index 0000000..53bf259 --- /dev/null +++ b/templates/actor-personnage-sheet-v18.hbs @@ -0,0 +1,365 @@ +
+
+ +
+ +

+
+ +
+
+ {{#each creationSlots as |slot|}} +
+
+
+

{{slot.label}}

+ {{#if slot.item}} + {{slot.item.name}} + {{else}} + Glisser ici + {{/if}} +
+ {{#if slot.item}} +
+ + {{#unless @root.isPlayMode}} + + {{/unless}} +
+ {{/if}} +
+
+ {{/each}} +
+
+
+ + + +
+
+
+

{{localize "LESOUBLIES.ui.derivedOverview"}}

+
+ + + {{derived.sizeLabel}} +
+
+ + + / {{derived.hpMax}} +
+
+ + + {{system.songes.points}} / {{system.songes.max}} pts +
+
+ + +
+
+ + +
+
+ + + {{system.cauchemar.points}} / {{system.cauchemar.max}} pts +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+

{{localize "LESOUBLIES.labels.compagnie"}}

+
+ + +
+

{{localize "LESOUBLIES.labels.compagnie"}} : {{#if derived.compagnie}}{{derived.compagnie.name}}{{else}}—{{/if}}

+ {{#if activeCompanyPower}} +

{{localize "LESOUBLIES.labels.pouvoirCompagnieActif"}} : {{activeCompanyPower.name}} — {{activeCompanyPower.system.activationCondition}}

+ {{/if}} + {{#if derived.compagnie}} +
+ +
+ {{/if}} +
+
+ +
+ +
+
+
+

{{localize "LESOUBLIES.ui.competences"}}

+ +
+
+ {{#each skillColumns as |column|}} +
+ {{#each column as |group|}} +
+
+

{{group.label}}

+ +
+
+ {{#each group.items as |entry|}} +
+
+ {{entry.item.name}} + Base {{entry.item.system.base}} · {{group.label}} {{group.profileValue}} · {{localize "LESOUBLIES.labels.valeurFinale"}} {{entry.finalValue}} + {{#if entry.domains.length}} + Domaines : {{join entry.domains ", "}} + {{/if}} +
+
+ + + +
+
+ {{/each}} +
+
+ {{/each}} +
+ {{/each}} +
+
+
+ +
+
+
+

{{localize "LESOUBLIES.ui.combat"}}

+
+ + + + + +
+
+
+ {{#if equippedWeapons.length}} + {{#each equippedWeapons as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}
+
+
+ {{/each}} + {{else}} +

Aucune arme équipée.

+ {{/if}} +
+
+ +
+
+
+

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

+ +
+
+ {{#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.threadSonges"}} + +
+ + +
+
+
+ {{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.

+
+
+
+ +
+
+
+

{{localize "LESOUBLIES.ui.equipement"}}

+
+ + + +
+
+
+ {{#each weapons as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.arme"}} - {{item.system.damage}}{{#if item.system.equipped}} - Équipée{{/if}}
+
+
+ {{/each}} + {{#each armors as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.armure"}} - Prot {{item.system.protection}}
+
+
+ {{/each}} + {{#each equipment as |item|}} +
+
{{item.name}}
{{localize "TYPES.Item.equipement"}} - {{item.system.category}}
+
+
+ {{/each}} +
+
+
+ +
+
+

{{localize "LESOUBLIES.labels.identite"}}

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+

{{localize "LESOUBLIES.ui.notes"}}

+ + {{formInput systemFields.biodata.fields.description enriched=enriched.biodata.description value=system.biodata.description name="system.biodata.description" toggled=true}} + + {{formInput systemFields.biodata.fields.notes enriched=enriched.biodata.notes value=system.biodata.notes name="system.biodata.notes" toggled=true}} + + {{formInput systemFields.biodata.fields.gmnotes enriched=enriched.biodata.gmnotes value=system.biodata.gmnotes name="system.biodata.gmnotes" toggled=true}} + + {{formInput systemFields.visions enriched=enriched.visions value=system.visions name="system.visions" toggled=true}} +
+
+
diff --git a/templates/chat-action-roll.hbs b/templates/chat-action-roll.hbs index b2a0cb6..db9aaac 100644 --- a/templates/chat-action-roll.hbs +++ b/templates/chat-action-roll.hbs @@ -97,6 +97,11 @@ {{action.harvest.threadCount}} fil{{#unless (eq action.harvest.threadCount 1)}}s{{/unless}} de {{action.harvest.threadType}} {{action.harvest.sleeperLabel}} +
+ Stockage + {{action.harvest.destinationLabel}} + {{#if action.harvest.stored}}Réserve créditée{{else}}Aucun fil stocké{{/if}} +
Dégâts subis {{action.harvest.damageTaken}} diff --git a/templates/chat-spell-activation.hbs b/templates/chat-spell-activation.hbs index d34de0e..12b0b71 100644 --- a/templates/chat-spell-activation.hbs +++ b/templates/chat-spell-activation.hbs @@ -25,6 +25,7 @@
Ressource {{activation.costLabel}} + {{activation.paymentSourceLabel}}
Métier diff --git a/templates/dialog-spell-activation-v2.hbs b/templates/dialog-spell-activation-v2.hbs new file mode 100644 index 0000000..9f57aa9 --- /dev/null +++ b/templates/dialog-spell-activation-v2.hbs @@ -0,0 +1,57 @@ +
+
+
+

{{spell.name}}

+
+
+
+
+
+
+
+
+

{{#if isMetierMatch}}Le métier de l'acteur couvre ce sortilège : le coût de base s'applique.{{else}}Le métier de l'acteur ne couvre pas ce sortilège : le coût est doublé conformément aux règles.{{/if}}

+
+ +
+

Activation

+
+ + +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+

{{localize "LESOUBLIES.rolls.resourceState"}} : Songes {{resources.songesPoints}} / {{resources.songesValue}} · Cauchemar {{resources.cauchemarPoints}} / {{resources.cauchemarValue}}

+

Réserve perso : Songes {{threadReserves.actor.songesThreads}} · Cauchemar {{threadReserves.actor.cauchemarThreads}} · Globes vides {{threadReserves.actor.emptyGlobes}}

+ {{#if threadReserves.hasCompany}} +

{{threadReserves.company.label}} : Songes {{threadReserves.company.songesThreads}} · Cauchemar {{threadReserves.company.cauchemarThreads}} · Globes vides {{threadReserves.company.emptyGlobes}}

+ {{/if}} +

La dépense se fait dans les points de Songes ou de Cauchemar du personnage.

+
+
+
diff --git a/templates/dialog-thread-harvest-v2.hbs b/templates/dialog-thread-harvest-v2.hbs new file mode 100644 index 0000000..ad38dde --- /dev/null +++ b/templates/dialog-thread-harvest-v2.hbs @@ -0,0 +1,54 @@ +
+
+

Récolte de fils

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+

Difficulté : -3 par fil supplémentaire. Dégâts subis : 1 par fil souhaité. En cas d'échec, plus aucune récolte possible sur ce dormeur cette nuit.

+

{{localize "LESOUBLIES.rolls.resourceState"}} : Songes {{resources.songesPoints}} / {{resources.songesValue}} · Cauchemar {{resources.cauchemarPoints}} / {{resources.cauchemarValue}}

+

Réserve perso : Songes {{threadReserves.actor.songesThreads}} · Cauchemar {{threadReserves.actor.cauchemarThreads}} · Globes vides {{threadReserves.actor.emptyGlobes}}

+ {{#if threadReserves.hasCompany}} +

{{threadReserves.company.label}} : Songes {{threadReserves.company.songesThreads}} · Cauchemar {{threadReserves.company.cauchemarThreads}} · Globes vides {{threadReserves.company.emptyGlobes}}

+ {{/if}} +
+
diff --git a/templates/item-competence-sheet-v2.hbs b/templates/item-competence-sheet-v2.hbs new file mode 100644 index 0000000..f7af1f5 --- /dev/null +++ b/templates/item-competence-sheet-v2.hbs @@ -0,0 +1,25 @@ +
+
+ +
+

Savoir-faire

+

+ +
+
+
+
+
+
+
+
+
+
+
+
+

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

+ {{formInput systemFields.description enriched=enriched.description value=system.description name="system.description" toggled=true}} +

{{localize "LESOUBLIES.labels.notes"}}

+ {{formInput systemFields.notes enriched=enriched.notes value=system.notes name="system.notes" toggled=true}} +
+