maniator / maniator/verticopolis
[Feature]: [P2] Buildable 1-3 story ground and sky lobbies (TDT lobbyHeight round-trip)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 5
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
Imported from the engineering backlog (
_bmad-output/implementation-artifacts/backlog.md, storylobby-height).
Priority P2 (do-first order) | Severity: n/a | Status: idea | Epic: Classic parity | Type: feature-request | Recorded: 2026-07-08
Problem / motivation
Gated: tier-2, needs a spec. Spec seed: gdd-classic-modern-pricing-roadmap-2026-07-08 §4. Buildable 1-3 story ground lobby (TDT header lobbyHeight byte 1-3; tdt-format.md §1). Today lobbies are a single-story transit layer (facilities.ts); the grand lobby is purely cosmetic dressing (PARITY:80). The audit ranked this the most VISIBLE missing thing in the game (the iconic tall grand lobby is a real buildable structural choice in the original). M-L; touches structure/placement/render + a save field. The importer's header parse doesn't consume lobbyHeight yet either. EXTENDED (owner observation 2026-07-08, real mobile tower via harness): this is NOT just the ground lobby. SKY lobbies (floors 15/30/45/...) also have 1-3 story heights in the real 1994 game; we model every lobby (ground AND sky) as single-story (facilities.ts; Tower.ts:16 "ground floor + every 15th"). So importing a real tower whose sky/ground lobbies are 2-3 stories LOSES that height (they come in single-story), and export writes lobbyHeight 0/1 only (tdtExport.ts setHdrU16 0x1c). This is a Classic parity gap (multi-story lobbies are canon structural choices, the iconic grand lobby), and it degrades the TDT round-trip fidelity we are otherwise fixing. Resolve in CLASSIC first (canon 1-3 story ground + sky lobbies, round-trip the height byte + the sky-lobby heights); optionally richer in Modern. Blocks full round-trip fidelity for towers with tall lobbies (e.g. the owner's mobile save). CONFIRMED CANON + the exact mechanic (SimTower Wiki, owner 2026-07-08): multi-level lobbies are a hidden input, hold Ctrl (2-level) or Shift+Ctrl (3-level) when FIRST placing a lobby (ground OR sky, so the sky-lobby extension holds). Effects to model: it changes the stairs/escalator appearance, elevators CANNOT stop on the extra lobby floors, and the floor number does NOT appear in the shaft on those floors. Lobby price is $1,250 per segment, 1-4 segments ($5,000 for a full 4-segment level); capacity infinite; cannot be placed underground; cannot be deleted. So lobbyHeight 1-3 is player-controlled and the round-trip should carry it. BUILD: the Ctrl/Shift+Ctrl placement modifier + the no-stop / no-floor-number render+dispatch consequences + round-trip the height on TDT import/export. Owner will generate a multi-story-lobby real save (headless Ctrl-place test is a follow-up) as a fixture.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with facilities.ts and Tower.ts:16 to map ground and sky lobby representation, then inspect the importer and tdtExport.ts together with tdt-format.md §1. Define the Classic placement, rendering, elevator-dispatch, and floor-number behavior for 1–3 story lobbies, and verify that lobbyHeight survives TDT import/export for ground and sky lobbies.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- game-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100