Uphill runs share one cleat phase; no cleats downhill; pick slope bands
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>
This commit is contained in:
+4
-2
@@ -51,8 +51,10 @@ function doInteract() {
|
||||
function pickUnderCursor() {
|
||||
const ax = Math.floor(GAME.aim.x), ay = Math.floor(GAME.aim.y);
|
||||
if (ax < 0 || ay < 0 || ax >= W || ay >= H) return;
|
||||
const i = ay * W + ax, m = mat[i], bi = ((ay / BS) | 0) * BW + ((ax / BS) | 0);
|
||||
let pid = null;
|
||||
const i = ay * W + ax, m = mat[i];
|
||||
let bi = ((ay / BS) | 0) * BW + ((ax / BS) | 0), pid = null;
|
||||
// a sloped belt's band is drawn across its block's edge, so the belt you see can lie in the next block
|
||||
if (!blockP[bi] && !ghostBlocks.has(bi)) { const sb = slopeBeltAt(i, ax, ay, R.smoothOn); if (sb >= 0) bi = sb; }
|
||||
const ghost = ghostBlocks.get(bi);
|
||||
if (mach[i] && machines[mach[i]]) { const mm = machines[mach[i]]; pid = mm.type; if (PIECE_BY_ID[pid].dirs) GAME.pieceDir[pid] = mm.dir; }
|
||||
else if (moldAt(ax, ay)) { const mo = moldAt(ax, ay); pid = mo.kind + 'mold'; GAME.wallMat = mo.wall; }
|
||||
|
||||
Reference in New Issue
Block a user