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:
2026-08-25 12:35:56 +02:00
parent 539f6b012e
commit 88e3c09e5c
15 changed files with 116 additions and 0 deletions
+3
View File
@@ -974,6 +974,7 @@ window.pickText = function(opts) {
action: 'end',
attemptId: activeAttemptId,
finalBalance: Math.round(game.balance || 0),
leistung_pct: Math.max(0, Math.min(100, Math.round((game.balance || 0) / 16000 * 100))),
success: !!success,
stats: stats || {},
};
@@ -5536,6 +5537,7 @@ window.pickText = function(opts) {
results: {
success: success,
finalBalance: Math.round(game.balance || 0),
leistung_pct: Math.max(0, Math.min(100, Math.round((game.balance || 0) / 16000 * 100))),
minTarget: (game._config && game._config.minTargetEarnings) || 0,
completed: a.completed,
lateRatio: a.lateRatio,
@@ -5572,6 +5574,7 @@ window.pickText = function(opts) {
simId: 'logistik',
levelId: levelNum || 1,
progressPct: pct,
leistung_pct: Math.max(0, Math.min(100, Math.round((game.balance || 0) / 16000 * 100))),
phase: 'Runde ' + ((game.progression && game.progression.round) || 1),
balance: Math.round(game.balance || 0),
ordersDelivered: delivered,