# Building

> Kinbarrow modding reference — content tree `b2f73c2ab65ff925`, version `0.2.0+main.a22009f4c`.

`buildings/<id>.ron` — OURS; building TYPES for worldgen to instantiate.

**Note on syntax:** these files are RON, not JSON. The shapes below are exact,
but punctuation follows RON — read a real `data/*.ron` file alongside.

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `build_cost` | `[string, uint32][]` | required | Future-construction data with NO consumer yet (`data/README.md`). |
| `furnishings` | `[string, uint32][]` | default `[]` | The type-appropriate genesis furnishing: `(goods/ id, count)` a venue of this type is dressed with — the good must carry a `furnishing:` block. Empty = the default domestic dressing (the `house` type's list). |
| `id` | `string` | required | Authored id. |
| `name` | `string` | required | Authored name. |
| `requires` | `string[]` | required | Terrain tags, ALL required (a conjunction); `[]` = anywhere. |
| `rooms` | `RoomSpec[]` | optional | The building's ROOM PROGRAM (designer-ruled moddable): the roles its floor plan claims, in claim order (biggest room first). Role names are OPEN vocabulary — the engine branches only on the mechanical flags, so a modded type may declare any rooms it likes. Empty = the default domestic program (the `house` type's). |
| `source` | `Source` | required | Authored source. |
| `storage` | `boolean` | required | True = the venue can stockpile goods. |
| `storeys` | `integer` | optional | How many storeys the type raises (1..=3, validated); the engine still gates upper floors on footprint mass. Default 1. |

## Nested shapes

<a id="room-spec"></a>

### RoomSpec

One entry of a building's room program: the role NAME is open modder vocabulary (the narrator's word, the furnishing router's address); the FLAGS are what the engine's code branches on.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `public` | `boolean` | default `false` | The PUBLIC room: claims the entrance, and opens to every room it touches (the taproom rule). Exactly one per program (validated). |
| `role` | `string` | required | The role's name — free vocabulary ("taproom", "laboratory"…): the address a furnishing's `rooms:` list routes to. |
| `upper` | `boolean` | default `false` | May this role live on an upper floor? Ground-only when false. |

<a id="source"></a>

### Source

Every file's top-level value carries `source`.

<a id="source--srd51"></a>

#### Source::Srd51

SRD 5.1 — retained nonconflicting catalogue material.

<a id="source--srd52"></a>

#### Source::Srd52

SRD 5.2.1 — the 2024-revision System Reference Document, the same CC-BY-4.0 grant as 5.1 and the current rules chassis. Its files carry the `.srd52.ron` suffix so provenance reads off the path; see `data/README.md` for which document rules a given value.

<a id="source--original"></a>

#### Source::Original

Original content authored for this game (not from the SRD).

<a id="source--phb2024"></a>

#### Source::Phb2024

Material transcribed from the 2024 Player's Handbook. This source is not redistributable by this project and belongs in a `phb2024` mod.

<a id="source--dmg2024"></a>

#### Source::Dmg2024

Material transcribed from the 2024 Dungeon Master's Guide. This source is not redistributable by this project and belongs in a `dmg2024` mod.

<a id="source--mm2024"></a>

#### Source::Mm2024

Material transcribed from the 2024 Monster Manual. This source is not redistributable by this project and belongs in an `mm2024` mod.

<a id="source--tce"></a>

#### Source::Tce

Material transcribed from Tasha's Cauldron of Everything. This source is not redistributable by this project and belongs in a `tce` mod.

<a id="source--xge"></a>

#### Source::Xge

Material transcribed from Xanathar's Guide to Everything. This source is not redistributable by this project and belongs in an `xge` mod.


