The Shift copy gesture removed in 648241b comes back as a property of
blueprint placement rather than a gesture of its own, reusing the C / V
shortcuts: capture one configured building with C, then click same-type
buildings to stamp its settings onto them.
REQ-UI-BLUEPRINT-TRANSFER (new): a single-building blueprint of a
configurable type (Miner, Assembler, Shipyard, Splitter) whose ghost
exactly coincides with a same-type building is a transfer target, drawn in
a distinct colour. Clicking mirrors the source's settings onto it -- placing
nothing, charging nothing, rotating nothing. The mirror includes the
absence of a setting, so a splitter captured without filters clears the
target's. Target rotation is irrelevant, since a transfer never rotates.
REQ-UI-BLUEPRINT-OVERLAP (new): blueprint placement no longer rotates
anything in place, so REQ-BLD-ROTATE-IN-PLACE is now builder-mode only.
Instead a ghost coinciding with a same-type, same-rotation building is a
compatible overlap: valid, ordinary ghost colour, and that building is left
untouched while the rest of the constellation is placed around it. Without
this a blueprint dropped over a partial copy of itself would be blocked
outright, since placement is all-or-nothing. Tunnels are included -- their
rotate-in-place exception existed only because rotation was involved.
REQ-MAT-INPUT-BUFFER gains the rule that setting a configuration to the
value it already holds is a no-op, whatever path applies it. setRecipe
already behaves this way; setShipLayout does not, and clearing a shipyard
on an identical layout already contradicted REQ-BLD-SHIPYARD's "confirms a
layout change". The transfer inherits the rule per field, so re-clicking
already-matching buildings costs no buffers or construction progress.
Also fixes a stale claim in REQ-BLD-ROTATE-IN-PLACE that a coinciding
tunnel ghost is "skipped" in blueprint mode; it has always been invalid.
Requirements only; no code implements this yet.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JcReq7hVk4KUPhTDKWAG7K