Tourismustal: Naturwert aktiv zurueckgewinnen (Oeko-Umbau + Aufforsten)

Antwort auf die Design-Frage 'Naturwert zurueck ausser weniger bauen':
- Oeko-Umbau pro Gebaeude (Button im Gebaeude-Dialog): einmalig, 40 % des
  Bauwerts, dafuer -20 % Betriebskosten, +2 Naturwert, Gebaeude belastet
  die taegliche Natur-Regeneration nicht mehr. Sichtbar: Solardach-Overlay
  (auch auf Megabauwerken, 1,6x). Didaktik: Investition vs. laufende
  Kosten, nachhaltiges Wirtschaften (GW 4.10).
- Aufforsten als wiederholbare Aktion im Baumenue (1.500 Euro): pflanzt
  Wald auf freie Wiese/Alm/Feld, +3 Naturwert, Werkzeug bleibt aktiv fuer
  Serien-Pflanzung. Wissen: Renaturierung + Schutzwald (1/3 des
  oesterreichischen Walds).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-11 18:16:40 +02:00
parent 328d542fdc
commit d195b085d9
6 changed files with 105 additions and 5 deletions
+18 -1
View File
@@ -1,7 +1,7 @@
// Einstiegspunkt: Szenenwahl → Spielstart. Verdrahtet Modell, Renderer,
// Audio und UI und treibt die laufende Zeit an (einstellbare Zeitskala).
import { createState, simulateDay, canPlace, place, demolish, upgrade, buildingReport } from './model.js';
import { createState, simulateDay, canPlace, place, demolish, upgrade, ecoUpgrade, buildingReport } from './model.js';
import { BUILDINGS, EVENTS, MILESTONES, DECISIONS, HINTS, ADVISOR, BUILD_INFO } from './data.js';
import { IsoRenderer } from './iso.js';
import { UI } from './ui.js';
@@ -102,6 +102,16 @@ function inspectBuilding(c, r) {
telemetry.log('upgrade', { c, r, cost: res.cost, level: res.level });
ui._closeBuilding(); // Karte schließen → man sieht die Baustelle
},
onEco: () => {
const res = ecoUpgrade(state, c, r);
if (!res.ok) { ui.toast(`${res.reason}`); audio.error(); return; }
audio.build();
renderer.addFloat('🌱 Öko-Umbau!', '#3f8f5e', c + 0.5, r - 0.5, true);
ui.updateKPIs();
ui.toast(`🌱 ${res.name} läuft jetzt als Öko-Betrieb (${res.cost.toLocaleString('de-AT')} €): 20 % Betriebskosten, +2 Naturwert.`, 6000);
telemetry.log('eco_upgrade', { c, r, cost: res.cost });
inspectBuilding(c, r); // Karte mit neuem Status
},
onDemolish: () => {
const res = demolish(state, c, r);
if (!res.ok) { ui.toast(`${res.reason}`); audio.error(); return; }
@@ -130,6 +140,13 @@ function onTileTap(c, r) {
return;
}
const res = place(state, type, c, r);
if (res.planted) {
ui.toast('🌲 Wald gepflanzt: +3 Naturwert. Weiter tippen zum Aufforsten!', 4000);
audio.build();
ui.updateKPIs();
telemetry.log('forest_planted', { c, r, moneyLeft: state.money });
return; // Werkzeug bleibt aktiv Aufforsten in Serie
}
ui.toast(`${BUILDINGS[type].name} gebaut.`);
ui.clearBuildSelection(); // Baumodus verlassen → sicher navigieren
audio.build();