Tourismustal: Megabauwerke + Figuren-Feinschliff

- Merge-Mechanik: 4 gleiche 1x1-Gebaeude im Quadrat verschmelzen zum
  2x2-Megabauwerk. Skaleneffekt als Lernmoment: 4-fache Leistung, nur
  3-fache Betriebskosten (Erklaerkarte beim ersten Mal). Level = Maximum
  der Teile, Abriss-Erloes auf 4-fachem Bauwert, Bahnen/Bus/Bikepark
  ausgenommen. Rendering zentriert und 1.75x skaliert.
- Gaeste stehen nicht mehr im Wasser (dwell auf Wasser -> sofort ans Ufer).
- Skifahrer schimpft "#*!", wenn ihm der Schnee unterm Ski ausgeht.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-11 10:43:06 +02:00
parent 727e82c8fe
commit 2591f37191
3 changed files with 84 additions and 15 deletions
+18 -1
View File
@@ -128,12 +128,29 @@ function onTileTap(c, r) {
telemetry.log('build_rejected', { type, c, r, reason: check.reason });
return;
}
place(state, type, c, r);
const res = place(state, type, c, r);
ui.toast(`${BUILDINGS[type].name} gebaut.`);
ui.clearBuildSelection(); // Baumodus verlassen → sicher navigieren
audio.build();
ui.updateKPIs();
telemetry.log('build_placed', { type, c, r, moneyLeft: state.money });
// 4 gleiche im Quadrat → Megabauwerk (Skaleneffekt-Lernmoment)
if (res.merged) {
audio.milestone?.();
renderer.addFloat('🏛️ Megabauwerk!', '#e8892b', res.merged.c + 1, res.merged.r - 0.5, true);
const first = !state.firedEvents.has('mega-info');
state.firedEvents.add('mega-info');
ui.showCard({
id: `mega-${res.merged.c}-${res.merged.r}`, icon: '🏛️', sound: 'milestone',
title: `Megabauwerk: ${res.merged.name}!`,
text: `Vier gleiche Gebäude im Quadrat sind zu EINEM großen ${res.merged.name} verschmolzen.`
+ '\n\nDas ist ein Skaleneffekt: Das Megabauwerk leistet so viel wie '
+ 'alle vier zusammen braucht aber nur die Betriebskosten von DREI. '
+ 'Große Betriebe arbeiten pro Gast günstiger als kleine.'
+ (first ? '\n\nTipp: Das klappt mit vielen Gebäudetypen probiere es aus!' : ''),
});
telemetry.log('mega_merge', { type, c: res.merged.c, r: res.merged.r });
}
// Lernprogramm: beim ERSTEN Bau jedes Typs erklärt eine Karte die Wirkung
const infoId = `bi-${type}`;
if (BUILD_INFO[type] && !state.firedEvents.has(infoId)) {