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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user