Add complete weapons compendium (43 weapons)

- Generate all 43 weapon JSON files with proper data model
- Parse damage dice, grip types, ranges, properties from source
- Convert values to copper (1g = 10s = 100c)
- Map properties: Brawl, Brutal, Cleave, Entangle, Finesse, Keen, Long, Near, Ranged, Shield, Thrown
- Calculate versatile damage (increased die size for 2H grip)
- Assign damage types: blunt/piercing/slashing based on weapon type
- Add validation script for future verification
- All weapons validated against NoteDiscovery source

Weapon categories:
- Melee: 28 (swords, axes, hammers, polearms)
- Ranged: 10 (bows, crossbows, firearms)
- Brawl: 5 (caestus, gauntlet, katar, unarmed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Cal Corum 2025-12-16 23:19:30 -06:00
parent fae29030a2
commit 49b60954fe
44 changed files with 2730 additions and 0 deletions

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponArbalest",
"name": "Arbalest",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A heavy crossbow with brutal stopping power.</p>",
"damage": "1d8",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 120,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": true,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 700,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponArbalest",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponBattleaxe",
"name": "Battleaxe",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A versatile axe that can cleave through multiple foes.</p>",
"damage": "1d6",
"damageType": "slashing",
"bonusDamage": 0,
"grip": "versatile",
"versatileDamage": "1d8",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": true,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": true,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 700,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponBattleaxe",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponBottleGlass",
"name": "Bottle, glass",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A broken glass bottle that can be thrown.</p>",
"damage": "1",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "finesse",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": true,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 20,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponBottleGlass",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponBuckler",
"name": "Buckler",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A small shield that can be used as a finesse weapon.</p>",
"damage": "1",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "finesse",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": true
},
"material": "mundane",
"slots": 1,
"value": 500,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponBuckler",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponCaestus",
"name": "Caestus",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>Fighting gloves that leave hands free for brawling.</p>",
"damage": "1d4",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "fist",
"versatileDamage": "",
"attackType": "brawl",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": true,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 200,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponCaestus",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponClub",
"name": "Club",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A simple bludgeoning weapon.</p>",
"damage": "1d4",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 20,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponClub",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponCrossbowLight",
"name": "Crossbow, light",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A lightweight one-handed crossbow.</p>",
"damage": "1d4",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 120,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 400,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponCrossbowLight",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponCrossbow",
"name": "Crossbow",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A standard crossbow for ranged combat.</p>",
"damage": "1d6",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 120,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 800,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponCrossbow",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponDagger",
"name": "Dagger",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A versatile blade that can be thrown or used in close combat.</p>",
"damage": "1d4",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "finesse",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": true,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": true,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 100,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponDagger",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponFlail",
"name": "Flail",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A brutal weapon with a spiked ball on a chain.</p>",
"damage": "1d8",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": true,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 200,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponFlail",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponGarotteWire",
"name": "Garotte wire",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A strangling wire used for stealthy takedowns.</p>",
"damage": "0",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "finesse",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": true,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 100,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponGarotteWire",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponGauntlet",
"name": "Gauntlet",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>Armored gloves for brawling combat.</p>",
"damage": "1d4",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "fist",
"versatileDamage": "",
"attackType": "brawl",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": true,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 200,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponGauntlet",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponGreataxe",
"name": "Greataxe",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A massive two-handed axe that cleaves and devastates.</p>",
"damage": "1d10",
"damageType": "slashing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": true,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": true,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 500,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponGreataxe",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponGreatclub",
"name": "Greatclub",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A massive bludgeoning weapon requiring two hands.</p>",
"damage": "1d8",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 300,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponGreatclub",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponGreatshield",
"name": "Greatshield",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A massive shield that requires both hands but provides superior protection.</p>",
"damage": "1d6",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": true
},
"material": "mundane",
"slots": 2,
"value": 600,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponGreatshield",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponGreatsword",
"name": "Greatsword",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A massive blade that cleaves through armor and foes alike.</p>",
"damage": "1d10",
"damageType": "slashing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": true,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": true,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 800,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponGreatsword",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponHandaxe",
"name": "Handaxe",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A small axe that can be thrown.</p>",
"damage": "1d4",
"damageType": "slashing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": true,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 400,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponHandaxe",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponHandgun",
"name": "Handgun",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A one-handed firearm for ranged combat.</p>",
"damage": "1d4",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 120,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 400,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponHandgun",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponJavelin",
"name": "Javelin",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A throwing spear designed for ranged combat.</p>",
"damage": "1d4",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": true,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 100,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponJavelin",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponKatar",
"name": "Katar",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A punching dagger that leaves hands free for brawling and precise strikes.</p>",
"damage": "1d4",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "fist",
"versatileDamage": "",
"attackType": "brawl",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": true,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": true,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 200,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponKatar",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponLance",
"name": "Lance",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>An extra-long cavalry weapon with keen striking power.</p>",
"damage": "1d10",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 10,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": true,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": true,
"long": true,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 3,
"value": 900,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponLance",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponLightHammer",
"name": "Light hammer",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A small hammer that can be thrown.</p>",
"damage": "1d6",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": true,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 100,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponLightHammer",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponLongbow",
"name": "Longbow",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A powerful bow with keen accuracy at long range.</p>",
"damage": "1d8",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 120,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": true,
"long": false,
"near": false,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 800,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponLongbow",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponLongsword",
"name": "Longsword",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A versatile blade with keen cutting edge.</p>",
"damage": "1d8",
"damageType": "slashing",
"bonusDamage": 0,
"grip": "versatile",
"versatileDamage": "1d10",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": true,
"brutal": false,
"entangle": false,
"keen": true,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 400,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponLongsword",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponLucerne",
"name": "Lucerne",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A brutal polearm with hammer and spike for devastating blows.</p>",
"damage": "1d8",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 10,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": true,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": true,
"entangle": false,
"keen": false,
"long": true,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 900,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponLucerne",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponMace",
"name": "Mace",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A simple bludgeoning weapon with a weighted head.</p>",
"damage": "1d6",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 400,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponMace",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponMorningstar",
"name": "Morningstar",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A versatile spiked mace.</p>",
"damage": "1d6",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "versatile",
"versatileDamage": "1d8",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": true,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 800,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponMorningstar",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponNet",
"name": "Net",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A throwing net used to entangle and restrain foes.</p>",
"damage": "0",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": true,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": true,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 100,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponNet",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponPike",
"name": "Pike",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A long spear that can brutalize and entangle opponents.</p>",
"damage": "1d10",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 10,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": true,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": true,
"entangle": true,
"keen": false,
"long": true,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 3,
"value": 900,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponPike",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponPoleblade",
"name": "Poleblade",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A polearm with a keen blade for slashing strikes.</p>",
"damage": "1d8",
"damageType": "slashing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 10,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": true,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": true,
"long": true,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 900,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponPoleblade",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponRifle",
"name": "Rifle",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A long-range firearm with cleaving power.</p>",
"damage": "1d8",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 120,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": true,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": true,
"near": false,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 400,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponRifle",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponShortbow",
"name": "Shortbow",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A finesse bow with keen accuracy.</p>",
"damage": "1d6",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 120,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": true,
"long": false,
"near": false,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 400,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponShortbow",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponShortsword",
"name": "Shortsword",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A light blade with finesse and keen edge.</p>",
"damage": "1d6",
"damageType": "slashing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "finesse",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": true,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 200,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponShortsword",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponShotgunSawedOff",
"name": "Shotgun, sawed-off",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A compact, one-handed shotgun with brutal stopping power.</p>",
"damage": "1d8",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 30,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": true,
"entangle": false,
"keen": false,
"long": false,
"near": true,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 700,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponShotgunSawedOff",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponShotgun",
"name": "Shotgun",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A devastating firearm effective at medium range.</p>",
"damage": "1d10",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "2h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 30,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": true,
"entangle": false,
"keen": false,
"long": false,
"near": true,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 700,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponShotgun",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponSling",
"name": "Sling",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A simple ranged weapon that launches stones.</p>",
"damage": "1d4",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "ranged",
"range": {
"value": 120,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": true,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 50,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponSling",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponSpear",
"name": "Spear",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A versatile weapon that can be thrown or used to attack nearby foes.</p>",
"damage": "1d6",
"damageType": "piercing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": true,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": true,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 200,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponSpear",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponStaff",
"name": "Staff",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A versatile quarterstaff used with finesse.</p>",
"damage": "1d4",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "versatile",
"versatileDamage": "1d6",
"attackType": "finesse",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": true,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 100,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponStaff",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponStandardShield",
"name": "Standard shield",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A versatile shield that can block ranged attacks and be thrown.</p>",
"damage": "1d4",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "finesse",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": true,
"long": false,
"near": false,
"ranged": true,
"shield": true
},
"material": "mundane",
"slots": 2,
"value": 750,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponStandardShield",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponUnarmed",
"name": "Unarmed",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>Your bare fists and body used for combat.</p>",
"damage": "1",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "fist",
"versatileDamage": "",
"attackType": "brawl",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": true,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 0,
"value": 0,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponUnarmed",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponWarhammer",
"name": "Warhammer",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A versatile hammer that delivers brutal blows.</p>",
"damage": "1d8",
"damageType": "blunt",
"bonusDamage": 0,
"grip": "versatile",
"versatileDamage": "1d10",
"attackType": "melee",
"range": {
"value": 5,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": false,
"loading": false,
"brawl": false,
"crude": false,
"versatile": true,
"brutal": true,
"entangle": false,
"keen": false,
"long": false,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 800,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponWarhammer",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponWhipChain",
"name": "Whip, chain",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A brutal chain whip with extended reach.</p>",
"damage": "1d6",
"damageType": "slashing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "melee",
"range": {
"value": 10,
"units": "ft"
},
"properties": {
"finesse": false,
"thrown": false,
"cleave": false,
"reach": true,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": true,
"entangle": true,
"keen": false,
"long": true,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 2,
"value": 400,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponWhipChain",
"reviewed": true
}

View File

@ -0,0 +1,59 @@
{
"_id": "vagabondWeaponWhipLeather",
"name": "Whip, leather",
"type": "weapon",
"img": "icons/svg/sword.svg",
"system": {
"description": "<p>A flexible whip with extended reach and finesse.</p>",
"damage": "1",
"damageType": "slashing",
"bonusDamage": 0,
"grip": "1h",
"versatileDamage": "",
"attackType": "finesse",
"range": {
"value": 10,
"units": "ft"
},
"properties": {
"finesse": true,
"thrown": false,
"cleave": false,
"reach": true,
"loading": false,
"brawl": false,
"crude": false,
"versatile": false,
"brutal": false,
"entangle": true,
"keen": false,
"long": true,
"near": false,
"ranged": false,
"shield": false
},
"material": "mundane",
"slots": 1,
"value": 100,
"equipped": false,
"equippedHand": null,
"quantity": 1,
"attackBonus": 0,
"critThreshold": null,
"relic": {
"isRelic": false,
"tier": 1,
"abilityName": "",
"abilityDescription": "",
"activationCost": "",
"usesPerDay": 0,
"usesRemaining": 0,
"requiresAttunement": false,
"attuned": false,
"lore": ""
}
},
"effects": [],
"_key": "!items!vagabondWeaponWhipLeather",
"reviewed": true
}

193
scripts/validate_weapons.py Normal file
View File

@ -0,0 +1,193 @@
#!/usr/bin/env python3
"""Validate generated weapon JSONs against NoteDiscovery source."""
import json
import os
import re
import subprocess
def get_source_content():
"""Fetch weapon source from NoteDiscovery."""
result = subprocess.run(
['python', 'client.py', 'read', 'gaming/vagabond-rpg/gear-weapons.md'],
cwd=os.path.expanduser('~/.claude/skills/notediscovery'),
capture_output=True,
text=True
)
data = json.loads(result.stdout)
return data['content']
def parse_source_weapons(text):
"""Parse source weapon data into a dictionary."""
weapons = {}
# Find the weapons table
lines = text.split('\n')
in_table = False
for line in lines:
if '| Weapon | Damage | Grip |' in line:
in_table = True
continue
if in_table and line.startswith('|---'):
continue
if in_table and line.startswith('|') and line.count('|') >= 7:
parts = [p.strip() for p in line.split('|')[1:-1]]
if len(parts) >= 7 and parts[0] != 'Weapon':
name = parts[0]
damage = parts[1]
grip = parts[2]
range_val = parts[3]
properties = parts[4]
value = parts[5]
slots = parts[6]
weapons[name.lower()] = {
'name': name,
'damage': damage,
'grip': grip,
'range': range_val,
'properties': properties,
'value': value,
'slots': slots
}
elif in_table and not line.startswith('|'):
in_table = False
return weapons
def parse_value_to_copper(value_str):
"""Convert value string to copper."""
if not value_str or value_str == '-':
return 0
total = 0
# Match gold
gold_match = re.search(r'(\d+)g', value_str)
if gold_match:
total += int(gold_match.group(1)) * 100 # 1g = 100c (1g = 10s, 1s = 10c)
# Match silver
silver_match = re.search(r'(\d+)s', value_str)
if silver_match:
total += int(silver_match.group(1)) * 10 # 1s = 10c
return total
def compare_weapons(source, weapons_dir):
"""Compare generated weapons against source."""
discrepancies = []
for filename in sorted(os.listdir(weapons_dir)):
if not filename.endswith('.json'):
continue
filepath = os.path.join(weapons_dir, filename)
with open(filepath, 'r') as f:
generated = json.load(f)
weapon_name = generated['name']
weapon_key = weapon_name.lower()
if weapon_key not in source:
discrepancies.append({
'weapon': weapon_name,
'file': filename,
'issue': f'NOT IN SOURCE - weapon "{weapon_name}" not found in source data'
})
continue
src = source[weapon_key]
gen_system = generated.get('system', {})
issues = []
# Check damage
src_damage = src['damage'].strip()
gen_damage = gen_system.get('damage', '')
# Normalize: "d6" == "1d6", "1" == "1"
src_normalized = src_damage if src_damage.startswith('1') or src_damage == '1' else f"1{src_damage}"
if src_normalized != gen_damage and src_damage != gen_damage:
issues.append(f"DAMAGE: source='{src_damage}' vs generated='{gen_damage}'")
# Check grip
grip_map = {'1H': '1h', '2H': '2h', 'V': 'versatile', 'F': 'fist'}
expected_grip = grip_map.get(src['grip'].strip(), src['grip'].strip().lower())
if expected_grip != gen_system.get('grip', ''):
issues.append(f"GRIP: source='{src['grip']}' ({expected_grip}) vs generated='{gen_system.get('grip', '')}'")
# Check slots
try:
src_slots = int(src['slots'].strip()) if src['slots'].strip() not in ['-', ''] else 0
gen_slots = gen_system.get('slots', 0)
if src_slots != gen_slots:
issues.append(f"SLOTS: source={src_slots} vs generated={gen_slots}")
except ValueError:
pass
# Check value
src_value = parse_value_to_copper(src['value'])
gen_value = gen_system.get('value', 0)
if src_value != gen_value:
issues.append(f"VALUE: source={src_value}c ({src['value']}) vs generated={gen_value}c")
if issues:
discrepancies.append({
'weapon': weapon_name,
'file': filename,
'issues': issues
})
# Check for missing weapons
generated_names = set()
for filename in os.listdir(weapons_dir):
if filename.endswith('.json'):
with open(os.path.join(weapons_dir, filename), 'r') as f:
data = json.load(f)
generated_names.add(data['name'].lower())
for weapon_key in source:
if weapon_key not in generated_names:
discrepancies.append({
'weapon': source[weapon_key]['name'],
'file': 'MISSING',
'issue': 'MISSING - no generated file for this weapon'
})
return discrepancies
def main():
print("Fetching source content from NoteDiscovery...")
source_content = get_source_content()
print("Parsing source weapons...")
source = parse_source_weapons(source_content)
print(f"Found {len(source)} weapons in source\n")
weapons_dir = 'packs/_source/weapons'
weapon_files = [f for f in os.listdir(weapons_dir) if f.endswith('.json')]
print(f"Found {len(weapon_files)} generated weapon files\n")
print("Comparing weapons...")
discrepancies = compare_weapons(source, weapons_dir)
if not discrepancies:
print("\n" + "="*60)
print("NO DISCREPANCIES FOUND")
print(f"All {len(weapon_files)} weapons match source!")
print("="*60)
else:
print("\n" + "="*60)
print(f"FOUND {len(discrepancies)} WEAPON(S) WITH DISCREPANCIES")
print("="*60 + "\n")
for d in discrepancies:
print(f"### {d['weapon']} ({d.get('file', 'N/A')})")
if 'issue' in d:
print(f" - {d['issue']}")
if 'issues' in d:
for issue in d['issues']:
print(f" - {issue}")
print()
if __name__ == '__main__':
main()