KINBARROW modding reference
v0.2.0+main.c05ef2b dataset 45d0fe274f851548

Good

goods/<id>.ron — OURS (source: Original), one material/tool per file.

FieldTypeRequiredDescription
acquisitionstringoptional

A non-crafting source (future loot/quest goods); absent everywhere today.

base_value_cpuint32required

ANCHOR in copper pieces, never a price. The loader converts to the engine's minor units at the boundary (MINOR_PER_CP).

demand_targetintegeroptional

Authored scarcity DEMAND_TARGET; absent = the engine default. World tail passes may still re-derive it (demand IS the eaters).

fuel_nightsintegeroptional

Nights one unit of this good keeps a venue's lamps lit (the fuel table — oil burns clean and long, cordwood smokes a night). Absent = not a fuel. Stamped onto the concept at genesis (FUEL_NIGHTS), so the graph-only light reads never need the tree.

furnishingFurnishingInfooptional

Present only on FURNISHINGS: the minor-object stock a genesis pass dresses an owned venue with, and — when bulky — the cover it stands as on a fight board. Absent = not a furnishing.

idstringrequired
materialMaterialInfooptional

Per-material deviations, present only on constructive materials; absent = not a material.

namestringrequired
quality_classstringoptional

A tables/quality_profiles.ron class override where structure can't derive it; absent = derive.

quality_overridesTierEffects[]optional

The contract's ONE #[serde(default)] field — present only where an item deviates from its class profile (no good needs it today).

recipesRecipe[]required

The good's recipes — craftable IS having recipes (there is no craftable flag).

sacredbooleandefault false

The shrine's flag (SACRED): the piety weight prefers pew over pint by prop, never by name match.

satisfiesstringoptional

The need this good SATISFIES ("hunger"/"recreation", the needs::Need canon — the validator rejects anything else). Part of the base vocabulary since the campaign-layer retirement: the need mapping is a property of the GOOD, not of any one world.

sourceSourcerequired
spoilage_daysintegeroptional

Days before it rots (raw hide, fish, bread); absent = imperishable.

weight_lbdoublerequired

Weight in pounds — feeds cart loads.

Nested shapes

Every shape Good closes over, so this page stands alone.

Ability

The six ability scores (SRD 5.1). The engine's own stats::Ability is the runtime type; this is the data-layer mirror, bridged by [Ability::engine].

StrDexConIntWisCha

CraftTier

The tool-proficiency ladder — one ladder, two homes (this IS the engine's TradeTier).

UntrainedProficientExpert

FurnishingAnchor

Where a bulky furnishing stands: hugging a wall, or free in the room's middle.

Wall

Against a wall — the bench, the rack, the bin.

Center

Free-standing mid-room — the millstone, the great table.

FurnishingInfo

A furnishing's dressing contract: how the piece lights, where it stands, and how it anchors. Worth stays base_value_cp (never duplicated); weight stays weight_lb.

FieldTypeRequiredDescription
anchorFurnishingAnchoroptional

How a bulky piece stands in its room (the engine branches on this — a closed set).

roomsstring[]default []

The room ROLES this piece dresses on a fight board — validated against the roles building programs declare. Empty = a trinket that casts no shadow.

sheds_lightbooleandefault false

Does the piece LIGHT the room it stands in? The lamp and the candlestick do; the mug does not.

MaterialInfo

Present only on CONSTRUCTIVE materials (iron/mithral ingot, timber, leather, wool cloth). Family baselines live on the material-class registry; these are the per-material deviations.

FieldTypeRequiredDescription
classstringrequired

A tables/material_classes.ron id (metal/wood/leather/cloth), boot-resolved.

integrity_factordoublerequired

Object-hp multiplier (mithral 4.0).

min_tierCraftTierrequired

The CraftTier floor to work it at all (mithral: Expert).

quality_biasint32required

Lifts the craft check that ROLLS the tier (mithral +4): better stock, better odds.

rarityRarityrequired

Worldgen rarity hint for the material.

strength_notestringrequired

Durability/strength as prose; a later engine consumer reads it.

toughness_bonusint32required

Bonus over the class hardness (mithral +3).

value_factordoublerequired

Value multiplier on constructed items (mithral 10.0).

weight_factordoublerequired

Weight vs the class baseline (mithral 0.5).

work_difficultyint32required

Extra labour, pairs with min_tier gating (mithral +5); never touches the quality roll.

QualityTier

The seven quality tiers (semantic — engine code branches on it).

TrashPoorNormalGoodExcellentMasterworkLegendary

Rarity

Worldgen rarity hint.

CommonUncommonRareRegional

Recipe

A recipe embedded on a good/weapon/armor. Craftable IS having recipes — there is no craftable flag (README).

FieldTypeRequiredDescription
abilityAbilityoptional

The ability whose mod feeds output; absent = untrained extraction.

buildingstringrequired

The building TYPE that produces this good (a data/buildings/ id, boot-resolved): a recipe names its building directly, and the build-time derivation mints one Produces edge at every venue of that type. Producing vs merely crafting is NOT authored: every recipe is a candidate Produces edge and the opportunity-cost engine (best_row) decides what a shift makes. The only recipes that do not derive an edge are those the 2-input edge model cannot hold (3+ distinct inputs) — a substrate limit, ledgered, not a producibility flag.

forbids_terrainstring[]default []

The exclusion half of the terrain GATE (see requires_terrain): the recipe is skipped at any venue whose town bears one of these tags.

hoursuint32required

Labour hours one batch takes.

inputsany[][]required

The (input, qty) pairs consumed per batch — boot-resolved. EMPTY = raw extraction (nature's own yield): such a recipe names WHERE and HOW FAST a raw is won, carries no CRAFTED flag, and keeps the extraction lottery. A recipe WITH inputs is a craft (sets CRAFTED).

ratedoublerequired

Units per worked hour, before the work multiplier. The recipe carries it, so production truth lives in one place.

requires_terrainstring[]default []

Terrain GATE: this recipe is wired only at venues whose town bears every requires_terrain tag and NONE of forbids_terrain. Lets a good be made two ways by place — coast/vale bread bakes flour where an arable mill stands; the mountain bakes grain direct where it does not. Empty gates = wire wherever the building stands.

strikeStrikeoptional

The face's RARE find: each produced unit has odds chance of striking this good instead of the bulk yield — the mithral vein in the stone. Absent on ordinary recipes.

terrain_modsany[][]default []

Terrain-tag rate MODIFIERS: the effective production rate at a venue is rate × Π(multiplier for each town terrain tag present). Regional divergence emerges from the GROUND, not hand-wired per venue — grain grows richer on arable, an ore seam runs faster in mountains. Empty = the base rate stands everywhere the recipe is wired.

tierCraftTierrequired

The tool-proficiency floor to run this recipe.

toolstringoptional

A goods/ id (e.g. "smiths_tools"); absent = bare hands.

yielduint32required

Units the batch yields: one run of inputs + hours makes this many of the good — the ammunition fix the pricing ledger named (arrows come 20 to a batch, so their per-unit worth is sane). The derivation (recipe_worth_cp) divides material + labour by it, so a per-unit anchor round-trips. Explicit in EVERY recipe — the RON key is yield; the no-serde-default contract's one exception is quality_overrides, and this is not it (1 for a single-unit craft).

RecipeInput

A recipe input: a SPECIFIC good (process inputs) or ANY material of a class (constructive inputs — the family wall).

Good

A SPECIFIC good by id — the exact material a process consumes.

Carries string.

Class

ANY good of a material CLASS by id — the constructive input (the family wall): whichever member of the class is on hand.

Carries string.

Source

Every file's top-level value carries source.

Srd51

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

Original

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

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.

Strike

A strike table entry: the rare good and its per-unit odds.

FieldTypeRequiredDescription
goodstringrequired

The rare good struck — a goods/ id, boot-resolved.

oddsdoublerequired

Per-unit chance (0..1) of striking good instead of the bulk yield.

TierEffects

FieldTypeRequiredDescription
ac_deltaintegeroptional

AC delta at this tier (armor); absent = n/a.

attack_deltaintegeroptional

Attack-roll delta at this tier (weapons); absent = n/a.

damage_deltaintegeroptional

Damage delta at this tier (weapons); absent = n/a.

dc_deltaintegeroptional

Lock DC delta vs the Normal DC 10 base at this tier (locks); absent = n/a.

integrity_factornumberoptional

Max-integrity multiplier (the structure class) — defaulted so the arms/tool/lock profiles never spell it.

tierQualityTierrequired

The quality tier this row describes.

value_factordoublerequired

Worth multiplier at this tier (every class).

work_factornumberoptional

Work-output multiplier at this tier (tools); absent = n/a.