The lake lip was Math.min(surfY), the highest ground (y grows downward), so water was poured
above the lower rim and, once levelled, ran up to the trade dock on 4 of 12 seeds. The lip is
now the lower rim edge minus one, and each lake stays 80 grains from spawn. Seed hashes and
the shallow-ore hash re-baselined (changes only under lake basins); golden fixtures also
freeze surfY/dirtY/AMB from the previous generator.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Volume-preserving levelling pass for water bodies of 50+ cells; the dock foundation is placed
first so it cannot erase levelled water. Seed hashes re-baselined (water and air only).
Started by Codex, finished and reviewed by Claude after Codex hit its usage limit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Written by the local model (qwen3-coder-30b) in a sandboxed worktree via local-run; reviewed by Claude.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Written by the local model (qwen3-coder-30b) in a sandboxed worktree via local-run; reviewed by Claude.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Written by the local model (qwen3-coder-30b) in a sandboxed worktree via local-run; reviewed by Claude.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Belts, filters, screw conveyors, shafts and pipe pieces never fill a rectangle;
a diagonal belt drag stays sloped with Shift held.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Stickiness gated every diagonal step, so clay lumps, snow, wood chunks,
ash and dirt crawled down sloped walls (a clay grain never got down a
20-piece slope). It now applies only grain against grain: a grain
resting on anything built always tries its diagonal step, so chutes
carry every material while heaps keep their shape. The random draw is
unchanged, so generated worlds stay the same.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A slope's seal can sit in a cell its neighbour leaves open (a slope's
open corner, or under a grate, screw or screen), but removal only
cleared it when the neighbour was a sloped wall, so cutting a sloped
belt next to a sloped filter or grate could leave a one-cell belt that
nothing owned and nothing could remove. Removal now asks whether the
neighbour fills that cell itself, and loading a world clears belt and
screen cells that no block or seal owns.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Downhill runs have no cleats, so they no longer draw the sidewall or
ribs either: placed, as ghosts, or in the drag preview, which now knows
the belt's direction. Uphill runs keep the wall and ribs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A piece added to a running sloped belt kept its own cleat phase, so at
the seam a rib could start just behind another and push its pocket into
it, stalling the whole run with only a few grains. Every block of a run
now takes the phase of the run's lower-left block.
Downhill sloped belts no longer have cleats: they carry like a flat belt
(90 grains/s, was 38) and draw only the sidewall.
Middle click on a sloped belt's band, where it is drawn into the empty
block beside it, now picks the belt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>