diff --git a/CHANGELOG.md b/CHANGELOG.md index cae0b61..e5abebc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Added a booster for loading compendium's core items (speed up 20Q) - Added confirm dialog on item's deletion (Hold "ctrl" on the click, if you want to bypass it) - Added "Sleep" & "Scene End" buttons in "GM ToolBox" (old "difficulty" box) +- Added an option to reverse the token's bar on fatigue (thanks to Jzrzmy), and colorize in red the strife bar if compromise ## 1.1.2 - One Compendium to bring them all - Added compendiums (Thanks to Stéfano Fara for the English version !) Partial for French as PoW and CR are not translated yet diff --git a/system/lang/es-es.json b/system/lang/es-es.json index 4bc56ee..a28748c 100644 --- a/system/lang/es-es.json +++ b/system/lang/es-es.json @@ -5,7 +5,6 @@ }, "SETTINGS": { "None": "Sin opción", - "ReverseFatigueBar": "Invertir la barra de fatiga de los token", "RollNKeep": { "DeleteOldMessage": "RnK Delete previous chat message", diff --git a/system/lang/fr-fr.json b/system/lang/fr-fr.json index 2e1c5bb..5cace65 100644 --- a/system/lang/fr-fr.json +++ b/system/lang/fr-fr.json @@ -7,8 +7,8 @@ "None": "Aucune option", "ReverseFatigueBar": "Inverser la barre de fatigue des token", "RollNKeep": { - "DeleteOldMessage": "RnK Delete previous chat message", - "DeleteOldMessageHint": "Choose to keep or delete the previous message for a RnK series" + "DeleteOldMessage": "RnK Supprime le précédent message du chat", + "DeleteOldMessageHint": "Si coché, on supprime le message précédent pour la série de jets via le RnK" } }, "ACTOR": { diff --git a/system/scripts/main-l5r5e.js b/system/scripts/main-l5r5e.js index fe53d0f..c9a19d3 100644 --- a/system/scripts/main-l5r5e.js +++ b/system/scripts/main-l5r5e.js @@ -116,30 +116,36 @@ Hooks.once("init", async () => { // Override the default Token _drawBar function to allow fatigue bar reversing. Token.prototype._drawBar = function (number, bar, data) { - let val = Number(data.value); - const reverseFatigue = game.settings.get("l5r5e", "token.reversefatiguebar"); - - // Bar value reversing. - if (data.attribute === "fatigue" && reverseFatigue) { - val = Number(data.max - data.value); + const reverseBar = data.attribute === "fatigue" && game.settings.get("l5r5e", "token.reverseFatigueBar"); + + // Bar value + const pct = Math.clamped(Number(data.value), 0, data.max) / data.max; + + // Modify color + let color = number === 0 ? [pct / 1.2, 1 - pct, 0] : [0.5 * pct, 0.7 * pct, 0.5 + pct / 2]; + + // Red if compromised + if (data.attribute === "strife" && data.value > data.max) { + color = [1, 0.1, 0.1]; } - const pct = Math.clamped(val, 0, data.max) / data.max; + // Enlarge the bar for large tokens let h = Math.max(canvas.dimensions.size / 12, 8); - if (this.data.height >= 2) h *= 1.6; // Enlarge the bar for large tokens + if (this.data.height >= 2) { + h *= 1.6; + } + // Draw the bar - let color = number === 0 ? [1 - pct / 2, pct, 0] : [0.5 * pct, 0.7 * pct, 0.5 + pct / 2]; - bar - .clear() - .beginFill(0x000000, 0.5) - .lineStyle(2, 0x000000, 0.9) - .drawRoundedRect(0, 0, this.w, h, 3) - .beginFill(PIXI.utils.rgb2hex(color), 0.8) - .lineStyle(1, 0x000000, 0.8) - .drawRoundedRect(1, 1, pct * (this.w - 2), h - 2, 2); + bar.clear() + .beginFill(0x000000, 0.5) + .lineStyle(2, 0x000000, 0.9) + .drawRoundedRect(0, 0, this.w, h, 3) + .beginFill(PIXI.utils.rgb2hex(color), 0.8) + .lineStyle(1, 0x000000, 0.8) + .drawRoundedRect(1, 1, (reverseBar ? 1 - pct : pct) * (this.w - 2), h - 2, 2); + // Set position - let posY = number === 0 ? this.h - h : 0; - bar.position.set(0, posY); + bar.position.set(0, number === 0 ? this.h - h : 0); }; }); diff --git a/system/scripts/settings.js b/system/scripts/settings.js index 3f6cee2..4dfa2f6 100644 --- a/system/scripts/settings.js +++ b/system/scripts/settings.js @@ -73,8 +73,8 @@ export const RegisterSettings = function () { /* ------------------------------------ */ /* Token bars */ - /* ------------------------------------ */ - game.settings.register("l5r5e", "token.reversefatiguebar", { + /* ------------------------------------ */ + game.settings.register("l5r5e", "token.reverseFatigueBar", { name: game.i18n.localize("SETTINGS.ReverseFatigueBar"), scope: "world", config: true,