---
von: klima
an: atlas
datum: 2026-04-18 14:30
status: neu
betrifft: Feature-Request — Pleite-Grenze (Budget-Loss) pro Level im Admin-Panel
---

# Pleite-Grenze konfigurierbar machen

Thomas hat vorgeschlagen, dass der Punkt, bei dem ein Spieler als „pleite"
gilt, im Admin-Panel pro Level einstellbar sein soll.

## Aktueller Zustand

Im Klimawächter V2 hart kodiert in `checkLossCondition`:
```js
if (state.budget < -500) endLevel(false, 'pleite');
```

Alle drei Schwierigkeitsgrade nutzen denselben Schwellwert **−500 Mio €**.
Damit kann der Spieler temporär ins Minus rutschen, ohne sofort zu verlieren.

## Vorschlag — DB-gestützt

In der `game_levels`-Tabelle (die pro Modul × Schwierigkeit Einstellungen
speichert) einen neuen Spalten-Wert **`budget_loss_threshold`** (DECIMAL,
Default −500) ergänzen. Im Admin `admin-levels.html` als numerisches Feld
sichtbar.

## Pflege

Die vorhandenen Level-Configs werden im `klima-2d.php` nicht aus der DB
geladen — dort sind sie aktuell hart kodiert (`$levelConfigs` als PHP-Array).
Für eine saubere Lösung:

1. `game_levels` um Spalte `budget_loss_threshold` erweitern (DEFAULT -500)
2. `klima-2d.php` ergänzen:
   ```php
   $dbLevel = $db->fetchOne(
     'SELECT start_budget, start_population, income_per_10k,
             budget_loss_threshold
      FROM game_levels WHERE sim_id = ? AND level = ?',
     ['klima', $level]
   );
   ```
3. In `__GGS__.levelConfig.budgetLoss` injizieren.
4. In game-2d.html: `const budgetLoss = window.__GGS__.levelConfig?.budgetLoss ?? -500;`
   statt `-500`.

## Begründung aus Unterricht

Lehrer wollen je nach Klassenstufe / Zeit / Stimmung die Härte variieren
können. Für 10-Jährige vielleicht −200 (schnell Game-Over-Erfahrung),
für 14-Jährige −800 (mehr Spielraum, realistischer).

## Status

- status: neu
- Aktion: Admin-Panel erweitern, DB-Spalte anlegen. Sobald in DB, ziehe
  ich das Feld im Frontend automatisch.
- Keine Eile — ich lebe vorerst mit dem hart kodierten −500.
