Files
dota_factory/bin/app/data/config/buildings.toml
Malte Langkabel ad1e5ed487 Implement unified tunnel build mode (REQ-BLD-TUNNEL-MODE)
Collapse the two tunnel buttons into a single Tunnel button whose ghost
resolves between Tunnel Entry and Tunnel Exit based on the hovered
position, with a green connection preview.

- Add pure core helper TunnelCompletion (firstTunnelFacing +
  resolveTunnelCompletion): the entry/exit completion scans and the
  sub-tile cursor tie-break, unit-tested in TunnelCompletionTest.
- Dedup BeltSystem::reevaluateTunnelPairing onto firstTunnelFacing so the
  pairing scan rule lives in one place.
- GameWorldView: resolve the ghost type on hover/rotate (matching built
  tunnels and construction sites), place the resolved type (drop the old
  auto-switch), and draw the matched partner + between-tiles in green.
  Hotkey 3 = Tunnel, 4 unused.
- BuildButtonGrid: one "Tunnel" button; tunnel_exit stays player-placeable
  so blueprints and cost totals still account for exits.
- Add the green tunnel_preview overlay color (VisualsConfig/Loader/toml).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y7N59FsLA5e2kuVdqe4Uhc
2026-07-21 19:04:15 +02:00

99 lines
2.2 KiB
TOML

[[building]]
id = "belt"
tooltip = "Transports items one tile at a time in the direction it faces."
cost = 2
player_placeable = true
construction_time_seconds = 0.2
surface_mask = ["A>"]
[[building]]
id = "splitter"
tooltip = "Splits an incoming item stream between two outputs, with optional per-output filters."
cost = 3
player_placeable = true
construction_time_seconds = 0.5
surface_mask = ["<A>"]
[[building]]
id = "tunnel_entry"
tooltip = "Sends items underground so belts can cross. Places an entry, or an exit when it would connect to a matching entry under the cursor."
cost = 5
player_placeable = true
construction_time_seconds = 0.5
surface_mask = ["A>"]
[[building]]
id = "tunnel_exit"
tooltip = "Receives items from a matching tunnel entry and pushes them onward."
cost = 5
player_placeable = true
construction_time_seconds = 0.5
surface_mask = ["A>"]
[[building]]
id = "miner"
tooltip = "Extracts a selected ore from the asteroid; every tile yields any ore."
cost = 15
player_placeable = true
construction_time_seconds = 1
surface_mask = [
"A>",
]
[[building]]
id = "smelter"
tooltip = "Melts ore or scrap into basic materials. No recipe selection needed."
cost = 20
player_placeable = true
construction_time_seconds = 1
surface_mask = [
"AA",
" v",
]
[[building]]
id = "assembler"
tooltip = "Crafts a selected recipe from the production tree into intermediate or final parts."
cost = 35
player_placeable = true
construction_time_seconds = 1
surface_mask = [
"AA ",
"AA>",
]
[[building]]
id = "reprocessing_plant"
tooltip = "Consumes scrap and yields one random higher-tier product per cycle."
cost = 40
player_placeable = true
construction_time_seconds = 1
surface_mask = [
"AAA ",
"AAA>",
"AAA ",
]
[[building]]
id = "shipyard"
tooltip = "Builds autonomous combat ships from a selected schematic and module layout."
cost = 60
player_placeable = true
construction_time_seconds = 1
surface_mask = [
"AAAS>",
"AAAS ",
]
[[building]]
id = "salvage_bay"
tooltip = "Drop-off point where salvage ships unload collected scrap onto belts."
cost = 25
player_placeable = true
construction_time_seconds = 1
output_buffer_capacity = 20
surface_mask = [
"<AAS",
" AAS",
]