v2.4.4 : affichage des bonus phys/mag clarifie (plus de faux double comptage)

fmtStatLine affichait a la fois le +X agrege ET (phy +X . mag +X) quand
les deux saveurs etaient egales -> illusion d'un triple comptage. On
n'affiche plus le detail phys/mag QUE lorsqu'ils different reellement,
sinon un seul +X. degBonus reporte des deux cotes. Le combat etait deja
juste (pickFlat choisit une seule saveur).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
perco
2026-06-13 11:39:00 +02:00
co-authored by Claude Opus 4.8
parent 0b29363ff4
commit c2646a3e1b
3 changed files with 21 additions and 10 deletions
+13 -9
View File
@@ -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} <small class="stat-hint">(${hints.join(" · ")})</small>`;
return main;
}