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
+7
View File
@@ -234,6 +234,13 @@ non affilié au jeu original de Mountyhall SARL.
## Versions ## 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 - **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 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`) à droite en chasse fixe, indice phys/mag) ne ciblaient que le solo (`#stats`)
+1 -1
View File
@@ -4,7 +4,7 @@
"use strict"; "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. */ /* Alpha : maîtrise initiale haute pour les tests. Remettre 15 % / 15 % à la v1.0 officielle. */
const START_COMP_PCT = 90; const START_COMP_PCT = 90;
+13 -9
View File
@@ -405,18 +405,22 @@ function sumPotionMods(effects) {
* (équipement), M = magique (potions, parchemins). */ * (équipement), M = magique (potions, parchemins). */
function fmtStatLine(base, eff, faces, flat = 0, extra = 0, split = null) { function fmtStatLine(base, eff, faces, flat = 0, extra = 0, split = null) {
const diceDelta = eff - base; const diceDelta = eff - base;
const jetBonus = (flat || 0) + (extra || 0); const f = v => `${v > 0 ? "+" : ""}${v}`;
let main = `${eff}D${faces}`; let main = `${eff}D${faces}`;
if (jetBonus) main += jetBonus > 0 ? ` +${jetBonus}` : ` ${jetBonus}`;
const hints = []; const hints = [];
if (split && (split.phys || split.mag)) { // `extra` (degBonus) s'applique quel que soit le type d'attaque ; il s'ajoute
const f = v => `${(v || 0) > 0 ? "+" : ""}${v || 0}`; // donc aux deux saveurs. On ne détaille « phy/mag » QUE si les deux diffèrent
hints.push(`phy ${f(split.phys)} · mag ${f(split.mag)}`); // réellement — sinon un seul « +X » suffit (un bonus identique des deux côtés
} // affiché en double laisse croire à tort à un cumul).
if (diceDelta !== 0) { if (split && split.phys !== split.mag) {
const sign = diceDelta > 0 ? "+" : ""; // bonus fixe différent selon le type d'attaque → on détaille les deux
hints.push(`${base}D${faces} ${sign}${diceDelta}`); 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>`; if (hints.length) return `${main} <small class="stat-hint">(${hints.join(" · ")})</small>`;
return main; return main;
} }