Weapon
| Field | Type | Required | Description |
|---|---|---|---|
| category | WeaponCategory | required | The SRD weapon category — proficiency gates on it. |
| cost_cp | uint32 | required | Cost in copper pieces (1 gp = 100 cp, 1 sp = 10 cp). |
| damage | Damage | optional | The weapon's damage; absent = none (the net). |
| id | string | required | |
| name | string | required | |
| 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). |
| weight_lb | number | optional | Weight in pounds; absent = negligible (the sling). |
Nested shapes
Every shape Weapon 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].
StrDexConIntWisChaCraftTier
The tool-proficiency ladder — one ladder, two homes (this IS the engine's TradeTier).
UntrainedProficientExpertDamage
| 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).
TrashPoorNormalGoodExcellentMasterworkLegendaryRange
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 (README).
| 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 | any[][] | 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 | any[][] | 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. |
| odds | double | required | Per-unit chance (0..1) of striking |
TierEffects
| 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.
SimpleMeleeSimpleRangedMartialMeleeMartialRangedWeaponProperty
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.