diff --git a/lang/fr.json b/lang/fr.json index d98e654..1dcd1b6 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -23,6 +23,83 @@ "DNC.Chat.SelectTarget": "Choisissez une cible presente sur la scene.", "DNC.Chat.TargetUnavailable": "La cible selectionnee n'est plus disponible.", "DNC.Chat.InvalidDamageTarget": "Impossible d'appliquer les degats a cette cible.", + "DNC.Chat.Kicker.Resolution": "Resolution", + "DNC.Chat.Kicker.Magic": "Magie", + "DNC.Chat.Kicker.Wear": "Usure", + "DNC.Chat.Kicker.Network": "Reseau", + "DNC.Chat.Kicker.Initiative": "Ordre de marche", + "DNC.Chat.Success": "Reussite", + "DNC.Chat.Failure": "Echec", + "DNC.Chat.Favor": "Faveur", + "DNC.Chat.Target": "Cible", + "DNC.Chat.Kept": "Garde", + "DNC.Chat.Rolls": "Lancers", + "DNC.Chat.RollDamage": "Lancer les degats", + "DNC.Chat.RollValue": "Jet", + "DNC.Chat.AutoDisadvantage": "Desavantage automatique", + "DNC.Chat.RiskChaos": "Risquer le Chaos", + "DNC.Chat.Result": "Resultat", + "DNC.Chat.Before": "Avant", + "DNC.Chat.After": "Apres", + "DNC.Chat.Total": "Total", + "DNC.Chat.Bonus": "Bonus", + "DNC.Chat.CombatSynced": "Combat synchronise", + "DNC.Chat.TargetValue": "Valeur cible", + "DNC.Chat.FavorDie": "De de faveur", + "DNC.Chat.CharacteristicValue": "Valeur de la caracteristique", + "DNC.Chat.HpCost": "Cout en PV", + "DNC.Chat.FocusSpent": "Focus depense", + "DNC.Chat.FocusRemaining": "Focus restant", + "DNC.Chat.HpSpent": "PV depenses", + "DNC.Chat.HpRemaining": "PV restants", + "DNC.Chat.CasterRank": "Rang du lanceur", + "DNC.Chat.Difficulty": "Difficulte", + "DNC.Chat.Effect": "Effet", + "DNC.Chat.StoredProtection": "Protection stockee pour ce combat", + "DNC.Chat.ResourceWearsDown": "La ressource s'amenuise.", + "DNC.Chat.ResourceStable": "La ressource tient bon.", + "DNC.Chat.ResourceExhausted": "La ressource est epuisee.", + "DNC.Chat.AutoDisadvantageCanceled": "le cout du sort depasse le rang du lanceur, mais une faveur l'a annule.", + "DNC.Chat.AutoDisadvantageApplies": "le cout du sort depasse le rang du lanceur.", + "DNC.Chat.FocusFrom": "depuis", + "DNC.Chat.FocusUsed": "utilise", + "DNC.Chat.FocusLeft": "restant", + "DNC.Chat.FocusDropsTo": "le focus descend a", + "DNC.Chat.FirstSpellScene": "premier sort de la scene", + "DNC.Chat.FocusNoBenefit": "aucun apport pour cette scene.", + "DNC.Chat.ChaosSubtitle": "La magie opere malgre l'echec ; le MJ determine les consequences.", + "DNC.Chat.SpellMaintained": "Sort maintenu", + "DNC.Chat.ChaosDieDrops": "Le de du Chaos descend d'un cran.", + "DNC.Chat.ChaosDieExhausted": "Le de du Chaos est trop faible pour etre reutilise dans le Donjon.", + "DNC.UI.Mode": "Mode", + "DNC.UI.ModeNormal": "Normal", + "DNC.UI.ModeAdvantage": "Avantage", + "DNC.UI.ModeDisadvantage": "Desavantage", + "DNC.UI.FavorBoost": "Coup de pouce", + "DNC.UI.NoFavor": "Aucune faveur", + "DNC.UI.RollAction": "Lancer", + "DNC.UI.AttackAction": "Attaquer", + "DNC.UI.UseAction": "Utiliser", + "DNC.UI.Characteristic": "Caracteristique", + "DNC.UI.Cost": "Cout", + "DNC.UI.CurrentHp": "PV actuels", + "DNC.UI.Rank": "Rang", + "DNC.UI.Focus": "Focus", + "DNC.UI.Chaos": "Chaos", + "DNC.UI.Weapon": "Arme", + "DNC.UI.Damage": "Degats", + "DNC.UI.Range": "Portee", + "DNC.UI.Spell": "Sortilege", + "DNC.Dialog.InitiativeIntro": "{actorName} lance l'initiative.", + "DNC.Dialog.InitiativeCurrent": "DEX actuelle : {dex}, bonus de fiche : {initiativeBonus}", + "DNC.Dialog.CharacteristicUsed": "Caracteristique utilisee", + "DNC.Dialog.ActorDamageBonus": "Bonus de degats de l'acteur", + "DNC.Dialog.SpellAutoDisadvantage": "Le cout depasse le rang du lanceur : le jet se fera automatiquement avec desavantage.", + "DNC.Dialog.UseUsageDie": "Utiliser {itemName} et lancer son de d'usage actuel.", + "DNC.Dialog.CurrentValue": "Valeur actuelle", + "DNC.Warn.NoFavorAvailable": "Aucune faveur disponible pour {label}.", + "DNC.Warn.SpellInsufficientResources": "Le lanceur ne dispose pas d'assez de PV et de focus pour payer ce sort.", + "DNC.Warn.ChaosUnavailable": "Le Chaos n'est pas disponible pour ce sort.", "DNC.Sheet.Create": "Creer", "DNC.Sheet.Delete": "Supprimer", "DNC.Sheet.Edit": "Editer", diff --git a/modules/applications/donjon-et-cie-roll-dialog.mjs b/modules/applications/donjon-et-cie-roll-dialog.mjs index e82b7f1..3c2b787 100644 --- a/modules/applications/donjon-et-cie-roll-dialog.mjs +++ b/modules/applications/donjon-et-cie-roll-dialog.mjs @@ -32,7 +32,7 @@ export class DonjonEtCieRollDialog { buttons: [ { action: "roll", - label: "Lancer", + label: game.i18n.localize("DNC.UI.RollAction"), icon: "fa-solid fa-bolt", default: true, callback: async (event, button) => { @@ -70,7 +70,7 @@ export class DonjonEtCieRollDialog { buttons: [ { action: "roll", - label: "Lancer", + label: game.i18n.localize("DNC.UI.RollAction"), icon: "fa-solid fa-dice-d20", default: true, callback: async (event, button) => { @@ -107,7 +107,7 @@ export class DonjonEtCieRollDialog { buttons: [ { action: "roll", - label: "Attaquer", + label: game.i18n.localize("DNC.UI.AttackAction"), icon: "fa-solid fa-sword", default: true, callback: async (event, button) => { @@ -153,7 +153,7 @@ export class DonjonEtCieRollDialog { buttons: [ { action: "roll", - label: "Lancer", + label: game.i18n.localize("DNC.UI.RollAction"), icon: "fa-solid fa-wand-magic-sparkles", default: true, callback: async (event, button) => { @@ -185,7 +185,7 @@ export class DonjonEtCieRollDialog { buttons: [ { action: "roll", - label: "Utiliser", + label: game.i18n.localize("DNC.UI.UseAction"), icon: "fa-solid fa-hourglass-half", default: true, callback: async (event, button) => { @@ -218,7 +218,7 @@ export class DonjonEtCieRollDialog { buttons: [ { action: "roll", - label: "Lancer", + label: game.i18n.localize("DNC.UI.RollAction"), icon: "fa-solid fa-burst", default: true, callback: async (event, button) => { diff --git a/modules/donjon-et-cie-rolls.mjs b/modules/donjon-et-cie-rolls.mjs index ecf99ca..7a72553 100644 --- a/modules/donjon-et-cie-rolls.mjs +++ b/modules/donjon-et-cie-rolls.mjs @@ -35,8 +35,9 @@ export class DonjonEtCieRolls { } static #getModeLabel(mode) { - if (mode === "avantage") return "Avantage"; - if (mode === "desavantage") return "Desavantage"; + if (mode === "avantage") return game.i18n.localize("DNC.UI.ModeAdvantage"); + if (mode === "desavantage") return game.i18n.localize("DNC.UI.ModeDisadvantage"); + if (mode === "normal") return game.i18n.localize("DNC.UI.ModeNormal"); return null; } @@ -77,7 +78,7 @@ export class DonjonEtCieRolls { const path = `system.faveurs.${favorKey}.delta`; const before = Number(foundry.utils.getProperty(actor, path) ?? 0); if (!before) { - ui.notifications.warn(`Aucune faveur disponible pour ${label}.`); + ui.notifications.warn(game.i18n.format("DNC.Warn.NoFavorAvailable", { label })); return null; } @@ -113,7 +114,7 @@ export class DonjonEtCieRolls { const path = `system.faveurs.${favorKey}.delta`; const before = Number(foundry.utils.getProperty(actor, path) ?? 0); if (!before) { - ui.notifications.warn(`Aucune faveur disponible pour ${label}.`); + ui.notifications.warn(game.i18n.format("DNC.Warn.NoFavorAvailable", { label })); return null; } @@ -182,29 +183,29 @@ export class DonjonEtCieRolls { if (!result) return null; await this.#createChatCard(actor, "systems/fvtt-donjon-et-cie/templates/chat/roll-card.hbs", { - title: label ?? "Jet de caracteristique", + title: label ?? game.i18n.localize("DNC.Roll.Characteristic"), subtitle: result.characteristic.label, formula: result.values.length > 1 ? "2d20" : "1d20", mode: effectiveMode, modeLabel: this.#getModeLabel(effectiveMode), target: result.target, - targetPillLabel: "Cible", + targetPillLabel: game.i18n.localize("DNC.Chat.Target"), targetPillValue: result.target, values: result.values, kept: result.kept, - keptPillLabel: "Garde", + keptPillLabel: game.i18n.localize("DNC.Chat.Kept"), keptPillValue: result.kept, success: result.success, favorLabel: favor?.label ?? null, favorNote: favor?.note ?? null, details: [ - { label: "Caracteristique", value: result.characteristic.label }, - { label: "Valeur cible", value: result.target }, + { label: game.i18n.localize("DNC.UI.Characteristic"), value: result.characteristic.label }, + { label: game.i18n.localize("DNC.Chat.TargetValue"), value: result.target }, ...(favor ? [ - { label: "Faveur", value: favor.label }, - { label: "Dé de faveur", value: favor.result }, - { label: "Avant", value: DonjonEtCieUtility.formatUsageDie(favor.before) }, - { label: "Apres", value: DonjonEtCieUtility.formatUsageDie(favor.after) } + { label: game.i18n.localize("DNC.Chat.Favor"), value: favor.label }, + { label: game.i18n.localize("DNC.Chat.FavorDie"), value: favor.result }, + { label: game.i18n.localize("DNC.Chat.Before"), value: DonjonEtCieUtility.formatUsageDie(favor.before) }, + { label: game.i18n.localize("DNC.Chat.After"), value: DonjonEtCieUtility.formatUsageDie(favor.after) } ] : []) ] }); @@ -297,7 +298,7 @@ export class DonjonEtCieRolls { targetPillValue: result.target, values: result.values, kept: result.kept, - keptPillLabel: "Jet", + keptPillLabel: game.i18n.localize("DNC.Chat.RollValue"), keptPillValue: result.kept, success: result.success, favorLabel: favor?.label ?? null, @@ -305,16 +306,16 @@ export class DonjonEtCieRolls { showDamageButton: result.success && Boolean(item.system.degats), itemUuid: item.uuid, details: [ - { label: "Arme", value: item.name }, - { label: "Caracteristique", value: characteristicLabel }, + { label: game.i18n.localize("DNC.UI.Weapon"), value: item.name }, + { label: game.i18n.localize("DNC.UI.Characteristic"), value: characteristicLabel }, { label: `Valeur de ${characteristicLabel}`, value: result.target }, - { label: "Degats", value: item.system.degats || "—" }, - { label: "Portee", value: item.system.portee || "—" }, + { label: game.i18n.localize("DNC.UI.Damage"), value: item.system.degats || "—" }, + { label: game.i18n.localize("DNC.UI.Range"), value: item.system.portee || "—" }, ...(favor ? [ - { label: "Faveur", value: favor.label }, - { label: "Dé de faveur", value: favor.result }, - { label: "Avant", value: DonjonEtCieUtility.formatUsageDie(favor.before) }, - { label: "Apres", value: DonjonEtCieUtility.formatUsageDie(favor.after) } + { label: game.i18n.localize("DNC.Chat.Favor"), value: favor.label }, + { label: game.i18n.localize("DNC.Chat.FavorDie"), value: favor.result }, + { label: game.i18n.localize("DNC.Chat.Before"), value: DonjonEtCieUtility.formatUsageDie(favor.before) }, + { label: game.i18n.localize("DNC.Chat.After"), value: DonjonEtCieUtility.formatUsageDie(favor.after) } ] : []) ] }); @@ -402,7 +403,7 @@ export class DonjonEtCieRolls { const availableMagicHp = currentPv + focus.activeValue; if (cost > availableMagicHp) { - ui.notifications.warn("Le lanceur ne dispose pas d'assez de PV et de focus pour payer ce sort."); + ui.notifications.warn(game.i18n.localize("DNC.Warn.SpellInsufficientResources")); return null; } @@ -445,7 +446,7 @@ export class DonjonEtCieRolls { targetPillValue: result.target, values: result.values, kept: result.kept, - keptPillLabel: "Jet", + keptPillLabel: game.i18n.localize("DNC.Chat.RollValue"), keptPillValue: result.kept, success, specialNote, @@ -454,23 +455,23 @@ export class DonjonEtCieRolls { itemUuid: item.uuid, actorUuid: actor.uuid, details: [ - { label: "Sortilege", value: item.name }, - { label: "Caracteristique", value: result.characteristic.label }, - { label: "Valeur de la caracteristique", value: result.target }, - { label: "Cout en PV", value: cost }, - { label: "Focus", value: focus.activeValue > 0 ? `${focus.activeValue} (${DonjonEtCieUtility.formatUsageDie(focus.before)})` : "—" }, - { label: "Focus depense", value: focusSpent }, - { label: "Focus restant", value: focusRemaining }, - { label: "PV depenses", value: spentPv }, - { label: "PV restants", value: remainingPv }, - { label: "Rang du lanceur", value: rank }, - { label: "Difficulte", value: item.system.difficulte ?? 0 }, - { label: "Effet", value: item.system.effet || "—" }, + { label: game.i18n.localize("DNC.UI.Spell"), value: item.name }, + { label: game.i18n.localize("DNC.UI.Characteristic"), value: result.characteristic.label }, + { label: game.i18n.localize("DNC.Chat.CharacteristicValue"), value: result.target }, + { label: game.i18n.localize("DNC.Chat.HpCost"), value: cost }, + { label: game.i18n.localize("DNC.UI.Focus"), value: focus.activeValue > 0 ? `${focus.activeValue} (${DonjonEtCieUtility.formatUsageDie(focus.before)})` : "—" }, + { label: game.i18n.localize("DNC.Chat.FocusSpent"), value: focusSpent }, + { label: game.i18n.localize("DNC.Chat.FocusRemaining"), value: focusRemaining }, + { label: game.i18n.localize("DNC.Chat.HpSpent"), value: spentPv }, + { label: game.i18n.localize("DNC.Chat.HpRemaining"), value: remainingPv }, + { label: game.i18n.localize("DNC.Chat.CasterRank"), value: rank }, + { label: game.i18n.localize("DNC.Chat.Difficulty"), value: item.system.difficulte ?? 0 }, + { label: game.i18n.localize("DNC.Chat.Effect"), value: item.system.effet || "—" }, ...(favor ? [ - { label: "Faveur", value: favor.label }, - { label: "Dé de faveur", value: favor.result }, - { label: "Avant", value: DonjonEtCieUtility.formatUsageDie(favor.before) }, - { label: "Apres", value: DonjonEtCieUtility.formatUsageDie(favor.after) } + { label: game.i18n.localize("DNC.Chat.Favor"), value: favor.label }, + { label: game.i18n.localize("DNC.Chat.FavorDie"), value: favor.result }, + { label: game.i18n.localize("DNC.Chat.Before"), value: DonjonEtCieUtility.formatUsageDie(favor.before) }, + { label: game.i18n.localize("DNC.Chat.After"), value: DonjonEtCieUtility.formatUsageDie(favor.after) } ] : []) ], focusRolled: focus.rolled, @@ -490,7 +491,7 @@ export class DonjonEtCieRolls { static async rollSpellChaos(actor, item) { const before = Number(actor?.system?.magie?.chaos?.delta ?? 12); if (!before || before < 4) { - ui.notifications.warn("Le Chaos n'est pas disponible pour ce sort."); + ui.notifications.warn(game.i18n.localize("DNC.Warn.ChaosUnavailable")); return null; } diff --git a/packs/equipment/000020.log b/packs/equipment/000029.log similarity index 100% rename from packs/equipment/000020.log rename to packs/equipment/000029.log diff --git a/packs/equipment/CURRENT b/packs/equipment/CURRENT index 43c22f0..3bf5164 100644 --- a/packs/equipment/CURRENT +++ b/packs/equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000019 +MANIFEST-000027 diff --git a/packs/equipment/LOG b/packs/equipment/LOG index 0ed4bdd..2166c91 100644 --- a/packs/equipment/LOG +++ b/packs/equipment/LOG @@ -1,3 +1,8 @@ -2026/04/13-20:45:52.211396 7f68497ed6c0 Recovering log #17 -2026/04/13-20:45:52.220887 7f68497ed6c0 Delete type=3 #15 -2026/04/13-20:45:52.220974 7f68497ed6c0 Delete type=0 #17 +2026/04/16-21:42:54.235115 7f268abff6c0 Recovering log #25 +2026/04/16-21:42:54.246984 7f268abff6c0 Delete type=3 #23 +2026/04/16-21:42:54.247108 7f268abff6c0 Delete type=0 #25 +2026/04/16-21:52:13.467303 7f2688bfb6c0 Level-0 table #30: started +2026/04/16-21:52:13.467365 7f2688bfb6c0 Level-0 table #30: 0 bytes OK +2026/04/16-21:52:13.473605 7f2688bfb6c0 Delete type=0 #28 +2026/04/16-21:52:13.492993 7f2688bfb6c0 Manual compaction at level-0 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) +2026/04/16-21:52:13.493035 7f2688bfb6c0 Manual compaction at level-1 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) diff --git a/packs/equipment/LOG.old b/packs/equipment/LOG.old index dc89c5b..080729d 100644 --- a/packs/equipment/LOG.old +++ b/packs/equipment/LOG.old @@ -1,8 +1,8 @@ -2026/04/13-15:38:21.573543 7f2a6bfff6c0 Recovering log #12 -2026/04/13-15:38:21.584944 7f2a6bfff6c0 Delete type=3 #10 -2026/04/13-15:38:21.585068 7f2a6bfff6c0 Delete type=0 #12 -2026/04/13-15:53:03.495112 7f2a69ffb6c0 Level-0 table #18: started -2026/04/13-15:53:03.495152 7f2a69ffb6c0 Level-0 table #18: 0 bytes OK -2026/04/13-15:53:03.502660 7f2a69ffb6c0 Delete type=0 #16 -2026/04/13-15:53:03.512745 7f2a69ffb6c0 Manual compaction at level-0 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) -2026/04/13-15:53:03.512766 7f2a69ffb6c0 Manual compaction at level-1 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) +2026/04/16-21:36:49.799525 7f268a3fe6c0 Recovering log #21 +2026/04/16-21:36:49.811240 7f268a3fe6c0 Delete type=3 #19 +2026/04/16-21:36:49.811393 7f268a3fe6c0 Delete type=0 #21 +2026/04/16-21:42:33.287551 7f2688bfb6c0 Level-0 table #26: started +2026/04/16-21:42:33.287592 7f2688bfb6c0 Level-0 table #26: 0 bytes OK +2026/04/16-21:42:33.293864 7f2688bfb6c0 Delete type=0 #24 +2026/04/16-21:42:33.294114 7f2688bfb6c0 Manual compaction at level-0 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) +2026/04/16-21:42:33.305404 7f2688bfb6c0 Manual compaction at level-1 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) diff --git a/packs/equipment/MANIFEST-000019 b/packs/equipment/MANIFEST-000027 similarity index 73% rename from packs/equipment/MANIFEST-000019 rename to packs/equipment/MANIFEST-000027 index 8d6e63a..e228d48 100644 Binary files a/packs/equipment/MANIFEST-000019 and b/packs/equipment/MANIFEST-000027 differ diff --git a/packs/random-tables/000007.log b/packs/random-tables/000016.log similarity index 100% rename from packs/random-tables/000007.log rename to packs/random-tables/000016.log diff --git a/packs/random-tables/CURRENT b/packs/random-tables/CURRENT index f7753e2..23b73d9 100644 --- a/packs/random-tables/CURRENT +++ b/packs/random-tables/CURRENT @@ -1 +1 @@ -MANIFEST-000006 +MANIFEST-000014 diff --git a/packs/random-tables/LOG b/packs/random-tables/LOG index 658cc53..60890e5 100644 --- a/packs/random-tables/LOG +++ b/packs/random-tables/LOG @@ -1,3 +1,8 @@ -2026/04/13-20:45:52.223768 7f6849fee6c0 Recovering log #4 -2026/04/13-20:45:52.234123 7f6849fee6c0 Delete type=3 #2 -2026/04/13-20:45:52.234212 7f6849fee6c0 Delete type=0 #4 +2026/04/16-21:42:54.253629 7f26893fc6c0 Recovering log #12 +2026/04/16-21:42:54.264466 7f26893fc6c0 Delete type=3 #10 +2026/04/16-21:42:54.264594 7f26893fc6c0 Delete type=0 #12 +2026/04/16-21:52:13.479973 7f2688bfb6c0 Level-0 table #17: started +2026/04/16-21:52:13.480006 7f2688bfb6c0 Level-0 table #17: 0 bytes OK +2026/04/16-21:52:13.486314 7f2688bfb6c0 Delete type=0 #15 +2026/04/16-21:52:13.493013 7f2688bfb6c0 Manual compaction at level-0 from '!tables!PPsxQgHwLCQ2gjSW' @ 72057594037927935 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at (end) +2026/04/16-21:52:13.493041 7f2688bfb6c0 Manual compaction at level-1 from '!tables!PPsxQgHwLCQ2gjSW' @ 72057594037927935 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at (end) diff --git a/packs/random-tables/LOG.old b/packs/random-tables/LOG.old index 40b3c5d..789150e 100644 --- a/packs/random-tables/LOG.old +++ b/packs/random-tables/LOG.old @@ -1,5 +1,8 @@ -2026/04/13-15:38:21.601302 7f2a6a7fc6c0 Delete type=3 #1 -2026/04/13-15:53:03.477052 7f2a69ffb6c0 Level-0 table #5: started -2026/04/13-15:53:03.481742 7f2a69ffb6c0 Level-0 table #5: 39147 bytes OK -2026/04/13-15:53:03.488722 7f2a69ffb6c0 Delete type=0 #3 -2026/04/13-15:53:03.512725 7f2a69ffb6c0 Manual compaction at level-0 from '!tables!PPsxQgHwLCQ2gjSW' @ 72057594037927935 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at (end) +2026/04/16-21:36:49.818474 7f2689bfd6c0 Recovering log #8 +2026/04/16-21:36:49.829906 7f2689bfd6c0 Delete type=3 #6 +2026/04/16-21:36:49.830072 7f2689bfd6c0 Delete type=0 #8 +2026/04/16-21:42:33.280445 7f2688bfb6c0 Level-0 table #13: started +2026/04/16-21:42:33.280504 7f2688bfb6c0 Level-0 table #13: 0 bytes OK +2026/04/16-21:42:33.287252 7f2688bfb6c0 Delete type=0 #11 +2026/04/16-21:42:33.294093 7f2688bfb6c0 Manual compaction at level-0 from '!tables!PPsxQgHwLCQ2gjSW' @ 72057594037927935 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at (end) +2026/04/16-21:42:33.305387 7f2688bfb6c0 Manual compaction at level-1 from '!tables!PPsxQgHwLCQ2gjSW' @ 72057594037927935 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at (end) diff --git a/packs/random-tables/MANIFEST-000006 b/packs/random-tables/MANIFEST-000014 similarity index 78% rename from packs/random-tables/MANIFEST-000006 rename to packs/random-tables/MANIFEST-000014 index 340d3d3..3174519 100644 Binary files a/packs/random-tables/MANIFEST-000006 and b/packs/random-tables/MANIFEST-000014 differ diff --git a/templates/chat/chaos-card.hbs b/templates/chat/chaos-card.hbs index fdb9b35..9b350a2 100644 --- a/templates/chat/chaos-card.hbs +++ b/templates/chat/chaos-card.hbs @@ -1,19 +1,19 @@
-

Chaos

+

{{localize "DNC.UI.Chaos"}}

{{title}}

-

La magie opere malgre l'echec ; le MJ determine les consequences.

+

{{localize "DNC.Chat.ChaosSubtitle"}}

- Jet + {{localize "DNC.Chat.RollValue"}} {{value}}
- Sort maintenu - Avant {{before}} - Apres {{after}} + {{localize "DNC.Chat.SpellMaintained"}} + {{localize "DNC.Chat.Before"}} {{before}} + {{localize "DNC.Chat.After"}} {{after}}
{{#if chaosEntry}}
@@ -22,9 +22,9 @@
{{/if}} {{#if degraded}} -

Le de du Chaos descend d'un cran.

+

{{localize "DNC.Chat.ChaosDieDrops"}}

{{/if}} {{#if exhausted}} -

Le de du Chaos est trop faible pour etre reutilise dans le Donjon.

+

{{localize "DNC.Chat.ChaosDieExhausted"}}

{{/if}}
diff --git a/templates/chat/favor-card.hbs b/templates/chat/favor-card.hbs index 302ffee..21384b7 100644 --- a/templates/chat/favor-card.hbs +++ b/templates/chat/favor-card.hbs @@ -1,7 +1,7 @@
-

Reseau

+

{{localize "DNC.Chat.Kicker.Network"}}

{{title}}

{{#if subtitle}}

{{subtitle}}

{{/if}}
@@ -10,8 +10,8 @@
- Avant {{before}} - Apres {{after}} + {{localize "DNC.Chat.Before"}} {{before}} + {{localize "DNC.Chat.After"}} {{after}}

{{note}}

diff --git a/templates/chat/initiative-card.hbs b/templates/chat/initiative-card.hbs index f556e91..bf22aa8 100644 --- a/templates/chat/initiative-card.hbs +++ b/templates/chat/initiative-card.hbs @@ -1,13 +1,13 @@
-

Ordre de marche

+

{{localize "DNC.Chat.Kicker.Initiative"}}

{{title}}

{{actorName}}

{{#if modeLabel}}

{{modeLabel}}

{{/if}}
- Total + {{localize "DNC.Chat.Total"}} {{total}}
@@ -24,19 +24,19 @@
+
- Bonus + {{localize "DNC.Chat.Bonus"}} {{bonus}}

{{formula}}

{{#if dieValues.[1]}} -

Lancers : {{#each dieValues}}{{this}}{{/each}}

+

{{localize "DNC.Chat.Rolls"}} : {{#each dieValues}}{{this}}{{/each}}

{{/if}} {{#if syncedCombat}}
- Combat synchronise + {{localize "DNC.Chat.CombatSynced"}}

{{syncedCombat.name}} · rang {{syncedCombat.rank}} / {{syncedCombat.total}}

{{/if}} diff --git a/templates/chat/roll-card.hbs b/templates/chat/roll-card.hbs index b1549cd..0ca7851 100644 --- a/templates/chat/roll-card.hbs +++ b/templates/chat/roll-card.hbs @@ -1,7 +1,7 @@
-

Resolution

+

{{localize "DNC.Chat.Kicker.Resolution"}}

{{title}}

{{#if subtitle}}

{{subtitle}}

{{/if}}
@@ -10,23 +10,23 @@
- {{#if success}}Reussite{{else}}Echec{{/if}} + {{#if success}}{{localize "DNC.Chat.Success"}}{{else}}{{localize "DNC.Chat.Failure"}}{{/if}} {{#if modeLabel}}{{modeLabel}}{{/if}} - {{#if favorLabel}}Faveur {{favorLabel}}{{/if}} - {{#if targetPillLabel}}{{targetPillLabel}} {{targetPillValue}}{{else}}Cible {{target}}{{/if}} - {{#if keptPillLabel}}{{keptPillLabel}} {{keptPillValue}}{{else}}Garde {{kept}}{{/if}} + {{#if favorLabel}}{{localize "DNC.Chat.Favor"}} {{favorLabel}}{{/if}} + {{#if targetPillLabel}}{{targetPillLabel}} {{targetPillValue}}{{else}}{{localize "DNC.Chat.Target"}} {{target}}{{/if}} + {{#if keptPillLabel}}{{keptPillLabel}} {{keptPillValue}}{{else}}{{localize "DNC.Chat.Kept"}} {{kept}}{{/if}}
- Lancers + {{localize "DNC.Chat.Rolls"}}

{{#each values}}{{this}}{{/each}}

{{#if favorNote}} -

Faveur : {{favorNote}}

+

{{localize "DNC.Chat.Favor"}} : {{favorNote}}

{{/if}} {{#if showDamageButton}}
{{/if}} diff --git a/templates/chat/spell-card.hbs b/templates/chat/spell-card.hbs index 0d497ac..fbd3de9 100644 --- a/templates/chat/spell-card.hbs +++ b/templates/chat/spell-card.hbs @@ -1,7 +1,7 @@
-

Magie

+

{{localize "DNC.Chat.Kicker.Magic"}}

{{title}}

{{#if subtitle}}

{{subtitle}}

{{/if}}
@@ -10,57 +10,57 @@
- {{#if success}}Reussite{{else}}Echec{{/if}} + {{#if success}}{{localize "DNC.Chat.Success"}}{{else}}{{localize "DNC.Chat.Failure"}}{{/if}} {{#if modeLabel}}{{modeLabel}}{{/if}} - {{#if favorLabel}}Faveur {{favorLabel}}{{/if}} + {{#if favorLabel}}{{localize "DNC.Chat.Favor"}} {{favorLabel}}{{/if}} {{targetPillLabel}} {{targetPillValue}} - Jet {{keptPillValue}} + {{localize "DNC.Chat.RollValue"}} {{keptPillValue}}
- Lancers + {{localize "DNC.Chat.Rolls"}}

{{#each values}}{{this}}{{/each}}

{{#if autoDisadvantage}}

- Desavantage automatique : + {{localize "DNC.Chat.AutoDisadvantage"}} : {{#if autoDisadvantageCanceled}} - le cout du sort depasse le rang du lanceur, mais une faveur l'a annule. + {{localize "DNC.Chat.AutoDisadvantageCanceled"}} {{else}} - le cout du sort depasse le rang du lanceur. + {{localize "DNC.Chat.AutoDisadvantageApplies"}} {{/if}}

{{/if}} {{#if favorNote}} -

Faveur : {{favorNote}}

+

{{localize "DNC.Chat.Favor"}} : {{favorNote}}

{{/if}} {{#if focusValue}}

- Focus : {{focusValue}} depuis {{focusBeforeLabel}} - {{#if focusSpent}} · {{focusSpent}} utilise{{/if}} - · {{focusRemaining}} restant - {{#if focusDegraded}} · le focus descend a {{focusAfterLabel}}{{/if}} - {{#if focusRolled}} · premier sort de la scene{{/if}} + {{localize "DNC.UI.Focus"}} : {{focusValue}} {{localize "DNC.Chat.FocusFrom"}} {{focusBeforeLabel}} + {{#if focusSpent}} · {{focusSpent}} {{localize "DNC.Chat.FocusUsed"}}{{/if}} + · {{focusRemaining}} {{localize "DNC.Chat.FocusLeft"}} + {{#if focusDegraded}} · {{localize "DNC.Chat.FocusDropsTo"}} {{focusAfterLabel}}{{/if}} + {{#if focusRolled}} · {{localize "DNC.Chat.FirstSpellScene"}}{{/if}}

{{else}} {{#if focusRolled}} -

Focus : aucun apport pour cette scene.

+

{{localize "DNC.UI.Focus"}} : {{localize "DNC.Chat.FocusNoBenefit"}}

{{/if}} {{/if}} -

PV depenses : {{spentPv}} · PV restants : {{remainingPv}}

+

{{localize "DNC.Chat.HpSpent"}} : {{spentPv}} · {{localize "DNC.Chat.HpRemaining"}} : {{remainingPv}}

{{#if specialNote}}

{{specialNote}}

{{/if}} {{#if showDamageButton}}
{{/if}} {{#if showChaosButton}}
{{/if}} diff --git a/templates/chat/usage-card.hbs b/templates/chat/usage-card.hbs index b5c8da6..f7eea35 100644 --- a/templates/chat/usage-card.hbs +++ b/templates/chat/usage-card.hbs @@ -1,7 +1,7 @@
-

Usure

+

{{localize "DNC.Chat.Kicker.Wear"}}

{{title}}

@@ -10,17 +10,17 @@
{{#if modeLabel}}{{modeLabel}}{{/if}} - Resultat {{value}} - Avant {{before}} - Apres {{after}} + {{localize "DNC.Chat.Result"}} {{value}} + {{localize "DNC.Chat.Before"}} {{before}} + {{localize "DNC.Chat.After"}} {{after}}
{{#if values.[1]}}
- Lancers + {{localize "DNC.Chat.Rolls"}}

{{#each values}}{{this}}{{/each}}

{{/if}} - {{#if protectionStored}}

Protection stockee pour ce combat : {{protectionStored}}.

{{/if}} - {{#if degraded}}

La ressource s'amenuise.

{{else}}

La ressource tient bon.

{{/if}} - {{#if exhausted}}

La ressource est epuisee.

{{/if}} + {{#if protectionStored}}

{{localize "DNC.Chat.StoredProtection"}} : {{protectionStored}}.

{{/if}} + {{#if degraded}}

{{localize "DNC.Chat.ResourceWearsDown"}}

{{else}}

{{localize "DNC.Chat.ResourceStable"}}

{{/if}} + {{#if exhausted}}

{{localize "DNC.Chat.ResourceExhausted"}}

{{/if}}
diff --git a/templates/dialogs/characteristic-roll.hbs b/templates/dialogs/characteristic-roll.hbs index c16bfec..39432ff 100644 --- a/templates/dialogs/characteristic-roll.hbs +++ b/templates/dialogs/characteristic-roll.hbs @@ -1,18 +1,18 @@

{{actorName}} effectue un jet de {{characteristic.label}}.

{{#if hasFavorOptions}} diff --git a/templates/dialogs/damage-roll.hbs b/templates/dialogs/damage-roll.hbs index c66edbb..64171d2 100644 --- a/templates/dialogs/damage-roll.hbs +++ b/templates/dialogs/damage-roll.hbs @@ -1,12 +1,12 @@

{{item.name}} inflige {{item.system.degats}}.

-

Bonus de degats de l'acteur : {{actorBonus}}

+

{{localize "DNC.Dialog.ActorDamageBonus"}} : {{actorBonus}}

diff --git a/templates/dialogs/initiative-roll.hbs b/templates/dialogs/initiative-roll.hbs index 2aed21d..b65c1fe 100644 --- a/templates/dialogs/initiative-roll.hbs +++ b/templates/dialogs/initiative-roll.hbs @@ -1,12 +1,12 @@
-

{{actorName}} lance l'initiative.

-

DEX actuelle : {{dex}}, bonus de fiche : {{initiativeBonus}}

+

{{localize "DNC.Dialog.InitiativeIntro" actorName=actorName}}

+

{{localize "DNC.Dialog.InitiativeCurrent" dex=dex initiativeBonus=initiativeBonus}}

diff --git a/templates/dialogs/spell-roll.hbs b/templates/dialogs/spell-roll.hbs index 68d5c27..0c19fec 100644 --- a/templates/dialogs/spell-roll.hbs +++ b/templates/dialogs/spell-roll.hbs @@ -1,47 +1,47 @@

{{actorName}} lance {{item.name}}.

{{#if hasFavorOptions}} {{/if}} {{#if autoDisadvantage}} -

Le cout depasse le rang du lanceur : le jet se fera automatiquement avec desavantage.

+

{{localize "DNC.Dialog.SpellAutoDisadvantage"}}

{{/if}}
diff --git a/templates/dialogs/usage-roll.hbs b/templates/dialogs/usage-roll.hbs index 17d87bd..d8e0316 100644 --- a/templates/dialogs/usage-roll.hbs +++ b/templates/dialogs/usage-roll.hbs @@ -1,12 +1,12 @@
-

Utiliser {{item.name}} et lancer son de d'usage actuel.

-

Valeur actuelle : Δ{{item.system.delta}}

+

{{localize "DNC.Dialog.UseUsageDie" itemName=item.name}}

+

{{localize "DNC.Dialog.CurrentValue"}} : Δ{{item.system.delta}}

diff --git a/templates/dialogs/weapon-roll.hbs b/templates/dialogs/weapon-roll.hbs index 3553adf..ae15187 100644 --- a/templates/dialogs/weapon-roll.hbs +++ b/templates/dialogs/weapon-roll.hbs @@ -1,19 +1,19 @@

{{actorName}} attaque avec {{item.name}}.

-

Caracteristique utilisee : {{characteristicLabel}} ({{characteristicValue}}).

+

{{localize "DNC.Dialog.CharacteristicUsed"}} : {{characteristicLabel}} ({{characteristicValue}}).

{{#if hasFavorOptions}}