diff --git a/README.md b/README.md index cfe3869..0fbde30 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,13 @@ non affilié au jeu original de Mountyhall SARL. ## Versions +- **2.4.4** (2026-06-13) — Affichage des bonus fixes clarifié : quand le bonus + physique et le bonus magique sont **identiques**, on n'affiche plus qu'un + seul `+X` (avant : `+1 (phy +1 · mag +1)`, qui donnait l'illusion d'un triple + comptage). Le détail `(phy +X · mag +Y)` n'apparaît plus que lorsque les deux + saveurs **diffèrent réellement** (équipement magique, etc.), et le bonus de + dégâts fixe (`degBonus`) est correctement reporté des deux côtés. Le calcul de + combat lui-même était déjà correct (`pickFlat` choisit une seule saveur). - **2.4.3** (2026-06-13) — Fin de l'harmonisation de la fiche : les règles CSS de mise en page des caractéristiques (libellé à gauche, valeur alignée à droite en chasse fixe, indice phys/mag) ne ciblaient que le solo (`#stats`) diff --git a/js/game.js b/js/game.js index 53f89a5..b159b5a 100644 --- a/js/game.js +++ b/js/game.js @@ -4,7 +4,7 @@ "use strict"; -const APP_VERSION = "2.4.3"; +const APP_VERSION = "2.4.4"; /* Alpha : maîtrise initiale haute pour les tests. Remettre 15 % / 15 % à la v1.0 officielle. */ const START_COMP_PCT = 90; diff --git a/js/potions.js b/js/potions.js index 4d4860a..55fa039 100644 --- a/js/potions.js +++ b/js/potions.js @@ -405,18 +405,22 @@ function sumPotionMods(effects) { * (équipement), M = magique (potions, parchemins). */ function fmtStatLine(base, eff, faces, flat = 0, extra = 0, split = null) { const diceDelta = eff - base; - const jetBonus = (flat || 0) + (extra || 0); + const f = v => `${v > 0 ? "+" : ""}${v}`; let main = `${eff}D${faces}`; - if (jetBonus) main += jetBonus > 0 ? ` +${jetBonus}` : ` ${jetBonus}`; const hints = []; - if (split && (split.phys || split.mag)) { - const f = v => `${(v || 0) > 0 ? "+" : ""}${v || 0}`; - hints.push(`phy ${f(split.phys)} · mag ${f(split.mag)}`); - } - if (diceDelta !== 0) { - const sign = diceDelta > 0 ? "+" : ""; - hints.push(`${base}D${faces} ${sign}${diceDelta}`); + // `extra` (degBonus) s'applique quel que soit le type d'attaque ; il s'ajoute + // donc aux deux saveurs. On ne détaille « phy/mag » QUE si les deux diffèrent + // réellement — sinon un seul « +X » suffit (un bonus identique des deux côtés + // affiché en double laisse croire à tort à un cumul). + if (split && split.phys !== split.mag) { + // bonus fixe différent selon le type d'attaque → on détaille les deux + hints.push(`phy ${f((split.phys || 0) + (extra || 0))} · mag ${f((split.mag || 0) + (extra || 0))}`); + } else { + // bonus identique quelle que soit la saveur → une seule valeur + const jetBonus = (flat || 0) + (extra || 0); + if (jetBonus) main += ` ${f(jetBonus)}`; } + if (diceDelta !== 0) hints.push(`${base}D${faces} ${diceDelta > 0 ? "+" : ""}${diceDelta}`); if (hints.length) return `${main} (${hints.join(" · ")})`; return main; }