Klima: Geflutet an Meeresspiegel koppeln (kein Deckel-Plateau) -> Zahl passt zur Karte

floodedPct = sea*0.45 + max(0,sea-prot)*1.1. Vorher deckelte der Strand-Anteil bei
12%, sobald Schutz das Inland trocken hielt -> alle Spieler zeigten 12% egal wie das
Klima stand. Die Karte zeichnet die Flut aber aus seaLevelCm -> Zahl und Bild liefen
auseinander. Jetzt steigt die Zahl stetig mit dem Meeresspiegel (Klimafolge), Schutz
daempft nur den Zusatzschaden. Node-validiert: gutes Klima=niedrige Flut, hohe Temp=
hohe Flut, gleiche-Tick-Spreizung statt Plateau.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-23 11:43:58 +02:00
parent 48971b4588
commit 47adf0497d
+11 -11
View File
@@ -218,17 +218,17 @@
game.seaLevelCm = game.seaFastCm + game.committedSeaCm; game.seaLevelCm = game.seaFastCm + game.committedSeaCm;
// Geflutet-Anteil = sichtbare Wirkung auf der Karte. STETIG (kein Plateau), // Geflutet-Anteil = sichtbare Wirkung auf der Karte. STETIG mit dem
// damit der Wert erkennen lässt, wie gut jemand spielt: // Meeresspiegel — KEIN Deckel-Plateau, damit der Wert die Klimaleistung
// 1) Strand: geht auch bei gutem Schutz ein Stück verloren (unvermeidbar), // widerspiegelt (nicht nur „hat Deiche gebaut"):
// gedeckelt bei 12 % — der „Preis" jedes cm Meeresspiegel. // • Grundanteil (Strand/Küste) steigt direkt mit dem Meeresspiegel und
// 2) Inneres Land (Häuser): wächst stetig mit dem SCHUTZ-bereinigten // lässt sich NICHT wegdeichen — er ist die unvermeidbare Folge der
// Anstieg. Guter Schutz (Deiche/Mauern) drückt effRise stark → hält // Erwärmung. Niedrige Temperatur → niedriger Meeresspiegel → wenig Flut.
// das Inland lange trocken; ohne Schutz säuft es rasch ab. // • Zusatzschaden dort, wo der Anstieg den Schutz ÜBERRENNT (effRise):
const effRise = Math.max(0, game.seaLevelCm - game.protection * 0.85); // Deiche/Mauern verzögern das Absaufen des Inlands, halten aber nicht
const beachLoss = Math.min(12, game.seaLevelCm * 0.55); // ewig. So hilft Schutz spürbar, ersetzt aber keinen Klimaschutz.
const interior = Math.min(85, effRise * 1.5); const effRise = Math.max(0, game.seaLevelCm - game.protection);
game.floodedPct = Math.round(Math.min(100, beachLoss + interior)); game.floodedPct = Math.round(Math.min(100, game.seaLevelCm * 0.45 + effRise * 1.1));
} }
/* ============================================================ /* ============================================================