mirror of
https://github.com/DramaticShape/DramaticShapeVoxelMod.git
synced 2026-08-12 18:20:51 +02:00
1.0.5: furnish every remaining interior
Extends the shape profile from ten tilesets to twenty-three -- 1,190 pinned tiles over ~130 maps -- surveyed against the standard the finished interiors set: one 16px wall band carrying its built-ins, half-cell counters, bookcase-collapsed shelving, thin-pool plant standees, objects riding the furniture they are drawn above. The recurring failures were rooms sunk into ponds by the three stale-cache water ids (collision is per cell, so one trapped tile sank its neighbours too), counters and cave edges towering to 32-48px, racks fusing into deep monoliths, and anything in a walkable cell -- stools, tables, staircases, gravestone arches -- vanishing into the floor. Also fixes the door fold overwriting profile pins: it replaced the resolved shape unconditionally, so stair pins on tiles their tileset lists in doorTiles (Celadon Mansion, Pokemon Mansion 3F) silently did nothing.
This commit is contained in:
+16
-5
@@ -205,6 +205,14 @@ function Structures.forMap(map)
|
||||
-- the fold then shows the door art standing at ground level in the
|
||||
-- building's front face. Door graphics only (the tileset's doorTiles);
|
||||
-- interior stair/mat warps stay flat.
|
||||
--
|
||||
-- A PROFILE PIN WINS over the fold. The fold is detection, and rule 1
|
||||
-- of the resolution order is that an authored tile bypasses detection
|
||||
-- -- but this used to overwrite shapeAt unconditionally, so a pin on
|
||||
-- any tile the tileset also lists in doorTiles was dead on arrival.
|
||||
-- Celadon Mansion is the case that found it: all four of its
|
||||
-- staircases are door tiles, so `stair_e` / `stair_down_w` pins there
|
||||
-- silently did nothing and the flights stayed painted on the floor.
|
||||
for cy = math.floor(y0 / 2), math.floor(y1 / 2) do
|
||||
for cx = math.floor(x0 / 2), math.floor(x1 / 2) do
|
||||
if map.doorTiles[map:cellTile(cx, cy)] then
|
||||
@@ -214,11 +222,14 @@ function Structures.forMap(map)
|
||||
for dy = 0, 1 do
|
||||
for dx = 0, 1 do
|
||||
local dk = keyOf(cx * 2 + dx, cy * 2 + dy)
|
||||
shapeAt[dk] = shapes.classes.wall
|
||||
-- remembered for buildVolume: a folded doorway column
|
||||
-- answers to its REGION for height and top, not to its
|
||||
-- own drawn extent (see the door adoption there)
|
||||
S.doorFold[dk] = true
|
||||
local ds = shapeAt[dk]
|
||||
if not (ds and ds.authored) then
|
||||
shapeAt[dk] = shapes.classes.wall
|
||||
-- remembered for buildVolume: a folded doorway column
|
||||
-- answers to its REGION for height and top, not to its
|
||||
-- own drawn extent (see the door adoption there)
|
||||
S.doorFold[dk] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user