diff --git a/main.py b/main.py
index c9900a098b76a74ee174eef95c47363d4026efd0..7b48320a1f8eb3a71bd1d79e79c65d5f562adbfc 100644
--- a/main.py
+++ b/main.py
@@ -38,11 +38,15 @@ weapon_choices = [
     "OneHandAxes",
     "TwoHandAxes",
     "Daggers",
+    "OneHandSwords",
+    "OneHandThrustingSwords",
+    "TwoHandSwords",
     "Claws",
     "Bows",
     "Quivers",
     "Sceptres",
     "Wands",
+    "Staves",
     "Shields",
 ]
 
diff --git a/resources/data/hand/claws.json b/resources/data/hand/claws.json
index 7a9622e5c4d74e3517f57d229e60dcd8f9a57e5a..97ead1faea51edb024b214b59dcfd7f17a18ccd4 100644
--- a/resources/data/hand/claws.json
+++ b/resources/data/hand/claws.json
@@ -270,7 +270,7 @@
     {
         "Type": "Weapon",
         "Class": "Claw",
-        "Name": "Gemeni Claw",
+        "Name": "Gemini Claw",
         "Damage": [23, 68],
         "ImplicitType": "",
         "ImplicitValue": [],
diff --git a/resources/data/hand/one_hand_swords.json b/resources/data/hand/one_hand_swords.json
new file mode 100644
index 0000000000000000000000000000000000000000..8c3af337a266bfcfc94df4bd35ee8426a993cf2c
--- /dev/null
+++ b/resources/data/hand/one_hand_swords.json
@@ -0,0 +1,282 @@
+[
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Charan's Sword",
+        "Damage": [5, 11],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 1,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Rusted Sword",
+        "Damage": [4, 9],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 1,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Copper Sword",
+        "Damage": [6, 14],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 5,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Sabre",
+        "Damage": [5, 22],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 10,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Broad Sword",
+        "Damage": [15, 21],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 15,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "War Sword",
+        "Damage": [16, 30],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 20,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Ancient Sword",
+        "Damage": [18, 33],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 24,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Elegant Sword",
+        "Damage": [20, 33],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 28,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Dusk Blade",
+        "Damage": [19, 54],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 32,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Hook Sword",
+        "Damage": [28, 60],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 34,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Variscite Blade",
+        "Damage": [25, 53],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 35,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Cutlass",
+        "Damage": [13, 53],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 38,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Baselard",
+        "Damage": [37, 53],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 41,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Battle Sword",
+        "Damage": [38, 70],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 44,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Elder Sword",
+        "Damage": [36, 66],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 47,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Capricious Spiritblade",
+        "Damage": [27, 51],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 50,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Graceful Sword",
+        "Damage": [34, 55],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 50,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Twilight Blade",
+        "Damage": [30, 86],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 53,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Grappler",
+        "Damage": [44, 94],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 55,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Gemstone Sword",
+        "Damage": [39, 83],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 56,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Corsair Sword",
+        "Damage": [20, 80],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 58,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Gladius",
+        "Damage": [54, 78],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 60,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Legion Sword",
+        "Damage": [53, 98],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 62,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Vaal Blade",
+        "Damage": [46, 86],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 64,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Eternal Sword",
+        "Damage": [41, 68],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 66,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Midnight Blade",
+        "Damage": [35, 99],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 68,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Anarchic Spiritblade",
+        "Damage": [34, 63],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 70,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "One Hand Sword",
+        "Name": "Tiger Hook",
+        "Damage": [37, 80],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 70,
+        "MaxLevel": true
+    }
+]
diff --git a/resources/data/hand/one_hand_thrusting_swords.json b/resources/data/hand/one_hand_thrusting_swords.json
new file mode 100644
index 0000000000000000000000000000000000000000..1899dc8c808d8ecfb4d1528f6471d667cc6b40b5
--- /dev/null
+++ b/resources/data/hand/one_hand_thrusting_swords.json
@@ -0,0 +1,252 @@
+[
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Rusted Spike",
+        "Damage": [5, 11],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 1,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Whalebone Rapier",
+        "Damage": [4, 17],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 7,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Battered Foil",
+        "Damage": [11, 20],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 12,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Basket Rapier",
+        "Damage": [11, 25],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 17,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Jagged Foil",
+        "Damage": [12, 29],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 22,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Antique Rapier",
+        "Damage": [12, 46],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 26,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Elegant Foil",
+        "Damage": [18, 33],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 30,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Thorn Rapier",
+        "Damage": [19, 44],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 34,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Smallsword",
+        "Damage": [19, 40],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 36,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Wyrmbone Rapier",
+        "Damage": [13, 51],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 37,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Burnished Foil",
+        "Damage": [25, 46],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 40,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Estoc",
+        "Damage": [21, 50],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 43,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Serrated Foil",
+        "Damage": [21, 49],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 46,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Primeval Rapier",
+        "Damage": [18, 73],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 49,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Fancy Foil",
+        "Damage": [28, 51],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 52,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Apex Rapier",
+        "Damage": [29, 67],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 55,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Courtesan Sword",
+        "Damage": [29, 60],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 57,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Dragonbone Rapier",
+        "Damage": [19, 75],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 58,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Tempered Foil",
+        "Damage": [35, 65],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 60,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Pecoraro",
+        "Damage": [29, 69],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 62,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Spiraled Foil",
+        "Damage": [27, 64],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 64,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Vaal Rapier",
+        "Damage": [22, 87],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 66,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Jewelled Foil",
+        "Damage": [32, 60],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 68,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Harpy Rapier",
+        "Damage": [31, 72],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 70,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Thrusting One Hand Swords",
+        "Name": "Dragoon Sword",
+        "Damage": [32, 66],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 72,
+        "MaxLevel": true
+    }
+]
diff --git a/resources/data/hand/staves.json b/resources/data/hand/staves.json
new file mode 100644
index 0000000000000000000000000000000000000000..fed565c052a0c4721519e1fc995dbb93cf5c7e6c
--- /dev/null
+++ b/resources/data/hand/staves.json
@@ -0,0 +1,282 @@
+[
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Gnarled Branch",
+        "Damage": [9, 19],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 1,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Primitive Staff",
+        "Damage": [10, 31],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 9,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Long Staff",
+        "Damage": [24, 41],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 18,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Royal Staff",
+        "Damage": [27, 81],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 28,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Transformer Staff",
+        "Damage": [36, 66],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 30,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Crescent Staff",
+        "Damage": [41, 85],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 36,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Woodful Staff",
+        "Damage": [34, 102],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 37,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Quarterstaff",
+        "Damage": [51, 86],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 45,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Reciprocation Staff",
+        "Damage": [55, 102],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 50,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Highborn Staff",
+        "Damage": [48, 145],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 52,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Moon Staff",
+        "Damage": [66, 138],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 57,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Primordial Staff",
+        "Damage": [55, 165],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 58,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Lathi",
+        "Damage": [72, 120],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 62,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Imperial Staff",
+        "Damage": [57, 171],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 66,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Battery Staff",
+        "Damage": [65, 120],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 70,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Eclipse Staff",
+        "Damage": [70, 145],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 70,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Iron Staff",
+        "Damage": [14, 42],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 13,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Coiled Staff",
+        "Damage": [27, 57],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 23,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Capacity Rod",
+        "Damage": [39, 73],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 30,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Vile Staff",
+        "Damage": [41, 76],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 33,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Military Staff",
+        "Damage": [38, 114],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 41,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Serpentine Staff",
+        "Damage": [56, 117],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 49,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Potentiality Rod",
+        "Damage": [61, 113],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 50,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Foul Staff",
+        "Damage": [65, 121],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 55,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Ezomyte Staff",
+        "Damage": [53, 160],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 60,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Maelström Staff",
+        "Damage": [71, 147],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 64,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Judgement Staff",
+        "Damage": [73, 136],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 68,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Warstaves",
+        "Name": "Eventuality Rod",
+        "Damage": [78, 144],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 70,
+        "MaxLevel": true
+    }
+]
diff --git a/resources/data/hand/two_hand_swords.json b/resources/data/hand/two_hand_swords.json
new file mode 100644
index 0000000000000000000000000000000000000000..198bd8bc2fd44747fdd2a62e01a69e0c94267fa0
--- /dev/null
+++ b/resources/data/hand/two_hand_swords.json
@@ -0,0 +1,242 @@
+[
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Corroded Blade",
+        "Damage": [8, 16],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 1,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Longsword",
+        "Damage": [11, 26],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 8,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Bastard Sword",
+        "Damage": [17, 29],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 12,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Two-Handed Sword",
+        "Damage": [20, 38],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 17,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Etched Greatsword",
+        "Damage": [23, 48],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 22,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Ornate Sword",
+        "Damage": [30, 50],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 27,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Spectral Sword",
+        "Damage": [31, 65],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 32,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Curved Blade",
+        "Damage": [41, 68],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 35,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Butcher Sword",
+        "Damage": [34, 79],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 36,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Footman Sword",
+        "Damage": [39, 65],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 40,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Highland Blade",
+        "Damage": [45, 84],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 44,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Engraved Greatsword",
+        "Damage": [49, 102],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 48,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Blasting Blade",
+        "Damage": [47, 87],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 50,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Tiger Sword",
+        "Damage": [54, 89],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 51,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Wraith Sword",
+        "Damage": [52, 109],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 54,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Lithe Blade",
+        "Damage": [63, 104],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 56,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Headman's Sword",
+        "Damage": [55, 128],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 57,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Reaver Sword",
+        "Damage": [62, 104],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 59,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Ezomyte Blade",
+        "Damage": [62, 115],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 61,
+        "MaxLevel": false
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Vaal Greatsword",
+        "Damage": [68, 142],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 63,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Lion Sword",
+        "Damage": [69, 115],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 65,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Infernal Sword",
+        "Damage": [62, 129],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 67,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Banishing Blade",
+        "Damage": [55, 102],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 70,
+        "MaxLevel": true
+    },
+    {
+        "Type": "Weapon",
+        "Class": "Two Hand Sword",
+        "Name": "Exquisite Blade",
+        "Damage": [67, 112],
+        "ImplicitType": "",
+        "ImplicitValue": [],
+        "DropLevel": 70,
+        "MaxLevel": true
+    }
+]
diff --git a/resources/parsers/other.py b/resources/parsers/other.py
index 2b1ab28dc4c2b6b3d6d88c574c5d8388acec504d..db07a3223b3dc33cb6d80048f8c4b5fc52af2a2d 100644
--- a/resources/parsers/other.py
+++ b/resources/parsers/other.py
@@ -487,7 +487,6 @@ class FinalParser:
                 "Ring",
                 "Belt",
                 "Amulet",
-                "Talisman",
             ],
         )
 
diff --git a/resources/parsers/table_of_contents.py b/resources/parsers/table_of_contents.py
index 71b6648c552811f2ada364aae6f377de3264d412..1c110263060050305a2929a01fdf566c59b900d6 100644
--- a/resources/parsers/table_of_contents.py
+++ b/resources/parsers/table_of_contents.py
@@ -163,6 +163,33 @@ class TableOfContentsGenerator:
                 )
             )
 
+        if "OneHandSwords" in self.weapon_types:
+            parse_subnum += 1
+            self.filter_file.write(
+                "# [{0}.{1}] - One Handed Swords\n".format(
+                    str(parse_num).zfill(3),
+                    str(parse_subnum).zfill(2),
+                )
+            )
+
+        if "OneHandThrustingSwords" in self.weapon_types:
+            parse_subnum += 1
+            self.filter_file.write(
+                "# [{0}.{1}] - One Handed Thrusting Swords\n".format(
+                    str(parse_num).zfill(3),
+                    str(parse_subnum).zfill(2),
+                )
+            )
+
+        if "TwoHandSwords" in self.weapon_types:
+            parse_subnum += 1
+            self.filter_file.write(
+                "# [{0}.{1}] - Two Handed Swords\n".format(
+                    str(parse_num).zfill(3),
+                    str(parse_subnum).zfill(2),
+                )
+            )
+
         if "Claws" in self.weapon_types:
             parse_subnum += 1
             self.filter_file.write(
@@ -190,6 +217,15 @@ class TableOfContentsGenerator:
                 ),
             )
 
+        if "Septres" in self.weapon_types:
+            parse_subnum += 1
+            self.filter_file.write(
+                "# [{0}.{1}] - Septres\n".format(
+                    str(parse_num).zfill(3),
+                    str(parse_subnum).zfill(2),
+                ),
+            )
+
         if "Wands" in self.weapon_types:
             parse_subnum += 1
             self.filter_file.write(
@@ -199,6 +235,15 @@ class TableOfContentsGenerator:
                 ),
             )
 
+        if "Staves" in self.weapon_types:
+            parse_subnum += 1
+            self.filter_file.write(
+                "# [{0}.{1}] - Staves\n".format(
+                    str(parse_num).zfill(3),
+                    str(parse_subnum).zfill(2),
+                ),
+            )
+
         if "Shields" in self.weapon_types:
             parse_subnum += 1
             self.filter_file.write(
diff --git a/resources/parsers/weapons.py b/resources/parsers/weapons.py
index 5279924b2cf6d35c6f70cb0a730004170024e6bf..c23cfc44feb986647890ad1c9a064adda5f96e3c 100644
--- a/resources/parsers/weapons.py
+++ b/resources/parsers/weapons.py
@@ -59,6 +59,15 @@ class WeaponParser:
         if "Daggers" in self.weapon_types:
             self.parse_daggers()
 
+        if "OneHandSwords" in self.weapon_types:
+            self.parse_one_hand_swords()
+
+        if "OneHandThrustingSwords" in self.weapon_types:
+            self.parse_one_hand_thrusting_swords()
+
+        if "TwoHandSwords" in self.weapon_types:
+            self.parse_two_hand_swords()
+
         if "Claws" in self.weapon_types:
             self.parse_claws()
 
@@ -74,6 +83,9 @@ class WeaponParser:
         if "Wands" in self.weapon_types:
             self.parse_wands()
 
+        if "Staves" in self.weapon_types:
+            self.parse_staves()
+
         if "Shields" in self.weapon_types:
             self.parse_shields()
 
@@ -348,6 +360,86 @@ class WeaponParser:
                 # Parse item.
                 self.parse_item(item, display_dict["Ev/En"])
 
+    def parse_one_hand_swords(self):
+        """
+        Parses all "OneHandSword" type weapons.
+        """
+        if self.debug:
+            logger.info("Parsing one handed swords.")
+
+        self.parse_subnum += 1
+
+        # Section Start.
+        self.filter_file.write("\n")
+        self.filter_file.write("# ----------------------------------- #\n")
+        self.filter_file.write(
+            "# --- [{0}.{1}] - One Handed Swords --- #\n".format(self.parse_num, str(self.parse_subnum).zfill(2))
+        )
+        self.filter_file.write("# ----------------------------------- #\n")
+        self.filter_file.write("\n")
+
+        # Parse wands.
+        with open("resources/data/hand/one_hand_swords.json", "r") as json_file:
+            # Loop through all items in json.
+            json_data = json.load(json_file)
+            for item in json_data:
+                # Parse item.
+                self.parse_item(item, display_dict["A/Ev"])
+
+    def parse_one_hand_thrusting_swords(self):
+        """
+        Parses all "OneHandSword" type weapons.
+        """
+        if self.debug:
+            logger.info("Parsing one handed thrusting swords.")
+
+        self.parse_subnum += 1
+
+        # Section Start.
+        self.filter_file.write("\n")
+        self.filter_file.write("# ----------------------------------- #\n")
+        self.filter_file.write(
+            "# --- [{0}.{1}] - One Handed Thrusting Swords --- #\n".format(
+                self.parse_num, str(self.parse_subnum).zfill(2)
+            )
+        )
+        self.filter_file.write("# ----------------------------------- #\n")
+        self.filter_file.write("\n")
+
+        # Parse wands.
+        with open("resources/data/hand/one_hand_thrusting_swords.json", "r") as json_file:
+            # Loop through all items in json.
+            json_data = json.load(json_file)
+            for item in json_data:
+                # Parse item.
+                self.parse_item(item, display_dict["Ev"])
+
+    def parse_two_hand_swords(self):
+        """
+        Parses all "TwoHandSword" type weapons.
+        """
+        if self.debug:
+            logger.info("Parsing two handed swords.")
+
+        self.parse_subnum += 1
+
+        # Section Start.
+        self.filter_file.write("\n")
+        self.filter_file.write("# ----------------------------------- #\n")
+        self.filter_file.write(
+            "# --- [{0}.{1}] - Two Handed Swords --- #\n".format(self.parse_num, str(self.parse_subnum).zfill(2))
+        )
+        self.filter_file.write("# ----------------------------------- #\n")
+        self.filter_file.write("\n")
+
+        # Parse wands.
+        with open("resources/data/hand/two_hand_swords.json", "r") as json_file:
+            # Loop through all items in json.
+            json_data = json.load(json_file)
+            for item in json_data:
+                # Parse item.
+                self.parse_item(item, display_dict["A/Ev"])
+
     def parse_claws(self):
         """
         Parses all "Claw" type weapons.
@@ -476,6 +568,32 @@ class WeaponParser:
                 # Parse item.
                 self.parse_item(item, display_dict["En"])
 
+    def parse_staves(self):
+        """
+        Parses all "Staff" type weapons.
+        """
+        if self.debug:
+            logger.info("Parsing staves.")
+
+        self.parse_subnum += 1
+
+        # Section Start.
+        self.filter_file.write("\n")
+        self.filter_file.write("# ------------------------ #\n")
+        self.filter_file.write(
+            "# --- [{0}.{1}] - Staves --- #\n".format(self.parse_num, str(self.parse_subnum).zfill(2))
+        )
+        self.filter_file.write("# ------------------------ #\n")
+        self.filter_file.write("\n")
+
+        # Parse wands.
+        with open("resources/data/hand/staves.json", "r") as json_file:
+            # Loop through all items in json.
+            json_data = json.load(json_file)
+            for item in json_data:
+                # Parse item.
+                self.parse_item(item, display_dict["En/A"])
+
     def parse_shields(self):
         """
         Parses all "Shield" type items, based on selected defenses.