diff --git a/App/pages/buch-tourismustal.php b/App/pages/buch-tourismustal.php
index 0005e85..3a2bdcb 100644
--- a/App/pages/buch-tourismustal.php
+++ b/App/pages/buch-tourismustal.php
@@ -250,6 +250,14 @@ function g(string $slug, string $label): string {
đ Echte Zahlen:
Ein Wintergast gibt in Ăsterreich im Schnitt 193 âŹ/Tag aus,
ein Sommergast 156 âŹ/Tag â also nur rund 80 %. [4]
+ đ Was kostet das wirklich?
+ Die Simulation rechnet mit stark verkleinerten Zahlen. Real gilt:
+ 6er-Sessellift ca. 5â12 Mio. ⏠[8] ·
+ Patscherkofelbahn Innsbruck: geplant 58, bezahlt 83,2 Mio. âŹ
+ [9] · Hotelzimmer-Neubau (4â
)
+ 220.000â270.000 âŹ/Zimmer [10] ·
+ eine Schneekanone 27.000â35.000 ⏠[11] ·
+ Tageskarte Ski Arlberg 81,50 ⏠[12].
đź In der Simulation: Der Skipass-Regler
@@ -268,6 +276,10 @@ function g(string $slug, string $label): string {
schlechten Tag. Welches Glied der Kette war der Engpass? Was wĂŒrdest du bauen?
CâViele GĂ€ste = viel Gewinn" â stimmt
das immer? BegrĂŒnde mit Betriebskosten und Zufriedenheit.
+ DIm Spiel begegnet dir der
+ đ¶ Kosten-Check mit echten Preisen. Vergleiche: Gondelbahn im Spiel
+ 22.000 ⏠â real bis ĂŒber 80 Mio. âŹ. Warum verwendet die Simulation
+ kleinere Zahlen? Was bildet sie trotzdem richtig ab â und was nicht?
@@ -464,6 +476,16 @@ function g(string $slug, string $label): string {
srf.ch
[6] GeoSphere Austria: Klimaportal Schnee â
klimaportal.geosphere.at
+ [8] Dolomitenstadt: 6er-Sessellift Leppleskofel, 12 Mio. ⏠(2021) â
+ dolomitenstadt.at
+ [9] Stadt Innsbruck: Kostenaufstellung Patscherkofelbahn (2022) â
+ ibkinfo.at
+ [10] WKO: Investitionsrichtwerte Hotellerie 2024 â
+ wko.at
+ [11] Salzburgwiki/Marmota Maps: Kosten Schneekanonen â
+ wiki.sn.at
+ [12] Bergwelten: Skiticket-Preise 2025/26 â
+ bergwelten.com
[7] Fallstudie Serfaus-Fiss-Ladis â
brand-logic.com
diff --git a/App/sims/tourismustal/js/data.js b/App/sims/tourismustal/js/data.js
index ede59e9..ed993d0 100644
--- a/App/sims/tourismustal/js/data.js
+++ b/App/sims/tourismustal/js/data.js
@@ -687,6 +687,79 @@ export const EVENTS = [
},
];
+// ---------------------------------------------------------------------------
+// đ¶ Kosten-Checks: RealitĂ€ts-Quiz zu echten österreichischen Kosten.
+// Erscheint einmalig nach dem Erst-Bau des Trigger-Typs (mit Event-Pacing).
+// Richtig = Bonus-Budget; falsch = nur die Auflösung (Lernen ohne Strafe).
+// Zahlen verifiziert 2026-07-13, Quellen: Schulbuch-Kapitel + QUELLEN.md.
+export const KOSTEN_CHECKS = [
+ {
+ id: 'kc-lift', trigger: 'lift', title: 'Kosten-Check: Sessellift',
+ info: 'Dein Sessellift hat im Spiel 12.000 ⏠gekostet. In echt: Der neue '
+ + '6er-Sessellift auf den Leppleskofel in Osttirol (kuppelbar, mit '
+ + 'Sitzheizung und Wetterhaube) wurde 2021 gebaut.',
+ frage: 'Was hat er wirklich gekostet â mehr oder weniger als 5 Millionen Euro?',
+ optionen: ['Mehr', 'Weniger'], richtig: 0,
+ aufloesung: 'Rund 12 MILLIONEN Euro â tausendmal so viel wie im Spiel! '
+ + 'Auch einfachere kuppelbare Sessellifte kosten etwa 5 bis 7 Millionen. '
+ + 'Eine Bahn ist die gröĂte Investition, die ein Skigebiet tĂ€tigen kann â '
+ + 'real dauert es 15 bis 30 Jahre, bis sie sich bezahlt macht.',
+ bonus: 2000,
+ },
+ {
+ id: 'kc-gondola', trigger: 'gondola', title: 'Kosten-Check: Gondelbahn',
+ info: 'Die Patscherkofelbahn bei Innsbruck wurde 2017 neu gebaut â '
+ + 'geplant waren 58 Millionen Euro.',
+ frage: 'Was stand am Ende auf der Rechnung â mehr oder weniger als 70 Millionen?',
+ optionen: ['Mehr', 'Weniger'], richtig: 0,
+ aufloesung: '83,2 Millionen Euro â ĂŒber 25 Millionen mehr als geplant! '
+ + 'GroĂe Bauprojekte werden oft teurer als gedacht. Zum Vergleich: Am '
+ + 'Arlberg kostete 2016 ein Paket aus vier neuen Bahnen (darunter die '
+ + 'Flexenbahn ZĂŒrsâStuben) zusammen 45 Millionen Euro.',
+ bonus: 2000,
+ },
+ {
+ id: 'kc-hotel', trigger: 'hotel', title: 'Kosten-Check: Hotelzimmer',
+ info: 'Dein Hotel hat im Spiel 9.000 ⏠gekostet. Real rechnet die '
+ + 'österreichische Wirtschaftskammer beim Neubau eines 4-Sterne-Hotels '
+ + 'pro einzelnem Zimmer (Bau + Einrichtung).',
+ frage: 'Was kostet EIN Zimmer â mehr oder weniger als 500.000 âŹ?',
+ optionen: ['Mehr', 'Weniger'], richtig: 1,
+ aufloesung: '220.000 bis 270.000 Euro pro Zimmer (4 Sterne; 3 Sterne: '
+ + '140.000â190.000 âŹ). Ein Hotel wie deines mit 60 Betten (~30 Zimmer) '
+ + 'kostet real also 7 bis 8 MILLIONEN Euro â fast tausendmal mehr als '
+ + 'im Spiel.',
+ bonus: 2000,
+ },
+ {
+ id: 'kc-snow', trigger: 'snow', title: 'Kosten-Check: Beschneiung',
+ info: 'Deine Beschneiungsanlage hat im Spiel 6.000 ⏠gekostet. In echt '
+ + 'braucht ein Skigebiet viele einzelne Schneekanonen plus Leitungen, '
+ + 'Pumpen und Speicherteiche.',
+ frage: 'Was kostet EINE einzige Propeller-Schneekanone â mehr oder weniger als 10.000 âŹ?',
+ optionen: ['Mehr', 'Weniger'], richtig: 0,
+ aufloesung: 'Rund 27.000 bis 35.000 Euro â eine einzige echte Kanone '
+ + 'kostet also das FĂŒnffache deiner ganzen Spiel-Anlage! Komplett '
+ + 'beschneit kostet ein einziger Pistenkilometer etwa 1 Million Euro '
+ + '(Branchenverband Seilbahnen Schweiz) â dazu Wasser und Strom in '
+ + 'jedem Winter.',
+ bonus: 2000,
+ },
+ {
+ id: 'kc-skipass', trigger: 'access', title: 'Kosten-Check: Skipass',
+ info: 'Im Spiel stellst du den Skipass zwischen 15 und 45 ⏠ein. '
+ + 'Schau auf die RealitĂ€t: Ski Arlberg ist Ăsterreichs gröĂtes '
+ + 'zusammenhÀngendes Skigebiet.',
+ frage: 'Was kostet dort die Tageskarte fĂŒr Erwachsene (Saison 2025/26) â mehr oder weniger als 100 âŹ?',
+ optionen: ['Mehr', 'Weniger'], richtig: 1,
+ aufloesung: '81,50 ⏠in der Hauptsaison (in der Topsaison 83 âŹ). '
+ + 'Skifahren ist real fast doppelt so teuer wie das Maximum in deinem '
+ + 'Spiel â und die Preise steigen seit Jahren. Auch das gehört zur '
+ + 'Frage, wer sich Wintersport noch leisten kann.',
+ bonus: 2000,
+ },
+];
+
// ---------------------------------------------------------------------------
// Lehrplan-Wissen je GebÀude: kurze, verdaubare Bausteine, verankert im
// GW-Lehrplan 2023 (Standortfaktoren, Angebot/Nachfrage, Wertschöpfung,
diff --git a/App/sims/tourismustal/js/main.js b/App/sims/tourismustal/js/main.js
index e3e1430..f650d33 100644
--- a/App/sims/tourismustal/js/main.js
+++ b/App/sims/tourismustal/js/main.js
@@ -2,7 +2,7 @@
// Audio und UI und treibt die laufende Zeit an (einstellbare Zeitskala).
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 { BUILDINGS, EVENTS, MILESTONES, DECISIONS, HINTS, ADVISOR, BUILD_INFO, KOSTEN_CHECKS } from './data.js';
import { IsoRenderer } from './iso.js';
import { UI } from './ui.js';
import { telemetry } from './telemetry.js';
@@ -193,6 +193,13 @@ function onTileTap(c, r, pointerType) {
state.firedEvents.add(infoId);
ui.showCard({ id: infoId, ...BUILD_INFO[type], sound: 'card' });
}
+ // đ¶ Kosten-Check vormerken: RealitĂ€ts-Quiz zum gerade gebauten Typ
+ // (erscheint spĂ€ter mit Abstand ĂŒbers Event-Pacing, nicht sofort)
+ const kc = KOSTEN_CHECKS.find(k => k.trigger === type);
+ if (kc && !state.firedEvents.has(kc.id)) {
+ state.firedEvents.add(kc.id);
+ (state.kcQueue ??= []).push(kc.id);
+ }
}
// ===== Live-View fĂŒr LehrkrĂ€fte (Plattform-Hook) =====
@@ -269,6 +276,29 @@ function submitAssessment(completed) {
} catch { /* offline/Standalone: still ok */ }
}
+// đ¶ Kosten-Check auflösen: richtig = Bonus-Budget, falsch = nur Lerninfo
+function resolveKostenCheck(kc, picked) {
+ const richtig = picked === kc.richtig;
+ if (richtig) {
+ state.money += kc.bonus;
+ const b = state.buildings[0];
+ if (b) renderer.addFloat(`đ¶ +${kc.bonus.toLocaleString('de-AT')} âŹ`, '#3f8f5e', b.c + 0.5, b.r - 0.5, true);
+ }
+ ui.showCard({
+ id: kc.id + '-aufloesung', transient: true, forceModal: true,
+ icon: richtig ? 'â
' : 'đ',
+ sound: richtig ? 'success' : 'card',
+ title: richtig
+ ? `Richtig! Gut kalkuliert: +${kc.bonus.toLocaleString('de-AT')} ⏠Bonus`
+ : 'Nicht ganz â aber jetzt weiĂt du es!',
+ text: kc.aufloesung + (richtig
+ ? '\n\nđŠ Die Bank ist beeindruckt von deinem RealitĂ€tswissen und gewĂ€hrt bessere Konditionen.'
+ : ''),
+ });
+ ui.updateKPIs();
+ telemetry.log('kosten_check_result', { id: kc.id, richtig });
+}
+
// ---------- Karten: Meilensteine, Sieg, Entscheidungen, Events ----------
function checkEvents() {
// Meilensteine: GebĂ€ude Schritt fĂŒr Schritt freischalten (Szene 1)
@@ -317,6 +347,32 @@ function checkEvents() {
// Pacing-Fenster: erst nach Schonfrist und mit Mindestabstand zur letzten Karte
const calmEnough = state.day >= EVENT_GRACE_DAYS
&& (state.day - state.lastInterruptDay) >= EVENT_COOLDOWN;
+ // đ¶ Kosten-Check: RealitĂ€ts-Quiz (Info + SchĂ€tzfrage, Bonus bei Treffer).
+ // LĂ€uft im selben Ruhe-Fenster wie Entscheidungen â nie im Karten-Stakkato.
+ if (calmEnough && state.kcQueue?.length) {
+ const kc = KOSTEN_CHECKS.find(k => k.id === state.kcQueue[0]);
+ state.kcQueue.shift();
+ if (kc) {
+ state.lastInterruptDay = state.day;
+ const first = !state.firedEvents.has('kc-modellhinweis');
+ state.firedEvents.add('kc-modellhinweis');
+ const vorspann = first
+ ? 'Ăbrigens: Die Preise in dieser Simulation sind stark verkleinert und '
+ + 'vereinfacht, damit du schnell entscheiden kannst. Die VERHĂLTNISSE '
+ + 'stimmen â die echten Zahlen sind viel gröĂer. Zeig, dass du sie kennst:\n\n'
+ : '';
+ ui.showCard({
+ id: kc.id, icon: 'đ¶', title: kc.title,
+ text: vorspann + kc.info + '\n\nâ ' + kc.frage,
+ choices: [
+ { label: kc.optionen[0], onPick: () => resolveKostenCheck(kc, 0) },
+ { label: kc.optionen[1], onPick: () => resolveKostenCheck(kc, 1) },
+ ],
+ });
+ telemetry.log('kosten_check', { id: kc.id });
+ return;
+ }
+ }
// Entscheidungs-Karten: A/B-Wahl mit echten Folgen (je einmal, zeitversetzt)
if (calmEnough) for (const d of DECISIONS) {
if (state.firedEvents.has(d.id)) continue;