Soglie dei badge ricalibrate su ~71 eventi a stagione; obiettivo pagelle a 1000

Presenza fissa 15/35/55, Sempre in palestra 5/10/20, Sherpa dei palloni 3/5/8;
obiettivo o13 da 200 a 1000 voti. Test di integrazione ora derivano le soglie
dalle definizioni; documenti e CHANGELOG aggiornati.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
davideandClaude Sonnet 5.5 committed 2026-11-15 20:02:30 +01:00
1 parent 50930ac142
commit cfbba613dc
11 files changed
+109 -88

No files matched your search

+26 -26
View File
@@ -111,39 +111,39 @@ assert.equal(
"valore azzerato dal gate: progresso azzerato anch'esso, non ingannevole",
);
// --- palloni: soglie 3 / 6 / 10 -----------------------------------------------
// --- palloni: soglie 3 / 5 / 8 -----------------------------------------------
const palloniDef = badgeDefs.find((b) => b.id === "palloni")!;
assert.equal(gradoRaggiunto(palloniDef, 2), null, "sotto la prima soglia nessun grado");
assert.equal(gradoRaggiunto(palloniDef, 3), "bronzo", "la soglia è inclusiva");
assert.equal(gradoRaggiunto(palloniDef, 5), "bronzo");
assert.equal(gradoRaggiunto(palloniDef, 6), "argento");
assert.equal(gradoRaggiunto(palloniDef, 9), "argento");
assert.equal(gradoRaggiunto(palloniDef, 10), "oro");
assert.equal(gradoRaggiunto(palloniDef, 4), "bronzo");
assert.equal(gradoRaggiunto(palloniDef, 5), "argento");
assert.equal(gradoRaggiunto(palloniDef, 7), "argento");
assert.equal(gradoRaggiunto(palloniDef, 8), "oro");
assert.equal(gradoRaggiunto(palloniDef, 99), "oro", "oltre l'oro resta oro");
assert.equal(
statoBadge(palloniDef, g({ palloni: 5 })).progresso,
83,
"5 turni su 6 per l'argento: 83%",
statoBadge(palloniDef, g({ palloni: 4 })).progresso,
80,
"4 turni su 5 per l'argento: 80%",
);
// --- presenze: soglie 5 / 15 / 30 ---------------------------------------------
// --- presenze: soglie 15 / 35 / 55 ---------------------------------------------
const presenzeDef = badgeDefs.find((b) => b.id === "presenze")!;
assert.equal(gradoRaggiunto(presenzeDef, 4), null, "sotto la prima soglia nessun grado");
assert.equal(gradoRaggiunto(presenzeDef, 5), "bronzo", "la soglia è inclusiva");
assert.equal(gradoRaggiunto(presenzeDef, 14), "bronzo");
assert.equal(gradoRaggiunto(presenzeDef, 15), "argento");
assert.equal(gradoRaggiunto(presenzeDef, 29), "argento");
assert.equal(gradoRaggiunto(presenzeDef, 30), "oro");
assert.equal(gradoRaggiunto(presenzeDef, 14), null, "sotto la prima soglia nessun grado");
assert.equal(gradoRaggiunto(presenzeDef, 15), "bronzo", "la soglia è inclusiva");
assert.equal(gradoRaggiunto(presenzeDef, 34), "bronzo");
assert.equal(gradoRaggiunto(presenzeDef, 35), "argento");
assert.equal(gradoRaggiunto(presenzeDef, 54), "argento");
assert.equal(gradoRaggiunto(presenzeDef, 55), "oro");
assert.equal(gradoRaggiunto(presenzeDef, 999), "oro", "oltre l'oro resta oro");
// --- serie-allenamenti: soglie 3 / 6 / 10 -------------------------------------
// --- serie-allenamenti: soglie 5 / 10 / 20 -------------------------------------
const serieAllenamentiDef = badgeDefs.find((b) => b.id === "serie-allenamenti")!;
assert.equal(gradoRaggiunto(serieAllenamentiDef, 2), null, "sotto la prima soglia nessun grado");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 3), "bronzo", "la soglia è inclusiva");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 5), "bronzo");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 6), "argento");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 9), "argento");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 10), "oro");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 4), null, "sotto la prima soglia nessun grado");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 5), "bronzo", "la soglia è inclusiva");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 9), "bronzo");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 10), "argento");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 19), "argento");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 20), "oro");
assert.equal(gradoRaggiunto(serieAllenamentiDef, 50), "oro", "oltre l'oro resta oro");
// --- badgeGiocatore ----------------------------------------------------------
@@ -200,7 +200,7 @@ assert.equal(vuota.inProgresso.length, badgeDefs.length);
assert.equal(vuota.nascosti, badgeSegreti.length);
const piena = collezioneBadge(
g({ mvp: 5, mediaVoto: 8, votiPagella: 5, presenze: 30, infortuni: 3 }),
g({ mvp: 5, mediaVoto: 8, votiPagella: 5, presenze: 55, infortuni: 3 }),
);
assert.equal(
piena.ottenuti,
@@ -219,9 +219,9 @@ assert.equal(
mvp: 5,
mediaVoto: 10,
votiPagella: 5,
palloni: 10,
presenze: 30,
serieAllenamenti: 10,
palloni: 8,
presenze: 55,
serieAllenamenti: 20,
}),
),
null,