diff --git a/.gitignore b/.gitignore
index 1377554..dbe5203 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
*.swp
+sets/
diff --git a/compress.py b/compress.py
index 18c4602..fa9e7a0 100644
--- a/compress.py
+++ b/compress.py
@@ -6,6 +6,11 @@ with open("dump.json", "r") as infile:
items = data["items"]
del data["request"]
+import os
+for filename in os.listdir('sets'):
+ print(filename)
+exit(0)
+
translate_mappings = {
#"name": "name",
#"displayName": "displayName",
diff --git a/compress_json.py b/compress_json.py
new file mode 100644
index 0000000..c5eeef9
--- /dev/null
+++ b/compress_json.py
@@ -0,0 +1,5 @@
+import sys
+import json
+infile = sys.argv[1]
+outfile = sys.argv[2]
+json.dump(json.load(open(infile)), open(outfile, "w"))
diff --git a/index.html b/index.html
index 31b90f1..24c26af 100644
--- a/index.html
+++ b/index.html
@@ -15,7 +15,7 @@
Wynn build calculator
diff --git a/load.js b/load.js
index 8d50d1c..aac55fa 100644
--- a/load.js
+++ b/load.js
@@ -4,6 +4,7 @@ const DB_VERSION = 5;
let db;
let reload = false;
let items;
+let sets;
/*
* Load item set from local DB. Calls init() on success.
@@ -43,6 +44,7 @@ async function load(init_func) {
let url = "https://hppeng-wynn.github.io/compress.json";
let result = await (await fetch(url)).json();
items = result.items;
+ sets = result.sets;
// https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/clear
let clear_tx = db.transaction('item_db', 'readwrite');
diff --git a/sets/_Adventurer%27s.json b/sets/_Adventurer%27s.json
new file mode 100644
index 0000000..f50d86c
--- /dev/null
+++ b/sets/_Adventurer%27s.json
@@ -0,0 +1,39 @@
+{
+ "items": [
+ "Adventurer's Cap",
+ "Adventurer's Boots",
+ "Adventurer's Pants",
+ "Adventurer's Tunic"
+ ],
+ "bonuses": [
+ {},
+ {
+ "sdPct": 4,
+ "mdPct": 4,
+ "xpb": 10,
+ "lb": 5,
+ "spd": 2,
+ "hpBonus": 15,
+ "spRegen": 5
+ },
+ {
+ "sdPct": 12,
+ "mdPct": 12,
+ "xpb": 20,
+ "lb": 10,
+ "spd": 5,
+ "hpBonus": 40,
+ "spRegen": 15
+ },
+ {
+ "mr": 2,
+ "sdPct": 25,
+ "mdPct": 25,
+ "xpb": 50,
+ "lb": 30,
+ "spd": 15,
+ "hpBonus": 175,
+ "spRegen": 50
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Air+Relic.json b/sets/_Air+Relic.json
new file mode 100644
index 0000000..77e7e65
--- /dev/null
+++ b/sets/_Air+Relic.json
@@ -0,0 +1,30 @@
+{
+ "items": [
+ "Air Relic Helmet",
+ "Air Relic Boots",
+ "Air Relic Leggings",
+ "Air Relic Chestplate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 5,
+ "lb": 10,
+ "spd": 10,
+ "hpBonus": 60
+ },
+ {
+ "xpb": 10,
+ "lb": 25,
+ "spd": 20,
+ "hpBonus": 190
+ },
+ {
+ "xpb": 25,
+ "lb": 50,
+ "agi": 20,
+ "spd": 60,
+ "hpBonus": 400
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Bandit%27s.json b/sets/_Bandit%27s.json
new file mode 100644
index 0000000..3632ce1
--- /dev/null
+++ b/sets/_Bandit%27s.json
@@ -0,0 +1,26 @@
+{
+ "items": [
+ "Bandit's Locket",
+ "Bandit's Bangle",
+ "Bandit's Knuckle",
+ "Bandit's Ring"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 3,
+ "lb": 4,
+ "eSteal": 1
+ },
+ {
+ "xpb": 7,
+ "lb": 9,
+ "eSteal": 3
+ },
+ {
+ "xpb": 12,
+ "lb": 15,
+ "eSteal": 6
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Beachside.json b/sets/_Beachside.json
new file mode 100644
index 0000000..a54b31e
--- /dev/null
+++ b/sets/_Beachside.json
@@ -0,0 +1,14 @@
+{
+ "items": [
+ "Beachside Headwrap",
+ "Beachside Conch"
+ ],
+ "bonuses": [
+ {},
+ {
+ "lb": 20,
+ "wDamPct": 35,
+ "wDefPct": 25
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Bear.json b/sets/_Bear.json
new file mode 100644
index 0000000..ee929ed
--- /dev/null
+++ b/sets/_Bear.json
@@ -0,0 +1,15 @@
+{
+ "items": [
+ "Bear Mask",
+ "Bear Head",
+ "Bear Body"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mdPct": 14,
+ "hpBonus": 30,
+ "mdRaw": 20
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Black+Catalyst.json b/sets/_Black+Catalyst.json
new file mode 100644
index 0000000..2495417
--- /dev/null
+++ b/sets/_Black+Catalyst.json
@@ -0,0 +1,19 @@
+{
+ "items": [
+ "Black Catalyst"
+ ],
+ "bonuses": [
+ {
+ "xpb": -5
+ },
+ {
+ "mr": 1,
+ "sdPct": 10,
+ "xpb": 30,
+ "expd": 10,
+ "hpBonus": 325,
+ "spRegen": 10,
+ "sdRaw": 90
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Black.json b/sets/_Black.json
new file mode 100644
index 0000000..0229629
--- /dev/null
+++ b/sets/_Black.json
@@ -0,0 +1,29 @@
+{
+ "items": [
+ "Black Cap",
+ "Black Boots",
+ "Black Pants",
+ "Black Tunic"
+ ],
+ "bonuses": [
+ {},
+ {
+ "ms": 1,
+ "dex": 2,
+ "sdRaw": 15,
+ "mdRaw": 5
+ },
+ {
+ "ms": 1,
+ "dex": 6,
+ "sdRaw": 35,
+ "mdRaw": 10
+ },
+ {
+ "ms": 3,
+ "dex": 20,
+ "sdRaw": 65,
+ "mdRaw": 70
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Blue+Team.json b/sets/_Blue+Team.json
new file mode 100644
index 0000000..8afc872
--- /dev/null
+++ b/sets/_Blue+Team.json
@@ -0,0 +1,14 @@
+{
+ "items": [
+ "Blue Team Boots",
+ "Blue Team Leggings",
+ "Blue Team Chestplate",
+ "Blue Team Helmet"
+ ],
+ "bonuses": [
+ {},
+ {},
+ {},
+ {}
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Bony.json b/sets/_Bony.json
new file mode 100644
index 0000000..faa887b
--- /dev/null
+++ b/sets/_Bony.json
@@ -0,0 +1,14 @@
+{
+ "items": [
+ "Bony Circlet",
+ "Bony Bow"
+ ],
+ "bonuses": [
+ {},
+ {
+ "agi": 8,
+ "mdRaw": 45,
+ "aDamPct": 15
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Builder%27s.json b/sets/_Builder%27s.json
new file mode 100644
index 0000000..c5ca2cc
--- /dev/null
+++ b/sets/_Builder%27s.json
@@ -0,0 +1,20 @@
+{
+ "items": [
+ "Builder's Helmet",
+ "Builder's Boots",
+ "Builder's Trousers",
+ "Builder's Breastplate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 5
+ },
+ {
+ "xpb": 10
+ },
+ {
+ "xpb": 15
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Champion.json b/sets/_Champion.json
new file mode 100644
index 0000000..ab4161f
--- /dev/null
+++ b/sets/_Champion.json
@@ -0,0 +1,21 @@
+{
+ "items": [
+ "Champion Helmet",
+ "Champion Boots",
+ "Champion Leggings",
+ "Champion Chestplate"
+ ],
+ "bonuses": [
+ {},
+ {},
+ {},
+ {
+ "mr": 5,
+ "sdPct": 75,
+ "mdPct": 75,
+ "ms": 5,
+ "ls": 400,
+ "hprRaw": 600
+ }
+ ]
+}
diff --git a/sets/_Clock.json b/sets/_Clock.json
new file mode 100644
index 0000000..1d1f5a4
--- /dev/null
+++ b/sets/_Clock.json
@@ -0,0 +1,58 @@
+{
+ "items": [
+ "Clock Helm",
+ "Clock Amulet",
+ "Watch Bracelet",
+ "Clockwork Ring",
+ "Time Ring",
+ "Clock Boots",
+ "Clock Leggings",
+ "Clock Mail"
+ ],
+ "bonuses": [
+ {},
+ {
+ "fDamPct": 15,
+ "wDamPct": 6,
+ "aDamPct": 5,
+ "tDamPct": 18,
+ "eDamPct": 8
+ },
+ {
+ "fDamPct": 14,
+ "wDamPct": 12,
+ "aDamPct": 13
+ },
+ {
+ "fDamPct": 13,
+ "wDamPct": 18,
+ "aDamPct": 20,
+ "tDamPct": 18,
+ "eDamPct": 14
+ },
+ {
+ "fDamPct": 12,
+ "wDamPct": 24,
+ "aDamPct": 28
+ },
+ {
+ "fDamPct": 11,
+ "wDamPct": 24,
+ "aDamPct": 24,
+ "tDamPct": 18,
+ "eDamPct": 22
+ },
+ {
+ "fDamPct": 10,
+ "wDamPct": 24,
+ "aDamPct": 19
+ },
+ {
+ "fDamPct": 9,
+ "wDamPct": 24,
+ "aDamPct": 14,
+ "tDamPct": 18,
+ "eDamPct": 34
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Corrupted+Nii.json b/sets/_Corrupted+Nii.json
new file mode 100644
index 0000000..359d0cd
--- /dev/null
+++ b/sets/_Corrupted+Nii.json
@@ -0,0 +1,24 @@
+{
+ "items": [
+ "Corrupted Nii Mukluk",
+ "Corrupted Nii Plate",
+ "Corrupted Nii Shako"
+ ],
+ "bonuses": [
+ {},
+ {
+ "int": 3,
+ "def": 3,
+ "hprRaw": 60
+ },
+ {
+ "mr": 4,
+ "int": 15,
+ "def": 15,
+ "hpBonus": 1500,
+ "hprRaw": 270,
+ "fDefPct": 60,
+ "wDefPct": 60
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Corrupted+Uth.json b/sets/_Corrupted+Uth.json
new file mode 100644
index 0000000..9430139
--- /dev/null
+++ b/sets/_Corrupted+Uth.json
@@ -0,0 +1,24 @@
+{
+ "items": [
+ "Corrupted Uth Sandals",
+ "Corrupted Uth Belt",
+ "Corrupted Uth Plume"
+ ],
+ "bonuses": [
+ {},
+ {
+ "ls": 125,
+ "agi": 3,
+ "def": 3
+ },
+ {
+ "ls": 375,
+ "ref": 70,
+ "agi": 15,
+ "def": 15,
+ "thorns": 70,
+ "fDefPct": 75,
+ "aDefPct": 75
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Cosmic.json b/sets/_Cosmic.json
new file mode 100644
index 0000000..3e6e0c7
--- /dev/null
+++ b/sets/_Cosmic.json
@@ -0,0 +1,44 @@
+{
+ "items": [
+ "Cosmic Visor",
+ "Cosmic Walkers",
+ "Cosmic Ward",
+ "Cosmic Vest"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 15,
+ "lb": 15,
+ "ref": 5,
+ "spRegen": 15,
+ "fDefPct": 10,
+ "wDefPct": 10,
+ "aDefPct": 10,
+ "tDefPct": 10,
+ "eDefPct": 10
+ },
+ {
+ "xpb": 35,
+ "lb": 35,
+ "ref": 15,
+ "spRegen": 35,
+ "fDefPct": 20,
+ "wDefPct": 20,
+ "aDefPct": 20,
+ "tDefPct": 20,
+ "eDefPct": 20
+ },
+ {
+ "xpb": 50,
+ "lb": 50,
+ "ref": 30,
+ "spRegen": 50,
+ "fDefPct": 30,
+ "wDefPct": 30,
+ "aDefPct": 30,
+ "tDefPct": 30,
+ "eDefPct": 30
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Earth+Relic.json b/sets/_Earth+Relic.json
new file mode 100644
index 0000000..1a29526
--- /dev/null
+++ b/sets/_Earth+Relic.json
@@ -0,0 +1,30 @@
+{
+ "items": [
+ "Earth Relic Helmet",
+ "Earth Relic Boots",
+ "Earth Relic Leggings",
+ "Earth Relic Chestplate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mdPct": 10,
+ "xpb": 5,
+ "lb": 10,
+ "hpBonus": 65
+ },
+ {
+ "mdPct": 20,
+ "xpb": 10,
+ "lb": 25,
+ "hpBonus": 200
+ },
+ {
+ "mdPct": 45,
+ "xpb": 25,
+ "lb": 50,
+ "str": 20,
+ "hpBonus": 425
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Elf.json b/sets/_Elf.json
new file mode 100644
index 0000000..2d82b67
--- /dev/null
+++ b/sets/_Elf.json
@@ -0,0 +1,33 @@
+{
+ "items": [
+ "Elf Cap",
+ "Elf Shoes",
+ "Elf Pants",
+ "Elf Robe"
+ ],
+ "bonuses": [
+ {},
+ {
+ "hprPct": 10,
+ "lb": 8,
+ "agi": 5,
+ "def": 5,
+ "spd": 6
+ },
+ {
+ "hprPct": 20,
+ "lb": 16,
+ "agi": 7,
+ "def": 7,
+ "spd": 14
+ },
+ {
+ "hprPct": 45,
+ "lb": 32,
+ "agi": 10,
+ "def": 10,
+ "spd": 20,
+ "hprRaw": 45
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Fire+Relic.json b/sets/_Fire+Relic.json
new file mode 100644
index 0000000..bd38ca6
--- /dev/null
+++ b/sets/_Fire+Relic.json
@@ -0,0 +1,30 @@
+{
+ "items": [
+ "Fire Relic Helmet",
+ "Fire Relic Boots",
+ "Fire Relic Leggings",
+ "Fire Relic Chestplate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 5,
+ "lb": 10,
+ "hpBonus": 90,
+ "hprRaw": 12
+ },
+ {
+ "xpb": 10,
+ "lb": 25,
+ "hpBonus": 270,
+ "hprRaw": 40
+ },
+ {
+ "xpb": 25,
+ "lb": 50,
+ "def": 20,
+ "hpBonus": 570,
+ "hprRaw": 100
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Flashfire.json b/sets/_Flashfire.json
new file mode 100644
index 0000000..1b5732d
--- /dev/null
+++ b/sets/_Flashfire.json
@@ -0,0 +1,22 @@
+{
+ "items": [
+ "Flashfire Gauntlet",
+ "Flashfire Knuckle"
+ ],
+ "bonuses": [
+ {},
+ {
+ "spd": 8,
+ "atkTier": 1,
+ "wDamPct": -15,
+ "wDefPct": -15
+ },
+ {
+ "spd": 16,
+ "atkTier": 1,
+ "fDamPct": 12,
+ "wDamPct": -15,
+ "wDefPct": -15
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_GM%27s.json b/sets/_GM%27s.json
new file mode 100644
index 0000000..dd60ee3
--- /dev/null
+++ b/sets/_GM%27s.json
@@ -0,0 +1,20 @@
+{
+ "items": [
+ "GM's Helmet",
+ "GM's Boots",
+ "GM's Trousers",
+ "GM's Breastplate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 5
+ },
+ {
+ "xpb": 10
+ },
+ {
+ "xpb": 15
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Ghostly.json b/sets/_Ghostly.json
new file mode 100644
index 0000000..7f59dfb
--- /dev/null
+++ b/sets/_Ghostly.json
@@ -0,0 +1,35 @@
+{
+ "items": [
+ "Ghostly Cap",
+ "Ghostly Boots",
+ "Ghostly Pants",
+ "Ghostly Tunic"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mr": -1,
+ "ms": 2,
+ "sdRaw": 35,
+ "wDamPct": 5,
+ "tDamPct": 5,
+ "eDamPct": -34
+ },
+ {
+ "mr": -2,
+ "ms": 4,
+ "sdRaw": 100,
+ "wDamPct": 10,
+ "tDamPct": 10,
+ "eDamPct": -67
+ },
+ {
+ "mr": -3,
+ "ms": 6,
+ "sdRaw": 195,
+ "wDamPct": 25,
+ "tDamPct": 25,
+ "eDamPct": -100
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Goblin.json b/sets/_Goblin.json
new file mode 100644
index 0000000..7217dbd
--- /dev/null
+++ b/sets/_Goblin.json
@@ -0,0 +1,30 @@
+{
+ "items": [
+ "Goblin Hood",
+ "Goblin Runners",
+ "Goblin Cloak"
+ ],
+ "bonuses": [
+ {
+ "sdPct": -6,
+ "mdPct": -6,
+ "sdRaw": 15,
+ "mdRaw": 10
+ },
+ {
+ "sdPct": -12,
+ "mdPct": -12,
+ "ls": 22,
+ "sdRaw": 55,
+ "mdRaw": 45
+ },
+ {
+ "sdPct": -23,
+ "mdPct": -23,
+ "ls": 51,
+ "ms": 2,
+ "sdRaw": 130,
+ "mdRaw": 105
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Hallowynn+2016.json b/sets/_Hallowynn+2016.json
new file mode 100644
index 0000000..bc95522
--- /dev/null
+++ b/sets/_Hallowynn+2016.json
@@ -0,0 +1,14 @@
+{
+ "items": [
+ "Treat",
+ "Trick"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 15,
+ "spRegen": 10,
+ "eSteal": 5
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Horse.json b/sets/_Horse.json
new file mode 100644
index 0000000..6cf44a5
--- /dev/null
+++ b/sets/_Horse.json
@@ -0,0 +1,16 @@
+{
+ "items": [
+ "Horse Mask",
+ "Horse Hoof"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mdPct": 11,
+ "xpb": 10,
+ "spd": 20,
+ "aDamPct": 15,
+ "eDamPct": 15
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Jester.json b/sets/_Jester.json
new file mode 100644
index 0000000..bdcb2e8
--- /dev/null
+++ b/sets/_Jester.json
@@ -0,0 +1,37 @@
+{
+ "items": [
+ "Jester Necklace",
+ "Jester Bracelet",
+ "Jester Ring"
+ ],
+ "bonuses": [
+ {
+ "xpb": -25,
+ "lb": -25
+ },
+ {
+ "xpb": -50,
+ "lb": -50,
+ "spd": -10,
+ "hpBonus": 300,
+ "sdRaw": -110,
+ "mdRaw": 60
+ },
+ {
+ "xpb": -75,
+ "lb": -75,
+ "spd": 5,
+ "hpBonus": -150,
+ "sdRaw": 100,
+ "mdRaw": -75
+ },
+ {
+ "xpb": -100,
+ "lb": -100,
+ "spd": 5,
+ "hpBonus": -150,
+ "sdRaw": 100,
+ "mdRaw": -75
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Kaerynn%27s.json b/sets/_Kaerynn%27s.json
new file mode 100644
index 0000000..d186b83
--- /dev/null
+++ b/sets/_Kaerynn%27s.json
@@ -0,0 +1,17 @@
+{
+ "items": [
+ "Kaerynn's Mind",
+ "Kaerynn's Body"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mr": 2,
+ "xpb": 12,
+ "str": 4,
+ "hpBonus": 400,
+ "sdRaw": 100,
+ "mdRaw": 50
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Leaf.json b/sets/_Leaf.json
new file mode 100644
index 0000000..8343c5c
--- /dev/null
+++ b/sets/_Leaf.json
@@ -0,0 +1,29 @@
+{
+ "items": [
+ "Leaf Cap",
+ "Leaf Boots",
+ "Leaf Pants",
+ "Leaf Tunic"
+ ],
+ "bonuses": [
+ {},
+ {
+ "hprPct": 5,
+ "thorns": 7,
+ "hpBonus": 10,
+ "hprRaw": 1
+ },
+ {
+ "hprPct": 12,
+ "thorns": 18,
+ "hpBonus": 20,
+ "hprRaw": 3
+ },
+ {
+ "hprPct": 25,
+ "thorns": 35,
+ "hpBonus": 60,
+ "hprRaw": 7
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Morph.json b/sets/_Morph.json
new file mode 100644
index 0000000..fcace6d
--- /dev/null
+++ b/sets/_Morph.json
@@ -0,0 +1,73 @@
+{
+ "items": [
+ "Morph-Stardust",
+ "Morph-Ruby",
+ "Morph-Amethyst",
+ "Morph-Emerald",
+ "Morph-Topaz",
+ "Morph-Gold",
+ "Morph-Iron",
+ "Morph-Steel"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 5,
+ "lb": 5
+ },
+ {
+ "mr": 1,
+ "xpb": 10,
+ "lb": 10,
+ "spRaw2": -1,
+ "hpBonus": 125
+ },
+ {
+ "mr": 1,
+ "xpb": 15,
+ "lb": 15,
+ "spRaw2": -1,
+ "hpBonus": 425
+ },
+ {
+ "mr": 2,
+ "xpb": 35,
+ "lb": 35,
+ "hpBonus": 1325,
+ "spRaw2": -1,
+ "spRaw4": -1
+ },
+ {
+ "mr": 2,
+ "xpb": 55,
+ "lb": 55,
+ "hpBonus": 2575,
+ "spRaw2": -1,
+ "spRaw4": -1
+ },
+ {
+ "mr": 3,
+ "xpb": 80,
+ "lb": 80,
+ "hpBonus": 4450,
+ "spRaw1": -1,
+ "spRaw2": -1,
+ "spRaw4": -1
+ },
+ {
+ "mr": 4,
+ "xpb": 100,
+ "lb": 100,
+ "str": 21,
+ "dex": 21,
+ "int": 21,
+ "agi": 21,
+ "def": 21,
+ "hpBonus": 6800,
+ "spRaw1": -1,
+ "spRaw2": -1,
+ "spRaw3": -1,
+ "spRaw4": -1
+ }
+ ]
+}
diff --git a/sets/_Nether.json b/sets/_Nether.json
new file mode 100644
index 0000000..fa32664
--- /dev/null
+++ b/sets/_Nether.json
@@ -0,0 +1,33 @@
+{
+ "items": [
+ "Nether Cap",
+ "Nether Boots",
+ "Nether Pants",
+ "Nether Tunic"
+ ],
+ "bonuses": [
+ {},
+ {
+ "ls": 5,
+ "expd": 2,
+ "hprRaw": -1,
+ "fDamPct": 2,
+ "wDamPct": -10
+ },
+ {
+ "ls": 15,
+ "expd": 10,
+ "hprRaw": -2,
+ "fDamPct": 8,
+ "wDamPct": -25
+ },
+ {
+ "ls": 50,
+ "def": 15,
+ "expd": 60,
+ "hprRaw": -20,
+ "fDamPct": 42,
+ "wDamPct": -45
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Outlaw.json b/sets/_Outlaw.json
new file mode 100644
index 0000000..c6d49e0
--- /dev/null
+++ b/sets/_Outlaw.json
@@ -0,0 +1,29 @@
+{
+ "items": [
+ "Outlaw Cap",
+ "Outlaw Boots",
+ "Outlaw Pants",
+ "Outlaw Tunic"
+ ],
+ "bonuses": [
+ {},
+ {
+ "ls": 11,
+ "xpb": 5,
+ "agi": 4,
+ "eSteal": 2
+ },
+ {
+ "ls": 22,
+ "xpb": 10,
+ "agi": 8,
+ "eSteal": 4
+ },
+ {
+ "ls": 45,
+ "xpb": 25,
+ "agi": 28,
+ "eSteal": 8
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Pigman.json b/sets/_Pigman.json
new file mode 100644
index 0000000..670b4b1
--- /dev/null
+++ b/sets/_Pigman.json
@@ -0,0 +1,13 @@
+{
+ "items": [
+ "Pigman Helmet",
+ "Pigman Battle Hammer"
+ ],
+ "bonuses": [
+ {},
+ {
+ "str": 20,
+ "eDamPct": 40
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Red+Team.json b/sets/_Red+Team.json
new file mode 100644
index 0000000..c2a3602
--- /dev/null
+++ b/sets/_Red+Team.json
@@ -0,0 +1,14 @@
+{
+ "items": [
+ "Red Team Boots",
+ "Red Team Leggings",
+ "Red Team Chestplate",
+ "Red Team Helmet"
+ ],
+ "bonuses": [
+ {},
+ {},
+ {},
+ {}
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Relic.json b/sets/_Relic.json
new file mode 100644
index 0000000..0c371cd
--- /dev/null
+++ b/sets/_Relic.json
@@ -0,0 +1,46 @@
+{
+ "items": [
+ "Relic Helmet",
+ "Relic Boots",
+ "Relic Leggings",
+ "Relic Chestplate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 10,
+ "lb": 10,
+ "hpBonus": 65,
+ "fDamPct": 5,
+ "wDamPct": 5,
+ "aDamPct": 5,
+ "tDamPct": 5,
+ "eDamPct": 5
+ },
+ {
+ "xpb": 25,
+ "lb": 25,
+ "hpBonus": 200,
+ "fDamPct": 12,
+ "wDamPct": 12,
+ "aDamPct": 12,
+ "tDamPct": 12,
+ "eDamPct": 12
+ },
+ {
+ "xpb": 50,
+ "lb": 50,
+ "str": 8,
+ "dex": 8,
+ "int": 8,
+ "agi": 8,
+ "def": 8,
+ "hpBonus": 425,
+ "fDamPct": 25,
+ "wDamPct": 25,
+ "aDamPct": 25,
+ "tDamPct": 25,
+ "eDamPct": 25
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Saint%27s.json b/sets/_Saint%27s.json
new file mode 100644
index 0000000..99f5173
--- /dev/null
+++ b/sets/_Saint%27s.json
@@ -0,0 +1,38 @@
+{
+ "items": [
+ "Saint's Shawl",
+ "Saint's Sandals",
+ "Saint's Leggings",
+ "Saint's Tunic"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mr": 1,
+ "sdPct": -5,
+ "mdPct": -10,
+ "def": 5,
+ "spRegen": 5,
+ "wDamPct": 10,
+ "aDamPct": 10
+ },
+ {
+ "mr": 3,
+ "sdPct": -10,
+ "mdPct": -20,
+ "def": 10,
+ "spRegen": 10,
+ "wDamPct": 20,
+ "aDamPct": 20
+ },
+ {
+ "mr": 5,
+ "sdPct": -15,
+ "mdPct": -35,
+ "def": 30,
+ "spRegen": 100,
+ "wDamPct": 35,
+ "aDamPct": 35
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Silverfish.json b/sets/_Silverfish.json
new file mode 100644
index 0000000..fa7d63a
--- /dev/null
+++ b/sets/_Silverfish.json
@@ -0,0 +1,17 @@
+{
+ "items": [
+ "Silverfish Helm",
+ "Silverfish Boots"
+ ],
+ "bonuses": [
+ {
+ "spd": 5
+ },
+ {
+ "agi": 10,
+ "thorns": 20,
+ "spd": 20,
+ "poison": 290
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Skien%27s.json b/sets/_Skien%27s.json
new file mode 100644
index 0000000..3eed0fb
--- /dev/null
+++ b/sets/_Skien%27s.json
@@ -0,0 +1,24 @@
+{
+ "items": [
+ "Skien Boots",
+ "Skien Leggings",
+ "Skien's Fatigues"
+ ],
+ "bonuses": [
+ {},
+ {
+ "sdPct": -10,
+ "mdPct": 12,
+ "sdRaw": -40,
+ "mdRaw": 30
+ },
+ {
+ "sdPct": -35,
+ "mdPct": 30,
+ "dex": 15,
+ "spd": 8,
+ "sdRaw": -90,
+ "mdRaw": 125
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Slime.json b/sets/_Slime.json
new file mode 100644
index 0000000..342bf61
--- /dev/null
+++ b/sets/_Slime.json
@@ -0,0 +1,17 @@
+{
+ "items": [
+ "Slime Boots",
+ "Slime Plate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "hprPct": 35,
+ "thorns": 15,
+ "spd": -6,
+ "poison": 300,
+ "hpBonus": 600,
+ "jh": 1
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Snail.json b/sets/_Snail.json
new file mode 100644
index 0000000..260ba13
--- /dev/null
+++ b/sets/_Snail.json
@@ -0,0 +1,38 @@
+{
+ "items": [
+ "Snail Helm",
+ "Snail Boots",
+ "Snail Leggings",
+ "Snail Mail"
+ ],
+ "bonuses": [
+ {},
+ {
+ "str": 7,
+ "agi": -5,
+ "thorns": 10,
+ "spd": -5,
+ "poison": 880,
+ "hpBonus": 1100,
+ "hprRaw": 125
+ },
+ {
+ "str": 14,
+ "agi": -10,
+ "thorns": 20,
+ "spd": -10,
+ "poison": 2650,
+ "hpBonus": 2675,
+ "hprRaw": 275
+ },
+ {
+ "str": 21,
+ "agi": -15,
+ "thorns": 40,
+ "spd": -15,
+ "poison": 5500,
+ "hpBonus": 5500,
+ "hprRaw": 575
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Snow.json b/sets/_Snow.json
new file mode 100644
index 0000000..6272591
--- /dev/null
+++ b/sets/_Snow.json
@@ -0,0 +1,32 @@
+{
+ "items": [
+ "Snow Helmet",
+ "Snow Boots",
+ "Snow Pants",
+ "Snow Tunic"
+ ],
+ "bonuses": [
+ {},
+ {
+ "hprPct": -10,
+ "mr": 1,
+ "sdPct": 4,
+ "ref": 10,
+ "thorns": 8
+ },
+ {
+ "hprPct": -20,
+ "mr": 2,
+ "sdPct": 12,
+ "ref": 30,
+ "thorns": 24
+ },
+ {
+ "hprPct": -35,
+ "mr": 4,
+ "sdPct": 28,
+ "ref": 70,
+ "thorns": 55
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Spider.json b/sets/_Spider.json
new file mode 100644
index 0000000..9d0062d
--- /dev/null
+++ b/sets/_Spider.json
@@ -0,0 +1,24 @@
+{
+ "items": [
+ "Spinneret",
+ "Abdomen",
+ "Cephalothorax"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 10,
+ "dex": 2,
+ "agi": 2,
+ "spd": 7,
+ "poison": 35
+ },
+ {
+ "xpb": 25,
+ "dex": 6,
+ "agi": 6,
+ "spd": 19,
+ "poison": 130
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Spore.json b/sets/_Spore.json
new file mode 100644
index 0000000..1f32c8c
--- /dev/null
+++ b/sets/_Spore.json
@@ -0,0 +1,14 @@
+{
+ "items": [
+ "Spore Cap",
+ "Spore Shortsword"
+ ],
+ "bonuses": [
+ {},
+ {
+ "ls": 20,
+ "expd": 20,
+ "poison": 70
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Thanos+Legionnaire.json b/sets/_Thanos+Legionnaire.json
new file mode 100644
index 0000000..6ee1a85
--- /dev/null
+++ b/sets/_Thanos+Legionnaire.json
@@ -0,0 +1,42 @@
+{
+ "items": [
+ "Thanos Legionnaire Helm",
+ "Thanos Legionnaire Greaves",
+ "Thanos Legionnaire Leggings",
+ "Thanos Legionnaire Plate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "str": 1,
+ "dex": -1,
+ "int": -1,
+ "agi": 1,
+ "def": 1,
+ "spd": 2,
+ "hprRaw": 60,
+ "mdRaw": 60
+ },
+ {
+ "str": 4,
+ "dex": -4,
+ "int": -4,
+ "agi": 4,
+ "def": 4,
+ "spd": 8,
+ "hprRaw": 180,
+ "mdRaw": 180
+ },
+ {
+ "str": 15,
+ "dex": -15,
+ "int": -15,
+ "agi": 15,
+ "def": 15,
+ "spd": 20,
+ "atkTier": 1,
+ "hprRaw": 480,
+ "mdRaw": 480
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Thunder+Relic.json b/sets/_Thunder+Relic.json
new file mode 100644
index 0000000..8ae5909
--- /dev/null
+++ b/sets/_Thunder+Relic.json
@@ -0,0 +1,30 @@
+{
+ "items": [
+ "Thunder Relic Helmet",
+ "Thunder Relic Boots",
+ "Thunder Relic Leggings",
+ "Thunder Relic Chestplate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 5,
+ "lb": 10,
+ "hpBonus": 55,
+ "mdRaw": 12
+ },
+ {
+ "xpb": 10,
+ "lb": 25,
+ "hpBonus": 180,
+ "mdRaw": 32
+ },
+ {
+ "xpb": 25,
+ "lb": 50,
+ "dex": 20,
+ "hpBonus": 380,
+ "mdRaw": 105
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Tribal.json b/sets/_Tribal.json
new file mode 100644
index 0000000..8532af9
--- /dev/null
+++ b/sets/_Tribal.json
@@ -0,0 +1,27 @@
+{
+ "items": [
+ "Tribal Cap",
+ "Tribal Boots",
+ "Tribal Pants",
+ "Tribal Tunic"
+ ],
+ "bonuses": [
+ {},
+ {
+ "str": 2,
+ "spd": 5
+ },
+ {
+ "str": 5,
+ "agi": 2,
+ "spd": 10
+ },
+ {
+ "sdPct": -15,
+ "str": 10,
+ "agi": 5,
+ "spd": 15,
+ "atkTier": 1
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Ultramarine.json b/sets/_Ultramarine.json
new file mode 100644
index 0000000..52e625f
--- /dev/null
+++ b/sets/_Ultramarine.json
@@ -0,0 +1,35 @@
+{
+ "items": [
+ "Ultramarine Crown",
+ "Ultramarine Boots",
+ "Ultramarine Belt",
+ "Ultramarine Cape"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mr": 2,
+ "mdPct": -24,
+ "int": 5,
+ "wDamPct": 10,
+ "tDamPct": -8,
+ "wDefPct": 16
+ },
+ {
+ "mr": 5,
+ "mdPct": -54,
+ "int": 15,
+ "wDamPct": 20,
+ "tDamPct": -18,
+ "wDefPct": 36
+ },
+ {
+ "mr": 8,
+ "mdPct": -90,
+ "int": 25,
+ "wDamPct": 40,
+ "tDamPct": -30,
+ "wDefPct": 56
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Veekhat%27s.json b/sets/_Veekhat%27s.json
new file mode 100644
index 0000000..64277ab
--- /dev/null
+++ b/sets/_Veekhat%27s.json
@@ -0,0 +1,15 @@
+{
+ "items": [
+ "Veekhat's Horns",
+ "Veekhat's Udders"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mdPct": 30,
+ "ms": 2,
+ "spd": 25,
+ "spPct2": -40
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Vexing.json b/sets/_Vexing.json
new file mode 100644
index 0000000..d51746d
--- /dev/null
+++ b/sets/_Vexing.json
@@ -0,0 +1,16 @@
+{
+ "items": [
+ "Mask of the Dark Vexations",
+ "Staff of the Dark Vexations"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mr": 2,
+ "sdPct": 15,
+ "mdPct": -15,
+ "sdRaw": 30,
+ "spPct2": -50
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Villager.json b/sets/_Villager.json
new file mode 100644
index 0000000..c6dd53d
--- /dev/null
+++ b/sets/_Villager.json
@@ -0,0 +1,14 @@
+{
+ "items": [
+ "Villager Pants",
+ "Villager Mail"
+ ],
+ "bonuses": [
+ {},
+ {
+ "xpb": 20,
+ "lb": 60,
+ "eSteal": 8
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Visceral.json b/sets/_Visceral.json
new file mode 100644
index 0000000..bd5683f
--- /dev/null
+++ b/sets/_Visceral.json
@@ -0,0 +1,35 @@
+{
+ "items": [
+ "Visceral Skullcap",
+ "Visceral Toe",
+ "Visceral Legs",
+ "Visceral Chest"
+ ],
+ "bonuses": [
+ {},
+ {
+ "hprPct": 30,
+ "mdPct": 10,
+ "ls": 45,
+ "hpBonus": -1000,
+ "hprRaw": 35,
+ "mdRaw": 40
+ },
+ {
+ "hprPct": 100,
+ "mdPct": 25,
+ "ls": 90,
+ "hpBonus": -2500,
+ "hprRaw": 75,
+ "mdRaw": 80
+ },
+ {
+ "hprPct": 350,
+ "mdPct": 50,
+ "ls": 180,
+ "hpBonus": -4000,
+ "hprRaw": 145,
+ "mdRaw": 165
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sets/_Water+Relic.json b/sets/_Water+Relic.json
new file mode 100644
index 0000000..f900450
--- /dev/null
+++ b/sets/_Water+Relic.json
@@ -0,0 +1,30 @@
+{
+ "items": [
+ "Water Relic Helmet",
+ "Water Relic Boots",
+ "Water Relic Leggings",
+ "Water Relic Chestplate"
+ ],
+ "bonuses": [
+ {},
+ {
+ "mr": 1,
+ "xpb": 5,
+ "lb": 10,
+ "hpBonus": 55
+ },
+ {
+ "mr": 2,
+ "xpb": 10,
+ "lb": 25,
+ "hpBonus": 170
+ },
+ {
+ "mr": 4,
+ "xpb": 25,
+ "lb": 50,
+ "int": 20,
+ "hpBonus": 360
+ }
+ ]
+}
\ No newline at end of file