From 00685eb77c88e7283e08afcf72d92c48a0e7d250 Mon Sep 17 00:00:00 2001
From: James Ryland Miller <james.ryland.miller@gmail.com>
Date: Wed, 22 Apr 2020 00:52:11 -0500
Subject: [PATCH 1/7] start work on sql to weapons

---
 data/yaml/tmp-sql-to-weapons.py | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 data/yaml/tmp-sql-to-weapons.py

diff --git a/data/yaml/tmp-sql-to-weapons.py b/data/yaml/tmp-sql-to-weapons.py
new file mode 100644
index 0000000..b98d5d2
--- /dev/null
+++ b/data/yaml/tmp-sql-to-weapons.py
@@ -0,0 +1,31 @@
+import sqlite3
+import yaml
+import pprint
+
+def main():
+    conn = sqlite3.connect('../../pf2.db')
+    conn.row_factory = sqlite3.Row
+
+    q = """
+    SELECT
+    price_gp,
+    dice_size,
+    bulk,
+    hands,
+    range,
+    reload,
+    name,
+    descr,
+    (SELECT name FROM actions) as action_name -- use this as template for subqueries
+    FROM weapons;
+    """
+
+    c = conn.cursor()
+    c.execute(q)
+    data = [dict(row) for row in c.fetchall()]
+    pprint.pprint(data)
+
+
+
+if __name__ == '__main__':
+   main()
\ No newline at end of file

From ee57fd402a8d3ce65134e0b248429d712d1ae03e Mon Sep 17 00:00:00 2001
From: James Ryland Miller <james.ryland.miller@gmail.com>
Date: Thu, 23 Apr 2020 16:06:45 -0500
Subject: [PATCH 2/7] -convert price_gp to price_cp in weapons

---
 data/yaml/tmp-sql-to-weapons.py | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/data/yaml/tmp-sql-to-weapons.py b/data/yaml/tmp-sql-to-weapons.py
index b98d5d2..fa2978d 100644
--- a/data/yaml/tmp-sql-to-weapons.py
+++ b/data/yaml/tmp-sql-to-weapons.py
@@ -3,6 +3,7 @@ import yaml
 import pprint
 
 def main():
+    pp = pprint.PrettyPrinter(indent=2)
     conn = sqlite3.connect('../../pf2.db')
     conn.row_factory = sqlite3.Row
 
@@ -23,9 +24,24 @@ def main():
     c = conn.cursor()
     c.execute(q)
     data = [dict(row) for row in c.fetchall()]
-    pprint.pprint(data)
+    for i in data:
+        # handle empty bulk entries
+        if i['bulk'] == '':
+            i['bulk'] = '-'
+        # convert gp prices to cp prices to avoid float issues
+        if i['price_gp'] == '':
+            i['price_gp'] = '0'
+        i['price_cp'] = int(float(i['price_gp']) * 100)
+        del i['price_gp']
+
+    pp.pprint(data)
+
+    fdata = {'weapons': data}
+    final = yaml.safe_dump(fdata, allow_unicode=True)
+    with open('tmp-weapons.yaml', 'w') as f:
+        f.write(final)
 
 
 
 if __name__ == '__main__':
-   main()
\ No newline at end of file
+   main()

From c02d7b2a3432a563e4745573103d2040a6559dd4 Mon Sep 17 00:00:00 2001
From: James Miller <james.ryland.miller@gmail.com>
Date: Thu, 23 Apr 2020 16:10:40 -0500
Subject: [PATCH 3/7] update comment on tmp-sql-to-weapons

---
 data/yaml/tmp-sql-to-weapons.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/data/yaml/tmp-sql-to-weapons.py b/data/yaml/tmp-sql-to-weapons.py
index fa2978d..97ab2d5 100644
--- a/data/yaml/tmp-sql-to-weapons.py
+++ b/data/yaml/tmp-sql-to-weapons.py
@@ -25,7 +25,7 @@ def main():
     c.execute(q)
     data = [dict(row) for row in c.fetchall()]
     for i in data:
-        # handle empty bulk entries
+        # handle empty bulk entries to match the abbr field in bulks.yaml
         if i['bulk'] == '':
             i['bulk'] = '-'
         # convert gp prices to cp prices to avoid float issues

From 6c793f5b48d4cd55bc7ff839687ba95c5a4ac16a Mon Sep 17 00:00:00 2001
From: James Miller <james.ryland.miller@gmail.com>
Date: Thu, 23 Apr 2020 16:29:38 -0500
Subject: [PATCH 4/7] have weapongroups to yaml

---
 data/yaml/tmp-sql-to-weapons.py | 93 +++++++++++++++++++++++++--------
 data/yaml/weapongroups.yaml     | 91 ++++++++++++++++++++++++++++++++
 2 files changed, 161 insertions(+), 23 deletions(-)
 create mode 100644 data/yaml/weapongroups.yaml

diff --git a/data/yaml/tmp-sql-to-weapons.py b/data/yaml/tmp-sql-to-weapons.py
index 97ab2d5..bb04827 100644
--- a/data/yaml/tmp-sql-to-weapons.py
+++ b/data/yaml/tmp-sql-to-weapons.py
@@ -3,44 +3,91 @@ import yaml
 import pprint
 
 def main():
-    pp = pprint.PrettyPrinter(indent=2)
+    pp = pprint.PrettyPrinter(indent=4)
     conn = sqlite3.connect('../../pf2.db')
     conn.row_factory = sqlite3.Row
 
+    # DO WEAPON GROUPS
+
     q = """
     SELECT
-    price_gp,
-    dice_size,
-    bulk,
-    hands,
-    range,
-    reload,
+    sources_pages,
     name,
-    descr,
-    (SELECT name FROM actions) as action_name -- use this as template for subqueries
-    FROM weapons;
+    descr
+    FROM weapongroups
     """
 
     c = conn.cursor()
     c.execute(q)
     data = [dict(row) for row in c.fetchall()]
-    for i in data:
-        # handle empty bulk entries to match the abbr field in bulks.yaml
-        if i['bulk'] == '':
-            i['bulk'] = '-'
-        # convert gp prices to cp prices to avoid float issues
-        if i['price_gp'] == '':
-            i['price_gp'] = '0'
-        i['price_cp'] = int(float(i['price_gp']) * 100)
-        del i['price_gp']
-
     pp.pprint(data)
 
-    fdata = {'weapons': data}
-    final = yaml.safe_dump(fdata, allow_unicode=True)
-    with open('tmp-weapons.yaml', 'w') as f:
+            # "source": [
+            #     {
+            #         'abbr': 'CRB',
+            #         'page_start': int(i['sources_pages']),
+            #         'page_stop': int(i['sources_pages'])
+            #     },
+
+    wgdata = []
+    for i in data:
+        res = {
+            'name': i['name'],
+            'descr': i['descr'],
+            'source': [
+                {
+                    'abbr': 'CRB',
+                    'page_start': int(i['sources_pages']),
+                    'page_stop': int(i['sources_pages'])
+                }
+            ]
+        }
+        wgdata.append(res)
+
+    pp.pprint(wgdata)
+    finalwgdata = {'weapongroups': wgdata}
+    pp.pprint(finalwgdata)
+
+    final = yaml.safe_dump(finalwgdata, allow_unicode=True)
+    with open('tmp-weapongroups.yaml', 'w') as f:
         f.write(final)
 
+    # DO WEAPONS
+
+    # q = """
+    # SELECT
+    # price_gp,
+    # dice_size,
+    # bulk,
+    # hands,
+    # range,
+    # reload,
+    # name,
+    # descr,
+    # (SELECT name FROM actions) as action_name -- use this as template for subqueries
+    # FROM weapons;
+    # """
+
+    # c = conn.cursor()
+    # c.execute(q)
+    # data = [dict(row) for row in c.fetchall()]
+    # for i in data:
+    #     # handle empty bulk entries to match the abbr field in bulks.yaml
+    #     if i['bulk'] == '':
+    #         i['bulk'] = '-'
+    #     # convert gp prices to cp prices to avoid float issues
+    #     if i['price_gp'] == '':
+    #         i['price_gp'] = '0'
+    #     i['price_cp'] = int(float(i['price_gp']) * 100)
+    #     del i['price_gp']
+
+    # pp.pprint(data)
+
+    # fdata = {'weapons': data}
+    # final = yaml.safe_dump(fdata, allow_unicode=True)
+    # with open('tmp-weapons.yaml', 'w') as f:
+    #     f.write(final)
+
 
 
 if __name__ == '__main__':
diff --git a/data/yaml/weapongroups.yaml b/data/yaml/weapongroups.yaml
new file mode 100644
index 0000000..28a5c71
--- /dev/null
+++ b/data/yaml/weapongroups.yaml
@@ -0,0 +1,91 @@
+weapongroups:
+- descr: TODO descr from pg 283-84
+  name: Axe
+  source:
+  - abbr: CRB
+    page_start: 283
+    page_stop: 283
+- descr: TODO descr from pg 283-84
+  name: Bomb
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Bow
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Brawling
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Club
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Dart
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Flail
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Hammer
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Knife
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Pick
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Polearm
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Shield
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Sling
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Spear
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284
+- descr: TODO descr from pg 283-84
+  name: Sword
+  source:
+  - abbr: CRB
+    page_start: 284
+    page_stop: 284

From 92d885ddb5c82841783166c2c4c6447aee5ff698 Mon Sep 17 00:00:00 2001
From: James Miller <james.ryland.miller@gmail.com>
Date: Thu, 23 Apr 2020 17:00:39 -0500
Subject: [PATCH 5/7] weaponst able imported, still need to link weapons to
 traits

---
 data/yaml/tmp-sql-to-weapons.py | 163 ++++++++++++++++++--------------
 1 file changed, 93 insertions(+), 70 deletions(-)

diff --git a/data/yaml/tmp-sql-to-weapons.py b/data/yaml/tmp-sql-to-weapons.py
index bb04827..cf483be 100644
--- a/data/yaml/tmp-sql-to-weapons.py
+++ b/data/yaml/tmp-sql-to-weapons.py
@@ -3,92 +3,115 @@ import yaml
 import pprint
 
 def main():
-    pp = pprint.PrettyPrinter(indent=4)
+    pp = pprint.PrettyPrinter(indent=4, width=160)
     conn = sqlite3.connect('../../pf2.db')
     conn.row_factory = sqlite3.Row
 
-    # DO WEAPON GROUPS
+
+    # DO WEAPONS
 
     q = """
     SELECT
-    sources_pages,
-    name,
-    descr
-    FROM weapongroups
+    price_gp,
+    dice_size,
+    bulk,
+    hands,
+    range,
+    reload,
+    weapons.name,
+    weapons.descr,
+    weapons.sources_id,
+    weapons.sources_pages,
+    weaponcategories.name AS weaponcategory,
+    weapongroups.name AS weapongroup,
+    damagetypes.name AS damagetype
+    FROM weapons
+       INNER JOIN
+       weaponcategories ON weapons.weaponcategories_id = weaponcategories.weaponcategories_id
+       INNER JOIN
+       weapongroups ON weapons.weapongroups_id = weapongroups.weapongroups_id
+       INNER JOIN
+       damagetypes ON weapons.damagetypes_id = damagetypes.damagetypes_id
+    ;
     """
 
     c = conn.cursor()
     c.execute(q)
     data = [dict(row) for row in c.fetchall()]
+    for i in data:
+        # handle empty bulk entries to match the abbr field in bulks.yaml
+        if i['bulk'] == '':
+            i['bulk'] = '-'
+        # convert gp prices to cp prices to avoid float issues
+        if i['price_gp'] == '':
+            i['price_gp'] = '0'
+        i['price_cp'] = int(float(i['price_gp']) * 100)
+        del i['price_gp']
+        i['source'] = [
+            {
+                     'abbr': 'CRB',
+                     'page_start': int(i['sources_pages']),
+                     'page_stop': int(i['sources_pages'])
+            }
+        ]
+        del i['sources_id']
+        del i['sources_pages']
+
+
     pp.pprint(data)
 
-            # "source": [
-            #     {
-            #         'abbr': 'CRB',
-            #         'page_start': int(i['sources_pages']),
-            #         'page_stop': int(i['sources_pages'])
-            #     },
-
-    wgdata = []
-    for i in data:
-        res = {
-            'name': i['name'],
-            'descr': i['descr'],
-            'source': [
-                {
-                    'abbr': 'CRB',
-                    'page_start': int(i['sources_pages']),
-                    'page_stop': int(i['sources_pages'])
-                }
-            ]
-        }
-        wgdata.append(res)
-
-    pp.pprint(wgdata)
-    finalwgdata = {'weapongroups': wgdata}
-    pp.pprint(finalwgdata)
-
-    final = yaml.safe_dump(finalwgdata, allow_unicode=True)
-    with open('tmp-weapongroups.yaml', 'w') as f:
+    fdata = {'weapons': data}
+    final = yaml.safe_dump(fdata, allow_unicode=True)
+    with open('tmp-weapons.yaml', 'w') as f:
         f.write(final)
 
-    # DO WEAPONS
-
-    # q = """
-    # SELECT
-    # price_gp,
-    # dice_size,
-    # bulk,
-    # hands,
-    # range,
-    # reload,
-    # name,
-    # descr,
-    # (SELECT name FROM actions) as action_name -- use this as template for subqueries
-    # FROM weapons;
-    # """
-
-    # c = conn.cursor()
-    # c.execute(q)
-    # data = [dict(row) for row in c.fetchall()]
-    # for i in data:
-    #     # handle empty bulk entries to match the abbr field in bulks.yaml
-    #     if i['bulk'] == '':
-    #         i['bulk'] = '-'
-    #     # convert gp prices to cp prices to avoid float issues
-    #     if i['price_gp'] == '':
-    #         i['price_gp'] = '0'
-    #     i['price_cp'] = int(float(i['price_gp']) * 100)
-    #     del i['price_gp']
-
-    # pp.pprint(data)
-
-    # fdata = {'weapons': data}
-    # final = yaml.safe_dump(fdata, allow_unicode=True)
-    # with open('tmp-weapons.yaml', 'w') as f:
-    #     f.write(final)
-
 
 
 if __name__ == '__main__':
    main()
+
+# def done():
+    # DO WEAPON GROUPS
+
+    # q = """
+    # SELECT
+    # sources_pages,
+    # name,
+    # descr
+    # FROM weapongroups
+    # """
+
+    # c = conn.cursor()
+    # c.execute(q)
+    # data = [dict(row) for row in c.fetchall()]
+    # pp.pprint(data)
+
+    #         # "source": [
+    #         #     {
+    #         #         'abbr': 'CRB',
+    #         #         'page_start': int(i['sources_pages']),
+    #         #         'page_stop': int(i['sources_pages'])
+    #         #     },
+
+    # wgdata = []
+    # for i in data:
+    #     res = {
+    #         'name': i['name'],
+    #         'descr': i['descr'],
+    #         'source': [
+    #             {
+    #                 'abbr': 'CRB',
+    #                 'page_start': int(i['sources_pages']),
+    #                 'page_stop': int(i['sources_pages'])
+    #             }
+    #         ]
+    #     }
+    #     wgdata.append(res)
+
+    # pp.pprint(wgdata)
+    # finalwgdata = {'weapongroups': wgdata}
+    # pp.pprint(finalwgdata)
+
+    # final = yaml.safe_dump(finalwgdata, allow_unicode=True)
+    # with open('tmp-weapongroups.yaml', 'w') as f:
+    #     f.write(final)

From 41b919ac9ca6d86e7a50458cbc163b6e63c1f4fb Mon Sep 17 00:00:00 2001
From: James Miller <james.ryland.miller@gmail.com>
Date: Thu, 23 Apr 2020 17:24:29 -0500
Subject: [PATCH 6/7] this just about finishes sql to weapons

---
 data/yaml/tmp-sql-to-weapons.py |   28 +-
 data/yaml/weapons.yaml          | 1623 +++++++++++++++++++++++++++++++
 2 files changed, 1650 insertions(+), 1 deletion(-)
 create mode 100644 data/yaml/weapons.yaml

diff --git a/data/yaml/tmp-sql-to-weapons.py b/data/yaml/tmp-sql-to-weapons.py
index cf483be..e23d687 100644
--- a/data/yaml/tmp-sql-to-weapons.py
+++ b/data/yaml/tmp-sql-to-weapons.py
@@ -56,9 +56,35 @@ def main():
         ]
         del i['sources_id']
         del i['sources_pages']
+        # Get traits
+        qq = """
+        SELECT traits.short_name
+            FROM traits
+            INNER JOIN
+                weapons_traits ON traits.trait_id = weapons_traits.trait_id
+            INNER JOIN
+                weapons ON weapons.weapons_id = weapons_traits.weapons_id
+                WHERE weapons.weapons_id = (
+                                            SELECT weapons.weapons_id
+                                            WHERE weapons.name = ?
+                                        );
+        """
+        cc = conn.cursor()
+        cc.execute(qq, (i['name'],))
+        res = cc.fetchall()
+        print("\n\nWeapon: {}".format(i['name']))
+        tlist = []
+        for j in res:
+            x = tuple(j)[0]
+            tlist.append(x)
+        if len(tlist) > 0:
+            i['traits'] = tlist
+        else:
+            i['traits'] = None
 
 
-    pp.pprint(data)
+
+    # pp.pprint(data)
 
     fdata = {'weapons': data}
     final = yaml.safe_dump(fdata, allow_unicode=True)
diff --git a/data/yaml/weapons.yaml b/data/yaml/weapons.yaml
new file mode 100644
index 0000000..cd787b7
--- /dev/null
+++ b/data/yaml/weapons.yaml
@@ -0,0 +1,1623 @@
+weapons:
+- bulk: '0'
+  damagetype: Bludgeoning
+  descr: 'Nethys Note: no description was provided for this item'
+  dice_size: 4
+  hands: '1'
+  name: Fist
+  price_cp: 0
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Agile
+  - Finesse
+  - Nonlethal
+  - Unarmed
+  weaponcategory: Unarmed
+  weapongroup: Brawling
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: This broad dagger is carried by dwarves as a weapon, tool, and designation
+    of clan. Losing or having to surrender a clan dagger is considered a mark of embarrassment
+    to most dwarves.
+  dice_size: 4
+  hands: '1'
+  name: Clan Dagger
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Uncommon
+  - Agile
+  - Dwarf
+  - Parry
+  - Versatile B
+  weaponcategory: Simple
+  weapongroup: Knife
+- bulk: '1'
+  damagetype: Bludgeoning
+  descr: This is a piece of stout wood shaped or repurposed to bludgeon an enemy.
+    Clubs can be intricately carved pieces of martial art or as simple as a tree branch
+    or piece of wood.
+  dice_size: 6
+  hands: '1'
+  name: Club
+  price_cp: 0
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Thrown
+  weaponcategory: Simple
+  weapongroup: Club
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: This small, bladed weapon is held in one hand and used to stab a creature
+    in close combat. It can also be thrown.
+  dice_size: 4
+  hands: '1'
+  name: Dagger
+  price_cp: 20
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Agile
+  - Finesse
+  - Thrown
+  - Versatile
+  - Versatile S
+  weaponcategory: Simple
+  weapongroup: Knife
+- bulk: '0.1'
+  damagetype: Bludgeoning
+  descr: A pair of these metal gloves comes with full plate, half plate, and splint
+    armor; they can also be purchased separately and worn with other types of armor.
+    They not only protect your hands but also transform your hands into lethal weapons.
+  dice_size: 4
+  hands: '1'
+  name: Gauntlet
+  price_cp: 20
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Agile
+  - Free-Hand
+  weaponcategory: Simple
+  weapongroup: Brawling
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: Also known as punching daggers, katars are characterized by their H-shaped
+    hand grip that allows the blade to jut out from the knuckles.
+  dice_size: 4
+  hands: '1'
+  name: Katar
+  price_cp: 30
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Monk
+  - Uncommon
+  - Agile
+  - Deadly
+  - Monk
+  weaponcategory: Simple
+  weapongroup: Knife
+- bulk: '0.1'
+  damagetype: Bludgeoning
+  descr: A light mace has a short wooden or metal shaft ending with a dense metal
+    head. Used much like a club, it delivers heavy bludgeoning blows, but with extra
+    power derived from the head’s metal ridges or spikes.
+  dice_size: 4
+  hands: '1'
+  name: Light Mace
+  price_cp: 40
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Agile
+  - Finesse
+  - Shove
+  weaponcategory: Simple
+  weapongroup: Club
+- bulk: '2'
+  damagetype: Piercing
+  descr: This very long spear, sometimes called a pike, is purely for thrusting rather
+    than throwing. Used by many soldiers and city watch for crowd control and defense
+    against charging enemies, it must be wielded with two hands.
+  dice_size: 8
+  hands: '2'
+  name: Longspear
+  price_cp: 50
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Reach
+  weaponcategory: Simple
+  weapongroup: Spear
+- bulk: '1'
+  damagetype: Bludgeoning
+  descr: With a stout haft and a heavy metal head, a mace is sturdy and allows its
+    wielder to deliver powerful blows and dent armor.
+  dice_size: 6
+  hands: '1'
+  name: Mace
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Shove
+  weaponcategory: Simple
+  weapongroup: Club
+- bulk: '1'
+  damagetype: Bludgeoning
+  descr: This weapon has a short shaft ending in a metal ball studded with spikes.
+  dice_size: 6
+  hands: '1'
+  name: Morningstar
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Versatile
+  - Versatile P
+  weaponcategory: Simple
+  weapongroup: Club
+- bulk: '0.1'
+  damagetype: Slashing
+  descr: Originally a farming tool used for reaping grain, this one-handed weapon
+    has a short wooden handle ending in a curved blade, sometimes sharpened on both
+    sides.
+  dice_size: 4
+  hands: '1'
+  name: Sickle
+  price_cp: 20
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Agile
+  - Finesse
+  - Trip
+  weaponcategory: Simple
+  weapongroup: Knife
+- bulk: '1'
+  damagetype: Piercing
+  descr: A long metal shaft ending with a metal spike, a spear can be used one-handed
+    as a melee weapon and can be thrown.
+  dice_size: 6
+  hands: '1'
+  name: Spear
+  price_cp: 10
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Thrown
+  weaponcategory: Simple
+  weapongroup: Spear
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: Providing the same defensive function as a standard gauntlet, this version
+    has a group of spikes protruding from the knuckles to deliver piercing damage
+    with a punch.
+  dice_size: 4
+  hands: '1'
+  name: Spiked Gauntlet
+  price_cp: 30
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Agile
+  - Free-Hand
+  weaponcategory: Simple
+  weapongroup: Brawling
+- bulk: '1'
+  damagetype: Bludgeoning
+  descr: This long piece of wood can aid in walking and deliver a mighty blow.
+  dice_size: 4
+  hands: '1'
+  name: Staff
+  price_cp: 0
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Two-Hand
+  - Two-Hand d8
+  weaponcategory: Simple
+  weapongroup: Club
+- bulk: '1'
+  damagetype: Slashing
+  descr: This broad-bladed sword, sometimes called the hand‑and‑a‑half sword, has
+    a longer grip so it can be held in one hand or used with two hands to provide
+    extra piercing or slashing power.
+  dice_size: 8
+  hands: '1'
+  name: Bastard Sword
+  price_cp: 400
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Two-Hand
+  - Two-Hand d12
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '1'
+  damagetype: Slashing
+  descr: These axes are designed explicitly as weapons, rather than tools. They typically
+    weigh less, with a shaft reinforced with metal bands or bolts, and have a sharper
+    blade, making them ideal for chopping limbs rather than wood.
+  dice_size: 8
+  hands: '1'
+  name: Battle Axe
+  price_cp: 10
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Sweep
+  weaponcategory: Martial
+  weapongroup: Axe
+- bulk: '2'
+  damagetype: Bludgeoning
+  descr: This strong but slender staff is tapered at the ends and well balanced. It’s
+    designed to be an offensive and defensive weapon.
+  dice_size: 8
+  hands: '2'
+  name: Bo Staff
+  price_cp: 20
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Monk
+  - Parry
+  - Reach
+  - Trip
+  weaponcategory: Martial
+  weapongroup: Club
+- bulk: '0.1'
+  damagetype: Slashing
+  descr: This short, curved, and crude makeshift blade often has holes drilled into
+    it to reduce its weight. It’s a favored weapon of goblins.
+  dice_size: 6
+  hands: '1'
+  name: Dogslicer
+  price_cp: 10
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Uncommon
+  - Agile
+  - Backstabber
+  - Finesse
+  - Goblin
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '2'
+  damagetype: Slashing
+  descr: Essentially a longer version of the scimitar, this traditional elven weapon
+    has a thinner blade than its cousin.
+  dice_size: 8
+  hands: '2'
+  name: Elven Curve Blade
+  price_cp: 400
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Elf
+  - Finesse
+  - Forceful
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '2'
+  damagetype: Slashing
+  descr: This weapon is a heavier, two-handed version of the curved-bladed scimitar.
+    It is weighted toward the blade’s end, making it a powerful slashing weapon.
+  dice_size: 10
+  hands: '2'
+  name: Falchion
+  price_cp: 300
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Forceful
+  - Sweep
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: This halfling weapon looks like a long, two-pronged fork and is used as both
+    a weapon and a cooking implement.
+  dice_size: 4
+  hands: '1'
+  name: Filcher's Fork
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Agile
+  - Backstabber
+  - Deadly
+  - Finesse
+  - Halfling
+  - Thrown
+  weaponcategory: Martial
+  weapongroup: Spear
+- bulk: '1'
+  damagetype: Bludgeoning
+  descr: This weapon consists of a wooden handle attached to a spiked ball or cylinder
+    by a chain, rope, or strap of leather.
+  dice_size: 6
+  hands: '1'
+  name: Flail
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Disarm
+  - Sweep
+  - Trip
+  weaponcategory: Martial
+  weapongroup: Flail
+- bulk: '2'
+  damagetype: Slashing
+  descr: This polearm consists of a long, single-edged blade on the end of a 7-foot
+    pole. It is extremely effective at delivering lethal cuts at a distance.
+  dice_size: 8
+  hands: '2'
+  name: Glaive
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Deadly
+  - Forceful
+  - Reach
+  - Deadly d8
+  weaponcategory: Martial
+  weapongroup: Polearm
+- bulk: '1'
+  damagetype: Bludgeoning
+  descr: This gnome tool and weapon features a hammer at one end and a curved pick
+    on the other. It’s such a strange and awkward weapon that others think the gnomes
+    are slightly erratic for using it.
+  dice_size: 6
+  hands: '1'
+  name: Gnome Hooked Hammer
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Gnome
+  - Trip
+  - Two-Hand
+  - Versatile
+  - Versatile P
+  - Two-Hand d10
+  weaponcategory: Martial
+  weapongroup: Hammer
+- bulk: '2'
+  damagetype: Slashing
+  descr: This large battle axe is too heavy to wield with only one hand. Many greataxes
+    incorporate two blades, and they are often “bearded,” having a hook at the bottom
+    to increase the strength of their chopping power.
+  dice_size: 12
+  hands: '2'
+  name: Greataxe
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Sweep
+  weaponcategory: Martial
+  weapongroup: Axe
+- bulk: '2'
+  damagetype: Bludgeoning
+  descr: While many greatclubs are intricately carved, others are little more than
+    a sturdy tree branch. These massive clubs are too heavy to wield with only one
+    hand.
+  dice_size: 10
+  hands: '2'
+  name: Greatclub
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Backswing
+  - Shove
+  weaponcategory: Martial
+  weapongroup: Club
+- bulk: '2'
+  damagetype: Piercing
+  descr: This pick has a longer handle and broader head than a regular pick. It is
+    too heavy to wield in one hand.
+  dice_size: 10
+  hands: '2'
+  name: Greatpick
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Fatal
+  - Fatal d12
+  weaponcategory: Martial
+  weapongroup: Pick
+- bulk: '2'
+  damagetype: Slashing
+  descr: This immense two-handed sword is nearly as tall as its wielder. Its lower
+    blade is often somewhat dulled to allow it to be gripped for extra leverage in
+    close-quarter fights.
+  dice_size: 12
+  hands: '2'
+  name: Greatsword
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Versatile
+  - Versatile P
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '2'
+  damagetype: Slashing
+  descr: This polearm bears a long, often one‑sided, curved blade with a hook protruding
+    from the blunt side of the blade, which can allow its wielder to trip opponents
+    at a distance. Its shaft is usually 8 feet long.
+  dice_size: 10
+  hands: '2'
+  name: Guisarme
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Reach
+  - Trip
+  weaponcategory: Martial
+  weapongroup: Polearm
+- bulk: '2'
+  damagetype: Piercing
+  descr: This polearm has a relatively short, 5-foot shaft. The business end is a
+    long spike with an axe blade attached.
+  dice_size: 10
+  hands: '2'
+  name: Halberd
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Reach
+  - Versatile
+  - Versatile S
+  weaponcategory: Martial
+  weapongroup: Polearm
+- bulk: '0.1'
+  damagetype: Slashing
+  descr: This small axe can be used in close combat or thrown.
+  dice_size: 6
+  hands: '1'
+  name: Hatchet
+  price_cp: 40
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Agile
+  - Sweep
+  - Thrown
+  weaponcategory: Martial
+  weapongroup: Axe
+- bulk: '2'
+  damagetype: Slashing
+  descr: Created by goblins to battle horses, this weapon is essentially a long shaft
+    ending in a blade with a large hook.
+  dice_size: 8
+  hands: '2'
+  name: Horsechopper
+  price_cp: 90
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Goblin
+  - Reach
+  - Trip
+  - Versatile
+  - Versatile P
+  weaponcategory: Martial
+  weapongroup: Polearm
+- bulk: '0.1'
+  damagetype: Slashing
+  descr: Similar to a sickle and used in some regions to reap grain, a kama has a
+    short, slightly curved blade and a wooden handle.
+  dice_size: 6
+  hands: '1'
+  name: Kama
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Agile
+  - Monk
+  - Trip
+  weaponcategory: Martial
+  weapongroup: Knife
+- bulk: '1'
+  damagetype: Slashing
+  descr: A katana is a curved, single-edged sword known for its wickedly sharped blade.
+  dice_size: 6
+  hands: '1'
+  name: Katana
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Deadly
+  - Two-Hand
+  - Versatile
+  - Deadly d8
+  - Versatile P
+  - Two-Hand d10
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '0.1'
+  damagetype: Slashing
+  descr: The blade of this foot-long knife curves inward and lacks a cross guard at
+    the hilt.
+  dice_size: 6
+  hands: '1'
+  name: Kukri
+  price_cp: 60
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Agile
+  - Finesse
+  - Trip
+  weaponcategory: Martial
+  weapongroup: Knife
+- bulk: '2'
+  damagetype: Piercing
+  descr: This spear-like weapon is used by a mounted creature to deal a great deal
+    of damage.
+  dice_size: 8
+  hands: '2'
+  name: Lance
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 280
+    page_stop: 280
+  traits:
+  - Deadly
+  - Jousting
+  - Reach
+  - Deadly d8
+  - Jousting d6
+  weaponcategory: Martial
+  weapongroup: Spear
+- bulk: '0.1'
+  damagetype: Bludgeoning
+  descr: This smaller version of the warhammer has a wooden or metal shaft ending
+    in a metal head. Unlike its heavier cousin, it is light enough to throw.
+  dice_size: 6
+  hands: '1'
+  name: Light Hammer
+  price_cp: 30
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Agile
+  - Thrown
+  weaponcategory: Martial
+  weapongroup: Hammer
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: A light pick is a modified mining implement with a wooden shaft ending in
+    a pick head crafted more to pierce armor and flesh than chip rocks.
+  dice_size: 4
+  hands: '1'
+  name: Light Pick
+  price_cp: 40
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Agile
+  - Fatal
+  - Fatal d8
+  weaponcategory: Martial
+  weapongroup: Pick
+- bulk: '1'
+  damagetype: Slashing
+  descr: Longswords can be one-edged or two‑edged swords. Their blades are heavy and
+    they’re between 3 and 4 feet in length.
+  dice_size: 8
+  hands: '1'
+  name: Longsword
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Versatile
+  - Versatile P
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: This parrying dagger features a robust guard to protect the wielder’s hand.
+  dice_size: 4
+  hands: '1'
+  name: Main-gauche
+  price_cp: 50
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Agile
+  - Disarm
+  - Finesse
+  - Parry
+  - Versatile
+  - Versatile S
+  weaponcategory: Martial
+  weapongroup: Knife
+- bulk: '2'
+  damagetype: Bludgeoning
+  descr: Mauls are massive warhammers that must be swung with two hands.
+  dice_size: 12
+  hands: '2'
+  name: Maul
+  price_cp: 300
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Shove
+  weaponcategory: Martial
+  weapongroup: Hammer
+- bulk: '0.1'
+  damagetype: Bludgeoning
+  descr: The nunchaku is constructed of two wooden or metal bars connected by a short
+    length of rope or chain.
+  dice_size: 6
+  hands: '1'
+  name: Nunchaku
+  price_cp: 20
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Backswing
+  - Disarm
+  - Finesse
+  - Monk
+  weaponcategory: Martial
+  weapongroup: Club
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: This stout, metal blade of orc design has a horizontal basket hilt with blades
+    jutting from each end, or sometimes one blade like that of a katar.
+  dice_size: 6
+  hands: '1'
+  name: Orc Knuckle Dagger
+  price_cp: 70
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Agile
+  - Disarm
+  - Orc
+  weaponcategory: Martial
+  weapongroup: Knife
+- bulk: '1'
+  damagetype: Piercing
+  descr: A pick designed solely for combat has a sturdy wooden shaft and a heavy,
+    pointed head to deliver devastating blows.
+  dice_size: 6
+  hands: '1'
+  name: Pick
+  price_cp: 70
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Fatal
+  - Fatal d10
+  weaponcategory: Martial
+  weapongroup: Pick
+- bulk: '2'
+  damagetype: Piercing
+  descr: This polearm is a long trident with a central prong that’s longer than the
+    other two.
+  dice_size: 10
+  hands: '2'
+  name: Ranseur
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Disarm
+  - Reach
+  weaponcategory: Martial
+  weapongroup: Polearm
+- bulk: '1'
+  damagetype: Piercing
+  descr: The rapier is a long and thin piercing blade with a basket hilt. It is prized
+    among many as a dueling weapon.
+  dice_size: 6
+  hands: '1'
+  name: Rapier
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Deadly
+  - Disarm
+  - Finesse
+  - Deadly d8
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: This piercing dagger is a metal spike flanked by a pair of prongs that can
+    be used to trap an enemy’s weapon.
+  dice_size: 4
+  hands: '1'
+  name: Sai
+  price_cp: 60
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Agile
+  - Disarm
+  - Finesse
+  - Monk
+  - Versatile
+  - Versatile B
+  weaponcategory: Martial
+  weapongroup: Knife
+- bulk: '0.1'
+  damagetype: Bludgeoning
+  descr: A sap has a soft wrapping around a dense core, typically a leather sheath
+    around a lead rod. Its head is wider than its grip to disperse the force of a
+    blow, as the weapon’s purpose is to knock out its victim rather than to draw blood.
+  dice_size: 6
+  hands: '1'
+  name: Sap
+  price_cp: 10
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Agile
+  - Nonlethal
+  weaponcategory: Martial
+  weapongroup: Club
+- bulk: '1'
+  damagetype: Slashing
+  descr: This one-handed curved blade is sharp on one side.
+  dice_size: 6
+  hands: '1'
+  name: Scimitar
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Forceful
+  - Sweep
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '2'
+  damagetype: Slashing
+  descr: Derived from a farming tool used to mow down long grains and cereals, this
+    weapon has a long wooden shaft with protruding handles, capped with a curved blade
+    set at a right angle.
+  dice_size: 10
+  hands: '2'
+  name: Scythe
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Deadly
+  - Trip
+  - Deadly d10
+  weaponcategory: Martial
+  weapongroup: Polearm
+- bulk: '0'
+  damagetype: Bludgeoning
+  descr: A shield bash is not actually a weapon, but a maneuver in which you thrust
+    or swing your shield to hit your foe with an impromptu attack.
+  dice_size: 4
+  hands: '1'
+  name: Shield Bash
+  price_cp: 0
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits: null
+  weaponcategory: Martial
+  weapongroup: Shield
+- bulk: '0'
+  damagetype: Bludgeoning
+  descr: Typically a round, convex, or conical piece of thick metal attached to the
+    center of a shield, a shield boss increases the bludgeoning damage of a shield
+    bash.
+  dice_size: 6
+  hands: '1'
+  name: Shield Boss
+  price_cp: 50
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits: null
+  weaponcategory: Martial
+  weapongroup: Shield
+- bulk: '0'
+  damagetype: Piercing
+  descr: These metal spikes are strategically placed on the defensive side of the
+    shield to deal piercing damage with a shield bash.
+  dice_size: 6
+  hands: '1'
+  name: Shield Spikes
+  price_cp: 50
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits: null
+  weaponcategory: Martial
+  weapongroup: Shield
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: These blades come in a variety of shapes and styles, but they are typically
+    2 feet long.
+  dice_size: 6
+  hands: '1'
+  name: Shortsword
+  price_cp: 90
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Agile
+  - Finesse
+  - Versatile
+  - Versatile S
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '1'
+  damagetype: Slashing
+  descr: This 4‑foot‑long length of chain is covered with barbs and has spikes on
+    one or both ends. Some feature metal hoops used as handgrips.
+  dice_size: 8
+  hands: '2'
+  name: Spiked Chain
+  price_cp: 300
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Disarm
+  - Finesse
+  - Trip
+  weaponcategory: Martial
+  weapongroup: Flail
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: From a central metal ring, four tapering metal blades extend like points
+    on a compass rose. When gripping a starknife from the center, the wielder can
+    use it as a melee weapon. It can also be thrown short distances.
+  dice_size: 4
+  hands: '1'
+  name: Starknife
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Agile
+  - Deadly
+  - Finesse
+  - Thrown
+  - Versatile
+  - Versatile S
+  weaponcategory: Martial
+  weapongroup: Knife
+- bulk: '1'
+  damagetype: Slashing
+  descr: This heavy blade is favored by guardians of religious sites. It has a distinctive,
+    crescent-shaped blade that seems to be a mix of a sickle and sword. It often has
+    holes drilled into the blade or the pommel so that bells or other holy trinkets
+    can be affixed to the weapon as an aid for prayer or mediation.
+  dice_size: 8
+  hands: '1'
+  name: Temple Sword
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Monk
+  - Trip
+  weaponcategory: Martial
+  weapongroup: Sword
+- bulk: '1'
+  damagetype: Piercing
+  descr: This three-pronged, spear-like weapon typically has a 4-foot shaft. Like
+    a spear, it can be wielded with one hand or thrown.
+  dice_size: 8
+  hands: '1'
+  name: Trident
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Thrown
+  weaponcategory: Martial
+  weapongroup: Spear
+- bulk: '2'
+  damagetype: Bludgeoning
+  descr: ''
+  dice_size: 10
+  hands: '2'
+  name: War Flail
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Disarm
+  - Sweep
+  - Trip
+  weaponcategory: Martial
+  weapongroup: Flail
+- bulk: '1'
+  damagetype: Bludgeoning
+  descr: This weapon has a wooden shaft ending in a large, heavy metal head. The head
+    of the hammer might be single-sided or double-sided, but it’s always capable of
+    delivering powerful bludgeoning blows.
+  dice_size: 8
+  hands: '1'
+  name: Warhammer
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Shove
+  weaponcategory: Martial
+  weapongroup: Hammer
+- bulk: '1'
+  damagetype: Slashing
+  descr: This long strand of thick leather, often braided, delivers a painful but
+    nonlethal slash at a distance, usually accompanied by a distinctive cracking sound.
+  dice_size: 4
+  hands: '1'
+  name: Whip
+  price_cp: 10
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Disarm
+  - Finesse
+  - Nonlethal
+  - Reach
+  - Trip
+  weaponcategory: Martial
+  weapongroup: Flail
+- bulk: '1'
+  damagetype: Bludgeoning
+  descr: ''
+  dice_size: 6
+  hands: '1'
+  name: Aklys
+  price_cp: 500
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 85
+    page_stop: 85
+  traits:
+  - Uncommon
+  - Ranged Trip
+  - Tethered
+  - Thrown
+  - Trip
+  weaponcategory: Advanced
+  weapongroup: Club
+- bulk: '2'
+  damagetype: Slashing
+  descr: This favored weapon of the dwarves has a large, ornate head mounted on a
+    thick handle. This powerful axe can be wielded with one hand or two.
+  dice_size: 8
+  hands: '1'
+  name: Dwarven War Axe
+  price_cp: 300
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Dwarf
+  - Sweep
+  - Two-Hand
+  - Two-Hand d12
+  weaponcategory: Advanced
+  weapongroup: Axe
+- bulk: '2'
+  damagetype: Bludgeoning
+  descr: More a flail than a mace, this weapon has a short handle attached to a length
+    of chain with a ball at the end. The ball is propelled to its reach with the flick
+    of the wrist, the momentum of which brings the ball back to the wielder after
+    the strike.
+  dice_size: 8
+  hands: '1'
+  name: Gnome Flickmace
+  price_cp: 300
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Gnome
+  - Reach
+  weaponcategory: Advanced
+  weapongroup: Flail
+- bulk: '1'
+  damagetype: Slashing
+  descr: This single-bladed bearded axe has a jagged blade that’s perfect for separating
+    bone from tendon and cartilage.
+  dice_size: 8
+  hands: '1'
+  name: Orc Necksplitter
+  price_cp: 200
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Forceful
+  - Orc
+  - Sweep
+  weaponcategory: Advanced
+  weapongroup: Axe
+- bulk: '0.1'
+  damagetype: Slashing
+  descr: The signature weapon of the Red Mantis assassins, this curved blade is serrated
+    like a saw, hence the name.
+  dice_size: 8
+  hands: '1'
+  name: Sawtooth Saber
+  price_cp: 500
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Uncommon
+  - Agile
+  - Finesse
+  - Twin
+  weaponcategory: Advanced
+  weapongroup: Sword
+- bulk: '2'
+  damagetype: Piercing
+  descr: Ogres are known for using immense, curved picks called ogre hooks.
+  dice_size: 10
+  hands: '2'
+  name: Ogre Hook
+  price_cp: 100
+  range: null
+  reload: null
+  source:
+  - abbr: CRB
+    page_start: 253
+    page_stop: 253
+  traits:
+  - Uncommon
+  - Deadly
+  - Trip
+  weaponcategory: Advanced
+  weapongroup: Pick
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: This long, narrow tube is used for shooting blowgun darts, using only the
+    power of a forcefully exhaled breath.
+  dice_size: 1
+  hands: '1'
+  name: Blowgun
+  price_cp: 10
+  range: 20
+  reload: '1'
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Agile
+  - Nonlethal
+  weaponcategory: Simple
+  weapongroup: Dart
+- bulk: '1'
+  damagetype: Piercing
+  descr: This ranged weapon has a bow-like assembly mounted on a handled frame called
+    a tiller. The tiller has a mechanism to lock the bowstring in place, attached
+    to a trigger mechanism that releases the tension and launches a bolt.
+  dice_size: 8
+  hands: '2'
+  name: Crossbow
+  price_cp: 300
+  range: 120
+  reload: '1'
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits: null
+  weaponcategory: Simple
+  weapongroup: Bow
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: This thrown weapon is larger than an arrow but shorter than a javelin. It
+    typically has a short shaft of wood ending in a metal tip and is sometimes stabilized
+    by feathers or fur.
+  dice_size: 4
+  hands: '1'
+  name: Dart
+  price_cp: 1
+  range: 20
+  reload: ''
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits:
+  - Agile
+  - Thrown
+  weaponcategory: Simple
+  weapongroup: Dart
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: Sometimes referred to as an alley bow by rogues or ruffians, this small crossbow
+    fires small bolts that are sometimes used to deliver poison to the target. It's
+    small enough to be shot one-handed, but it still requires two hands to load.
+  dice_size: 6
+  hands: '1'
+  name: Hand Crossbow
+  price_cp: 300
+  range: 60
+  reload: '1'
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits: null
+  weaponcategory: Simple
+  weapongroup: Bow
+- bulk: '2'
+  damagetype: Piercing
+  descr: This large crossbow is harder to load and more substantial than a regular
+    crossbow, but it packs a greater punch.
+  dice_size: 10
+  hands: '2'
+  name: Heavy Crossbow
+  price_cp: 400
+  range: 120
+  reload: '2'
+  source:
+  - abbr: CRB
+    page_start: 281
+    page_stop: 281
+  traits: null
+  weaponcategory: Simple
+  weapongroup: Bow
+- bulk: '0.1'
+  damagetype: Piercing
+  descr: This thin spear is well balanced for throwing but is not designed for melee
+    use.
+  dice_size: 6
+  hands: '1'
+  name: Javelin
+  price_cp: 10
+  range: 30
+  reload: ''
+  source:
+  - abbr: CRB
+    page_start: 282
+    page_stop: 282
+  traits:
+  - Thrown
+  weaponcategory: Simple
+  weapongroup: Dart
+- bulk: '0.1'
+  damagetype: Bludgeoning
+  descr: Little more than a leather cup attached to a pair of straps, a sling can
+    be used to fling smooth stones or sling bullets at a range.
+  dice_size: 6
+  hands: '1'
+  name: Sling
+  price_cp: 0
+  range: 50
+  reload: '1'
+  source:
+  - abbr: CRB
+    page_start: 282
+    page_stop: 282
+  traits:
+  - Propulsive
+  weaponcategory: Simple
+  weapongroup: Sling
+- bulk: '2'
+  damagetype: Piercing
+  descr: This projectile weapon is made from horn, wood, and sinew laminated together
+    to increase the power of its pull and the force of its projectile. Like all longbows,
+    its great size also increases the bow's range and power. You must use two hands
+    to fire it, and it cannot be used while mounted. Any time an ability is specifically
+    restricted to a longbow, such as Erastil's favored weapon, it also applies to
+    composite longbows unless otherwise stated.
+  dice_size: 8
+  hands: 1+
+  name: Composite Longbow
+  price_cp: 2000
+  range: 100
+  reload: '0'
+  source:
+  - abbr: CRB
+    page_start: 282
+    page_stop: 282
+  traits:
+  - Deadly
+  - Propulsive
+  - Volley
+  - Deadly d10
+  - Volley 30 ft.
+  weaponcategory: Martial
+  weapongroup: Bow
+- bulk: '1'
+  damagetype: Piercing
+  descr: This shortbow is made from horn, wood, and sinew laminated together to increase
+    the power of its pull and the force of its projectile. Its compact size and power
+    make it a favorite of mounted archers. Any time an ability is specifically restricted
+    to a shortbow, it also applies to composite shortbows unless otherwise stated.
+  dice_size: 6
+  hands: 1+
+  name: Composite Shortbow
+  price_cp: 1400
+  range: 60
+  reload: '0'
+  source:
+  - abbr: CRB
+    page_start: 282
+    page_stop: 282
+  traits:
+  - Deadly
+  - Propulsive
+  - Deadly d10
+  weaponcategory: Martial
+  weapongroup: Bow
+- bulk: '1'
+  damagetype: Bludgeoning
+  descr: This staff ends in a Y-shaped split that cradles a sling. The length of the
+    staff provides excellent leverage when used two‑handed to fling rocks or bullets
+    from the sling.
+  dice_size: 10
+  hands: '2'
+  name: Halfling Sling Staff
+  price_cp: 500
+  range: 80
+  reload: '1'
+  source:
+  - abbr: CRB
+    page_start: 282
+    page_stop: 282
+  traits:
+  - Uncommon
+  - Halfling
+  - Propulsive
+  weaponcategory: Martial
+  weapongroup: Sling
+- bulk: '2'
+  damagetype: Piercing
+  descr: This 5-foot-tall bow, usually made of a single piece of elm, hickory, or
+    yew, has a powerful draw and is excellent at propelling arrows with great force
+    and at an extreme distance. You must use two hands to fire a longbow, and it can't
+    be used while mounted.
+  dice_size: 8
+  hands: 1+
+  name: Longbow
+  price_cp: 600
+  range: 100
+  reload: '0'
+  source:
+  - abbr: CRB
+    page_start: 282
+    page_stop: 282
+  traits:
+  - Deadly
+  - Volley
+  - Deadly d10
+  - Volley 30 ft.
+  weaponcategory: Martial
+  weapongroup: Bow
+- bulk: '1'
+  damagetype: Piercing
+  descr: This smaller bow is made of a single piece of wood and favored by skirmishers
+    and cavalry.
+  dice_size: 6
+  hands: 1+
+  name: Shortbow
+  price_cp: 300
+  range: 60
+  reload: '0'
+  source:
+  - abbr: CRB
+    page_start: 282
+    page_stop: 282
+  traits:
+  - Deadly
+  - Deadly d10
+  weaponcategory: Martial
+  weapongroup: Bow
+- bulk: '-'
+  damagetype: Piercing
+  descr: This throwing star is a small piece of flat metal with sharp edges, designed
+    to be flung with a flick of the wrist.
+  dice_size: 4
+  hands: '1'
+  name: Shuriken
+  price_cp: 1
+  range: 20
+  reload: '0'
+  source:
+  - abbr: CRB
+    page_start: 282
+    page_stop: 282
+  traits:
+  - Uncommon
+  - Agile
+  - Monk
+  - Thrown
+  weaponcategory: Martial
+  weapongroup: Dart

From 33a70bd285218fa0c53fa0c4ee1ba8d3d26bbc44 Mon Sep 17 00:00:00 2001
From: James Miller <james.ryland.miller@gmail.com>
Date: Thu, 23 Apr 2020 17:24:40 -0500
Subject: [PATCH 7/7] depracated file

---
 data/yaml/{ => deprecated}/tmp-sql-to-weapons.py | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename data/yaml/{ => deprecated}/tmp-sql-to-weapons.py (100%)

diff --git a/data/yaml/tmp-sql-to-weapons.py b/data/yaml/deprecated/tmp-sql-to-weapons.py
similarity index 100%
rename from data/yaml/tmp-sql-to-weapons.py
rename to data/yaml/deprecated/tmp-sql-to-weapons.py