From 6d7e1c51ae3f2950bf770232d03e8d2f572cada6 Mon Sep 17 00:00:00 2001 From: DramaticShape Date: Mon, 27 Jul 2026 11:08:59 -0400 Subject: [PATCH] gym entrance mat lies flat; fence posts never ride a support The mat inside every gym door ($06 over $16, 28 placements and nowhere else) is drawn from straight above, but $06 had been swept into the wall band -- so the mat's top half stood as a 16px box in the doorway, and the cell rule could not save it because a pin outranks the cell. Both halves are now pinned ground. And the `post` pool no longer takes the support lift. A post stands IN the ground by definition rather than on top of something, but its cell is blocked like any other post, so the blocked-cell test that separates furniture-top props from floor seats cannot tell it apart. Pinning the cliff slope chain gave posts along a cliff edge an authored box to their south and hoisted them onto the clifftop. --- data/voxel_heights.lua | 9 +++++++-- lib/Structures.lua | 10 +++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/data/voxel_heights.lua b/data/voxel_heights.lua index f74d52c..574e3e2 100644 --- a/data/voxel_heights.lua +++ b/data/voxel_heights.lua @@ -212,7 +212,7 @@ return { -- $0D/$0E and $1D/$1E), which is drawn 32px tall and so reads as -- two stacked courses of the same band. wall = { 34, 35, 50, 51, - 5, 6, 16, + 5, 16, 15, 36, 37, 38, 39, 53, 62, 66, 68, 69, 70, 71, 84, 86, 87, 32, 33, 48, 49, @@ -237,7 +237,12 @@ return { -- it is always the top half of a walkable FLOOR cell, so rule 3 -- already lays it flat. Lorelei's room uses the same pair for -- the paved plaza that stands out of her water. - ground = { 4 }, + -- the entrance mat every gym lays inside its door ($06 over $16, + -- 28 placements and nowhere else): drawn from straight above, so + -- it lies FLAT. $06 was in the wall band above, which stood the + -- mat's top half up as a 16px box in the doorway -- the cell rule + -- could not save it, because a pin outranks the cell. + ground = { 4, 6, 22 }, -- Celadon's hedge: a round shrub, one per cell ($2C/$2D over -- $2E/$2F), 35 of them planted wall to wall. Round drawings get -- the cylinder archetype -- one voxel ball per 16x16 cell carved diff --git a/lib/Structures.lua b/lib/Structures.lua index 62d77d9..84c1ce4 100644 --- a/lib/Structures.lua +++ b/lib/Structures.lua @@ -1930,8 +1930,16 @@ function Structures.buildObject(S, map, region, cluster, -- knows which is which: a thing that sits ON furniture occupies a -- blocked cell (you cannot walk through the gym statue, Red's plant, -- the PC), while a seat you walk up to is in a walkable one. + -- + -- FENCE POSTS (the `post` pool, force == "opaque") never take the lift + -- at all. A post stands in the ground by definition -- it is not a + -- thing set down on top of something -- and its cell is blocked like + -- any other post, so the test above cannot tell it apart. Lavender + -- Town is where it showed: pinning the cliff's slope chain gave the + -- posts along the cliff edge an authored 16px box to their south, and + -- they were hoisted to stand on the clifftop instead of the path. local baseY, support = 0, nil - if force then + if force and force ~= "opaque" then local bs = S.shapeAt[keyOf(cluster.minX, cluster.maxY + 1)] local blocked = not map:isWalkableCell(math.floor(cluster.minX / 2), math.floor(cluster.maxY / 2))