v2.13.0 : RM%/MM% d'equipement en plages (min/max) tirees au drop

db.js : GEAR_KEYS += rmPctMin, mmPctMin (les rmPct/mmPct existants = max) ;
vanillaGear : min defaut = la valeur (pas de plage) ; migration ALTER gear
ADD COLUMN rmPctMin/mmPctMin + UPDATE min=valeur. mp.js applyGearTuning :
mods construits hors cles Min, RM%/MM% tires au hasard dans [min,max] a la
creation (comme les potions). treasures.js : encyclopedie affiche la plage
'min a max %' (rmPctMin/mmPctMin portes sur le def). admin GEAR_LABELS :
RM%/MM% min + max. Solo : valeurs fixes (la plage vit dans la base / monde
partage).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
perco
2026-06-17 11:35:43 +02:00
co-authored by Claude Opus 4.8
parent dc3685de11
commit f31ac75e1d
6 changed files with 46 additions and 8 deletions
+10 -1
View File
@@ -97,7 +97,16 @@ function applyGearTuning(item) {
if (!item || item.kind !== "gear") return item;
const row = db.gearRow(item.slot, item.name);
if (row) {
item.mods = Object.fromEntries(db.GEAR_KEYS.map(k => [k, row[k] || 0]).filter(([, v]) => v));
const mods = {};
for (const k of db.GEAR_KEYS) {
if (k.endsWith("Min") || k === "rmPct" || k === "mmPct") continue; // bornes : traitées à part
if (row[k]) mods[k] = row[k];
}
// RM% et MM% : tirés au hasard dans leur plage [min, max] à la création.
const rr = (mn, mx) => { const lo = Math.min(mn || 0, mx || 0), hi = Math.max(mn || 0, mx || 0); return lo + Math.floor(Math.random() * (hi - lo + 1)); };
const rm = rr(row.rmPctMin, row.rmPct); if (rm) mods.rmPct = rm;
const mm = rr(row.mmPctMin, row.mmPct); if (mm) mods.mmPct = mm;
item.mods = mods;
}
return item;
}