v2.6.0 : page Tresors du Hall - listing equipement lu depuis la BDD
Nouvel endpoint GET /api/reference/gear (db.gearAll()). treasures.js recupere les equipements de la base de reference a chaque ouverture (GEAR_DB) avec repli sur gear.js statique si injoignable (file://). Les editions admin/sqlite-web sont desormais refletees sur le listing. Intro de la section mise a jour (bonus phys + mag d'equipement). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const APP_VERSION = "2.5.1";
|
||||
const APP_VERSION = "2.6.0";
|
||||
|
||||
/* Alpha : maîtrise initiale haute pour les tests. Remettre 15 % / 15 % à la v1.0 officielle. */
|
||||
const START_COMP_PCT = 90;
|
||||
|
||||
+40
-9
@@ -82,18 +82,22 @@ function treasuresRender() {
|
||||
}
|
||||
html += "</div>";
|
||||
|
||||
const gearCount = Object.values(GEAR).reduce((n, list) => n + list.length, 0);
|
||||
// Source des équipements : la base de référence (BDD SQLite, éditable) si elle
|
||||
// a pu être chargée, sinon les valeurs statiques de gear.js (ex. hors-ligne).
|
||||
const gearSource = GEAR_DB || GEAR;
|
||||
const gearCount = Object.values(gearSource).reduce((n, list) => n + list.length, 0);
|
||||
html += `<h2 class="tz-section">⚔️ Équipement (${gearCount})</h2>
|
||||
<p class="tz-intro">Six emplacements : ${Object.values(GEAR_SLOTS).map(s => s.label).join(", ")}.
|
||||
Tous les bonus d'équipement sont <b>fixes</b> et <b>physiques</b> : ATT/ESQ/DEG/REG
|
||||
s'ajoutent aux jets (jamais en dés), Armure physique/VUE/PV aussi, RM/MM en %.
|
||||
L'armure d'équipement réduit les dégâts physiques mais pas les dégâts magiques.
|
||||
Les bonus d'équipement sont <b>fixes</b> (jamais en dés) et s'ajoutent toujours aux jets.
|
||||
La plupart sont <b>physiques</b> ; certains objets portent aussi des bonus <b>magiques</b>
|
||||
(ATT mag., DEG mag., Armure mag.), et les deux saveurs se cumulent. Les dégâts physiques
|
||||
sont encaissés par l'armure totale, les dégâts magiques par la seule armure magique.
|
||||
Une arme <b>à 2 mains</b> est incompatible avec un bouclier. S'équiper coûte <b>2 PA</b>.
|
||||
Valeurs de base de la Mountypedia (sans templates) ; les objets puissants ne se trouvent
|
||||
qu'en profondeur.</p>`;
|
||||
Valeurs lues dans la <b>base de référence</b> (modifiables côté admin) ; les objets
|
||||
puissants ne se trouvent qu'en profondeur.</p>`;
|
||||
for (const [slot, info] of Object.entries(GEAR_SLOTS)) {
|
||||
html += `<h3 class="tz-subsection">${info.emoji} ${info.label}s</h3><div class="tz-grid">`;
|
||||
for (const def of GEAR[slot]) {
|
||||
for (const def of (gearSource[slot] || [])) {
|
||||
const fx = [];
|
||||
for (const [key, label, unit] of GEAR_MOD_LABELS) {
|
||||
const v = def.mods[key];
|
||||
@@ -122,12 +126,39 @@ function treasuresRender() {
|
||||
|
||||
let treasuresReturnTo = "create";
|
||||
|
||||
function treasuresShow(from) {
|
||||
// Équipements de la base de référence (BDD), rechargés à chaque ouverture pour
|
||||
// refléter les éditions ; null tant qu'on n'a pas (ou pas pu) charger → repli
|
||||
// sur les valeurs statiques de gear.js.
|
||||
let GEAR_DB = null;
|
||||
async function loadGearReference() {
|
||||
try {
|
||||
const res = await fetch("api/reference/gear");
|
||||
if (!res.ok) throw new Error("indisponible");
|
||||
const rows = await res.json();
|
||||
if (!Array.isArray(rows) || !rows.length) throw new Error("vide");
|
||||
const bySlot = {};
|
||||
for (const r of rows) {
|
||||
const mods = {};
|
||||
for (const [key] of GEAR_MOD_LABELS) mods[key] = r[key] || 0;
|
||||
const staticDef = (GEAR[r.slot] || []).find(d => d.name === r.name);
|
||||
(bySlot[r.slot] = bySlot[r.slot] || []).push({
|
||||
emoji: r.emoji, name: r.name, tier: r.tier, twoHanded: !!r.twoHanded,
|
||||
note: staticDef && staticDef.note, mods,
|
||||
});
|
||||
}
|
||||
GEAR_DB = bySlot;
|
||||
} catch {
|
||||
GEAR_DB = null; // base injoignable (ex. ouverture en file://) → statique
|
||||
}
|
||||
}
|
||||
|
||||
async function treasuresShow(from) {
|
||||
treasuresReturnTo = from;
|
||||
document.getElementById("screen-" + from).classList.add("hidden");
|
||||
document.getElementById("screen-treasures").classList.remove("hidden");
|
||||
treasuresRender();
|
||||
document.getElementById("screen-treasures").scrollTop = 0;
|
||||
await loadGearReference();
|
||||
treasuresRender();
|
||||
}
|
||||
|
||||
if (typeof document !== "undefined") {
|
||||
|
||||
Reference in New Issue
Block a user