Per-Sim leistung_pct: alle 14 Sims senden das eine Leistungs-% (0-100)
Jede Sim liefert jetzt selbst leistung_pct in GGS_LIVE_STATE UND im Submit (Fundament fuer das einheitliche %-System) — kein Rueckrechnen aus Sternen mehr, keine 0-3-Sonderfaelle. Formeln je Sim wie vereinbart: - klima/fluss/kofferdetektiv/heli: = vorhandener 0-100-score - weltkueche: richtige/(richtige+falsche)*100 (Fehler in %) - busfahrt/fluggesellschaft: topoPunkte/(Auftraege*3)*100 - farmer: gewichteter totalScore; energiemanager: ausgegl./gesamt -15/Blackout - eu-werkstatt: firstTry/Schritte -5/Muelleimer; sonnensystem: Erstversuch-Quote - tourismustal: Ziele+Zufriedenheit+Natur gewichtet; tourismusregion: gewichteter score - logistik: Kontostand->% (sendet erstmals eine Kennzahl, auch an /api/assessment) Teacher _leistungPct + live.php extractScore bevorzugen bereits diesen Wert. Additive Aenderungen, bestehende Logik/Sterne unveraendert; alle 15 Dateien syntaktisch geprueft. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1544,6 +1544,8 @@ async function submitAssessment(stars, score, breakdown) {
|
||||
countries_used: breakdown.countries.value,
|
||||
climates_used: breakdown.climates.value,
|
||||
year_reached: game.year,
|
||||
// Einheitliche Leistungskennzahl (0–100): gewichtete Gesamtwertung (totalScore).
|
||||
leistung_pct: Math.max(0, Math.min(100, Math.round(score))),
|
||||
},
|
||||
action_log,
|
||||
},
|
||||
@@ -1859,6 +1861,16 @@ window.GGS_LIVE_STATE = function () {
|
||||
// (siehe END_REPORT_TRIGGER_YEAR = 11). Skala bezogen auf 10 Jahre, gekappt.
|
||||
const targetYear = (typeof END_REPORT_TRIGGER_YEAR === 'number') ? (END_REPORT_TRIGGER_YEAR - 1) : 10;
|
||||
const yearProgress = Math.max(0, Math.min(100, Math.round((game.year / targetYear) * 100)));
|
||||
// Einheitliche Leistungskennzahl (0–100): dieselbe gewichtete Gesamtwertung wie
|
||||
// im Endbericht/Submit, live aus dem aktuellen Stand berechnet. Bricht die
|
||||
// Berechnung wider Erwarten, fällt sie sicher auf die Trefferquote (hit_rate) als
|
||||
// dokumentierten Proxy zurück, damit die Live-Telemetrie nie ausfällt.
|
||||
let leistungPct = hitRate; // Proxy: Trefferquote
|
||||
try {
|
||||
leistungPct = Math.max(0, Math.min(100, Math.round(computeFinalScore().score)));
|
||||
} catch (e) {
|
||||
leistungPct = hitRate; // Proxy: Trefferquote
|
||||
}
|
||||
return {
|
||||
simId: 'farmer',
|
||||
phase: 'Jahr ' + game.year + ' von ' + targetYear,
|
||||
@@ -1872,6 +1884,7 @@ window.GGS_LIVE_STATE = function () {
|
||||
hit_rate: hitRate,
|
||||
co2_kg: totalCo2,
|
||||
diseases: diseases,
|
||||
leistung_pct: leistungPct,
|
||||
crops_used: new Set(reports.map(r => r.cropId)).size,
|
||||
countries: new Set(reports.filter(r => r.countryName).map(r => r.countryName)).size,
|
||||
timestamp: Date.now(),
|
||||
|
||||
Reference in New Issue
Block a user