Files
ttrpg_manager/src/data/srd/equipment.json
T
NilsBriggen 1a9e5e2c18 Build MVP: campaigns, characters, combat, dice, compendium
- Rules abstraction (5e + pf2e) behind one interface, fully tested
- Pure combat engine: turn-order safe across add/remove/reorder/init-change
- Dexie storage with real cascade deletes + Zod validation on write
- Seedable dice engine with notation parser
- Lazy SRD compendium (code-split), bestiary -> combat
- Strict TS, 54 unit tests, Playwright e2e smoke (all green)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 00:09:42 +02:00

30 lines
3.4 KiB
JSON

{
"armor": [
{ "name": "Padded", "type": "Light", "ac": "11 + Dex", "dexCap": null, "stealthPenalty": true, "weight": 8, "cost": "5 gp" },
{ "name": "Leather", "type": "Light", "ac": "11 + Dex", "dexCap": null, "stealthPenalty": false, "weight": 10, "cost": "10 gp" },
{ "name": "Studded Leather", "type": "Light", "ac": "12 + Dex", "dexCap": null, "stealthPenalty": false, "weight": 13, "cost": "45 gp" },
{ "name": "Hide", "type": "Medium", "ac": "12 + Dex (max 2)", "dexCap": 2, "stealthPenalty": false, "weight": 12, "cost": "10 gp" },
{ "name": "Chain Shirt", "type": "Medium", "ac": "13 + Dex (max 2)", "dexCap": 2, "stealthPenalty": false, "weight": 20, "cost": "50 gp" },
{ "name": "Scale Mail", "type": "Medium", "ac": "14 + Dex (max 2)", "dexCap": 2, "stealthPenalty": true, "weight": 45, "cost": "50 gp" },
{ "name": "Breastplate", "type": "Medium", "ac": "14 + Dex (max 2)", "dexCap": 2, "stealthPenalty": false, "weight": 20, "cost": "400 gp" },
{ "name": "Half Plate", "type": "Medium", "ac": "15 + Dex (max 2)", "dexCap": 2, "stealthPenalty": true, "weight": 40, "cost": "750 gp" },
{ "name": "Ring Mail", "type": "Heavy", "ac": "14", "dexCap": 0, "stealthPenalty": true, "weight": 40, "cost": "30 gp" },
{ "name": "Chain Mail", "type": "Heavy", "ac": "16", "dexCap": 0, "stealthPenalty": true, "weight": 55, "cost": "75 gp", "minStr": 13 },
{ "name": "Splint", "type": "Heavy", "ac": "17", "dexCap": 0, "stealthPenalty": true, "weight": 60, "cost": "200 gp", "minStr": 15 },
{ "name": "Plate", "type": "Heavy", "ac": "18", "dexCap": 0, "stealthPenalty": true, "weight": 65, "cost": "1,500 gp", "minStr": 15 },
{ "name": "Shield", "type": "Shield", "ac": "+2", "dexCap": null, "stealthPenalty": false, "weight": 6, "cost": "10 gp" }
],
"weapons": [
{ "name": "Club", "type": "Simple Melee", "damage": "1d4", "damageType": "bludgeoning", "properties": "Light", "weight": 2, "cost": "1 sp" },
{ "name": "Dagger", "type": "Simple Melee", "damage": "1d4", "damageType": "piercing", "properties": "Finesse, light, thrown (20/60)", "weight": 1, "cost": "2 gp" },
{ "name": "Quarterstaff", "type": "Simple Melee", "damage": "1d6", "damageType": "bludgeoning", "properties": "Versatile (1d8)", "weight": 4, "cost": "2 sp" },
{ "name": "Shortbow", "type": "Simple Ranged", "damage": "1d6", "damageType": "piercing", "properties": "Ammunition (80/320), two-handed", "weight": 2, "cost": "25 gp" },
{ "name": "Longsword", "type": "Martial Melee", "damage": "1d8", "damageType": "slashing", "properties": "Versatile (1d10)", "weight": 3, "cost": "15 gp" },
{ "name": "Rapier", "type": "Martial Melee", "damage": "1d8", "damageType": "piercing", "properties": "Finesse", "weight": 2, "cost": "25 gp" },
{ "name": "Greataxe", "type": "Martial Melee", "damage": "1d12", "damageType": "slashing", "properties": "Heavy, two-handed", "weight": 7, "cost": "30 gp" },
{ "name": "Greatsword", "type": "Martial Melee", "damage": "2d6", "damageType": "slashing", "properties": "Heavy, two-handed", "weight": 6, "cost": "50 gp" },
{ "name": "Longbow", "type": "Martial Ranged", "damage": "1d8", "damageType": "piercing", "properties": "Ammunition (150/600), heavy, two-handed", "weight": 2, "cost": "50 gp" },
{ "name": "Light Crossbow", "type": "Simple Ranged", "damage": "1d8", "damageType": "piercing", "properties": "Ammunition (80/320), loading, two-handed", "weight": 5, "cost": "25 gp" }
]
}