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.
| Field | Type | Required | Description |
|---|---|---|---|
| ammunition_kind | AmmunitionKind | optional | The ammunition named by the Ammunition property, if any. |
| category | WeaponCategory | required | The SRD weapon category — proficiency gates on it. |
| damage | Damage | optional | The weapon's damage; absent = none (the net). |
| heavy_minimum | AbilityMinimum | optional | Ability threshold imposed by the Heavy property; absent for non-Heavy weapons. |
| id | string | required | Authored id. |
| light_extra_attack_requires_different_weapon | boolean | default false | Whether the Light property's extra attack must use a different weapon. |
| name | string | required | Authored name. |
| properties | WeaponProperty[] | required | The SRD weapon properties (finesse, heavy, thrown, …). |
| quality_overrides | TierEffects[] | optional | Per-item quality-profile overrides; absent = the class profile. |
| recipes | Recipe[] | required | The weapon's crafting recipes (ORIGINAL content, not SRD). |
| thrown_draw_on_attack | boolean | default false | Whether a Thrown weapon can be drawn as part of its attack. |
| weight_lb | number | optional | 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.
| Field | Type | Required | Description |
|---|---|---|---|
| ability | Ability | required | Authored ability. |
| score | uint32 | required | 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.
| Field | Type | Required | Description |
|---|---|---|---|
| dice | string | required | The damage dice, an |
| kind | string | required | A |
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.
| Field | Type | Required | Description |
|---|---|---|---|
| long | uint32 | required | Long range in feet — an attack beyond |
| normal | uint32 | required | 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).
| Field | Type | Required | Description |
|---|---|---|---|
| ability | Ability | optional | The ability whose mod feeds output; absent = untrained extraction. |
| building | string | required | The building TYPE that produces this good (a |
| forbids_terrain | string[] | default [] | The exclusion half of the terrain GATE (see |
| hours | uint32 | required | 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 |
| rate | double | required | Units per worked hour, before the work multiplier. The recipe carries it, so production truth lives in one place. |
| requires_terrain | string[] | default [] | Terrain GATE: this recipe is wired only at venues whose town bears every |
| strike | Strike | optional | The face's RARE find: each produced unit has |
| terrain_mods | [string, double][] | default [] | Terrain-tag rate MODIFIERS: the effective production rate at a venue is |
| tier | CraftTier | required | The tool-proficiency floor to run this recipe. |
| tool | string | optional | A goods/ id (e.g. "smiths_tools"); absent = bare hands. |
| yield | uint32 | required | Units the batch yields: one run of |
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.
| Field | Type | Required | Description |
|---|---|---|---|
| good | string | required | The rare good struck — a goods/ id, boot-resolved. |
| mods | [string, double][] | default [] | Terrain-tag odds MODIFIERS, the |
| odds | double | required | Per-unit chance (0..1) of striking |
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.
| Field | Type | Required | Description |
|---|---|---|---|
| ac_delta | integer | optional | AC delta at this tier (armor); absent = n/a. |
| attack_delta | integer | optional | Attack-roll delta at this tier (weapons); absent = n/a. |
| damage_delta | integer | optional | Damage delta at this tier (weapons); absent = n/a. |
| dc_delta | integer | optional | Lock DC delta vs the Normal DC 10 base at this tier (locks); absent = n/a. |
| integrity_factor | number | optional | Max-integrity multiplier (the |
| tier | QualityTier | required | The quality tier this row describes. |
| value_factor | double | required | Worth multiplier at this tier (every class). |
| work_factor | number | optional | 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.