# Building

> Kinbarrow modding reference — content tree `45d0fe274f851548`, version `0.2.0+main.c05ef2b`.

`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` | `any[][]` | required | Future-construction data with NO consumer yet (README). |
| `furnishings` | `any[][]` | 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 |  |
| `name` | `string` | required |  |
| `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 |  |
| `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

### 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. |

### Source

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

#### Source::Srd51

SRD 5.1 — the System Reference Document, the shipped baseline.

#### Source::Original

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

#### Source::Personal

A player's own transcription or third-party content in a mod tree — provenance stays honest without borrowing the base tree's markers. Never used by shipped files.

