KINBARROW modding reference
v0.2.0+main.e011511f4 dataset 4a103dcdb658a75a

Weapon

One weapon from the SRD arms table (tables/weapons.srd52.ron): what it costs, what it deals, and the properties that bend how it is wielded. recipes and quality_overrides are OURS — the SRD prices a weapon but never says how one is made or how a well-made one differs.

FieldTypeRequiredDescription
ammunition_kindAmmunitionKindoptional

The ammunition named by the Ammunition property, if any.

categoryWeaponCategoryrequired

The SRD weapon category — proficiency gates on it.

damageDamageoptional

The weapon's damage; absent = none (the net).

heavy_minimumAbilityMinimumoptional

Ability threshold imposed by the Heavy property; absent for non-Heavy weapons.

idstringrequired

Authored id.

light_extra_attack_requires_different_weaponbooleandefault false

Whether the Light property's extra attack must use a different weapon.

namestringrequired

Authored name.

propertiesWeaponProperty[]required

The SRD weapon properties (finesse, heavy, thrown, …).

quality_overridesTierEffects[]optional

Per-item quality-profile overrides; absent = the class profile.

recipesRecipe[]required

The weapon's crafting recipes (ORIGINAL content, not SRD).

thrown_draw_on_attackbooleandefault false

Whether a Thrown weapon can be drawn as part of its attack.

weight_lbnumberoptional

Weight in pounds; absent = negligible (the sling).

Nested shapes

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

Ability

An open, validated Ability id interned from authored data.

AbilityMinimum

A minimum ability score imposed by a weapon property.

FieldTypeRequiredDescription
abilityAbilityrequired

Authored ability.

scoreuint32required

Authored score.

AmmunitionKind

The ammunition consumed by a ranged weapon attack.

Arrow

Select the arrow behavior.

Bolt

Select the bolt behavior.

Bullet

Select the bullet behavior.

Needle

Select the needle behavior.

CraftTier

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

Apprentice

Select the apprentice behavior.

Journeyman

Select the journeyman behavior.

Master

Select the master behavior.

Damage

Feat ids — the SRD's ONE feat, referenced where its grapple-dependent riders read (the Grappler advantage/pin). A damage roll: dice plus the kind they deal. The shared shape every attack, spell effect and trap payload reaches for, which is why it carries no id of its own — it is always a FIELD of the thing that inflicts it.

FieldTypeRequiredDescription
dicestringrequired

The damage dice, an NdM string (e.g. "1d8").

kindstringrequired

A tables/damage_kinds.srd.ron id, boot-resolved.

QualityTier

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

Trash

Select the trash behavior.

Poor

Select the poor behavior.

Normal

Select the normal behavior.

Good

Select the good behavior.

Excellent

Select the excellent behavior.

Masterwork

Select the masterwork behavior.

Legendary

Select the legendary behavior.

Range

Weapon-range band in feet.

FieldTypeRequiredDescription
longuint32required

Long range in feet — an attack beyond normal up to this is at disadvantage.

normaluint32required

Normal range in feet — no penalty within it.

Recipe

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

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.

inputs[RecipeInput, uint32][]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_mods[string, double][]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_minor) 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.

Strike

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

FieldTypeRequiredDescription
goodstringrequired

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

mods[string, double][]default []

Terrain-tag odds MODIFIERS, the terrain_mods rule applied to the strike: the effective chance at a venue is odds × Π(multiplier for each town terrain tag present), clamped to a probability. A richer vein is GROUND, not a hand-wired deposit — the same seam runs fatter where the rock says so. Empty = odds stands everywhere the recipe is wired.

oddsdoublerequired

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

TierEffects

One rung of the seven-tier quality ladder: what an item of this tier is worth and how it performs, as deltas off the Normal baseline. A class-wide row in a QualityProfile, or a single item's override of one.

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.

WeaponCategory

The four SRD weapon categories (simple/martial × melee/ranged) — proficiency gates on this.

SimpleMelee

Select the simple melee behavior.

SimpleRanged

Select the simple ranged behavior.

MartialMelee

Select the martial melee behavior.

MartialRanged

Select the martial ranged behavior.

WeaponProperty

An SRD weapon property (finesse, heavy, thrown, …) — a tag that bends how a weapon is wielded or rolled.

Ammunition

Fires ammunition within the given [Range] (bows, crossbows, slings).

Carries Range.

Finesse

May use Dexterity instead of Strength for attack and damage rolls.

Heavy

Small creatures attack with disadvantage (too large to wield well).

Light

Light enough for two-weapon fighting (the off-hand bonus attack).

Loading

Only one shot per action, however many attacks the wielder has.

Reach

Adds 5 ft to the wielder's reach for attacks and opportunity attacks.

Special

Carries special rules given in the weapon's own text (SRD "Special").

Thrown

May be thrown for a ranged attack within the given [Range].

Carries Range.

TwoHanded

Requires two hands to wield.

Versatile

May be wielded one- or two-handed; the two-handed damage die is the given NdM string.

Carries string.