DramaticShapeVoxelMod archival mirror · read-only
assets/docs/buildings/B20-unnamed-building.md

B20-unnamed-building.md

assets/docs/buildings/B20-unnamed-building.md10.5 KB100644203e74eee5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
# B20 - Unnamed building

![Unnamed building](img/B20_x5.png)

`OVERWORLD` tileset, **8 x 12 cells** (16 x 24 tiles of 8px, 128 x 192 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row.

Coordinates are 1-based and local to the building: cell x=1..8, y=1..12; tile column c=1..16, tile row r=1..24. No terrain padding is included - edge rows and columns that were pure ground have been trimmed.

## Symbol grid

```
          x1   x2   x3   x4   x5   x6   x7   x8 
      +-----+-----+-----+-----+-----+-----+-----+-----+
   y1 | A B | B B | B B | B B | B B | B B | B B | B C |
      | D E | E E | E E | E E | E E | E E | E E | E D |
      +-----+-----+-----+-----+-----+-----+-----+-----+
   y2 | D E | E E | E E | E E | E E | E E | E E | E D |
      | F G | G G | G G | G G | G G | G G | G G | G H |
      +-----+-----+-----+-----+-----+-----+-----+-----+
   y3 | I J | J J | J J | J J | J J | J J | J J | J K |
      | I L | L L | L L | L L | L L | L L | L L | L K |
      +-----+-----+-----+-----+-----+-----+-----+-----+
   y4 | I J | J J | J J | J J | J J | J J | J J | J K |
      | I L | L L | L L | L L | L L | L L | L L | L K |
      +-----+-----+-----+-----+-----+-----+-----+-----+
   y5 | I J | J J | J J | J J | J J | J J | J J | J K |
      | I L | L L | L L | L L | L L | L L | L L | L K |
      +-----+-----+-----+-----+-----+-----+-----+-----+
   y6 | I J | J J | J J | J J | J J | J J | J J | J K |
      | I L | L L | L L | L L | L L | L L | L L | L K |
      +-----+-----+-----+-----+-----+-----+-----+-----+
   y7 | I J | J J | J J | J J | J J | J J | J J | J K |
      | I L | L L | L L | L L | L L | L L | L L | L K |
      +-----+-----+-----+-----+-----+-----+-----+-----+
   y8 | I J | J J | J J | J J | J J | J J | J J | J K |
      | I L | L L | L L | L L | L L | L L | L L | L K |
      +-----+-----+-----+-----+-----+-----+-----+-----+
   y9 | I J | J J | J J | J J | J J | J J | J J | J K |
      | I L | L L | L L | L L | L L | L L | L L | L K |
      +-----+-----+-----+-----+-----+-----+-----+-----+
  y10 | I J | J J | J J | J J | J J | J J | J J | J K |
      | I L | L L | L L | L L | L L | L L | L L | L K |
      +-----+-----+-----+-----+-----+-----+-----+-----+
  y11 | I J | J J | J L | L J | J J | J J | J J | J K |
      | I L | L L | L L | L L | L L | L L | L L | L K |
      +-----+-----+-----+-----+-----+-----+-----+-----+
  y12 | I L | L L | M N | J J | L L | L L | L L | L K |
      | O P | P P | * Q | P P | P P | P P | P P | P R |
      +-----+-----+-----+-----+-----+-----+-----+-----+
```

## Same grid, raw tile ids

```
            x1       x2       x3       x4       x5       x6       x7       x8   
      +---------+---------+---------+---------+---------+---------+---------+---------+
   y1 |  76  83 |  83  83 |  83  83 |  83  83 |  83  83 |  83  83 |  83  83 |  83  77 |
      |  90  18 |  18  18 |  18  18 |  18  18 |  18  18 |  18  18 |  18  18 |  18  90 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
   y2 |  90  18 |  18  18 |  18  18 |  18  18 |  18  18 |  18  18 |  18  18 |  18  90 |
      |  92  23 |  23  23 |  23  23 |  23  23 |  23  23 |  23  23 |  23  23 |  23  93 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
   y3 |  15  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  31 |
      |  15  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  31 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
   y4 |  15  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  31 |
      |  15  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  31 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
   y5 |  15  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  31 |
      |  15  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  31 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
   y6 |  15  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  31 |
      |  15  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  31 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
   y7 |  15  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  31 |
      |  15  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  31 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
   y8 |  15  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  31 |
      |  15  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  31 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
   y9 |  15  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  31 |
      |  15  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  31 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
  y10 |  15  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  10 |  10  31 |
      |  15  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  31 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
  y11 |  15  10 |  10  10 |  10  75 |  75  10 |  10  10 |  10  10 |  10  10 |  10  31 |
      |  15  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  75 |  75  31 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
  y12 |  15  75 |  75  75 |  11  12 |  10  10 |  75  75 |  75  75 |  75  75 |  75  31 |
      |  78  26 |  26  26 |  27  28 |  26  26 |  26  26 |  26  26 |  26  26 |  26  79 |
      +---------+---------+---------+---------+---------+---------+---------+---------+
```

As a 1-based Lua array, `rows[r][c]`:

```lua
local rows = {
  {  76,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  77 },  -- r1
  {  90,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  90 },  -- r2
  {  90,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  90 },  -- r3
  {  92,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  93 },  -- r4
  {  15,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  31 },  -- r5
  {  15,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r6
  {  15,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  31 },  -- r7
  {  15,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r8
  {  15,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  31 },  -- r9
  {  15,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r10
  {  15,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  31 },  -- r11
  {  15,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r12
  {  15,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  31 },  -- r13
  {  15,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r14
  {  15,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  31 },  -- r15
  {  15,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r16
  {  15,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  31 },  -- r17
  {  15,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r18
  {  15,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  31 },  -- r19
  {  15,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r20
  {  15,  10,  10,  10,  10,  75,  75,  10,  10,  10,  10,  10,  10,  10,  10,  31 },  -- r21
  {  15,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r22
  {  15,  75,  75,  75,  11,  12,  10,  10,  75,  75,  75,  75,  75,  75,  75,  31 },  -- r23
  {  78,  26,  26,  26,  27,  28,  26,  26,  26,  26,  26,  26,  26,  26,  26,  79 },  -- r24
}
```

## Legend

_Legend pending._

- `*` = tile 27, used 1x
- `A` = tile 76, used 1x
- `B` = tile 83, used 14x
- `C` = tile 77, used 1x
- `D` = tile 90, used 4x
- `E` = tile 18, used 28x
- `F` = tile 92, used 1x
- `G` = tile 23, used 14x
- `H` = tile 93, used 1x
- `I` = tile 15, used 19x
- `J` = tile 10, used 126x
- `K` = tile 31, used 19x
- `L` = tile 75, used 138x
- `M` = tile 11, used 1x
- `N` = tile 12, used 1x
- `O` = tile 78, used 1x
- `P` = tile 26, used 12x
- `Q` = tile 28, used 1x
- `R` = tile 79, used 1x

![distinct tiles](img/B20_atlas.png)

## Collision

Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`):

```
    y1   SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y2   SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y3   SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y4   SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y5   SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y6   SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y7   SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y8   SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y9   SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y10  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y11  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID  SOLID
    y12  SOLID  SOLID  DOOR   SOLID  SOLID  SOLID  SOLID  SOLID
```

Enterable cell: (3,12).

## Silhouette

514 of the 24576 px inside the box are ground outside the black outline, so the 128x192 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row:

```
    r1   c1:25px, c16:25px
    r2   c1:24px, c16:24px
    r3   c1:24px, c16:24px
    r4   c1:24px, c16:24px
    r5   c1:8px, c16:8px
    r6   c1:8px, c16:8px
    r7   c1:8px, c16:8px
    r8   c1:8px, c16:8px
    r9   c1:8px, c16:8px
    r10  c1:8px, c16:8px
    r11  c1:8px, c16:8px
    r12  c1:8px, c16:8px
    r13  c1:8px, c16:8px
    r14  c1:8px, c16:8px
    r15  c1:8px, c16:8px
    r16  c1:8px, c16:8px
    r17  c1:8px, c16:8px
    r18  c1:8px, c16:8px
    r19  c1:8px, c16:8px
    r20  c1:8px, c16:8px
    r21  c1:8px, c16:8px
    r22  c1:8px, c16:8px
    r23  c1:8px, c16:8px
    r24  c1:8px, c16:8px
```

## Where it stands

| map | cell (x,y) | door | leads to |
| --- | --- | --- | --- |
| SAFFRON_CITY | (16,10) | (18,21) | `SILPH_CO_1F` |