Tourismustal: Aussichtsplattform-Baubedingungen entknotet

Vorher drei verschraenkte Regeln (Hoehe >=6 + Talstation <=4 + Hochlagen)
-> fast nirgends baubar. Jetzt: Hoehe >=5 UND Naehe zu Tal- ODER
BERGstation (oberes Pistenende) einer Bahn - thematisch korrekt, die
Bahn bringt die Ausflugsgaeste ja hinauf. 52 baubare Felder um zwei
Bahnen statt Handvoll. Klare Fehlermeldungen je Bedingung.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-11 17:59:12 +02:00
parent 32793d0bca
commit cb60a8c16d
2 changed files with 20 additions and 6 deletions
+2 -2
View File
@@ -75,8 +75,8 @@ export const BUILDINGS = {
}, },
platform: { platform: {
name: 'Aussichtsplattform', emoji: '🌉', cost: 8000, upkeep: 30, name: 'Aussichtsplattform', emoji: '🌉', cost: 8000, upkeep: 30,
zone: 'high', staff: 1, summerCap: 130, satBonus: 2, zone: 'any', staff: 1, summerCap: 130, satBonus: 2,
desc: 'Skywalk am Gipfel: 130 Ausflugsgäste. Nur in den Hochlagen nahe einer Bahn baubar.', desc: 'Skywalk mit Panorama: 130 Ausflugsgäste. Hoch am Berg bauen, nahe der Tal- oder Bergstation einer Bahn.',
}, },
playground: { playground: {
name: 'Erlebnisspielplatz', emoji: '🎠', cost: 5500, upkeep: 35, name: 'Erlebnisspielplatz', emoji: '🎠', cost: 5500, upkeep: 35,
+18 -4
View File
@@ -286,10 +286,24 @@ export function canPlace(state, type, c, r) {
if (type === 'badesee' && !nearWater(state, c, r, 2)) { if (type === 'badesee' && !nearWater(state, c, r, 2)) {
return { ok: false, reason: 'Der Badesee braucht Wasser näher am Fluss bauen!' }; return { ok: false, reason: 'Der Badesee braucht Wasser näher am Fluss bauen!' };
} }
if ((type === 'bikepark' || type === 'platform') if (type === 'bikepark' || type === 'platform') {
&& !state.buildings.some(b => // Bahn-Nähe: Talstation zählt immer; für die Aussichtsplattform zählt
(b.type === 'lift' || b.type === 'gondola') && dist(b, { c, r }) <= 4)) { // auch die BERGstation (oberes Pistenende) dort gehört sie ja hin.
return { ok: false, reason: `${def.name} braucht eine Bahn in der Nähe (max. 4 Felder) sie bringt die Gäste hinauf.` }; const nearBahn = state.buildings.some(b => {
if (b.type !== 'lift' && b.type !== 'gondola') return false;
if (dist(b, { c, r }) <= 4) return true;
if (type !== 'platform') return false;
const top = { c: b.c, r: b.r - (BUILDINGS[b.type].pisteLen || 5) };
return dist(top, { c, r }) <= 4;
});
if (!nearBahn) {
return { ok: false, reason: type === 'platform'
? 'Die Aussichtsplattform braucht eine Bahn in der Nähe (max. 4 Felder um Tal- ODER Bergstation).'
: `${def.name} braucht eine Bahn in der Nähe (max. 4 Felder) sie bringt die Gäste hinauf.` };
}
}
if (type === 'platform' && tile.elev < 5) {
return { ok: false, reason: 'Die Aussichtsplattform braucht Aussicht hoch am Berg bauen (weiter oben)!' };
} }
if (type === 'access') { if (type === 'access') {
let nearRoad = false; let nearRoad = false;