diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3e4705c407..5e37153835 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - Adaptive stride setup for more dynamic run behavior
 - Theropod body
 - Several new animals
+- Item quality indicators
 
 ### Changed
 
diff --git a/assets/common/items/armor/back/admin.ron b/assets/common/items/armor/back/admin.ron
index ddb67b7503..1a6bcd9759 100644
--- a/assets/common/items/armor/back/admin.ron
+++ b/assets/common/items/armor/back/admin.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Back("Admin"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/armor/back/dungeon_purple-0.ron b/assets/common/items/armor/back/dungeon_purple-0.ron
index ae1a07913f..943df27e07 100644
--- a/assets/common/items/armor/back/dungeon_purple-0.ron
+++ b/assets/common/items/armor/back/dungeon_purple-0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Back("DungPurp0"),
             stats: (
-                protection: Normal(3.0),
-            ),
+                protection: Normal(3.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/back/leather_adventurer.ron b/assets/common/items/armor/back/leather_adventurer.ron
index 4f41259877..90dde99935 100644
--- a/assets/common/items/armor/back/leather_adventurer.ron
+++ b/assets/common/items/armor/back/leather_adventurer.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Back("Short2"),
             stats: (
-                protection: Normal(0.2),
-            ),
+                protection: Normal(0.2)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/back/short_0.ron b/assets/common/items/armor/back/short_0.ron
index e479a37b62..17f4858f70 100644
--- a/assets/common/items/armor/back/short_0.ron
+++ b/assets/common/items/armor/back/short_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Back("Short0"),
             stats: (
-                protection: Normal(0.3),
-            ),
+                protection: Normal(0.3)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/back/short_1.ron b/assets/common/items/armor/back/short_1.ron
index f4c3c41137..556a4683c4 100644
--- a/assets/common/items/armor/back/short_1.ron
+++ b/assets/common/items/armor/back/short_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Back("Short1"),
             stats: (
-                protection: Normal(0.1),
-            ),
+                protection: Normal(0.1)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/belt/assassin.ron b/assets/common/items/armor/belt/assassin.ron
index 82a47b202d..1a25e1bf89 100644
--- a/assets/common/items/armor/belt/assassin.ron
+++ b/assets/common/items/armor/belt/assassin.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Belt("Assassin"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/belt/bonerattler.ron b/assets/common/items/armor/belt/bonerattler.ron
index 2587122937..f5d16168b3 100644
--- a/assets/common/items/armor/belt/bonerattler.ron
+++ b/assets/common/items/armor/belt/bonerattler.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("Bonerattler"),
             stats: (
-                protection: Normal(3.0),
-            ),
+                protection: Normal(3.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/belt/cloth_blue_0.ron b/assets/common/items/armor/belt/cloth_blue_0.ron
index f7ab9f2cd8..8ba531ffe5 100644
--- a/assets/common/items/armor/belt/cloth_blue_0.ron
+++ b/assets/common/items/armor/belt/cloth_blue_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("ClothBlue0"),
             stats:  (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/belt/cloth_green_0.ron b/assets/common/items/armor/belt/cloth_green_0.ron
index eb8f5129e9..55b3413715 100644
--- a/assets/common/items/armor/belt/cloth_green_0.ron
+++ b/assets/common/items/armor/belt/cloth_green_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("ClothGreen0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/belt/cloth_purple_0.ron b/assets/common/items/armor/belt/cloth_purple_0.ron
index 5bc6eb3f7a..2f7c47071e 100644
--- a/assets/common/items/armor/belt/cloth_purple_0.ron
+++ b/assets/common/items/armor/belt/cloth_purple_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("ClothPurple0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/belt/cultist_belt.ron b/assets/common/items/armor/belt/cultist_belt.ron
index 9e9de5d4aa..ba621bf791 100644
--- a/assets/common/items/armor/belt/cultist_belt.ron
+++ b/assets/common/items/armor/belt/cultist_belt.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("Cultist"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/belt/druid.ron b/assets/common/items/armor/belt/druid.ron
index d2d58ee7ce..c46390ef68 100644
--- a/assets/common/items/armor/belt/druid.ron
+++ b/assets/common/items/armor/belt/druid.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Belt("Druid"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/belt/leather_0.ron b/assets/common/items/armor/belt/leather_0.ron
index 00e0b85d40..237baffb3e 100644
--- a/assets/common/items/armor/belt/leather_0.ron
+++ b/assets/common/items/armor/belt/leather_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("Leather0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/belt/leather_2.ron b/assets/common/items/armor/belt/leather_2.ron
index e46ca49a09..5a15c5c9c5 100644
--- a/assets/common/items/armor/belt/leather_2.ron
+++ b/assets/common/items/armor/belt/leather_2.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("Leather2"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/belt/leather_adventurer.ron b/assets/common/items/armor/belt/leather_adventurer.ron
index 113c4f604e..d5cf8072f4 100644
--- a/assets/common/items/armor/belt/leather_adventurer.ron
+++ b/assets/common/items/armor/belt/leather_adventurer.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Belt("Leather2"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/belt/plate_0.ron b/assets/common/items/armor/belt/plate_0.ron
index 03a2ce6813..e2ec0aee8e 100644
--- a/assets/common/items/armor/belt/plate_0.ron
+++ b/assets/common/items/armor/belt/plate_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Belt("Plate0"),
             stats: (
-                protection: Normal(3.0),
-            ),
+                protection: Normal(3.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/belt/steel_0.ron b/assets/common/items/armor/belt/steel_0.ron
index 53aa58eedc..3db1e1ddef 100644
--- a/assets/common/items/armor/belt/steel_0.ron
+++ b/assets/common/items/armor/belt/steel_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Belt("Steel0"),
             stats: (
-                protection: Normal(4.0),
-            ),
+                protection: Normal(4.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/belt/tarasque.ron b/assets/common/items/armor/belt/tarasque.ron
index 8c92cbd67b..d26bca1595 100644
--- a/assets/common/items/armor/belt/tarasque.ron
+++ b/assets/common/items/armor/belt/tarasque.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("Tarasque"),
             stats: (
-                protection: Normal(3.0),
-            ),
+                protection: Normal(3.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/belt/twig.ron b/assets/common/items/armor/belt/twig.ron
index 5c32e05d6b..2133d521b5 100644
--- a/assets/common/items/armor/belt/twig.ron
+++ b/assets/common/items/armor/belt/twig.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Belt("Twig"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/belt/twigsflowers.ron b/assets/common/items/armor/belt/twigsflowers.ron
index 56a606c7fd..fda8d55cef 100644
--- a/assets/common/items/armor/belt/twigsflowers.ron
+++ b/assets/common/items/armor/belt/twigsflowers.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Belt("Twigsflowers"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/belt/twigsleaves.ron b/assets/common/items/armor/belt/twigsleaves.ron
index 7339b850dc..cee93b9071 100644
--- a/assets/common/items/armor/belt/twigsleaves.ron
+++ b/assets/common/items/armor/belt/twigsleaves.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Belt("Twigsleaves"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/chest/assassin.ron b/assets/common/items/armor/chest/assassin.ron
index 2d05941b9a..3be92f61a1 100644
--- a/assets/common/items/armor/chest/assassin.ron
+++ b/assets/common/items/armor/chest/assassin.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Chest("Assassin"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/chest/bonerattler.ron b/assets/common/items/armor/chest/bonerattler.ron
index 557ec72cf2..0962f17d48 100644
--- a/assets/common/items/armor/chest/bonerattler.ron
+++ b/assets/common/items/armor/chest/bonerattler.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("Bonerattler"),
             stats: (
-                protection: Normal(25.0),
-            ),
+                protection: Normal(25.0)),            
         )
     ),
+    quality: High,
 )
\ No newline at end of file
diff --git a/assets/common/items/armor/chest/cloth_blue_0.ron b/assets/common/items/armor/chest/cloth_blue_0.ron
index 0adf472efc..8401b9c006 100644
--- a/assets/common/items/armor/chest/cloth_blue_0.ron
+++ b/assets/common/items/armor/chest/cloth_blue_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("ClothBlue0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/chest/cloth_green_0.ron b/assets/common/items/armor/chest/cloth_green_0.ron
index c79232e0ef..7539b684ef 100644
--- a/assets/common/items/armor/chest/cloth_green_0.ron
+++ b/assets/common/items/armor/chest/cloth_green_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("ClothGreen0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/chest/cloth_purple_0.ron b/assets/common/items/armor/chest/cloth_purple_0.ron
index 4d9c2657da..dd53e70ee9 100644
--- a/assets/common/items/armor/chest/cloth_purple_0.ron
+++ b/assets/common/items/armor/chest/cloth_purple_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("ClothPurple0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/chest/cultist_chest_blue.ron b/assets/common/items/armor/chest/cultist_chest_blue.ron
index 62e38ac5e7..77e0ab465f 100644
--- a/assets/common/items/armor/chest/cultist_chest_blue.ron
+++ b/assets/common/items/armor/chest/cultist_chest_blue.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("CultistBlue"),
             stats: (
-                protection: Normal(30.0),
-            ),
+                protection: Normal(30.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/chest/cultist_chest_purple.ron b/assets/common/items/armor/chest/cultist_chest_purple.ron
index 992d05b7b2..57838b09cb 100644
--- a/assets/common/items/armor/chest/cultist_chest_purple.ron
+++ b/assets/common/items/armor/chest/cultist_chest_purple.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("CultistPurple"),
             stats: (
-                protection: Normal(30.0),
-            ),
+                protection: Normal(30.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/chest/druid.ron b/assets/common/items/armor/chest/druid.ron
index bf8c1dd1b5..46131148c6 100644
--- a/assets/common/items/armor/chest/druid.ron
+++ b/assets/common/items/armor/chest/druid.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Chest("Druid"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/chest/leather_0.ron b/assets/common/items/armor/chest/leather_0.ron
index e1c6cae15b..5bfd1f5f6e 100644
--- a/assets/common/items/armor/chest/leather_0.ron
+++ b/assets/common/items/armor/chest/leather_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Chest("Leather0"),
             stats: (
-                protection: Normal(10.0),
-            ),
+                protection: Normal(10.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/chest/leather_2.ron b/assets/common/items/armor/chest/leather_2.ron
index 260a53f0b2..974ee75c09 100644
--- a/assets/common/items/armor/chest/leather_2.ron
+++ b/assets/common/items/armor/chest/leather_2.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Chest("Leather2"),
             stats: (
-                protection: Normal(10.0),
-            ),
+                protection: Normal(10.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
\ No newline at end of file
diff --git a/assets/common/items/armor/chest/leather_adventurer.ron b/assets/common/items/armor/chest/leather_adventurer.ron
index 3a63dc1e10..cb4cb0afc0 100644
--- a/assets/common/items/armor/chest/leather_adventurer.ron
+++ b/assets/common/items/armor/chest/leather_adventurer.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Chest("Leather2"),
             stats: (
-                protection: Normal(8.0),
-            ),
+                protection: Normal(8.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/chest/plate_green_0.ron b/assets/common/items/armor/chest/plate_green_0.ron
index 6c35dc9d00..e56beaa6d3 100644
--- a/assets/common/items/armor/chest/plate_green_0.ron
+++ b/assets/common/items/armor/chest/plate_green_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Chest("PlateGreen0"),
             stats: (
-                protection: Normal(20.0),
-            ),
+                protection: Normal(20.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/chest/steel_0.ron b/assets/common/items/armor/chest/steel_0.ron
index b87220681d..68d304af7c 100644
--- a/assets/common/items/armor/chest/steel_0.ron
+++ b/assets/common/items/armor/chest/steel_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("Steel0"),
             stats: (
-                protection: Normal(25.0),
-            ),
+                protection: Normal(25.0)),            
         )
     ),
+    quality: High,
 )
\ No newline at end of file
diff --git a/assets/common/items/armor/chest/tarasque.ron b/assets/common/items/armor/chest/tarasque.ron
index ad8f6513ad..53cd8b2d4d 100644
--- a/assets/common/items/armor/chest/tarasque.ron
+++ b/assets/common/items/armor/chest/tarasque.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("Tarasque"),
             stats: (
-                protection: Normal(25.0),
-            ),
+                protection: Normal(25.0)),            
         )
     ),
+    quality: High,
 )
\ No newline at end of file
diff --git a/assets/common/items/armor/chest/twig.ron b/assets/common/items/armor/chest/twig.ron
index c38f319cac..7172685dff 100644
--- a/assets/common/items/armor/chest/twig.ron
+++ b/assets/common/items/armor/chest/twig.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Chest("Twig"),
             stats: (
-                protection: Normal(15.0),
-            ),
+                protection: Normal(15.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/chest/twigsflowers.ron b/assets/common/items/armor/chest/twigsflowers.ron
index b993a99469..2f19de111f 100644
--- a/assets/common/items/armor/chest/twigsflowers.ron
+++ b/assets/common/items/armor/chest/twigsflowers.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Chest("Twigsflowers"),
             stats: (
-                protection: Normal(15.0),
-            ),
+                protection: Normal(15.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/chest/twigsleaves.ron b/assets/common/items/armor/chest/twigsleaves.ron
index a429c0ec3e..2e7bef49fd 100644
--- a/assets/common/items/armor/chest/twigsleaves.ron
+++ b/assets/common/items/armor/chest/twigsleaves.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Chest("Twigsleaves"),
             stats: (
-                protection: Normal(15.0),
-            ),
+                protection: Normal(15.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/chest/worker_green_0.ron b/assets/common/items/armor/chest/worker_green_0.ron
index fc8e617f83..e12cedf33a 100644
--- a/assets/common/items/armor/chest/worker_green_0.ron
+++ b/assets/common/items/armor/chest/worker_green_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerGreen0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/chest/worker_green_1.ron b/assets/common/items/armor/chest/worker_green_1.ron
index 4501fced23..1f9583a25a 100644
--- a/assets/common/items/armor/chest/worker_green_1.ron
+++ b/assets/common/items/armor/chest/worker_green_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerGreen1"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/chest/worker_orange_0.ron b/assets/common/items/armor/chest/worker_orange_0.ron
index bb9cfb0831..87a952eb2e 100644
--- a/assets/common/items/armor/chest/worker_orange_0.ron
+++ b/assets/common/items/armor/chest/worker_orange_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerOrange0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/chest/worker_orange_1.ron b/assets/common/items/armor/chest/worker_orange_1.ron
index a432d6055b..43fe0517dc 100644
--- a/assets/common/items/armor/chest/worker_orange_1.ron
+++ b/assets/common/items/armor/chest/worker_orange_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerOrange1"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/chest/worker_purple_0.ron b/assets/common/items/armor/chest/worker_purple_0.ron
index 7fbb7fb079..ab2ceee463 100644
--- a/assets/common/items/armor/chest/worker_purple_0.ron
+++ b/assets/common/items/armor/chest/worker_purple_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerPurple0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/chest/worker_purple_1.ron b/assets/common/items/armor/chest/worker_purple_1.ron
index f2315fbcf3..0ec0f3385c 100644
--- a/assets/common/items/armor/chest/worker_purple_1.ron
+++ b/assets/common/items/armor/chest/worker_purple_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerPurple1"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/chest/worker_red_0.ron b/assets/common/items/armor/chest/worker_red_0.ron
index 9a2314a798..6f9183ca2a 100644
--- a/assets/common/items/armor/chest/worker_red_0.ron
+++ b/assets/common/items/armor/chest/worker_red_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerRed0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/chest/worker_red_1.ron b/assets/common/items/armor/chest/worker_red_1.ron
index 860c7ca5ce..caafc13601 100644
--- a/assets/common/items/armor/chest/worker_red_1.ron
+++ b/assets/common/items/armor/chest/worker_red_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerRed1"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/chest/worker_yellow_0.ron b/assets/common/items/armor/chest/worker_yellow_0.ron
index 8b0f1ea412..368a3b5a4e 100644
--- a/assets/common/items/armor/chest/worker_yellow_0.ron
+++ b/assets/common/items/armor/chest/worker_yellow_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerYellow0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/chest/worker_yellow_1.ron b/assets/common/items/armor/chest/worker_yellow_1.ron
index dfc9ee8f19..b5d78b0deb 100644
--- a/assets/common/items/armor/chest/worker_yellow_1.ron
+++ b/assets/common/items/armor/chest/worker_yellow_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerYellow1"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/foot/assassin.ron b/assets/common/items/armor/foot/assassin.ron
index e3493be3df..5e7fdfad80 100644
--- a/assets/common/items/armor/foot/assassin.ron
+++ b/assets/common/items/armor/foot/assassin.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Foot("Assassin"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/foot/bonerattler.ron b/assets/common/items/armor/foot/bonerattler.ron
index 328dcd0399..dcdaf793cc 100644
--- a/assets/common/items/armor/foot/bonerattler.ron
+++ b/assets/common/items/armor/foot/bonerattler.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Bonerattler"),
             stats: (
-                protection: Normal(5.0),
-            ),
+                protection: Normal(5.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/foot/cloth_blue_0.ron b/assets/common/items/armor/foot/cloth_blue_0.ron
index 7e3c750f8b..641aef5910 100644
--- a/assets/common/items/armor/foot/cloth_blue_0.ron
+++ b/assets/common/items/armor/foot/cloth_blue_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("ClothBlue0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/foot/cloth_green_0.ron b/assets/common/items/armor/foot/cloth_green_0.ron
index f9bbdf8ddc..9033ff4490 100644
--- a/assets/common/items/armor/foot/cloth_green_0.ron
+++ b/assets/common/items/armor/foot/cloth_green_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("ClothGreen0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/foot/cloth_purple_0.ron b/assets/common/items/armor/foot/cloth_purple_0.ron
index 7ec9ae0b17..92cd4704b2 100644
--- a/assets/common/items/armor/foot/cloth_purple_0.ron
+++ b/assets/common/items/armor/foot/cloth_purple_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("ClothPurple0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/foot/cultist_boots.ron b/assets/common/items/armor/foot/cultist_boots.ron
index 443dfc26ad..6c683b4c69 100644
--- a/assets/common/items/armor/foot/cultist_boots.ron
+++ b/assets/common/items/armor/foot/cultist_boots.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Cultist"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/foot/druid.ron b/assets/common/items/armor/foot/druid.ron
index 94fa75b929..d07bdd9481 100644
--- a/assets/common/items/armor/foot/druid.ron
+++ b/assets/common/items/armor/foot/druid.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Foot("Druid"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/foot/jackalope_slippers.ron b/assets/common/items/armor/foot/jackalope_slippers.ron
index 99e3618cb1..60ff901ff4 100644
--- a/assets/common/items/armor/foot/jackalope_slippers.ron
+++ b/assets/common/items/armor/foot/jackalope_slippers.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("JackalopeSlips"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/foot/leather_0.ron b/assets/common/items/armor/foot/leather_0.ron
index 15b449b76a..1f774ec0ef 100644
--- a/assets/common/items/armor/foot/leather_0.ron
+++ b/assets/common/items/armor/foot/leather_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Leather0"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/foot/leather_2.ron b/assets/common/items/armor/foot/leather_2.ron
index f6d064dcc7..8dcc285e7c 100644
--- a/assets/common/items/armor/foot/leather_2.ron
+++ b/assets/common/items/armor/foot/leather_2.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Leather2"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/foot/leather_adventurer.ron b/assets/common/items/armor/foot/leather_adventurer.ron
index a152923ddd..4048f926fa 100644
--- a/assets/common/items/armor/foot/leather_adventurer.ron
+++ b/assets/common/items/armor/foot/leather_adventurer.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Foot("Leather2"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/foot/plate_0.ron b/assets/common/items/armor/foot/plate_0.ron
index 93ae1ab726..9c289a801e 100644
--- a/assets/common/items/armor/foot/plate_0.ron
+++ b/assets/common/items/armor/foot/plate_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Foot("Plate0"),
             stats: (
-                protection: Normal(4.0),
-            ),
+                protection: Normal(4.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/foot/steel_0.ron b/assets/common/items/armor/foot/steel_0.ron
index e863c92556..07aab81517 100644
--- a/assets/common/items/armor/foot/steel_0.ron
+++ b/assets/common/items/armor/foot/steel_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Steel0"),
             stats: (
-                protection: Normal(5.0),
-            ),
+                protection: Normal(5.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/foot/tarasque.ron b/assets/common/items/armor/foot/tarasque.ron
index 6a05c527b6..5cc8f9fd84 100644
--- a/assets/common/items/armor/foot/tarasque.ron
+++ b/assets/common/items/armor/foot/tarasque.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Tarasque"),
             stats: (
-                protection: Normal(5.0),
-            ),
+                protection: Normal(5.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/foot/twig.ron b/assets/common/items/armor/foot/twig.ron
index 79400e136e..d997802fb6 100644
--- a/assets/common/items/armor/foot/twig.ron
+++ b/assets/common/items/armor/foot/twig.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Foot("Twig"),
             stats: (
-                protection: Normal(3.0),
-            ),
+                protection: Normal(3.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/foot/twigsflowers.ron b/assets/common/items/armor/foot/twigsflowers.ron
index 1196276e2d..b7afba03f2 100644
--- a/assets/common/items/armor/foot/twigsflowers.ron
+++ b/assets/common/items/armor/foot/twigsflowers.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Foot("Twigsflowers"),
             stats: (
-                protection: Normal(3.0),
-            ),
+                protection: Normal(3.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/foot/twigsleaves.ron b/assets/common/items/armor/foot/twigsleaves.ron
index f2a0dd015c..8077ca9b7f 100644
--- a/assets/common/items/armor/foot/twigsleaves.ron
+++ b/assets/common/items/armor/foot/twigsleaves.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Foot("Twigsleaves"),
             stats: (
-                protection: Normal(3.0),
-            ),
+                protection: Normal(3.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/hand/assassin.ron b/assets/common/items/armor/hand/assassin.ron
index 43c2014529..30cdbc71eb 100644
--- a/assets/common/items/armor/hand/assassin.ron
+++ b/assets/common/items/armor/hand/assassin.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Hand("Assassin"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/hand/bonerattler.ron b/assets/common/items/armor/hand/bonerattler.ron
index 19369a425a..7c3e79273b 100644
--- a/assets/common/items/armor/hand/bonerattler.ron
+++ b/assets/common/items/armor/hand/bonerattler.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("Bonerattler"),
             stats: (
-                protection: Normal(10.0),
-            ),
+                protection: Normal(10.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/hand/cloth_blue_0.ron b/assets/common/items/armor/hand/cloth_blue_0.ron
index 509833940f..594b4d0dc0 100644
--- a/assets/common/items/armor/hand/cloth_blue_0.ron
+++ b/assets/common/items/armor/hand/cloth_blue_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("ClothBlue0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/hand/cloth_green_0.ron b/assets/common/items/armor/hand/cloth_green_0.ron
index d6686bb76f..c9000db49f 100644
--- a/assets/common/items/armor/hand/cloth_green_0.ron
+++ b/assets/common/items/armor/hand/cloth_green_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("ClothGreen0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/hand/cloth_purple_0.ron b/assets/common/items/armor/hand/cloth_purple_0.ron
index b1f7ac3e9f..d278011ec5 100644
--- a/assets/common/items/armor/hand/cloth_purple_0.ron
+++ b/assets/common/items/armor/hand/cloth_purple_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("ClothPurple0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/hand/cultist_hands_blue.ron b/assets/common/items/armor/hand/cultist_hands_blue.ron
index 8df0262df9..b9a1004fb1 100644
--- a/assets/common/items/armor/hand/cultist_hands_blue.ron
+++ b/assets/common/items/armor/hand/cultist_hands_blue.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("CultistBlue"),
             stats: (
-                protection: Normal(12.0),
-            ),
+                protection: Normal(12.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/hand/cultist_hands_purple.ron b/assets/common/items/armor/hand/cultist_hands_purple.ron
index bef5075d7f..b2aba0a762 100644
--- a/assets/common/items/armor/hand/cultist_hands_purple.ron
+++ b/assets/common/items/armor/hand/cultist_hands_purple.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("CultistPurple"),
             stats: (
-                protection: Normal(12.0),
-            ),
+                protection: Normal(12.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/hand/druid.ron b/assets/common/items/armor/hand/druid.ron
index 36be184719..9f19a6419d 100644
--- a/assets/common/items/armor/hand/druid.ron
+++ b/assets/common/items/armor/hand/druid.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("Druid"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/hand/leather_0.ron b/assets/common/items/armor/hand/leather_0.ron
index 2691929b30..4cf5ff780a 100644
--- a/assets/common/items/armor/hand/leather_0.ron
+++ b/assets/common/items/armor/hand/leather_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("Leather0"),
             stats: (
-                protection: Normal(4.0),
-            ),
+                protection: Normal(4.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/hand/leather_2.ron b/assets/common/items/armor/hand/leather_2.ron
index aace9eca08..bdacce9bc7 100644
--- a/assets/common/items/armor/hand/leather_2.ron
+++ b/assets/common/items/armor/hand/leather_2.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("Leather2"),
             stats: (
-                protection: Normal(4.0),
-            ),
+                protection: Normal(4.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/hand/leather_adventurer.ron b/assets/common/items/armor/hand/leather_adventurer.ron
index bc293c5bc6..99dfec383c 100644
--- a/assets/common/items/armor/hand/leather_adventurer.ron
+++ b/assets/common/items/armor/hand/leather_adventurer.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Hand("Leather2"),
             stats: (
-                protection: Normal(4.0),
-            ),
+                protection: Normal(4.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/hand/plate_0.ron b/assets/common/items/armor/hand/plate_0.ron
index 6c6d6943eb..40dcb89ff3 100644
--- a/assets/common/items/armor/hand/plate_0.ron
+++ b/assets/common/items/armor/hand/plate_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Hand("Plate0"),
             stats: (
-                protection: Normal(8.0),
-            ),
+                protection: Normal(8.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/hand/steel_0.ron b/assets/common/items/armor/hand/steel_0.ron
index f19f107583..83c06c719a 100644
--- a/assets/common/items/armor/hand/steel_0.ron
+++ b/assets/common/items/armor/hand/steel_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Hand("Steel0"),
             stats: (
-                protection: Normal(10.0),
-            ),
+                protection: Normal(10.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/hand/tarasque.ron b/assets/common/items/armor/hand/tarasque.ron
index fb618dc29e..a0820f44e8 100644
--- a/assets/common/items/armor/hand/tarasque.ron
+++ b/assets/common/items/armor/hand/tarasque.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("Tarasque"),
             stats: (
-                protection: Normal(10.0),
-            ),
+                protection: Normal(10.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/hand/twig.ron b/assets/common/items/armor/hand/twig.ron
index a6b7af131e..d25117eea0 100644
--- a/assets/common/items/armor/hand/twig.ron
+++ b/assets/common/items/armor/hand/twig.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Hand("Twig"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/hand/twigsflowers.ron b/assets/common/items/armor/hand/twigsflowers.ron
index 61c904eb36..33fd297335 100644
--- a/assets/common/items/armor/hand/twigsflowers.ron
+++ b/assets/common/items/armor/hand/twigsflowers.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Hand("Twigsflowers"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/hand/twigsleaves.ron b/assets/common/items/armor/hand/twigsleaves.ron
index 0004e12f11..6f826692a6 100644
--- a/assets/common/items/armor/hand/twigsleaves.ron
+++ b/assets/common/items/armor/hand/twigsleaves.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Hand("Twigsleaves"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/head/assa_mask_0.ron b/assets/common/items/armor/head/assa_mask_0.ron
index 2a8a66b28e..b61e063600 100644
--- a/assets/common/items/armor/head/assa_mask_0.ron
+++ b/assets/common/items/armor/head/assa_mask_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Head("AssaMask0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/head/leather_0.ron b/assets/common/items/armor/head/leather_0.ron
index 32784d35fc..7844e0f34e 100644
--- a/assets/common/items/armor/head/leather_0.ron
+++ b/assets/common/items/armor/head/leather_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Head("Leather0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/neck/neck_0.ron b/assets/common/items/armor/neck/neck_0.ron
index e33fc76029..8f2a59e977 100644
--- a/assets/common/items/armor/neck/neck_0.ron
+++ b/assets/common/items/armor/neck/neck_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Neck("Neck0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/neck/neck_1.ron b/assets/common/items/armor/neck/neck_1.ron
index 3a34c4e9b4..0820a2731c 100644
--- a/assets/common/items/armor/neck/neck_1.ron
+++ b/assets/common/items/armor/neck/neck_1.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Neck("Neck1"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/assassin.ron b/assets/common/items/armor/pants/assassin.ron
index fa70f18c69..69e654ea88 100644
--- a/assets/common/items/armor/pants/assassin.ron
+++ b/assets/common/items/armor/pants/assassin.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Pants("Assassin"),
             stats: (
-                protection: Normal(5.0),
-            ),
+                protection: Normal(5.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/bonerattler.ron b/assets/common/items/armor/pants/bonerattler.ron
index edd053aed8..013636fbeb 100644
--- a/assets/common/items/armor/pants/bonerattler.ron
+++ b/assets/common/items/armor/pants/bonerattler.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("Bonerattler"),
             stats: (
-                protection: Normal(20.0),
-            ),
+                protection: Normal(20.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/pants/cloth_blue_0.ron b/assets/common/items/armor/pants/cloth_blue_0.ron
index 898b4bf5c3..9c5a0be1f4 100644
--- a/assets/common/items/armor/pants/cloth_blue_0.ron
+++ b/assets/common/items/armor/pants/cloth_blue_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("ClothBlue0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/pants/cloth_green_0.ron b/assets/common/items/armor/pants/cloth_green_0.ron
index 01b70b1baf..c75306b05c 100644
--- a/assets/common/items/armor/pants/cloth_green_0.ron
+++ b/assets/common/items/armor/pants/cloth_green_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("ClothGreen0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/pants/cloth_purple_0.ron b/assets/common/items/armor/pants/cloth_purple_0.ron
index 09f5a771d1..2482d4acd8 100644
--- a/assets/common/items/armor/pants/cloth_purple_0.ron
+++ b/assets/common/items/armor/pants/cloth_purple_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("ClothPurple0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/pants/cultist_legs_blue.ron b/assets/common/items/armor/pants/cultist_legs_blue.ron
index 0faf3fe4d2..0ec110c8fe 100644
--- a/assets/common/items/armor/pants/cultist_legs_blue.ron
+++ b/assets/common/items/armor/pants/cultist_legs_blue.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("CultistBlue"),
             stats: (
-                protection: Normal(24.0),
-            ),
+                protection: Normal(24.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/pants/cultist_legs_purple.ron b/assets/common/items/armor/pants/cultist_legs_purple.ron
index 0093a7b1e0..8863aad0f9 100644
--- a/assets/common/items/armor/pants/cultist_legs_purple.ron
+++ b/assets/common/items/armor/pants/cultist_legs_purple.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("CultistPurple"),
             stats: (
-                protection: Normal(24.0),
-            ),
+                protection: Normal(24.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/pants/druid.ron b/assets/common/items/armor/pants/druid.ron
index 2dd0c212d6..31a6d529a6 100644
--- a/assets/common/items/armor/pants/druid.ron
+++ b/assets/common/items/armor/pants/druid.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Pants("Druid"),
             stats: (
-                protection: Normal(4.0),
-            ),
+                protection: Normal(4.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/hunting.ron b/assets/common/items/armor/pants/hunting.ron
index b186a48e7d..1a0b0fba47 100644
--- a/assets/common/items/armor/pants/hunting.ron
+++ b/assets/common/items/armor/pants/hunting.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Pants("Hunting"),
             stats: (
-                protection: Normal(8.0),
-            ),
+                protection: Normal(8.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/leather_0.ron b/assets/common/items/armor/pants/leather_0.ron
index 4f25c2139a..7546ee2c25 100644
--- a/assets/common/items/armor/pants/leather_0.ron
+++ b/assets/common/items/armor/pants/leather_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("Leather0"),
             stats: (
-                protection: Normal(8.0),
-            ),
+                protection: Normal(8.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/pants/leather_2.ron b/assets/common/items/armor/pants/leather_2.ron
index 340ae7c256..910b966416 100644
--- a/assets/common/items/armor/pants/leather_2.ron
+++ b/assets/common/items/armor/pants/leather_2.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("Leather2"),
             stats: (
-                protection: Normal(8.0),
-            ),
+                protection: Normal(8.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/pants/leather_adventurer.ron b/assets/common/items/armor/pants/leather_adventurer.ron
index 7e248501fb..7bde4e749c 100644
--- a/assets/common/items/armor/pants/leather_adventurer.ron
+++ b/assets/common/items/armor/pants/leather_adventurer.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Pants("Leather2"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/plate_green_0.ron b/assets/common/items/armor/pants/plate_green_0.ron
index a6beb54aee..e37c6a4549 100644
--- a/assets/common/items/armor/pants/plate_green_0.ron
+++ b/assets/common/items/armor/pants/plate_green_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Pants("PlateGreen0"),
             stats: (
-                protection: Normal(16.0),
-            ),
+                protection: Normal(16.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/steel_0.ron b/assets/common/items/armor/pants/steel_0.ron
index f66a075ac3..e6bc60bfff 100644
--- a/assets/common/items/armor/pants/steel_0.ron
+++ b/assets/common/items/armor/pants/steel_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Pants("Steel0"),
             stats: (
-                protection: Normal(20.0),
-            ),
+                protection: Normal(20.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/tarasque.ron b/assets/common/items/armor/pants/tarasque.ron
index eded2f2955..ac100df842 100644
--- a/assets/common/items/armor/pants/tarasque.ron
+++ b/assets/common/items/armor/pants/tarasque.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("Tarasque"),
             stats: (
-                protection: Normal(20.0),
-            ),
+                protection: Normal(20.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/pants/twig.ron b/assets/common/items/armor/pants/twig.ron
index c4ee3b22b9..fe9c82a265 100644
--- a/assets/common/items/armor/pants/twig.ron
+++ b/assets/common/items/armor/pants/twig.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Pants("Twig"),
             stats: (
-                protection: Normal(12.0),
-            ),
+                protection: Normal(12.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/twigsflowers.ron b/assets/common/items/armor/pants/twigsflowers.ron
index cc7b636aae..953b3cd95a 100644
--- a/assets/common/items/armor/pants/twigsflowers.ron
+++ b/assets/common/items/armor/pants/twigsflowers.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Pants("Twigsflowers"),
             stats: (
-                protection: Normal(12.0),
-            ),
+                protection: Normal(12.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/twigsleaves.ron b/assets/common/items/armor/pants/twigsleaves.ron
index 2fc10c1aa9..1d83089330 100644
--- a/assets/common/items/armor/pants/twigsleaves.ron
+++ b/assets/common/items/armor/pants/twigsleaves.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Pants("Twigsleaves"),
             stats: (
-                protection: Normal(12.0),
-            ),
+                protection: Normal(12.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/pants/worker_blue_0.ron b/assets/common/items/armor/pants/worker_blue_0.ron
index d4df1cb10c..8d5faa1e14 100644
--- a/assets/common/items/armor/pants/worker_blue_0.ron
+++ b/assets/common/items/armor/pants/worker_blue_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("WorkerBlue0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/ring/ring_0.ron b/assets/common/items/armor/ring/ring_0.ron
index 23e882d7c5..52fff9a1d3 100644
--- a/assets/common/items/armor/ring/ring_0.ron
+++ b/assets/common/items/armor/ring/ring_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Ring("Ring0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/shoulder/assassin.ron b/assets/common/items/armor/shoulder/assassin.ron
index 9fc27bc5f5..24d0d9e19d 100644
--- a/assets/common/items/armor/shoulder/assassin.ron
+++ b/assets/common/items/armor/shoulder/assassin.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Shoulder("Assassin"),
             stats: (
-                protection: Normal(3.0),
-            ),
+                protection: Normal(3.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/shoulder/bonerattler.ron b/assets/common/items/armor/shoulder/bonerattler.ron
index 5ae7f0311e..7ef36424a1 100644
--- a/assets/common/items/armor/shoulder/bonerattler.ron
+++ b/assets/common/items/armor/shoulder/bonerattler.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("Bonerattler"),
             stats: (
-                protection: Normal(15.0),
-            ),
+                protection: Normal(15.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/shoulder/cloth_blue_0.ron b/assets/common/items/armor/shoulder/cloth_blue_0.ron
index cfcd071361..1cfa6137f7 100644
--- a/assets/common/items/armor/shoulder/cloth_blue_0.ron
+++ b/assets/common/items/armor/shoulder/cloth_blue_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("ClothBlue0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/cloth_blue_1.ron b/assets/common/items/armor/shoulder/cloth_blue_1.ron
index 3bbec8c764..43cd74fcfa 100644
--- a/assets/common/items/armor/shoulder/cloth_blue_1.ron
+++ b/assets/common/items/armor/shoulder/cloth_blue_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("ClothBlue1"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/cloth_green_0.ron b/assets/common/items/armor/shoulder/cloth_green_0.ron
index ebd4e2d250..e2ab7ed4f0 100644
--- a/assets/common/items/armor/shoulder/cloth_green_0.ron
+++ b/assets/common/items/armor/shoulder/cloth_green_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("ClothGreen0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/cloth_purple_0.ron b/assets/common/items/armor/shoulder/cloth_purple_0.ron
index 96d0a10ef1..2610223071 100644
--- a/assets/common/items/armor/shoulder/cloth_purple_0.ron
+++ b/assets/common/items/armor/shoulder/cloth_purple_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("ClothPurple0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron b/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron
index e1d26ad467..2d977abe6d 100644
--- a/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron
+++ b/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("CultistBlue"),
             stats: (
-                protection: Normal(18.0),
-            ),
+                protection: Normal(18.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron b/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron
index 966bea62c7..3d11f7a84d 100644
--- a/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron
+++ b/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("CultistPurple"),
             stats: (
-                protection: Normal(18.0),
-            ),
+                protection: Normal(18.0)),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/armor/shoulder/druidshoulder.ron b/assets/common/items/armor/shoulder/druidshoulder.ron
index f1a3dda7c5..fafffff09f 100644
--- a/assets/common/items/armor/shoulder/druidshoulder.ron
+++ b/assets/common/items/armor/shoulder/druidshoulder.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("DruidShoulder"),
             stats: (
-                protection: Normal(3.0),
-            ),
+                protection: Normal(3.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/iron_spikes.ron b/assets/common/items/armor/shoulder/iron_spikes.ron
index 1f4b64ec9b..8cdda08f78 100644
--- a/assets/common/items/armor/shoulder/iron_spikes.ron
+++ b/assets/common/items/armor/shoulder/iron_spikes.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Shoulder("IronSpikes"),
             stats: (
-                protection: Normal(12.0),
-            ),
+                protection: Normal(12.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/shoulder/leather_0.ron b/assets/common/items/armor/shoulder/leather_0.ron
index 5b0d1391a4..3e580ea8f5 100644
--- a/assets/common/items/armor/shoulder/leather_0.ron
+++ b/assets/common/items/armor/shoulder/leather_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("Leather0"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/leather_1.ron b/assets/common/items/armor/shoulder/leather_1.ron
index 263379eae5..0a80a4a8a3 100644
--- a/assets/common/items/armor/shoulder/leather_1.ron
+++ b/assets/common/items/armor/shoulder/leather_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("Leather1"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/leather_2.ron b/assets/common/items/armor/shoulder/leather_2.ron
index 31672f23b1..4a05c53bbd 100644
--- a/assets/common/items/armor/shoulder/leather_2.ron
+++ b/assets/common/items/armor/shoulder/leather_2.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("Leather2"),
             stats: (
-                protection: Normal(6.0),
-            ),
+                protection: Normal(6.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/leather_adventurer.ron b/assets/common/items/armor/shoulder/leather_adventurer.ron
index e4f15a71e7..b1a7c9fe95 100644
--- a/assets/common/items/armor/shoulder/leather_adventurer.ron
+++ b/assets/common/items/armor/shoulder/leather_adventurer.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Shoulder("Leather2"),
             stats: (
-                protection: Normal(8.0),
-            ),
+                protection: Normal(8.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/shoulder/leather_iron_0.ron b/assets/common/items/armor/shoulder/leather_iron_0.ron
index e3e5f9daec..60ac19d5d6 100644
--- a/assets/common/items/armor/shoulder/leather_iron_0.ron
+++ b/assets/common/items/armor/shoulder/leather_iron_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("IronLeather0"),
             stats: (
-                protection: Normal(9.0),
-            ),
+                protection: Normal(9.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/leather_iron_1.ron b/assets/common/items/armor/shoulder/leather_iron_1.ron
index f7beacf8ec..aab10c7fdb 100644
--- a/assets/common/items/armor/shoulder/leather_iron_1.ron
+++ b/assets/common/items/armor/shoulder/leather_iron_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("IronLeather1"),
             stats: (
-                protection: Normal(9.0),
-            ),
+                protection: Normal(9.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/leather_iron_2.ron b/assets/common/items/armor/shoulder/leather_iron_2.ron
index ed7958b9e3..dfd545356f 100644
--- a/assets/common/items/armor/shoulder/leather_iron_2.ron
+++ b/assets/common/items/armor/shoulder/leather_iron_2.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("IronLeather2"),
             stats: (
-                protection: Normal(9.0),
-            ),
+                protection: Normal(9.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/leather_iron_3.ron b/assets/common/items/armor/shoulder/leather_iron_3.ron
index 1256bf0e3b..8c576df6c5 100644
--- a/assets/common/items/armor/shoulder/leather_iron_3.ron
+++ b/assets/common/items/armor/shoulder/leather_iron_3.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("IronLeather3"),
             stats: (
-                protection: Normal(9.0),
-            ),
+                protection: Normal(9.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/leather_strips.ron b/assets/common/items/armor/shoulder/leather_strips.ron
index 4ed40cdf68..5b1245c18d 100644
--- a/assets/common/items/armor/shoulder/leather_strips.ron
+++ b/assets/common/items/armor/shoulder/leather_strips.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("LeatherStrips"),
             stats: (
-                protection: Normal(4.0),
-            ),
+                protection: Normal(4.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/shoulder/plate_0.ron b/assets/common/items/armor/shoulder/plate_0.ron
index d76977ef71..351f00b6f2 100644
--- a/assets/common/items/armor/shoulder/plate_0.ron
+++ b/assets/common/items/armor/shoulder/plate_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Shoulder("Plate0"),
             stats: (
-                protection: Normal(12.0),
-            ),
+                protection: Normal(12.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/shoulder/steel_0.ron b/assets/common/items/armor/shoulder/steel_0.ron
index e5ab3fd4d6..310bd7e7c0 100644
--- a/assets/common/items/armor/shoulder/steel_0.ron
+++ b/assets/common/items/armor/shoulder/steel_0.ron
@@ -5,8 +5,9 @@ ItemDef(
         (
             kind: Shoulder("Steel0"),
             stats: (
-                protection: Normal(15.0),
-            ),
+                protection: Normal(15.0)
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/shoulder/tarasque.ron b/assets/common/items/armor/shoulder/tarasque.ron
index b75e1a81b8..e52e966ce7 100644
--- a/assets/common/items/armor/shoulder/tarasque.ron
+++ b/assets/common/items/armor/shoulder/tarasque.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("Tarasque"),
             stats: (
-                protection: Normal(15.0),
-            ),
+                protection: Normal(15.0)),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/armor/shoulder/twigs.ron b/assets/common/items/armor/shoulder/twigs.ron
index e51871fa0c..6a2e3e7298 100644
--- a/assets/common/items/armor/shoulder/twigs.ron
+++ b/assets/common/items/armor/shoulder/twigs.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("TwiggyShoulder"),
             stats: (
-                protection: Normal(9.0),
-            ),
+                protection: Normal(9.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/twigsflowers.ron b/assets/common/items/armor/shoulder/twigsflowers.ron
index a8a2033d31..90e8a99527 100644
--- a/assets/common/items/armor/shoulder/twigsflowers.ron
+++ b/assets/common/items/armor/shoulder/twigsflowers.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("FlowerShoulder"),
             stats: (
-                protection: Normal(9.0),
-            ),
+                protection: Normal(9.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/shoulder/twigsleaves.ron b/assets/common/items/armor/shoulder/twigsleaves.ron
index f79456a271..8bef2d2163 100644
--- a/assets/common/items/armor/shoulder/twigsleaves.ron
+++ b/assets/common/items/armor/shoulder/twigsleaves.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("LeafyShoulder"),
             stats: (
-                protection: Normal(9.0),
-            ),
+                protection: Normal(9.0)),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/starter/glider.ron b/assets/common/items/armor/starter/glider.ron
index 087f4b16b5..3383848d5a 100644
--- a/assets/common/items/armor/starter/glider.ron
+++ b/assets/common/items/armor/starter/glider.ron
@@ -1,9 +1,10 @@
 ItemDef(
-    name: "Swift Glider",
-    description: "Thank goodness for big pockets",
+    name: "Cloverleaf",
+    description: "Brings luck to its owner.",
     kind: Glider(
         (
-            kind: "Blue",
+            kind: "Starter",
         ),
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/armor/starter/lantern.ron b/assets/common/items/armor/starter/lantern.ron
index f1a5351c40..5f0affc265 100644
--- a/assets/common/items/armor/starter/lantern.ron
+++ b/assets/common/items/armor/starter/lantern.ron
@@ -9,4 +9,5 @@ ItemDef(
             flicker_thousandths: 300,
         ),
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/armor/starter/rugged_chest.ron b/assets/common/items/armor/starter/rugged_chest.ron
index 0ec419453e..8da94b8122 100644
--- a/assets/common/items/armor/starter/rugged_chest.ron
+++ b/assets/common/items/armor/starter/rugged_chest.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("Rugged0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/starter/rugged_pants.ron b/assets/common/items/armor/starter/rugged_pants.ron
index c4eded3314..f9863dbee8 100644
--- a/assets/common/items/armor/starter/rugged_pants.ron
+++ b/assets/common/items/armor/starter/rugged_pants.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("Rugged0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/starter/sandals_0.ron b/assets/common/items/armor/starter/sandals_0.ron
index 92e3e50cdf..4852d8a71e 100644
--- a/assets/common/items/armor/starter/sandals_0.ron
+++ b/assets/common/items/armor/starter/sandals_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Sandal0"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/armor/tabard/admin.ron b/assets/common/items/armor/tabard/admin.ron
index 35aab0584a..eea10b1096 100644
--- a/assets/common/items/armor/tabard/admin.ron
+++ b/assets/common/items/armor/tabard/admin.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Tabard("Admin"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/boss_drops/exp_flask.ron b/assets/common/items/boss_drops/exp_flask.ron
index 6b7d8a78ca..fc36dd1d64 100644
--- a/assets/common/items/boss_drops/exp_flask.ron
+++ b/assets/common/items/boss_drops/exp_flask.ron
@@ -5,4 +5,5 @@ ItemDef(
         kind: "PotionExp",
         effect: Xp(250),
     ),
+    quality: High,
 )
diff --git a/assets/common/items/boss_drops/lantern.ron b/assets/common/items/boss_drops/lantern.ron
index fe6a7dcea2..7d27f79c08 100644
--- a/assets/common/items/boss_drops/lantern.ron
+++ b/assets/common/items/boss_drops/lantern.ron
@@ -9,4 +9,5 @@ ItemDef(
             flicker_thousandths: 300,
         ),
     ),
+    quality: High,
 )
diff --git a/assets/common/items/boss_drops/potions.ron b/assets/common/items/boss_drops/potions.ron
index 590beb62b4..8c584b6c5c 100644
--- a/assets/common/items/boss_drops/potions.ron
+++ b/assets/common/items/boss_drops/potions.ron
@@ -8,4 +8,5 @@ ItemDef(
             cause: Item,
         )),
     ),
+    quality: High,
 )
diff --git a/assets/common/items/boss_drops/xp_potion.ron b/assets/common/items/boss_drops/xp_potion.ron
index 95be888bb5..ad804f5063 100644
--- a/assets/common/items/boss_drops/xp_potion.ron
+++ b/assets/common/items/boss_drops/xp_potion.ron
@@ -4,5 +4,6 @@ ItemDef(
     kind: Consumable(
         kind: "Potion",
         effect: Xp(250),
-    ),
+    ),    
+    quality: High,
 )
diff --git a/assets/common/items/consumable/potion_big.ron b/assets/common/items/consumable/potion_big.ron
index 3356609f24..c9b252dd1c 100644
--- a/assets/common/items/consumable/potion_big.ron
+++ b/assets/common/items/consumable/potion_big.ron
@@ -1,6 +1,6 @@
 ItemDef(
     name: "Large Potion",
-    description: "Restores 100 Health\n\n<Right-Click to use>",
+    description: "Restores 100 Health",
     kind: Consumable(
         kind: "PotionLarge",
         effect: Health((
@@ -8,4 +8,5 @@ ItemDef(
             cause: Item,
         )),
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/consumable/potion_med.ron b/assets/common/items/consumable/potion_med.ron
index 6a8381d2b2..c844aad72c 100644
--- a/assets/common/items/consumable/potion_med.ron
+++ b/assets/common/items/consumable/potion_med.ron
@@ -1,6 +1,6 @@
 ItemDef(
     name: "Medium Potion",
-    description: "Restores 70 Health\n\n<Right-Click to use>",
+    description: "Restores 70 Health",
     kind: Consumable(
         kind: "PotionMed",
         effect: Health((
@@ -8,4 +8,5 @@ ItemDef(
             cause: Item,
         )),        
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/consumable/potion_minor.ron b/assets/common/items/consumable/potion_minor.ron
index 37da1f5ba0..5deff1c2f9 100644
--- a/assets/common/items/consumable/potion_minor.ron
+++ b/assets/common/items/consumable/potion_minor.ron
@@ -1,6 +1,6 @@
 ItemDef(
     name: "Minor Potion",
-    description: "Restores 50 Health\n\n<Right-Click to use>",
+    description: "Restores 50 Health",
     kind: Consumable(
         kind: "PotionMinor",
         effect: Health((
@@ -8,4 +8,5 @@ ItemDef(
             cause: Item,
         )),        
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/crafting_ing/cloth_scraps.ron b/assets/common/items/crafting_ing/cloth_scraps.ron
new file mode 100644
index 0000000000..1c1e0cb3b9
--- /dev/null
+++ b/assets/common/items/crafting_ing/cloth_scraps.ron
@@ -0,0 +1,8 @@
+ItemDef(
+    name: "Cloth Scraps",
+    description: "Looted from humanoids and their houses.",
+    kind: Ingredient(
+        kind: "ClothScraps",
+    ),
+    quality: Common,
+)
diff --git a/assets/common/items/crafting_ing/empty_vial.ron b/assets/common/items/crafting_ing/empty_vial.ron
index 562b66cf45..c7ae79a9a9 100644
--- a/assets/common/items/crafting_ing/empty_vial.ron
+++ b/assets/common/items/crafting_ing/empty_vial.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Can be filled with fluids.",
     kind: Ingredient(
         kind: "EmptyVial",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/crafting_ing/honey.ron b/assets/common/items/crafting_ing/honey.ron
new file mode 100644
index 0000000000..e2aaecdb83
--- /dev/null
+++ b/assets/common/items/crafting_ing/honey.ron
@@ -0,0 +1,8 @@
+ItemDef(
+    name: "Honey",
+    description: "From a beehive.",
+    kind: Ingredient(
+        kind: "Honey",
+    ),
+    quality: Common,
+)
diff --git a/assets/common/items/crafting_ing/icy_fang.ron b/assets/common/items/crafting_ing/icy_fang.ron
new file mode 100644
index 0000000000..9a3987ce92
--- /dev/null
+++ b/assets/common/items/crafting_ing/icy_fang.ron
@@ -0,0 +1,8 @@
+ItemDef(
+    name: "Icy Shard",
+    description: "Looted from a frosty creature.",
+    kind: Ingredient(
+        kind: "IcyShard",
+    ),
+    quality: Common,
+)
diff --git a/assets/common/items/crafting_ing/leather_scraps.ron b/assets/common/items/crafting_ing/leather_scraps.ron
index 11fad8a574..70cfec964c 100644
--- a/assets/common/items/crafting_ing/leather_scraps.ron
+++ b/assets/common/items/crafting_ing/leather_scraps.ron
@@ -1,7 +1,8 @@
 ItemDef(
     name: "Leather Scraps",
-    description: "Used to craft various items.",
+    description: "Looted from animals.",
     kind: Ingredient(
         kind: "LeatherScraps",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/crafting_ing/shiny_gem.ron b/assets/common/items/crafting_ing/shiny_gem.ron
index 49ed2b5638..957a12f979 100644
--- a/assets/common/items/crafting_ing/shiny_gem.ron
+++ b/assets/common/items/crafting_ing/shiny_gem.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "It's so shiny!",
     kind: Ingredient(
         kind: "ShinyGem",
-    )
+    ),
+    quality: High,
 )
diff --git a/assets/common/items/crafting_ing/stones.ron b/assets/common/items/crafting_ing/stones.ron
index ed8c6cef77..3ea370f48c 100644
--- a/assets/common/items/crafting_ing/stones.ron
+++ b/assets/common/items/crafting_ing/stones.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Pebbles from the ground.",
     kind: Ingredient(
         kind: "Stones",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/crafting_ing/twigs.ron b/assets/common/items/crafting_ing/twigs.ron
index c7df435e4f..db5e041a89 100644
--- a/assets/common/items/crafting_ing/twigs.ron
+++ b/assets/common/items/crafting_ing/twigs.ron
@@ -1,7 +1,8 @@
 ItemDef(
     name: "Twigs",
-    description: "Dry.",
+    description: "Found near trees.",
     kind: Ingredient(
         kind: "Twigs",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/crafting_tools/craftsman_hammer.ron b/assets/common/items/crafting_tools/craftsman_hammer.ron
index 3c66933706..d80aaccaf3 100644
--- a/assets/common/items/crafting_tools/craftsman_hammer.ron
+++ b/assets/common/items/crafting_tools/craftsman_hammer.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Used to craft various items.",
     kind: Ingredient(
         kind: "CraftsmanHammer",
-    )
+    ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/crafting_tools/mortar_pestle.ron b/assets/common/items/crafting_tools/mortar_pestle.ron
index b35f7f6082..4b084010ea 100644
--- a/assets/common/items/crafting_tools/mortar_pestle.ron
+++ b/assets/common/items/crafting_tools/mortar_pestle.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Crushes and grinds things into\na fine powder or paste.\nUsed to craft various items.",
     kind: Ingredient(
         kind: "MortarPestle",
-    )
+    ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/crafting_tools/sewing_set.ron b/assets/common/items/crafting_tools/sewing_set.ron
new file mode 100644
index 0000000000..45f25e3c6b
--- /dev/null
+++ b/assets/common/items/crafting_tools/sewing_set.ron
@@ -0,0 +1,8 @@
+ItemDef(
+    name: "Sewing Set",
+    description: "Used to craft various items.",
+    kind: Ingredient(
+        kind: "SewingSet",
+    ),
+    quality: Moderate,
+)
diff --git a/assets/common/items/debug/admin.ron b/assets/common/items/debug/admin.ron
index 0281cd0a21..028d729140 100644
--- a/assets/common/items/debug/admin.ron
+++ b/assets/common/items/debug/admin.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Tabard("Admin"),
             stats: (
-                protection: Invincible,
-            ),
+                protection: Invincible),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/admin_back.ron b/assets/common/items/debug/admin_back.ron
index d81857adc9..2b8648185a 100644
--- a/assets/common/items/debug/admin_back.ron
+++ b/assets/common/items/debug/admin_back.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Back("Admin"),
             stats: (
-                protection: Invincible,
-            ),
+                protection: Invincible),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/boost.ron b/assets/common/items/debug/boost.ron
index 1fda69471b..6642dd8cbe 100644
--- a/assets/common/items/debug/boost.ron
+++ b/assets/common/items/debug/boost.ron
@@ -6,9 +6,9 @@ ItemDef(
             kind: Debug("Boost"),
             stats: (
                 equip_time_millis: 0,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Debug,
 )
 // And the ground is pretty hard at maximum velocity...
diff --git a/assets/common/items/debug/cultist_belt.ron b/assets/common/items/debug/cultist_belt.ron
index cd25def1ec..5c7e3c72f8 100644
--- a/assets/common/items/debug/cultist_belt.ron
+++ b/assets/common/items/debug/cultist_belt.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("Cultist"),
             stats: (
-                protection: Invincible,
-            ),
+                protection: Invincible),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/cultist_boots.ron b/assets/common/items/debug/cultist_boots.ron
index 14ccc88cb0..c6989fdcd6 100644
--- a/assets/common/items/debug/cultist_boots.ron
+++ b/assets/common/items/debug/cultist_boots.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Cultist"),
             stats: (
-                protection: Invincible,
-            ),
+                protection: Invincible),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/cultist_chest_blue.ron b/assets/common/items/debug/cultist_chest_blue.ron
index 97b872a7e1..804c0654ad 100644
--- a/assets/common/items/debug/cultist_chest_blue.ron
+++ b/assets/common/items/debug/cultist_chest_blue.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("CultistBlue"),
             stats: (
-                protection: Invincible,
-            ),
+                protection: Invincible),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/cultist_hands_blue.ron b/assets/common/items/debug/cultist_hands_blue.ron
index 1b1d81ff09..f11051465b 100644
--- a/assets/common/items/debug/cultist_hands_blue.ron
+++ b/assets/common/items/debug/cultist_hands_blue.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("CultistBlue"),
             stats: (
-                protection: Invincible,
-            ),
+                protection: Invincible),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/cultist_legs_blue.ron b/assets/common/items/debug/cultist_legs_blue.ron
index 6a6421dbe7..7440df74a9 100644
--- a/assets/common/items/debug/cultist_legs_blue.ron
+++ b/assets/common/items/debug/cultist_legs_blue.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("CultistBlue"),
             stats: (
-                protection: Invincible,
-            ),
+                protection: Invincible),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/cultist_purp_2h_boss-0.ron b/assets/common/items/debug/cultist_purp_2h_boss-0.ron
index e9411a01ba..acae74ca91 100644
--- a/assets/common/items/debug/cultist_purp_2h_boss-0.ron
+++ b/assets/common/items/debug/cultist_purp_2h_boss-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("CultPurp0"),    
             stats: (
                 equip_time_millis: 0,
-                power: 1000.0,
-            ),
+                power: 1000.0),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/cultist_shoulder_blue.ron b/assets/common/items/debug/cultist_shoulder_blue.ron
index b65bbd3601..ff70d316b1 100644
--- a/assets/common/items/debug/cultist_shoulder_blue.ron
+++ b/assets/common/items/debug/cultist_shoulder_blue.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("CultistBlue"),
             stats: (
-                protection: Invincible,
-            ),
+                protection: Invincible),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/dungeon_purple-0.ron b/assets/common/items/debug/dungeon_purple-0.ron
index 16f192ad48..6adc2da2a6 100644
--- a/assets/common/items/debug/dungeon_purple-0.ron
+++ b/assets/common/items/debug/dungeon_purple-0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Back("DungPurp0"),
             stats: (
-                protection: Invincible,
-            ),
+                protection: Invincible),            
         )
     ),
+    quality: Debug,
 )
diff --git a/assets/common/items/debug/possess.ron b/assets/common/items/debug/possess.ron
index 1fda69471b..6642dd8cbe 100644
--- a/assets/common/items/debug/possess.ron
+++ b/assets/common/items/debug/possess.ron
@@ -6,9 +6,9 @@ ItemDef(
             kind: Debug("Boost"),
             stats: (
                 equip_time_millis: 0,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Debug,
 )
 // And the ground is pretty hard at maximum velocity...
diff --git a/assets/common/items/flowers/blue.ron b/assets/common/items/flowers/blue.ron
index 72e6b189c2..b61c3a2c40 100644
--- a/assets/common/items/flowers/blue.ron
+++ b/assets/common/items/flowers/blue.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Matches the color of the sky.",
     kind: Ingredient(
         kind: "Flower",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/flowers/pink.ron b/assets/common/items/flowers/pink.ron
index 3494920bdb..075d24afcd 100644
--- a/assets/common/items/flowers/pink.ron
+++ b/assets/common/items/flowers/pink.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Looks like a lollipop.",
     kind: Ingredient(
         kind: "Flower",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/flowers/red.ron b/assets/common/items/flowers/red.ron
index 70c251f7ac..39167814ac 100644
--- a/assets/common/items/flowers/red.ron
+++ b/assets/common/items/flowers/red.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Roses are red...",
     kind: Ingredient(
         kind: "Flower",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/flowers/sun.ron b/assets/common/items/flowers/sunflower.ron
similarity index 81%
rename from assets/common/items/flowers/sun.ron
rename to assets/common/items/flowers/sunflower.ron
index fa7e72ff35..593d22eeca 100644
--- a/assets/common/items/flowers/sun.ron
+++ b/assets/common/items/flowers/sunflower.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Smells like summer.",
     kind: Ingredient(
         kind: "Flower",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/flowers/white.ron b/assets/common/items/flowers/white.ron
index f8cc6685a1..5769441093 100644
--- a/assets/common/items/flowers/white.ron
+++ b/assets/common/items/flowers/white.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Pure and precious.",
     kind: Ingredient(
         kind: "Flower",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/flowers/yellow.ron b/assets/common/items/flowers/yellow.ron
index 0c233e4f14..1a57fc78f3 100644
--- a/assets/common/items/flowers/yellow.ron
+++ b/assets/common/items/flowers/yellow.ron
@@ -3,5 +3,6 @@ ItemDef(
     description: "Glows like the sun.",
     kind: Ingredient(
         kind: "Flower",
-    )
+    ),
+    quality: Common,
 )
diff --git a/assets/common/items/food/apple.ron b/assets/common/items/food/apple.ron
index 64f6a3f2af..4e067b53cb 100644
--- a/assets/common/items/food/apple.ron
+++ b/assets/common/items/food/apple.ron
@@ -1,11 +1,12 @@
 ItemDef(
     name: "Apple",
-    description: "Restores 20 Health\n\nRed and juicy\n\n<Right-Click to use>",
+    description: "Restores 10 Health\n\nRed and juicy",
     kind: Consumable(
         kind: "Apple",
         effect: Health((
-            amount: 200,
+            amount: 100,
             cause: Item,
         )),        
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/food/apple_mushroom_curry.ron b/assets/common/items/food/apple_mushroom_curry.ron
index 53d20e2087..b90bccdbdf 100644
--- a/assets/common/items/food/apple_mushroom_curry.ron
+++ b/assets/common/items/food/apple_mushroom_curry.ron
@@ -1,6 +1,6 @@
 ItemDef(
     name: "Mushroom Curry",
-    description: "Restores 120 Health\n\nWho could say no to that?\n\n<Right-Click to use>",
+    description: "Restores 120 Health\n\nWho could say no to that?",
     kind: Consumable(
         kind: "AppleShroomCurry",
         effect: Health((
@@ -8,4 +8,5 @@ ItemDef(
             cause: Item,
         )),        
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/food/apple_stick.ron b/assets/common/items/food/apple_stick.ron
index 47be0fb129..5bf9454978 100644
--- a/assets/common/items/food/apple_stick.ron
+++ b/assets/common/items/food/apple_stick.ron
@@ -1,11 +1,12 @@
 ItemDef(
     name: "Apple Stick",
-    description: "Restores 60 Health\n\n<Right-Click to use>",
+    description: "Restores 20 Health",
     kind: Consumable(
         kind: "AppleStick",
         effect: Health((
-            amount: 600,
+            amount: 250,
             cause: Item,
         )),        
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/food/cheese.ron b/assets/common/items/food/cheese.ron
index 7056565d54..13d4e14c13 100644
--- a/assets/common/items/food/cheese.ron
+++ b/assets/common/items/food/cheese.ron
@@ -1,6 +1,6 @@
 ItemDef(
     name: "Dwarven Cheese",
-    description: "Restores 15 Health\n\nAromatic and nutritious\n\n<Right-Click to use>",
+    description: "Restores 15 Health\n\nAromatic and nutritious",
     kind: Consumable(
         kind: "Cheese",
         effect: Health((
@@ -8,4 +8,5 @@ ItemDef(
             cause: Item,
         )),        
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/food/coconut.ron b/assets/common/items/food/coconut.ron
index bf669d6c6d..26d0311604 100644
--- a/assets/common/items/food/coconut.ron
+++ b/assets/common/items/food/coconut.ron
@@ -1,11 +1,12 @@
 ItemDef(
     name: "Coconut",
-    description: "Restores 30 health\n\nReliable source of water and fat\n\n<Right-Click to use>",
+    description: "Restores 20 health\n\nReliable source of water and fat",
     kind: Consumable(
         kind: "Coconut",
         effect: Health((
-            amount: 300,
+            amount: 200,
             cause: Item,
         )),       
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/food/mushroom.ron b/assets/common/items/food/mushroom.ron
index 39f67c4dee..1d18ba8d4c 100644
--- a/assets/common/items/food/mushroom.ron
+++ b/assets/common/items/food/mushroom.ron
@@ -1,11 +1,12 @@
 ItemDef(
     name: "Mushroom",
-    description: "Restores 10 Health\n\nHopefully this one is not poisonous\n\n<Right-Click to use>",
+    description: "Restores 5 Health\n\nHopefully this one is not poisonous",
     kind: Consumable(
         kind: "Mushroom",
         effect: Health((
-            amount: 100,
+            amount: 50,
             cause: Item,
         )),        
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/food/mushroom_stick.ron b/assets/common/items/food/mushroom_stick.ron
index 17b73c76a2..a0f091ccf9 100644
--- a/assets/common/items/food/mushroom_stick.ron
+++ b/assets/common/items/food/mushroom_stick.ron
@@ -1,11 +1,12 @@
 ItemDef(
     name: "Mushroom Stick",
-    description: "Restores 50 Health\n\n<Right-Click to use>",
+    description: "Restores 20 Health",
     kind: Consumable(
         kind: "MushroomStick",
         effect: Health((
-            amount: 500,
+            amount: 200,
             cause: Item,
         )),        
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/food/sunflower_icetea.ron b/assets/common/items/food/sunflower_icetea.ron
new file mode 100644
index 0000000000..c61305a0c4
--- /dev/null
+++ b/assets/common/items/food/sunflower_icetea.ron
@@ -0,0 +1,12 @@
+ItemDef(
+    name: "Sunflower Ice Tea",
+    description: "Restores 50 Health",
+    kind: Consumable(
+        kind: "SunflowerTea",
+        effect: Health((
+            amount: 500,
+            cause: Item,
+        )),        
+    ),
+    quality: Moderate,
+)
diff --git a/assets/common/items/glider/glider_blue.ron b/assets/common/items/glider/glider_blue.ron
new file mode 100644
index 0000000000..c81fc3de46
--- /dev/null
+++ b/assets/common/items/glider/glider_blue.ron
@@ -0,0 +1,10 @@
+ItemDef(
+    name: "Blue Falcon",
+    description: "Sky colored.",
+    kind: Glider(
+        (
+            kind: "Blue0",
+        ),
+    ),
+    quality: High,
+)
diff --git a/assets/common/items/glider/glider_leaves.ron b/assets/common/items/glider/glider_leaves.ron
new file mode 100644
index 0000000000..9cd55183c7
--- /dev/null
+++ b/assets/common/items/glider/glider_leaves.ron
@@ -0,0 +1,10 @@
+ItemDef(
+    name: "Leaves Glider",
+    description: "Soar among the trees",
+    kind: Glider(
+        (
+            kind: "Leaves",
+        ),
+    ),
+    quality: Moderate,
+)
diff --git a/assets/common/items/glider/glider_purp.ron b/assets/common/items/glider/glider_purp.ron
new file mode 100644
index 0000000000..b90ce5d243
--- /dev/null
+++ b/assets/common/items/glider/glider_purp.ron
@@ -0,0 +1,10 @@
+ItemDef(
+    name: "Skullgrin",
+    description: "Death from above.",
+    kind: Glider(
+        (
+            kind: "Purple0",
+        ),
+    ),
+    quality: Legendary,
+)
diff --git a/assets/common/items/grasses/long.ron b/assets/common/items/grasses/long.ron
index 9668c69995..3c67b29fbc 100644
--- a/assets/common/items/grasses/long.ron
+++ b/assets/common/items/grasses/long.ron
@@ -4,4 +4,5 @@ ItemDef(
     kind: Ingredient(
         kind: "Grass",
     )
+    quality: Common,
 )
diff --git a/assets/common/items/grasses/medium.ron b/assets/common/items/grasses/medium.ron
index 20220d15c5..b23f12000a 100644
--- a/assets/common/items/grasses/medium.ron
+++ b/assets/common/items/grasses/medium.ron
@@ -4,4 +4,5 @@ ItemDef(
     kind: Ingredient(
         kind: "Grass",
     )
+    quality: Common,
 )
diff --git a/assets/common/items/grasses/short.ron b/assets/common/items/grasses/short.ron
index 2e50374e7b..57b8392519 100644
--- a/assets/common/items/grasses/short.ron
+++ b/assets/common/items/grasses/short.ron
@@ -4,4 +4,5 @@ ItemDef(
     kind: Ingredient(
         kind: "Grass",
     )
+    quality: Common,
 )
diff --git a/assets/common/items/lantern/black_0.ron b/assets/common/items/lantern/black_0.ron
index 6c1ebe5764..48def45c5f 100644
--- a/assets/common/items/lantern/black_0.ron
+++ b/assets/common/items/lantern/black_0.ron
@@ -9,4 +9,5 @@ ItemDef(
             flicker_thousandths: 150,
         ),
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/lantern/blue_0.ron b/assets/common/items/lantern/blue_0.ron
index 362216e7c9..0d5c71ae74 100644
--- a/assets/common/items/lantern/blue_0.ron
+++ b/assets/common/items/lantern/blue_0.ron
@@ -9,4 +9,5 @@ ItemDef(
             flicker_thousandths: 250,
         ),
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/lantern/green_0.ron b/assets/common/items/lantern/green_0.ron
index ce0e3f400c..7eb9ece282 100644
--- a/assets/common/items/lantern/green_0.ron
+++ b/assets/common/items/lantern/green_0.ron
@@ -9,4 +9,5 @@ ItemDef(
             flicker_thousandths: 250,
         ),
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/lantern/red_0.ron b/assets/common/items/lantern/red_0.ron
index 0acd7af095..0cb720adbd 100644
--- a/assets/common/items/lantern/red_0.ron
+++ b/assets/common/items/lantern/red_0.ron
@@ -9,4 +9,5 @@ ItemDef(
             flicker_thousandths: 250,
         ),
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/npc_armor/back/dungeon_purple-0.ron b/assets/common/items/npc_armor/back/dungeon_purple-0.ron
index 2e42166bc0..310286b04b 100644
--- a/assets/common/items/npc_armor/back/dungeon_purple-0.ron
+++ b/assets/common/items/npc_armor/back/dungeon_purple-0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Back("DungPurp0"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/belt/cultist_belt.ron b/assets/common/items/npc_armor/belt/cultist_belt.ron
index d2551046de..69a81186be 100644
--- a/assets/common/items/npc_armor/belt/cultist_belt.ron
+++ b/assets/common/items/npc_armor/belt/cultist_belt.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Belt("Cultist"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/cultist_chest_purple.ron b/assets/common/items/npc_armor/chest/cultist_chest_purple.ron
index 2f36b0f929..475fd3eb82 100644
--- a/assets/common/items/npc_armor/chest/cultist_chest_purple.ron
+++ b/assets/common/items/npc_armor/chest/cultist_chest_purple.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("CultistPurple"),
             stats: (
-                protection: Normal(5.0),
-            ),
+                protection: Normal(5.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/plate_green_0.ron b/assets/common/items/npc_armor/chest/plate_green_0.ron
new file mode 100644
index 0000000000..6218a465dd
--- /dev/null
+++ b/assets/common/items/npc_armor/chest/plate_green_0.ron
@@ -0,0 +1,12 @@
+ItemDef(
+    name: "Iron Chestplate",
+    description: "A chestplate forged from iron.",
+    kind: Armor(
+        (
+            kind: Chest("PlateGreen0"),
+            stats: (
+                protection: Normal(5.0)),            
+        )
+    ),
+    quality: Low,
+)
diff --git a/assets/common/items/npc_armor/chest/plate_red_0.ron b/assets/common/items/npc_armor/chest/plate_red_0.ron
new file mode 100644
index 0000000000..35ed8aeecf
--- /dev/null
+++ b/assets/common/items/npc_armor/chest/plate_red_0.ron
@@ -0,0 +1,12 @@
+ItemDef(
+    name: "Iron Chestplate",
+    description: "A chestplate forged from iron.",
+    kind: Armor(
+        (
+            kind: Chest("PlateRed0"),
+            stats: (
+                protection: Normal(5.0)),            
+        )
+    ),
+    quality: Low,
+)
diff --git a/assets/common/items/npc_armor/chest/worker_green_0.ron b/assets/common/items/npc_armor/chest/worker_green_0.ron
index 666424cabb..e599e76361 100644
--- a/assets/common/items/npc_armor/chest/worker_green_0.ron
+++ b/assets/common/items/npc_armor/chest/worker_green_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerGreen0"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/worker_green_1.ron b/assets/common/items/npc_armor/chest/worker_green_1.ron
index 46e7505659..7dc2529f59 100644
--- a/assets/common/items/npc_armor/chest/worker_green_1.ron
+++ b/assets/common/items/npc_armor/chest/worker_green_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerGreen1"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/worker_orange_0.ron b/assets/common/items/npc_armor/chest/worker_orange_0.ron
index 5a8ba5503b..a6d930ebab 100644
--- a/assets/common/items/npc_armor/chest/worker_orange_0.ron
+++ b/assets/common/items/npc_armor/chest/worker_orange_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerOrange0"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/worker_orange_1.ron b/assets/common/items/npc_armor/chest/worker_orange_1.ron
index 542f760c7a..3974902a17 100644
--- a/assets/common/items/npc_armor/chest/worker_orange_1.ron
+++ b/assets/common/items/npc_armor/chest/worker_orange_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerOrange1"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/worker_purple_0.ron b/assets/common/items/npc_armor/chest/worker_purple_0.ron
index a23bf63a62..454eb832e1 100644
--- a/assets/common/items/npc_armor/chest/worker_purple_0.ron
+++ b/assets/common/items/npc_armor/chest/worker_purple_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerPurple0"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/worker_purple_1.ron b/assets/common/items/npc_armor/chest/worker_purple_1.ron
index 6b121afa30..b33ef2caf1 100644
--- a/assets/common/items/npc_armor/chest/worker_purple_1.ron
+++ b/assets/common/items/npc_armor/chest/worker_purple_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerPurple1"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/worker_red_0.ron b/assets/common/items/npc_armor/chest/worker_red_0.ron
index 2b8cb069f8..da06489316 100644
--- a/assets/common/items/npc_armor/chest/worker_red_0.ron
+++ b/assets/common/items/npc_armor/chest/worker_red_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerRed0"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/worker_red_1.ron b/assets/common/items/npc_armor/chest/worker_red_1.ron
index 6d2bdf8946..78b7b42045 100644
--- a/assets/common/items/npc_armor/chest/worker_red_1.ron
+++ b/assets/common/items/npc_armor/chest/worker_red_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerRed1"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/worker_yellow_0.ron b/assets/common/items/npc_armor/chest/worker_yellow_0.ron
index 40f4680c80..a5dc3fddbb 100644
--- a/assets/common/items/npc_armor/chest/worker_yellow_0.ron
+++ b/assets/common/items/npc_armor/chest/worker_yellow_0.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerYellow0"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/chest/worker_yellow_1.ron b/assets/common/items/npc_armor/chest/worker_yellow_1.ron
index 0374da4c2e..8976176dda 100644
--- a/assets/common/items/npc_armor/chest/worker_yellow_1.ron
+++ b/assets/common/items/npc_armor/chest/worker_yellow_1.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Chest("WorkerYellow1"),
             stats: (
-                protection: Normal(80.0),
-            ),
+                protection: Normal(80.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/foot/cultist_boots.ron b/assets/common/items/npc_armor/foot/cultist_boots.ron
index 81d2e15b8c..e2cdcc8ecf 100644
--- a/assets/common/items/npc_armor/foot/cultist_boots.ron
+++ b/assets/common/items/npc_armor/foot/cultist_boots.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Cultist"),
             stats: (
-                protection: Normal(1.0),
-            ),
+                protection: Normal(1.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/hand/cultist_hands_purple.ron b/assets/common/items/npc_armor/hand/cultist_hands_purple.ron
index 22abb63e5f..4fdcf555c0 100644
--- a/assets/common/items/npc_armor/hand/cultist_hands_purple.ron
+++ b/assets/common/items/npc_armor/hand/cultist_hands_purple.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Hand("CultistPurple"),
             stats: (
-                protection: Normal(2.0),
-            ),
+                protection: Normal(2.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/pants/cultist_legs_purple.ron b/assets/common/items/npc_armor/pants/cultist_legs_purple.ron
index d8f377089f..1a10bbe4e0 100644
--- a/assets/common/items/npc_armor/pants/cultist_legs_purple.ron
+++ b/assets/common/items/npc_armor/pants/cultist_legs_purple.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Pants("CultistPurple"),
             stats: (
-                protection: Normal(10.0),
-            ),
+                protection: Normal(10.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_armor/pants/plate_green_0.ron b/assets/common/items/npc_armor/pants/plate_green_0.ron
new file mode 100644
index 0000000000..a5853d21a9
--- /dev/null
+++ b/assets/common/items/npc_armor/pants/plate_green_0.ron
@@ -0,0 +1,12 @@
+ItemDef(
+    name: "Iron Legguards",
+    description: "Greaves forged from iron.",
+    kind: Armor(
+        (
+            kind: Pants("PlateGreen0"),
+            stats: (
+                protection: Normal(10.0)),            
+        )
+    ),
+    quality: Low,
+)
diff --git a/assets/common/items/npc_armor/pants/plate_red_0.ron b/assets/common/items/npc_armor/pants/plate_red_0.ron
new file mode 100644
index 0000000000..6b86f92c7f
--- /dev/null
+++ b/assets/common/items/npc_armor/pants/plate_red_0.ron
@@ -0,0 +1,12 @@
+ItemDef(
+    name: "Iron Legguards",
+    description: "Greaves forged from iron.",
+    kind: Armor(
+        (
+            kind: Pants("PlateRed0"),
+            stats: (
+                protection: Normal(10.0)),            
+        )
+    ),
+    quality: Low,
+)
diff --git a/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron b/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron
index 9fa067af13..2d1b71ec11 100644
--- a/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron
+++ b/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Shoulder("CultistPurple"),
             stats: (
-                protection: Normal(5.0),
-            ),
+                protection: Normal(5.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/axe/malachite_axe-0.ron b/assets/common/items/npc_weapons/axe/malachite_axe-0.ron
index fd7e962871..88e13ce50b 100644
--- a/assets/common/items/npc_weapons/axe/malachite_axe-0.ron
+++ b/assets/common/items/npc_weapons/axe/malachite_axe-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("MalachiteAxe0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/axe/starter_axe.ron b/assets/common/items/npc_weapons/axe/starter_axe.ron
index f7428f4063..7317526398 100644
--- a/assets/common/items/npc_weapons/axe/starter_axe.ron
+++ b/assets/common/items/npc_weapons/axe/starter_axe.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("BasicAxe"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/bow/horn_longbow-0.ron b/assets/common/items/npc_weapons/bow/horn_longbow-0.ron
index b8658520e7..5b219d4328 100644
--- a/assets/common/items/npc_weapons/bow/horn_longbow-0.ron
+++ b/assets/common/items/npc_weapons/bow/horn_longbow-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Bow("HornLongbow0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.5,
-            ),
+                power: 0.5),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/dagger/starter_dagger.ron b/assets/common/items/npc_weapons/dagger/starter_dagger.ron
index 328a6febbf..9fd1fed023 100644
--- a/assets/common/items/npc_weapons/dagger/starter_dagger.ron
+++ b/assets/common/items/npc_weapons/dagger/starter_dagger.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Dagger("BasicDagger"),    
             stats: (
                 equip_time_millis: 300,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/empty/empty.ron b/assets/common/items/npc_weapons/empty/empty.ron
index 014484202c..60b6c3b931 100644
--- a/assets/common/items/npc_weapons/empty/empty.ron
+++ b/assets/common/items/npc_weapons/empty/empty.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Empty,
             stats: (
                 equip_time_millis: 200,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron b/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron
index d8440b8cf0..b7b7a53a40 100644
--- a/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron
+++ b/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("CultPurp0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.5,
-            ),
+                power: 0.5),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/hammer/starter_hammer.ron b/assets/common/items/npc_weapons/hammer/starter_hammer.ron
index 54042edde4..b25fb22d77 100644
--- a/assets/common/items/npc_weapons/hammer/starter_hammer.ron
+++ b/assets/common/items/npc_weapons/hammer/starter_hammer.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("BasicHammer"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/npcweapon/stone_golems_fist.ron b/assets/common/items/npc_weapons/npcweapon/stone_golems_fist.ron
index ad00cb189c..92c744ca3d 100644
--- a/assets/common/items/npc_weapons/npcweapon/stone_golems_fist.ron
+++ b/assets/common/items/npc_weapons/npcweapon/stone_golems_fist.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: NpcWeapon("StoneGolemsFist"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/shield/shield_1.ron b/assets/common/items/npc_weapons/shield/shield_1.ron
index bc977f66ee..78e3bdb8bf 100644
--- a/assets/common/items/npc_weapons/shield/shield_1.ron
+++ b/assets/common/items/npc_weapons/shield/shield_1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Shield("BasicShield"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/staff/bone_staff.ron b/assets/common/items/npc_weapons/staff/bone_staff.ron
index b787eba61c..c2b2cb1f6b 100644
--- a/assets/common/items/npc_weapons/staff/bone_staff.ron
+++ b/assets/common/items/npc_weapons/staff/bone_staff.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Staff("BoneStaff"),    
             stats: (
                 equip_time_millis: 300,
-                power: 0.8,
-            ),
+                power: 0.8),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/staff/cultist_staff.ron b/assets/common/items/npc_weapons/staff/cultist_staff.ron
index d31920b860..88defa70a1 100644
--- a/assets/common/items/npc_weapons/staff/cultist_staff.ron
+++ b/assets/common/items/npc_weapons/staff/cultist_staff.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Staff("CultistStaff"),    
             stats: (
                 equip_time_millis: 300,
-                power: 0.8,
-            ),
+                power: 0.8),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron b/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron
index d388d15bdb..cef57a8fa8 100644
--- a/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron
+++ b/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("CultPurp0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.5,
-            ),
+                power: 0.5),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron b/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron
index 624d4b963d..34fc36da5b 100644
--- a/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron
+++ b/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("CultPurp0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.0,
-            ),
+                power: 1.0),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/sword/starter_sword.ron b/assets/common/items/npc_weapons/sword/starter_sword.ron
index cb776f9c31..1d08a880a5 100644
--- a/assets/common/items/npc_weapons/sword/starter_sword.ron
+++ b/assets/common/items/npc_weapons/sword/starter_sword.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("BasicSword"),    
             stats: (
                 equip_time_millis: 300,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron
index 7c9a956393..7be7c56e86 100644
--- a/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron
+++ b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("Zweihander0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.75,
-            ),
+                power: 0.75),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/tool/broom.ron b/assets/common/items/npc_weapons/tool/broom.ron
index bbde918a3b..ee8d516970 100644
--- a/assets/common/items/npc_weapons/tool/broom.ron
+++ b/assets/common/items/npc_weapons/tool/broom.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Broom"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.5,
-            ),
+                power: 1.5),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/tool/fishing_rod.ron b/assets/common/items/npc_weapons/tool/fishing_rod.ron
index 60da887594..6fd61b5b14 100644
--- a/assets/common/items/npc_weapons/tool/fishing_rod.ron
+++ b/assets/common/items/npc_weapons/tool/fishing_rod.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("FishingRod0"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.5,
-            ),
+                power: 1.5),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/tool/hoe.ron b/assets/common/items/npc_weapons/tool/hoe.ron
index b115d8c2c4..c2d50560bf 100644
--- a/assets/common/items/npc_weapons/tool/hoe.ron
+++ b/assets/common/items/npc_weapons/tool/hoe.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Hoe0"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.50,
-            ),
+                power: 1.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/tool/pickaxe.ron b/assets/common/items/npc_weapons/tool/pickaxe.ron
index 1d2a64e27b..7328d16f28 100644
--- a/assets/common/items/npc_weapons/tool/pickaxe.ron
+++ b/assets/common/items/npc_weapons/tool/pickaxe.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Pickaxe0"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.50,
-            ),
+                power: 1.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/tool/pitchfork.ron b/assets/common/items/npc_weapons/tool/pitchfork.ron
index 19720a4d1c..3182e48afd 100644
--- a/assets/common/items/npc_weapons/tool/pitchfork.ron
+++ b/assets/common/items/npc_weapons/tool/pitchfork.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Pitchfork"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.50,
-            ),
+                power: 1.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/tool/rake.ron b/assets/common/items/npc_weapons/tool/rake.ron
index f4686d9f8b..46a42bf373 100644
--- a/assets/common/items/npc_weapons/tool/rake.ron
+++ b/assets/common/items/npc_weapons/tool/rake.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Rake"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.50,
-            ),
+                power: 1.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/tool/shovel-0.ron b/assets/common/items/npc_weapons/tool/shovel-0.ron
index a7cfbe2b8b..87d3c665db 100644
--- a/assets/common/items/npc_weapons/tool/shovel-0.ron
+++ b/assets/common/items/npc_weapons/tool/shovel-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Shovel0"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.50,
-            ),
+                power: 1.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/npc_weapons/tool/shovel-1.ron b/assets/common/items/npc_weapons/tool/shovel-1.ron
index 809de7523e..d6e34e0b6b 100644
--- a/assets/common/items/npc_weapons/tool/shovel-1.ron
+++ b/assets/common/items/npc_weapons/tool/shovel-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Shovel1"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.50,
-            ),
+                power: 1.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/ore/velorite.ron b/assets/common/items/ore/velorite.ron
index 0729ce28a2..f0e572f32a 100644
--- a/assets/common/items/ore/velorite.ron
+++ b/assets/common/items/ore/velorite.ron
@@ -1,8 +1,9 @@
 ItemDef(
     name: "Velorite",
-    description: "Increases Exp by 20\n\nJust a slight touch makes you feel the knowledge of ancient times\n\n<Right-Click to use>",
+    description: "Increases Exp by 20\n\nJust a slight touch makes you feel the knowledge of ancient times",
     kind: Consumable(
         kind: "Velorite",
         effect: Xp(20),
-    ),    
+    ),  
+    quality: High,  
 )
diff --git a/assets/common/items/ore/veloritefrag.ron b/assets/common/items/ore/veloritefrag.ron
index cd7037146c..8c8199b00d 100644
--- a/assets/common/items/ore/veloritefrag.ron
+++ b/assets/common/items/ore/veloritefrag.ron
@@ -1,8 +1,9 @@
 ItemDef(
     name: "Velorite Fragment",
-    description: "Increases Exp by 10\n\nSmall runes sparkle on its surface\n\n<Right-Click to use>",
+    description: "Increases Exp by 10\n\nSmall runes sparkle on its surface",
     kind: Consumable(
         kind: "VeloriteFrag",
         effect: Xp(10),
-    ),    
+    ),
+    quality: Moderate,     
 )
diff --git a/assets/common/items/testing/test_boots.ron b/assets/common/items/testing/test_boots.ron
index 87882f4621..f30749f977 100644
--- a/assets/common/items/testing/test_boots.ron
+++ b/assets/common/items/testing/test_boots.ron
@@ -5,8 +5,8 @@ ItemDef(
         (
             kind: Foot("Dark"),
             stats: (
-                protection: Normal(0.0),
-            ),
+                protection: Normal(0.0)),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/utility/bomb.ron b/assets/common/items/utility/bomb.ron
index 7be55a10d6..4d1e23107f 100644
--- a/assets/common/items/utility/bomb.ron
+++ b/assets/common/items/utility/bomb.ron
@@ -1,7 +1,8 @@
 ItemDef(
     name: "Bomb",
-    description: "Boom!\n\n<Right-Click to use>",
+    description: "Boom!",
     kind: Throwable(
         kind: Bomb,
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/utility/bomb_pile.ron b/assets/common/items/utility/bomb_pile.ron
index d41c7e41ae..66dc038417 100644
--- a/assets/common/items/utility/bomb_pile.ron
+++ b/assets/common/items/utility/bomb_pile.ron
@@ -1,8 +1,9 @@
 ItemDef(
     name: "Bomb",
-    description: "Boom!\n\n<Right-Click to use>",
+    description: "Boom!",
     kind: Throwable(
         kind: Bomb,
 		amount: 10,
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/utility/collar.ron b/assets/common/items/utility/collar.ron
index b13f2bd8fd..a7c49c8331 100644
--- a/assets/common/items/utility/collar.ron
+++ b/assets/common/items/utility/collar.ron
@@ -1,8 +1,9 @@
 ItemDef(
     name: "Collar",
-    description: "Tames wild animals within 5 blocks\n\n<Right-Click to use>",
+    description: "Tames wild animals within 5 blocks",
     kind: Utility(
         kind: Collar,
     ),
     amount: 1,
+    quality: Moderate,
 )
diff --git a/assets/common/items/utility/firework_blue.ron b/assets/common/items/utility/firework_blue.ron
index a475f494d9..3087bc3891 100644
--- a/assets/common/items/utility/firework_blue.ron
+++ b/assets/common/items/utility/firework_blue.ron
@@ -1,7 +1,8 @@
 ItemDef(
     name: "Firework Blue",
-    description: "Recommended clearance: 42 chonks\n\n<Right-Click to use>",
+    description: "Recommended clearance: 42 chonks",
     kind: Throwable(
         kind: Firework(Blue),
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/utility/firework_green.ron b/assets/common/items/utility/firework_green.ron
index b42b121140..72aabc2981 100644
--- a/assets/common/items/utility/firework_green.ron
+++ b/assets/common/items/utility/firework_green.ron
@@ -1,7 +1,8 @@
 ItemDef(
     name: "Firework Green",
-    description: "Watch out for trees.\n\n<Right-Click to use>",
+    description: "Watch out for trees.",
     kind: Throwable(
         kind: Firework(Green),
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/utility/firework_purple.ron b/assets/common/items/utility/firework_purple.ron
index f4e9617558..357cf5eb8b 100644
--- a/assets/common/items/utility/firework_purple.ron
+++ b/assets/common/items/utility/firework_purple.ron
@@ -1,7 +1,8 @@
 ItemDef(
     name: "Firework Purple",
-    description: "Cult favourite.\n\n<Right-Click to use>",
+    description: "Cult favourite.",
     kind: Throwable(
         kind: Firework(Purple),
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/utility/firework_red.ron b/assets/common/items/utility/firework_red.ron
index 5617cd480e..004967be14 100644
--- a/assets/common/items/utility/firework_red.ron
+++ b/assets/common/items/utility/firework_red.ron
@@ -1,7 +1,8 @@
 ItemDef(
     name: "Firework Red",
-    description: "Humans sometimes use these\nas a flare in a pinch.\n\n<Right-Click to use>",
+    description: "Humans sometimes use these\nas a flare in a pinch.",
     kind: Throwable(
         kind: Firework(Red),
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/utility/firework_yellow.ron b/assets/common/items/utility/firework_yellow.ron
index 8fe73ec1a6..b0c63deb8d 100644
--- a/assets/common/items/utility/firework_yellow.ron
+++ b/assets/common/items/utility/firework_yellow.ron
@@ -1,7 +1,8 @@
 ItemDef(
     name: "Firework Yellow",
-    description: "The Great Dr. passed away after\ntesting this contraption indoors.\n\n<Right-Click to use>",
+    description: "The Great Dr. passed away after\ntesting this contraption indoors.",
     kind: Throwable(
         kind: Firework(Yellow),
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/utility/training_dummy.ron b/assets/common/items/utility/training_dummy.ron
index d321ffadd1..d6c003df34 100644
--- a/assets/common/items/utility/training_dummy.ron
+++ b/assets/common/items/utility/training_dummy.ron
@@ -1,7 +1,8 @@
 ItemDef(
     name: "Training Dummy",
-    description: "His name is William. Fire at will.\n\n<Right-Click to use>",
+    description: "His name is William. Fire at will.",
     kind: Throwable(
         kind: TrainingDummy,
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/bloodsteel_axe-0.ron b/assets/common/items/weapons/axe/bloodsteel_axe-0.ron
index 08f06e131c..3ccec2499f 100644
--- a/assets/common/items/weapons/axe/bloodsteel_axe-0.ron
+++ b/assets/common/items/weapons/axe/bloodsteel_axe-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("BloodsteelAxe0"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.60,
-            ),
+                power: 1.60,                
+            ),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/weapons/axe/bloodsteel_axe-1.ron b/assets/common/items/weapons/axe/bloodsteel_axe-1.ron
index 9b2285835e..b26ff77a4e 100644
--- a/assets/common/items/weapons/axe/bloodsteel_axe-1.ron
+++ b/assets/common/items/weapons/axe/bloodsteel_axe-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("BloodsteelAxe1"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.60,
-            ),
+                power: 1.60),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/weapons/axe/bloodsteel_axe-2.ron b/assets/common/items/weapons/axe/bloodsteel_axe-2.ron
index f346ddc1ef..c922fabbf2 100644
--- a/assets/common/items/weapons/axe/bloodsteel_axe-2.ron
+++ b/assets/common/items/weapons/axe/bloodsteel_axe-2.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("BloodsteelAxe2"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.60,
-            ),
+                power: 1.60),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/weapons/axe/bronze_axe-0.ron b/assets/common/items/weapons/axe/bronze_axe-0.ron
index 9ca89e2216..b13836e9c3 100644
--- a/assets/common/items/weapons/axe/bronze_axe-0.ron
+++ b/assets/common/items/weapons/axe/bronze_axe-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("BronzeAxe0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/bronze_axe-1.ron b/assets/common/items/weapons/axe/bronze_axe-1.ron
index b31cb42ca5..19af9825ae 100644
--- a/assets/common/items/weapons/axe/bronze_axe-1.ron
+++ b/assets/common/items/weapons/axe/bronze_axe-1.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("BronzeAxe1"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/cobalt_axe-0.ron b/assets/common/items/weapons/axe/cobalt_axe-0.ron
index 996b4aef8b..99359ccffe 100644
--- a/assets/common/items/weapons/axe/cobalt_axe-0.ron
+++ b/assets/common/items/weapons/axe/cobalt_axe-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("CobaltAxe0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.80,
-            ),
+                power: 1.80),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-0.ron b/assets/common/items/weapons/axe/iron_axe-0.ron
index ecb0811c41..3c6bc3073f 100644
--- a/assets/common/items/weapons/axe/iron_axe-0.ron
+++ b/assets/common/items/weapons/axe/iron_axe-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-1.ron b/assets/common/items/weapons/axe/iron_axe-1.ron
index d67a9f66fa..de987b2364 100644
--- a/assets/common/items/weapons/axe/iron_axe-1.ron
+++ b/assets/common/items/weapons/axe/iron_axe-1.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe1"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-2.ron b/assets/common/items/weapons/axe/iron_axe-2.ron
index fe0c94ebff..9702cc63d7 100644
--- a/assets/common/items/weapons/axe/iron_axe-2.ron
+++ b/assets/common/items/weapons/axe/iron_axe-2.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe2"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-3.ron b/assets/common/items/weapons/axe/iron_axe-3.ron
index 9d0aa6fda7..7d4103a3d4 100644
--- a/assets/common/items/weapons/axe/iron_axe-3.ron
+++ b/assets/common/items/weapons/axe/iron_axe-3.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe3"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-4.ron b/assets/common/items/weapons/axe/iron_axe-4.ron
index 56f40d603b..929a1b2eca 100644
--- a/assets/common/items/weapons/axe/iron_axe-4.ron
+++ b/assets/common/items/weapons/axe/iron_axe-4.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe4"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-5.ron b/assets/common/items/weapons/axe/iron_axe-5.ron
index 7e6ea471d2..27817a6c6b 100644
--- a/assets/common/items/weapons/axe/iron_axe-5.ron
+++ b/assets/common/items/weapons/axe/iron_axe-5.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe5"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-6.ron b/assets/common/items/weapons/axe/iron_axe-6.ron
index c36c338e8f..e3b8d1a8d8 100644
--- a/assets/common/items/weapons/axe/iron_axe-6.ron
+++ b/assets/common/items/weapons/axe/iron_axe-6.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe6"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-7.ron b/assets/common/items/weapons/axe/iron_axe-7.ron
index abc921226d..6af36f32c3 100644
--- a/assets/common/items/weapons/axe/iron_axe-7.ron
+++ b/assets/common/items/weapons/axe/iron_axe-7.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe7"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-8.ron b/assets/common/items/weapons/axe/iron_axe-8.ron
index bb693c09f7..65cc4a25dc 100644
--- a/assets/common/items/weapons/axe/iron_axe-8.ron
+++ b/assets/common/items/weapons/axe/iron_axe-8.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe8"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/iron_axe-9.ron b/assets/common/items/weapons/axe/iron_axe-9.ron
index 51904f5fb3..d63c654f40 100644
--- a/assets/common/items/weapons/axe/iron_axe-9.ron
+++ b/assets/common/items/weapons/axe/iron_axe-9.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("IronAxe9"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/malachite_axe-0.ron b/assets/common/items/weapons/axe/malachite_axe-0.ron
index 5a38d7dd22..82857f2057 100644
--- a/assets/common/items/weapons/axe/malachite_axe-0.ron
+++ b/assets/common/items/weapons/axe/malachite_axe-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("MalachiteAxe0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 2.00,
-            ),
+                power: 2.00),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/weapons/axe/orc_axe-0.ron b/assets/common/items/weapons/axe/orc_axe-0.ron
index 975ee1f72c..d3c2b4c5e0 100644
--- a/assets/common/items/weapons/axe/orc_axe-0.ron
+++ b/assets/common/items/weapons/axe/orc_axe-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("OrcAxe0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.60,
-            ),
+                power: 0.60),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/axe/starter_axe.ron b/assets/common/items/weapons/axe/starter_axe.ron
index f7428f4063..7317526398 100644
--- a/assets/common/items/weapons/axe/starter_axe.ron
+++ b/assets/common/items/weapons/axe/starter_axe.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("BasicAxe"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/axe/steel_axe-0.ron b/assets/common/items/weapons/axe/steel_axe-0.ron
index 48e574052d..fb31e404ac 100644
--- a/assets/common/items/weapons/axe/steel_axe-0.ron
+++ b/assets/common/items/weapons/axe/steel_axe-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("SteelAxe0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/steel_axe-1.ron b/assets/common/items/weapons/axe/steel_axe-1.ron
index ea3146ea6f..20ae59512f 100644
--- a/assets/common/items/weapons/axe/steel_axe-1.ron
+++ b/assets/common/items/weapons/axe/steel_axe-1.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("SteelAxe1"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/steel_axe-2.ron b/assets/common/items/weapons/axe/steel_axe-2.ron
index e2a900774f..0477c56799 100644
--- a/assets/common/items/weapons/axe/steel_axe-2.ron
+++ b/assets/common/items/weapons/axe/steel_axe-2.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("SteelAxe2"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/steel_axe-3.ron b/assets/common/items/weapons/axe/steel_axe-3.ron
index ed9a056a27..198544ad6d 100644
--- a/assets/common/items/weapons/axe/steel_axe-3.ron
+++ b/assets/common/items/weapons/axe/steel_axe-3.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("SteelAxe3"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/steel_axe-4.ron b/assets/common/items/weapons/axe/steel_axe-4.ron
index 7c4217d2bf..07e9745261 100644
--- a/assets/common/items/weapons/axe/steel_axe-4.ron
+++ b/assets/common/items/weapons/axe/steel_axe-4.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("SteelAxe4"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/steel_axe-5.ron b/assets/common/items/weapons/axe/steel_axe-5.ron
index 6700291fc1..5f07bf3d77 100644
--- a/assets/common/items/weapons/axe/steel_axe-5.ron
+++ b/assets/common/items/weapons/axe/steel_axe-5.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("SteelAxe5"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/steel_axe-6.ron b/assets/common/items/weapons/axe/steel_axe-6.ron
index f5f0ebc2e1..047f3c1747 100644
--- a/assets/common/items/weapons/axe/steel_axe-6.ron
+++ b/assets/common/items/weapons/axe/steel_axe-6.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Axe("SteelAxe6"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/axe/worn_iron_axe-0.ron b/assets/common/items/weapons/axe/worn_iron_axe-0.ron
index 54b43f3a3d..f75a5d1ca4 100644
--- a/assets/common/items/weapons/axe/worn_iron_axe-0.ron
+++ b/assets/common/items/weapons/axe/worn_iron_axe-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("WornIronAxe0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.80,
-            ),
+                power: 0.80),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/axe/worn_iron_axe-1.ron b/assets/common/items/weapons/axe/worn_iron_axe-1.ron
index 0fd7bbeb5e..311a735e80 100644
--- a/assets/common/items/weapons/axe/worn_iron_axe-1.ron
+++ b/assets/common/items/weapons/axe/worn_iron_axe-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("WornIronAxe1"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.80,
-            ),
+                power: 0.80),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/axe/worn_iron_axe-2.ron b/assets/common/items/weapons/axe/worn_iron_axe-2.ron
index 63f1afff7f..58298f8430 100644
--- a/assets/common/items/weapons/axe/worn_iron_axe-2.ron
+++ b/assets/common/items/weapons/axe/worn_iron_axe-2.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("WornIronAxe2"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.80,
-            ),
+                power: 0.80),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/axe/worn_iron_axe-3.ron b/assets/common/items/weapons/axe/worn_iron_axe-3.ron
index 68917beecb..2a8f052d76 100644
--- a/assets/common/items/weapons/axe/worn_iron_axe-3.ron
+++ b/assets/common/items/weapons/axe/worn_iron_axe-3.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("WornIronAxe3"),
             stats: (
                 equip_time_millis: 400,
-                power: 0.80,
-            ),
+                power: 0.80),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/axe/worn_iron_axe-4.ron b/assets/common/items/weapons/axe/worn_iron_axe-4.ron
index 75b9f07d8d..a021329f1f 100644
--- a/assets/common/items/weapons/axe/worn_iron_axe-4.ron
+++ b/assets/common/items/weapons/axe/worn_iron_axe-4.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Axe("WornIronAxe4"),
             stats: (
                 equip_time_millis: 400,
-                power: 0.80,
-            ),
+                power: 0.80),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/bow/horn_longbow-0.ron b/assets/common/items/weapons/bow/horn_longbow-0.ron
index adf9010757..ecd79e9918 100644
--- a/assets/common/items/weapons/bow/horn_longbow-0.ron
+++ b/assets/common/items/weapons/bow/horn_longbow-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Bow("HornLongbow0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.50,
-            ),
+                power: 1.50
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/bow/iron_longbow-0.ron b/assets/common/items/weapons/bow/iron_longbow-0.ron
index 995cc14451..12d04eb275 100644
--- a/assets/common/items/weapons/bow/iron_longbow-0.ron
+++ b/assets/common/items/weapons/bow/iron_longbow-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Bow("IronLongbow0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.75,
-            ),
+                power: 1.75
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/bow/leafy_longbow-0.ron b/assets/common/items/weapons/bow/leafy_longbow-0.ron
index 72b1a45c72..010fa16bc0 100644
--- a/assets/common/items/weapons/bow/leafy_longbow-0.ron
+++ b/assets/common/items/weapons/bow/leafy_longbow-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Bow("LeafyLongbow0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.25,
-            ),
+                power: 1.25
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/bow/leafy_shortbow-0.ron b/assets/common/items/weapons/bow/leafy_shortbow-0.ron
index eee19266c5..95467dd1e8 100644
--- a/assets/common/items/weapons/bow/leafy_shortbow-0.ron
+++ b/assets/common/items/weapons/bow/leafy_shortbow-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Bow("LeafyShortbow0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/bow/nature_ore_longbow-0.ron b/assets/common/items/weapons/bow/nature_ore_longbow-0.ron
index 6b0a25c8f4..8f15756a45 100644
--- a/assets/common/items/weapons/bow/nature_ore_longbow-0.ron
+++ b/assets/common/items/weapons/bow/nature_ore_longbow-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Bow("NatureOreLongbow"),    
             stats: (
                 equip_time_millis: 400,
-                power: 2.00,
-            ),
+                power: 2.00),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/weapons/bow/rare_longbow.ron b/assets/common/items/weapons/bow/rare_longbow.ron
index 4b6a308bcd..4e195e495e 100644
--- a/assets/common/items/weapons/bow/rare_longbow.ron
+++ b/assets/common/items/weapons/bow/rare_longbow.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Bow("RareLongbow"),    
             stats: (
                 equip_time_millis: 400,
-                power: 2.00,
-            ),
+                power: 2.00),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/weapons/bow/starter_bow.ron b/assets/common/items/weapons/bow/starter_bow.ron
index 387a8ac98f..64535186fa 100644
--- a/assets/common/items/weapons/bow/starter_bow.ron
+++ b/assets/common/items/weapons/bow/starter_bow.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Bow("ShortBow0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/bow/wood_longbow-0.ron b/assets/common/items/weapons/bow/wood_longbow-0.ron
index 8f1bca9695..8993a763aa 100644
--- a/assets/common/items/weapons/bow/wood_longbow-0.ron
+++ b/assets/common/items/weapons/bow/wood_longbow-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Bow("WoodLongbow0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/bow/wood_longbow-1.ron b/assets/common/items/weapons/bow/wood_longbow-1.ron
index c7e38f0f8f..98ce61eeff 100644
--- a/assets/common/items/weapons/bow/wood_longbow-1.ron
+++ b/assets/common/items/weapons/bow/wood_longbow-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Bow("WoodLongbow1"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/bow/wood_shortbow-0.ron b/assets/common/items/weapons/bow/wood_shortbow-0.ron
index b9b8075264..63db4ba5e9 100644
--- a/assets/common/items/weapons/bow/wood_shortbow-0.ron
+++ b/assets/common/items/weapons/bow/wood_shortbow-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Bow("WoodShortbow0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.8,
-            ),
+                power: 0.8),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/bow/wood_shortbow-1.ron b/assets/common/items/weapons/bow/wood_shortbow-1.ron
index 20c7414a0e..c2e782df33 100644
--- a/assets/common/items/weapons/bow/wood_shortbow-1.ron
+++ b/assets/common/items/weapons/bow/wood_shortbow-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Bow("WoodShortbow1"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.75,
-            ),
+                power: 0.75),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/dagger/starter_dagger.ron b/assets/common/items/weapons/dagger/starter_dagger.ron
index 328a6febbf..a6db333a31 100644
--- a/assets/common/items/weapons/dagger/starter_dagger.ron
+++ b/assets/common/items/weapons/dagger/starter_dagger.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Dagger("BasicDagger"),    
             stats: (
                 equip_time_millis: 300,
-                power: 1.00,
-            ),
+                power: 1.00
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/empty/empty.ron b/assets/common/items/weapons/empty/empty.ron
index 2885c99ec9..1efe02ad2d 100644
--- a/assets/common/items/weapons/empty/empty.ron
+++ b/assets/common/items/weapons/empty/empty.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Empty,
             stats: (
                 equip_time_millis: 200,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/hammer/bronze_hammer-0.ron b/assets/common/items/weapons/hammer/bronze_hammer-0.ron
index a2a0a7011e..c86546ba29 100644
--- a/assets/common/items/weapons/hammer/bronze_hammer-0.ron
+++ b/assets/common/items/weapons/hammer/bronze_hammer-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("BronzeHammer0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/bronze_hammer-1.ron b/assets/common/items/weapons/hammer/bronze_hammer-1.ron
index d6e31fd4dd..f2f922a4ad 100644
--- a/assets/common/items/weapons/hammer/bronze_hammer-1.ron
+++ b/assets/common/items/weapons/hammer/bronze_hammer-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("BronzeHammer1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/cobalt_hammer-0.ron b/assets/common/items/weapons/hammer/cobalt_hammer-0.ron
index e3a2b5463a..9b3910392a 100644
--- a/assets/common/items/weapons/hammer/cobalt_hammer-0.ron
+++ b/assets/common/items/weapons/hammer/cobalt_hammer-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Hammer("CobaltHammer0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.60,
-            ),
+                power: 1.60
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/hammer/cobalt_hammer-1.ron b/assets/common/items/weapons/hammer/cobalt_hammer-1.ron
index c1b9b05986..66bf8f0b90 100644
--- a/assets/common/items/weapons/hammer/cobalt_hammer-1.ron
+++ b/assets/common/items/weapons/hammer/cobalt_hammer-1.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Hammer("CobaltHammer1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.60,
-            ),
+                power: 1.60
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/hammer/cultist_purp_2h-0.ron b/assets/common/items/weapons/hammer/cultist_purp_2h-0.ron
index b5835ac46c..df28a1e780 100644
--- a/assets/common/items/weapons/hammer/cultist_purp_2h-0.ron
+++ b/assets/common/items/weapons/hammer/cultist_purp_2h-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("CultPurp0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 2.00,
-            ),
+                power: 2.00),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/weapons/hammer/flimsy_hammer.ron b/assets/common/items/weapons/hammer/flimsy_hammer.ron
index 8d4949c923..fa68fd920c 100644
--- a/assets/common/items/weapons/hammer/flimsy_hammer.ron
+++ b/assets/common/items/weapons/hammer/flimsy_hammer.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("FlimsyHammer"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/hammer/hammer_1.ron b/assets/common/items/weapons/hammer/hammer_1.ron
index c88eebee73..519221f04e 100644
--- a/assets/common/items/weapons/hammer/hammer_1.ron
+++ b/assets/common/items/weapons/hammer/hammer_1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("BasicHammer"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.50,
-            ),
+                power: 0.50),
+            quality: Low,
         )
     )
 )
diff --git a/assets/common/items/weapons/hammer/iron_hammer-0.ron b/assets/common/items/weapons/hammer/iron_hammer-0.ron
index af48be808a..f29e31f7f5 100644
--- a/assets/common/items/weapons/hammer/iron_hammer-0.ron
+++ b/assets/common/items/weapons/hammer/iron_hammer-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("IronHammer0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/iron_hammer-1.ron b/assets/common/items/weapons/hammer/iron_hammer-1.ron
index e234f2a984..07daae6660 100644
--- a/assets/common/items/weapons/hammer/iron_hammer-1.ron
+++ b/assets/common/items/weapons/hammer/iron_hammer-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("IronHammer1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/iron_hammer-2.ron b/assets/common/items/weapons/hammer/iron_hammer-2.ron
index 64e280454a..400b4df169 100644
--- a/assets/common/items/weapons/hammer/iron_hammer-2.ron
+++ b/assets/common/items/weapons/hammer/iron_hammer-2.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("IronHammer2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/iron_hammer-3.ron b/assets/common/items/weapons/hammer/iron_hammer-3.ron
index 8f99eb36fa..d58b3e866c 100644
--- a/assets/common/items/weapons/hammer/iron_hammer-3.ron
+++ b/assets/common/items/weapons/hammer/iron_hammer-3.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("IronHammer3"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/iron_hammer-4.ron b/assets/common/items/weapons/hammer/iron_hammer-4.ron
index b2e2219390..505d978b29 100644
--- a/assets/common/items/weapons/hammer/iron_hammer-4.ron
+++ b/assets/common/items/weapons/hammer/iron_hammer-4.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("IronHammer4"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/iron_hammer-5.ron b/assets/common/items/weapons/hammer/iron_hammer-5.ron
index a67241c987..a1f6274d92 100644
--- a/assets/common/items/weapons/hammer/iron_hammer-5.ron
+++ b/assets/common/items/weapons/hammer/iron_hammer-5.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("IronHammer5"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/iron_hammer-6.ron b/assets/common/items/weapons/hammer/iron_hammer-6.ron
index af02ebbae6..ae30c1b5de 100644
--- a/assets/common/items/weapons/hammer/iron_hammer-6.ron
+++ b/assets/common/items/weapons/hammer/iron_hammer-6.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("IronHammer6"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/iron_hammer-7.ron b/assets/common/items/weapons/hammer/iron_hammer-7.ron
index 8c1c8edeb5..be91aa414a 100644
--- a/assets/common/items/weapons/hammer/iron_hammer-7.ron
+++ b/assets/common/items/weapons/hammer/iron_hammer-7.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("IronHammer7"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/iron_hammer-8.ron b/assets/common/items/weapons/hammer/iron_hammer-8.ron
index 482d35a933..7783ba2c58 100644
--- a/assets/common/items/weapons/hammer/iron_hammer-8.ron
+++ b/assets/common/items/weapons/hammer/iron_hammer-8.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("IronHammer8"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/mjolnir.ron b/assets/common/items/weapons/hammer/mjolnir.ron
index 1333142c84..c395d7844b 100644
--- a/assets/common/items/weapons/hammer/mjolnir.ron
+++ b/assets/common/items/weapons/hammer/mjolnir.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("Mjolnir"),    
             stats: (
                 equip_time_millis: 500,
-                power: 2.00,
-            ),
+                power: 2.00),            
         )
     ),
+    quality: Legendary,
 )
diff --git a/assets/common/items/weapons/hammer/ramshead_hammer.ron b/assets/common/items/weapons/hammer/ramshead_hammer.ron
index a16be1350f..9babfd2cf7 100644
--- a/assets/common/items/weapons/hammer/ramshead_hammer.ron
+++ b/assets/common/items/weapons/hammer/ramshead_hammer.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("RamsheadHammer"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.80,
-            ),
+                power: 1.80),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/weapons/hammer/runic_hammer.ron b/assets/common/items/weapons/hammer/runic_hammer.ron
index c95cb04241..ddea70a7f8 100644
--- a/assets/common/items/weapons/hammer/runic_hammer.ron
+++ b/assets/common/items/weapons/hammer/runic_hammer.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("RunicHammer"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.80,
-            ),
+                power: 1.80),            
         )
     ),
+    quality: High,
 )
diff --git a/assets/common/items/weapons/hammer/starter_hammer.ron b/assets/common/items/weapons/hammer/starter_hammer.ron
index 54042edde4..b25fb22d77 100644
--- a/assets/common/items/weapons/hammer/starter_hammer.ron
+++ b/assets/common/items/weapons/hammer/starter_hammer.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("BasicHammer"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/hammer/steel_hammer-0.ron b/assets/common/items/weapons/hammer/steel_hammer-0.ron
index 5cd49bd7c0..1d596fa67a 100644
--- a/assets/common/items/weapons/hammer/steel_hammer-0.ron
+++ b/assets/common/items/weapons/hammer/steel_hammer-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Hammer("SteelHammer0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/hammer/steel_hammer-1.ron b/assets/common/items/weapons/hammer/steel_hammer-1.ron
index 82062f7b1b..db2fea2c0d 100644
--- a/assets/common/items/weapons/hammer/steel_hammer-1.ron
+++ b/assets/common/items/weapons/hammer/steel_hammer-1.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Hammer("SteelHammer1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/hammer/steel_hammer-2.ron b/assets/common/items/weapons/hammer/steel_hammer-2.ron
index 6d6b45f4c1..a3cf18ca39 100644
--- a/assets/common/items/weapons/hammer/steel_hammer-2.ron
+++ b/assets/common/items/weapons/hammer/steel_hammer-2.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Hammer("SteelHammer2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/hammer/steel_hammer-3.ron b/assets/common/items/weapons/hammer/steel_hammer-3.ron
index 4c0d95d944..9191afb7a0 100644
--- a/assets/common/items/weapons/hammer/steel_hammer-3.ron
+++ b/assets/common/items/weapons/hammer/steel_hammer-3.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Hammer("SteelHammer3"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/hammer/steel_hammer-4.ron b/assets/common/items/weapons/hammer/steel_hammer-4.ron
index 2123d9ae0a..e4666d6c2d 100644
--- a/assets/common/items/weapons/hammer/steel_hammer-4.ron
+++ b/assets/common/items/weapons/hammer/steel_hammer-4.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Hammer("SteelHammer4"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/hammer/steel_hammer-5.ron b/assets/common/items/weapons/hammer/steel_hammer-5.ron
index e087d84160..1c038e4db9 100644
--- a/assets/common/items/weapons/hammer/steel_hammer-5.ron
+++ b/assets/common/items/weapons/hammer/steel_hammer-5.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Hammer("SteelHammer5"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/hammer/stone_hammer-0.ron b/assets/common/items/weapons/hammer/stone_hammer-0.ron
index 2504524ca5..4edbc802d3 100644
--- a/assets/common/items/weapons/hammer/stone_hammer-0.ron
+++ b/assets/common/items/weapons/hammer/stone_hammer-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("StoneHammer0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.70,
-            ),
+                power: 0.70),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/hammer/stone_hammer-1.ron b/assets/common/items/weapons/hammer/stone_hammer-1.ron
index 03c97e62ee..8778966364 100644
--- a/assets/common/items/weapons/hammer/stone_hammer-1.ron
+++ b/assets/common/items/weapons/hammer/stone_hammer-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("StoneHammer1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.70,
-            ),
+                power: 0.70),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/hammer/stone_hammer-2.ron b/assets/common/items/weapons/hammer/stone_hammer-2.ron
index 05fbefd3ac..8055a12046 100644
--- a/assets/common/items/weapons/hammer/stone_hammer-2.ron
+++ b/assets/common/items/weapons/hammer/stone_hammer-2.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("StoneHammer2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.70,
-            ),
+                power: 0.70),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/hammer/stone_hammer-3.ron b/assets/common/items/weapons/hammer/stone_hammer-3.ron
index 9e839b04e3..1468350b6f 100644
--- a/assets/common/items/weapons/hammer/stone_hammer-3.ron
+++ b/assets/common/items/weapons/hammer/stone_hammer-3.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("StoneHammer3"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.70,
-            ),
+                power: 0.70),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/hammer/wood_hammer-0.ron b/assets/common/items/weapons/hammer/wood_hammer-0.ron
index 457ec16f3a..48278f01e7 100644
--- a/assets/common/items/weapons/hammer/wood_hammer-0.ron
+++ b/assets/common/items/weapons/hammer/wood_hammer-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("WoodHammer0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.60,
-            ),
+                power: 0.60),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron
index b73d14bed3..fcca8ab77e 100644
--- a/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron
+++ b/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("WornIronHammer0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.85,
-            ),
+                power: 0.85),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron
index 7b5075258d..eee4a94de2 100644
--- a/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron
+++ b/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("WornIronHammer1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.85,
-            ),
+                power: 0.85),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron
index a9acd46b05..7e8a08e78f 100644
--- a/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron
+++ b/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("WornIronHammer2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.85,
-            ),
+                power: 0.85),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron
index 6e94ba5af9..f6a38c3cd0 100644
--- a/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron
+++ b/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Hammer("WornIronHammer3"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.85,
-            ),
+                power: 0.85),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron b/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron
index 4129aec169..37c4a6ae50 100644
--- a/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron
+++ b/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sceptre("SceptreVelorite"),    
             stats: (
                 equip_time_millis: 400,
-                power: 2.0,
-            ),
+                power: 2.0),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/weapons/sceptre/staff_nature.ron b/assets/common/items/weapons/sceptre/staff_nature.ron
index 44c92d574c..c6a81cfc8d 100644
--- a/assets/common/items/weapons/sceptre/staff_nature.ron
+++ b/assets/common/items/weapons/sceptre/staff_nature.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sceptre("Sceptre"),    
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sceptre/starter_sceptre.ron b/assets/common/items/weapons/sceptre/starter_sceptre.ron
index ddfd4f5155..50cd20ca7e 100644
--- a/assets/common/items/weapons/sceptre/starter_sceptre.ron
+++ b/assets/common/items/weapons/sceptre/starter_sceptre.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sceptre("StarterSceptre"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/shield/shield_1.ron b/assets/common/items/weapons/shield/shield_1.ron
index bc977f66ee..6866f5fc3e 100644
--- a/assets/common/items/weapons/shield/shield_1.ron
+++ b/assets/common/items/weapons/shield/shield_1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Shield("BasicShield"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/staff/amethyst_staff.ron b/assets/common/items/weapons/staff/amethyst_staff.ron
index 9251e88f44..51b1864ca7 100644
--- a/assets/common/items/weapons/staff/amethyst_staff.ron
+++ b/assets/common/items/weapons/staff/amethyst_staff.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Staff("AmethystStaff"),   
             stats: ( 
                 equip_time_millis: 300,
-                power: 1.50,
-            ),
+                power: 1.50
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/staff/bone_staff.ron b/assets/common/items/weapons/staff/bone_staff.ron
index cba3f16d2f..26bdc8f2fc 100644
--- a/assets/common/items/weapons/staff/bone_staff.ron
+++ b/assets/common/items/weapons/staff/bone_staff.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Staff("BoneStaff"),    
             stats: (
                 equip_time_millis: 300,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/staff/cultist_staff.ron b/assets/common/items/weapons/staff/cultist_staff.ron
index e52fe518f2..0aca3faa84 100644
--- a/assets/common/items/weapons/staff/cultist_staff.ron
+++ b/assets/common/items/weapons/staff/cultist_staff.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Staff("CultistStaff"),    
             stats: (
                 equip_time_millis: 300,
-                power: 2.00,
-            ),
+                power: 2.00),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/weapons/staff/staff_1.ron b/assets/common/items/weapons/staff/staff_1.ron
index d0d00746a7..5122f333ff 100644
--- a/assets/common/items/weapons/staff/staff_1.ron
+++ b/assets/common/items/weapons/staff/staff_1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Staff("BasicStaff"),
             stats: (
                 equip_time_millis: 200,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/staff/starter_staff.ron b/assets/common/items/weapons/staff/starter_staff.ron
index b1221d0a70..49720e7e8a 100644
--- a/assets/common/items/weapons/staff/starter_staff.ron
+++ b/assets/common/items/weapons/staff/starter_staff.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Staff("BasicStaff"),    
             stats: (
                 equip_time_millis: 300,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/sword/cultist_purp_2h-0.ron b/assets/common/items/weapons/sword/cultist_purp_2h-0.ron
index ad20c1bb81..2be01d9a74 100644
--- a/assets/common/items/weapons/sword/cultist_purp_2h-0.ron
+++ b/assets/common/items/weapons/sword/cultist_purp_2h-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("CultPurp0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 2.00,
-            ),
+                power: 2.00),            
         )
     ),
+    quality: Epic,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_dam-0.ron b/assets/common/items/weapons/sword/greatsword_2h_dam-0.ron
index e0856c304e..f216415682 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_dam-0.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_dam-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("GreatswordDam0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.80,
-            ),
+                power: 0.80),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_dam-1.ron b/assets/common/items/weapons/sword/greatsword_2h_dam-1.ron
index beb9185185..c1c5b8d3a4 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_dam-1.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_dam-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("GreatswordDam1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.80,
-            ),
+                power: 0.80),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_dam-2.ron b/assets/common/items/weapons/sword/greatsword_2h_dam-2.ron
index f44f49e562..98978dac25 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_dam-2.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_dam-2.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("GreatswordDam2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.80,
-            ),
+                power: 0.80),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_fine-0.ron b/assets/common/items/weapons/sword/greatsword_2h_fine-0.ron
index 1ced29eb4c..04e80f74f0 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_fine-0.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_fine-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("GreatswordFine0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_fine-1.ron b/assets/common/items/weapons/sword/greatsword_2h_fine-1.ron
index 7e8f54951f..28de3d276d 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_fine-1.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_fine-1.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("GreatswordFine1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_fine-2.ron b/assets/common/items/weapons/sword/greatsword_2h_fine-2.ron
index 432a7c87e1..41b27cd57d 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_fine-2.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_fine-2.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("GreatswordFine2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.40,
-            ),
+                power: 1.40
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_orn-0.ron b/assets/common/items/weapons/sword/greatsword_2h_orn-0.ron
index 7f0272bbef..1fc6851047 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_orn-0.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_orn-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("GreatswordOrn0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.70,
-            ),
+                power: 1.70
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_orn-1.ron b/assets/common/items/weapons/sword/greatsword_2h_orn-1.ron
index 68f34d9d96..e510161007 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_orn-1.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_orn-1.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("GreatswordOrn1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.70,
-            ),
+                power: 1.70
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_orn-2.ron b/assets/common/items/weapons/sword/greatsword_2h_orn-2.ron
index cd04a948f8..8df47c87c6 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_orn-2.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_orn-2.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("GreatswordOrn2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.70,
-            ),
+                power: 1.70
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_simple-0.ron b/assets/common/items/weapons/sword/greatsword_2h_simple-0.ron
index 1725132330..92f79527c4 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_simple-0.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_simple-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("GreatswordSimple0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.10,
-            ),
+                power: 1.10),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_simple-1.ron b/assets/common/items/weapons/sword/greatsword_2h_simple-1.ron
index 9e622374a2..5a595ed5e7 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_simple-1.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_simple-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("GreatswordSimple1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.10,
-            ),
+                power: 1.10),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/greatsword_2h_simple-2.ron b/assets/common/items/weapons/sword/greatsword_2h_simple-2.ron
index ce3471217c..899c4b3d63 100644
--- a/assets/common/items/weapons/sword/greatsword_2h_simple-2.ron
+++ b/assets/common/items/weapons/sword/greatsword_2h_simple-2.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("GreatswordSimple2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.10,
-            ),
+                power: 1.10),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_dam-0.ron b/assets/common/items/weapons/sword/long_2h_dam-0.ron
index 32d62ed9e3..4c62c260b6 100644
--- a/assets/common/items/weapons/sword/long_2h_dam-0.ron
+++ b/assets/common/items/weapons/sword/long_2h_dam-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongDam0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.60,
-            ),
+                power: 0.60),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_dam-1.ron b/assets/common/items/weapons/sword/long_2h_dam-1.ron
index 8b3d716fda..c43f4fd2d2 100644
--- a/assets/common/items/weapons/sword/long_2h_dam-1.ron
+++ b/assets/common/items/weapons/sword/long_2h_dam-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongDam1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.60,
-            ),
+                power: 0.60),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_dam-2.ron b/assets/common/items/weapons/sword/long_2h_dam-2.ron
index 7351829039..4f20c1a6f3 100644
--- a/assets/common/items/weapons/sword/long_2h_dam-2.ron
+++ b/assets/common/items/weapons/sword/long_2h_dam-2.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongDam2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.60,
-            ),
+                power: 0.60),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_dam-3.ron b/assets/common/items/weapons/sword/long_2h_dam-3.ron
index e06fea067a..c20cbf017a 100644
--- a/assets/common/items/weapons/sword/long_2h_dam-3.ron
+++ b/assets/common/items/weapons/sword/long_2h_dam-3.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongDam3"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.60,
-            ),
+                power: 0.60),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_dam-4.ron b/assets/common/items/weapons/sword/long_2h_dam-4.ron
index e2fe684867..1a30b5f109 100644
--- a/assets/common/items/weapons/sword/long_2h_dam-4.ron
+++ b/assets/common/items/weapons/sword/long_2h_dam-4.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongDam4"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.60,
-            ),
+                power: 0.60),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_dam-5.ron b/assets/common/items/weapons/sword/long_2h_dam-5.ron
index 9123e769fc..ecbd8764da 100644
--- a/assets/common/items/weapons/sword/long_2h_dam-5.ron
+++ b/assets/common/items/weapons/sword/long_2h_dam-5.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongDam5"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.60,
-            ),
+                power: 0.60),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_fine-0.ron b/assets/common/items/weapons/sword/long_2h_fine-0.ron
index 0ef1f66847..c6e205a5bd 100644
--- a/assets/common/items/weapons/sword/long_2h_fine-0.ron
+++ b/assets/common/items/weapons/sword/long_2h_fine-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongFine0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_fine-1.ron b/assets/common/items/weapons/sword/long_2h_fine-1.ron
index 8b47bd033e..90569b67c2 100644
--- a/assets/common/items/weapons/sword/long_2h_fine-1.ron
+++ b/assets/common/items/weapons/sword/long_2h_fine-1.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongFine1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_fine-2.ron b/assets/common/items/weapons/sword/long_2h_fine-2.ron
index 557c3124d2..72a2cd05d1 100644
--- a/assets/common/items/weapons/sword/long_2h_fine-2.ron
+++ b/assets/common/items/weapons/sword/long_2h_fine-2.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongFine2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_fine-3.ron b/assets/common/items/weapons/sword/long_2h_fine-3.ron
index 5816a01cf0..35b437a56b 100644
--- a/assets/common/items/weapons/sword/long_2h_fine-3.ron
+++ b/assets/common/items/weapons/sword/long_2h_fine-3.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongFine3"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_fine-4.ron b/assets/common/items/weapons/sword/long_2h_fine-4.ron
index 13d8904a1b..a64e63bd09 100644
--- a/assets/common/items/weapons/sword/long_2h_fine-4.ron
+++ b/assets/common/items/weapons/sword/long_2h_fine-4.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongFine4"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_fine-5.ron b/assets/common/items/weapons/sword/long_2h_fine-5.ron
index 49c4010991..bd90c4d9cf 100644
--- a/assets/common/items/weapons/sword/long_2h_fine-5.ron
+++ b/assets/common/items/weapons/sword/long_2h_fine-5.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongFine5"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.20,
-            ),
+                power: 1.20
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_orn-0.ron b/assets/common/items/weapons/sword/long_2h_orn-0.ron
index 77cbbd20b2..2a91b2426b 100644
--- a/assets/common/items/weapons/sword/long_2h_orn-0.ron
+++ b/assets/common/items/weapons/sword/long_2h_orn-0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongOrn0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.50,
-            ),
+                power: 1.50
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_orn-1.ron b/assets/common/items/weapons/sword/long_2h_orn-1.ron
index 53551c8ee4..f5233512cb 100644
--- a/assets/common/items/weapons/sword/long_2h_orn-1.ron
+++ b/assets/common/items/weapons/sword/long_2h_orn-1.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongOrn1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.50,
-            ),
+                power: 1.50
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_orn-2.ron b/assets/common/items/weapons/sword/long_2h_orn-2.ron
index df3e8ac722..9196f9445f 100644
--- a/assets/common/items/weapons/sword/long_2h_orn-2.ron
+++ b/assets/common/items/weapons/sword/long_2h_orn-2.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongOrn2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.50,
-            ),
+                power: 1.50
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_orn-3.ron b/assets/common/items/weapons/sword/long_2h_orn-3.ron
index 68a5764915..5f04e2a81b 100644
--- a/assets/common/items/weapons/sword/long_2h_orn-3.ron
+++ b/assets/common/items/weapons/sword/long_2h_orn-3.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongOrn3"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.50,
-            ),
+                power: 1.50
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_orn-4.ron b/assets/common/items/weapons/sword/long_2h_orn-4.ron
index 93f2cec576..3412f2565e 100644
--- a/assets/common/items/weapons/sword/long_2h_orn-4.ron
+++ b/assets/common/items/weapons/sword/long_2h_orn-4.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongOrn4"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.50,
-            ),
+                power: 1.50
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_orn-5.ron b/assets/common/items/weapons/sword/long_2h_orn-5.ron
index 921a4e7894..05d45cd618 100644
--- a/assets/common/items/weapons/sword/long_2h_orn-5.ron
+++ b/assets/common/items/weapons/sword/long_2h_orn-5.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("LongOrn5"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.50,
-            ),
+                power: 1.50
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_simple-0.ron b/assets/common/items/weapons/sword/long_2h_simple-0.ron
index aaf992a157..57215942ae 100644
--- a/assets/common/items/weapons/sword/long_2h_simple-0.ron
+++ b/assets/common/items/weapons/sword/long_2h_simple-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongSimple0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.90,
-            ),
+                power: 0.90),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_simple-1.ron b/assets/common/items/weapons/sword/long_2h_simple-1.ron
index cd6fc1faa3..6178030dc6 100644
--- a/assets/common/items/weapons/sword/long_2h_simple-1.ron
+++ b/assets/common/items/weapons/sword/long_2h_simple-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongSimple1"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.90,
-            ),
+                power: 0.90),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_simple-2.ron b/assets/common/items/weapons/sword/long_2h_simple-2.ron
index 8f9ed9551e..2974fab6b3 100644
--- a/assets/common/items/weapons/sword/long_2h_simple-2.ron
+++ b/assets/common/items/weapons/sword/long_2h_simple-2.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongSimple2"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.90,
-            ),
+                power: 0.90),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_simple-3.ron b/assets/common/items/weapons/sword/long_2h_simple-3.ron
index 04be739948..e3d558ee51 100644
--- a/assets/common/items/weapons/sword/long_2h_simple-3.ron
+++ b/assets/common/items/weapons/sword/long_2h_simple-3.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongSimple3"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.90,
-            ),
+                power: 0.90),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_simple-4.ron b/assets/common/items/weapons/sword/long_2h_simple-4.ron
index 0ca551720b..9ae0db5f16 100644
--- a/assets/common/items/weapons/sword/long_2h_simple-4.ron
+++ b/assets/common/items/weapons/sword/long_2h_simple-4.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongSimple4"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.90,
-            ),
+                power: 0.90),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/long_2h_simple-5.ron b/assets/common/items/weapons/sword/long_2h_simple-5.ron
index aed2407d3e..7ee5904055 100644
--- a/assets/common/items/weapons/sword/long_2h_simple-5.ron
+++ b/assets/common/items/weapons/sword/long_2h_simple-5.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("LongSimple5"),    
             stats: (
                 equip_time_millis: 500,
-                power: 0.90,
-            ),
+                power: 0.90),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/short_sword_0.ron b/assets/common/items/weapons/sword/short_sword_0.ron
index f87b27a064..8b05b5b9ab 100644
--- a/assets/common/items/weapons/sword/short_sword_0.ron
+++ b/assets/common/items/weapons/sword/short_sword_0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("Short0"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.75,
-            ),
+                power: 0.75),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/sword/starter_sword.ron b/assets/common/items/weapons/sword/starter_sword.ron
index cb776f9c31..1d08a880a5 100644
--- a/assets/common/items/weapons/sword/starter_sword.ron
+++ b/assets/common/items/weapons/sword/starter_sword.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("BasicSword"),    
             stats: (
                 equip_time_millis: 300,
-                power: 0.50,
-            ),
+                power: 0.50),            
         )
     ),
+    quality: Low,
 )
diff --git a/assets/common/items/weapons/sword/wood_sword.ron b/assets/common/items/weapons/sword/wood_sword.ron
index a2c124427e..ab2ae1e019 100644
--- a/assets/common/items/weapons/sword/wood_sword.ron
+++ b/assets/common/items/weapons/sword/wood_sword.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Sword("WoodTraining"),    
             stats: (
                 equip_time_millis: 400,
-                power: 0.8,
-            ),
+                power: 0.8),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/sword/zweihander_sword_0.ron b/assets/common/items/weapons/sword/zweihander_sword_0.ron
index 348ad9bf26..5314429b7a 100644
--- a/assets/common/items/weapons/sword/zweihander_sword_0.ron
+++ b/assets/common/items/weapons/sword/zweihander_sword_0.ron
@@ -6,8 +6,9 @@ ItemDef(
             kind: Sword("Zweihander0"),    
             stats: (
                 equip_time_millis: 500,
-                power: 1.50,
-            ),
+                power: 1.50
+                ),            
         )
     ),
+    quality: Moderate,
 )
diff --git a/assets/common/items/weapons/tool/broom.ron b/assets/common/items/weapons/tool/broom.ron
index b6d97462e2..0d74bbe63d 100644
--- a/assets/common/items/weapons/tool/broom.ron
+++ b/assets/common/items/weapons/tool/broom.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Broom"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/tool/fishing_rod.ron b/assets/common/items/weapons/tool/fishing_rod.ron
index 7fc58a2057..217c5cab1d 100644
--- a/assets/common/items/weapons/tool/fishing_rod.ron
+++ b/assets/common/items/weapons/tool/fishing_rod.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("FishingRod0"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/tool/hoe.ron b/assets/common/items/weapons/tool/hoe.ron
index e92ac40dc1..11c14e4b40 100644
--- a/assets/common/items/weapons/tool/hoe.ron
+++ b/assets/common/items/weapons/tool/hoe.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Hoe0"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/tool/pickaxe.ron b/assets/common/items/weapons/tool/pickaxe.ron
index 8975a01639..57f27ef9a2 100644
--- a/assets/common/items/weapons/tool/pickaxe.ron
+++ b/assets/common/items/weapons/tool/pickaxe.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Pickaxe0"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/tool/pitchfork.ron b/assets/common/items/weapons/tool/pitchfork.ron
index 300326aa31..ef81ed3e59 100644
--- a/assets/common/items/weapons/tool/pitchfork.ron
+++ b/assets/common/items/weapons/tool/pitchfork.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Pitchfork"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/tool/rake.ron b/assets/common/items/weapons/tool/rake.ron
index 74e802fa53..6b87b616b8 100644
--- a/assets/common/items/weapons/tool/rake.ron
+++ b/assets/common/items/weapons/tool/rake.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Rake"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/tool/shovel-0.ron b/assets/common/items/weapons/tool/shovel-0.ron
index c459728217..736e4ad697 100644
--- a/assets/common/items/weapons/tool/shovel-0.ron
+++ b/assets/common/items/weapons/tool/shovel-0.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Shovel0"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/items/weapons/tool/shovel-1.ron b/assets/common/items/weapons/tool/shovel-1.ron
index 55e513a02f..2402333578 100644
--- a/assets/common/items/weapons/tool/shovel-1.ron
+++ b/assets/common/items/weapons/tool/shovel-1.ron
@@ -6,8 +6,8 @@ ItemDef(
             kind: Farming("Shovel1"),
             stats: (
                 equip_time_millis: 400,
-                power: 1.00,
-            ),
+                power: 1.00),            
         )
     ),
+    quality: Common,
 )
diff --git a/assets/common/loot_tables/loot_table_armor_misc.ron b/assets/common/loot_tables/loot_table_armor_misc.ron
index 26bebecd6d..2766961c25 100644
--- a/assets/common/loot_tables/loot_table_armor_misc.ron
+++ b/assets/common/loot_tables/loot_table_armor_misc.ron
@@ -1,10 +1,11 @@
 [
     // rings
-    (0.50, "common.items.armor.ring.ring_0"),
+    (0.15, "common.items.armor.ring.ring_0"),
     // capes
     (0.25, "common.items.armor.back.short_0"),
     (0.25, "common.items.armor.back.short_1"),
     // necks
     (0.25, "common.items.armor.neck.neck_0"),
-    
+    // misc
+    (0.1, "common.items.glider.glider_blue"),
 ]
\ No newline at end of file
diff --git a/assets/common/loot_tables/loot_table_boss_cultist-leader.ron b/assets/common/loot_tables/loot_table_boss_cultist-leader.ron
index 3fa2f313b8..f1829945df 100644
--- a/assets/common/loot_tables/loot_table_boss_cultist-leader.ron
+++ b/assets/common/loot_tables/loot_table_boss_cultist-leader.ron
@@ -13,4 +13,5 @@
     (1, "common.items.weapons.sword.cultist_purp_2h-0"),
     // misc    
     (1, "common.items.boss_drops.lantern"),    
+    (0.05, "common.items.glider.glider_purp"),
 ]
\ No newline at end of file
diff --git a/assets/common/loot_tables/loot_table_cave_large.ron b/assets/common/loot_tables/loot_table_cave_large.ron
index 34dc8ccf03..626b90cefb 100644
--- a/assets/common/loot_tables/loot_table_cave_large.ron
+++ b/assets/common/loot_tables/loot_table_cave_large.ron
@@ -1,6 +1,10 @@
 [
     // Misc
     (0.25, "common.items.armor.neck.neck_1"),
+    (0.2, "common.items.crafting_ing.cloth_scraps"), 
+    (1.0, "common.items.crafting_ing.empty_vial"),  
+    (0.1, "common.items.glider.glider_blue"),
+    (1, "common.items.crafting_ing.cloth_scraps"),   
     // swords 
     (0.07, "common.items.weapons.sword.greatsword_2h_fine-1"),
     (0.07, "common.items.weapons.sword.greatsword_2h_fine-2"),
diff --git a/assets/common/loot_tables/loot_table_cultists.ron b/assets/common/loot_tables/loot_table_cultists.ron
index 4de19aabbf..1eb417294b 100644
--- a/assets/common/loot_tables/loot_table_cultists.ron
+++ b/assets/common/loot_tables/loot_table_cultists.ron
@@ -5,12 +5,18 @@
     (3, "common.items.food.apple"),
     (3, "common.items.food.mushroom"),
     (3, "common.items.food.coconut"),
+    (4, "common.items.crafting_ing.cloth_scraps"),    
     // crafted
     (0.5, "common.items.food.apple_mushroom_curry"),
     (0.5, "common.items.food.apple_stick"),
     (0.5, "common.items.food.mushroom_stick"),
     // Misc
+    (4, "common.items.crafting_ing.empty_vial"),
     (0.25, "common.items.armor.neck.neck_1"),
+    (0.001, "common.items.glider.glider_purp"),
+    (0.5, "common.items.glider.glider_blue"),
+    (0.5, "common.items.utility.firework_purple"),
+    (0.5, "common.items.utility.bomb"),
     // Heavy Armour
     // belts
     (0.5, "common.items.armor.belt.plate_0"),
diff --git a/assets/common/loot_tables/loot_table_food.ron b/assets/common/loot_tables/loot_table_food.ron
index c9db9c6578..fabb0b44a7 100644
--- a/assets/common/loot_tables/loot_table_food.ron
+++ b/assets/common/loot_tables/loot_table_food.ron
@@ -8,4 +8,6 @@
     (0.05, "common.items.food.apple_mushroom_curry"),
     (0.10, "common.items.food.apple_stick"),
     (0.10, "common.items.food.mushroom_stick"),
+    // misc
+    (3, "common.items.crafting_ing.cloth_scraps"),  
 ]
diff --git a/assets/common/loot_tables/loot_table_frostfang.ron b/assets/common/loot_tables/loot_table_frostfang.ron
new file mode 100644
index 0000000000..a1ca41a531
--- /dev/null
+++ b/assets/common/loot_tables/loot_table_frostfang.ron
@@ -0,0 +1,4 @@
+[     
+    (2, "common.items.crafting_ing.icy_fang"),   
+    (1, "common.items.crafting_ing.leather_scraps"),    
+]
diff --git a/assets/common/loot_tables/loot_table_humanoids.ron b/assets/common/loot_tables/loot_table_humanoids.ron
index 78963308e4..83a25bb2de 100644
--- a/assets/common/loot_tables/loot_table_humanoids.ron
+++ b/assets/common/loot_tables/loot_table_humanoids.ron
@@ -1,7 +1,8 @@
 [    
     // Crafting Ingredients
-    (1, "common.items.crafting_ing.empty_vial"),
+    (2, "common.items.crafting_ing.empty_vial"),
     (0.10, "common.items.crafting_ing.shiny_gem"), 
+    (2, "common.items.crafting_ing.cloth_scraps"),   
     // Consumables
     (0.2, "common.items.consumable.potion_minor"),
     // Utility
diff --git a/assets/common/loot_tables/loot_table_villager.ron b/assets/common/loot_tables/loot_table_villager.ron
index 377cc4594d..85d02c9d4d 100644
--- a/assets/common/loot_tables/loot_table_villager.ron
+++ b/assets/common/loot_tables/loot_table_villager.ron
@@ -2,6 +2,7 @@
     // Crafting Ingredients
     (1, "common.items.crafting_ing.empty_vial"),
     (0.10, "common.items.crafting_ing.shiny_gem"),
+    (5, "common.items.crafting_ing.cloth_scraps"),   
     // Consumables
     (0.2, "common.items.consumable.potion_minor"),
     // Armour
diff --git a/assets/common/loot_tables/loot_table_wendigo.ron b/assets/common/loot_tables/loot_table_wendigo.ron
new file mode 100644
index 0000000000..cb0ef91842
--- /dev/null
+++ b/assets/common/loot_tables/loot_table_wendigo.ron
@@ -0,0 +1,3 @@
+[     
+    (1, "common.items.crafting_ing.icy_fang"),
+]
\ No newline at end of file
diff --git a/assets/common/recipe_book.ron b/assets/common/recipe_book.ron
index d5d4dff180..171716fe70 100644
--- a/assets/common/recipe_book.ron
+++ b/assets/common/recipe_book.ron
@@ -1,7 +1,8 @@
 {
 	// Tools
-	"crafting_hammer": (("common.items.crafting_tools.craftsman_hammer", 1),[("common.items.crafting_ing.twigs", 14), ("common.items.crafting_ing.stones", 12)]),
+	"crafting_hammer": (("common.items.crafting_tools.craftsman_hammer", 1),[("common.items.crafting_ing.twigs", 6), ("common.items.crafting_ing.stones", 6)]),
 	"mortar_pestle": (("common.items.crafting_tools.mortar_pestle", 1), [("common.items.crafting_ing.stones", 6), ("common.items.food.coconut", 2), ("common.items.crafting_tools.craftsman_hammer", 0)]),
+	"sewing_set": (("common.items.crafting_tools.sewing_set", 1),[("common.items.crafting_ing.leather_scraps", 2), ("common.items.crafting_ing.twigs", 4), ("common.items.crafting_ing.stones", 2), ("common.items.crafting_ing.shiny_gem", 1)]),
 	// Ore and more
 	"velorite_frag": (("common.items.ore.veloritefrag", 2), [("common.items.ore.velorite", 1), ("common.items.crafting_tools.craftsman_hammer", 0)]),
 	//Potions
@@ -19,9 +20,12 @@
 	"apple_shroom_curry": (("common.items.food.apple_mushroom_curry", 1), [("common.items.food.mushroom", 8), ("common.items.food.coconut", 1), ("common.items.food.apple", 4), ("common.items.crafting_tools.mortar_pestle", 0)]),
 	"apples_stick": (("common.items.food.apple_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.apple", 2)]),
 	"mushroom_stick": (("common.items.food.mushroom_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.mushroom", 3)]),
+	"sunflower_icetea": (("common.items.food.sunflower_icetea", 4),[("common.items.crafting_ing.empty_vial", 1), ("common.items.crafting_ing.icy_fang", 1),("common.items.flowers.sunflower", 4), ("common.items.crafting_ing.honey", 1)]),
+	// Gliders
+	"Leaves Glider": (("common.items.glider.glider_leaves", 1),[("common.items.crafting_ing.twigs", 5), ("common.items.crafting_ing.leather_scraps", 5), ("common.items.crafting_ing.cloth_scraps", 5), ("common.items.crafting_ing.shiny_gem", 1), ("common.items.crafting_tools.craftsman_hammer", 0),("common.items.crafting_tools.sewing_set", 0)]), 	
 	// Weapons
 	"velorite_sceptre": (("common.items.weapons.sceptre.sceptre_velorite_0", 1),[("common.items.crafting_ing.twigs", 20), ("common.items.ore.veloritefrag", 10), ("common.items.crafting_ing.shiny_gem", 4), ("common.items.crafting_tools.craftsman_hammer", 0)]),
-	// Enhanced starting weapons 
+	// Enhanced starting weapons
 	"better bow": (("common.items.weapons.bow.wood_shortbow-0", 1), [("common.items.crafting_ing.leather_scraps", 8),("common.items.crafting_ing.twigs", 6), ("common.items.crafting_ing.stones", 0)]),
 	"better sword": (("common.items.weapons.sword.wood_sword", 1), [("common.items.crafting_ing.leather_scraps", 4),("common.items.crafting_ing.twigs", 10),  ("common.items.ore.veloritefrag", 1), ("common.items.crafting_ing.stones", 0)]),
 	// Adventurer/Beginner Leather Set
diff --git a/assets/voxygen/audio/sfx/ui/click1.wav b/assets/voxygen/audio/sfx/ui/click1.wav
new file mode 100644
index 0000000000..8fc3e638c9
Binary files /dev/null and b/assets/voxygen/audio/sfx/ui/click1.wav differ
diff --git a/assets/voxygen/audio/sfx/ui/click2.wav b/assets/voxygen/audio/sfx/ui/click2.wav
new file mode 100644
index 0000000000..46ce25c793
Binary files /dev/null and b/assets/voxygen/audio/sfx/ui/click2.wav differ
diff --git a/assets/voxygen/element/buttons/inv_slot_blue.png b/assets/voxygen/element/buttons/inv_slot_blue.png
new file mode 100644
index 0000000000..9fd12f06e2
Binary files /dev/null and b/assets/voxygen/element/buttons/inv_slot_blue.png differ
diff --git a/assets/voxygen/element/buttons/inv_slot_gold.png b/assets/voxygen/element/buttons/inv_slot_gold.png
new file mode 100644
index 0000000000..90cb3d5cd0
Binary files /dev/null and b/assets/voxygen/element/buttons/inv_slot_gold.png differ
diff --git a/assets/voxygen/element/buttons/inv_slot_green.png b/assets/voxygen/element/buttons/inv_slot_green.png
new file mode 100644
index 0000000000..555a3e9bf8
Binary files /dev/null and b/assets/voxygen/element/buttons/inv_slot_green.png differ
diff --git a/assets/voxygen/element/buttons/inv_slot_grey.png b/assets/voxygen/element/buttons/inv_slot_grey.png
new file mode 100644
index 0000000000..aef25cd72b
Binary files /dev/null and b/assets/voxygen/element/buttons/inv_slot_grey.png differ
diff --git a/assets/voxygen/element/buttons/inv_slot_orange.png b/assets/voxygen/element/buttons/inv_slot_orange.png
new file mode 100644
index 0000000000..e4e124bf37
Binary files /dev/null and b/assets/voxygen/element/buttons/inv_slot_orange.png differ
diff --git a/assets/voxygen/element/buttons/inv_slot_purple.png b/assets/voxygen/element/buttons/inv_slot_purple.png
new file mode 100644
index 0000000000..8ef89a395e
Binary files /dev/null and b/assets/voxygen/element/buttons/inv_slot_purple.png differ
diff --git a/assets/voxygen/element/buttons/inv_slot_red.png b/assets/voxygen/element/buttons/inv_slot_red.png
new file mode 100644
index 0000000000..4afbe66d1a
Binary files /dev/null and b/assets/voxygen/element/buttons/inv_slot_red.png differ
diff --git a/assets/voxygen/element/icons/axe.png b/assets/voxygen/element/icons/axe.png
index dc04c1cc4b..a113585e52 100644
Binary files a/assets/voxygen/element/icons/axe.png and b/assets/voxygen/element/icons/axe.png differ
diff --git a/assets/voxygen/element/icons/bow.png b/assets/voxygen/element/icons/bow.png
index ab67dd5988..dd6bb2c8f1 100644
Binary files a/assets/voxygen/element/icons/bow.png and b/assets/voxygen/element/icons/bow.png differ
diff --git a/assets/voxygen/element/icons/daggers.png b/assets/voxygen/element/icons/daggers.png
index 45fed67551..213df798dc 100644
Binary files a/assets/voxygen/element/icons/daggers.png and b/assets/voxygen/element/icons/daggers.png differ
diff --git a/assets/voxygen/element/icons/glider.png b/assets/voxygen/element/icons/glider.png
new file mode 100644
index 0000000000..8f12bb0dbe
Binary files /dev/null and b/assets/voxygen/element/icons/glider.png differ
diff --git a/assets/voxygen/element/icons/hammer.png b/assets/voxygen/element/icons/hammer.png
index e51f0e37ff..2f39982661 100644
Binary files a/assets/voxygen/element/icons/hammer.png and b/assets/voxygen/element/icons/hammer.png differ
diff --git a/assets/voxygen/element/icons/item_bag_t1_purp.png b/assets/voxygen/element/icons/item_bag_t1_purp.png
new file mode 100644
index 0000000000..3cdaba4ab3
Binary files /dev/null and b/assets/voxygen/element/icons/item_bag_t1_purp.png differ
diff --git a/assets/voxygen/element/icons/item_cloth0.png b/assets/voxygen/element/icons/item_cloth0.png
new file mode 100644
index 0000000000..b860f42f12
Binary files /dev/null and b/assets/voxygen/element/icons/item_cloth0.png differ
diff --git a/assets/voxygen/element/icons/item_honey.png b/assets/voxygen/element/icons/item_honey.png
new file mode 100644
index 0000000000..78ad36bf45
Binary files /dev/null and b/assets/voxygen/element/icons/item_honey.png differ
diff --git a/assets/voxygen/element/icons/item_ice_shard.png b/assets/voxygen/element/icons/item_ice_shard.png
new file mode 100644
index 0000000000..c55632a2fb
Binary files /dev/null and b/assets/voxygen/element/icons/item_ice_shard.png differ
diff --git a/assets/voxygen/element/icons/item_sunflower_tea.png b/assets/voxygen/element/icons/item_sunflower_tea.png
new file mode 100644
index 0000000000..aace17fcbf
Binary files /dev/null and b/assets/voxygen/element/icons/item_sunflower_tea.png differ
diff --git a/assets/voxygen/element/icons/sceptre.png b/assets/voxygen/element/icons/sceptre.png
new file mode 100644
index 0000000000..e031916978
Binary files /dev/null and b/assets/voxygen/element/icons/sceptre.png differ
diff --git a/assets/voxygen/element/icons/staff.png b/assets/voxygen/element/icons/staff.png
index a1f30d62c0..eca9b3b226 100644
Binary files a/assets/voxygen/element/icons/staff.png and b/assets/voxygen/element/icons/staff.png differ
diff --git a/assets/voxygen/element/icons/sword.png b/assets/voxygen/element/icons/sword.png
index afcbf972a4..47facb1c88 100644
Binary files a/assets/voxygen/element/icons/sword.png and b/assets/voxygen/element/icons/sword.png differ
diff --git a/assets/voxygen/element/icons/swordshield.png b/assets/voxygen/element/icons/swordshield.png
index 47a76240ed..edf7a5a71f 100644
Binary files a/assets/voxygen/element/icons/swordshield.png and b/assets/voxygen/element/icons/swordshield.png differ
diff --git a/assets/voxygen/element/misc_bg/inv_bg_0.png b/assets/voxygen/element/misc_bg/inv_bg_0.png
index 6df81ff85e..9046f54f73 100644
Binary files a/assets/voxygen/element/misc_bg/inv_bg_0.png and b/assets/voxygen/element/misc_bg/inv_bg_0.png differ
diff --git a/assets/voxygen/i18n/de_DE.ron b/assets/voxygen/i18n/de_DE.ron
index f00f7bd0ef..578099f0db 100644
--- a/assets/voxygen/i18n/de_DE.ron
+++ b/assets/voxygen/i18n/de_DE.ron
@@ -72,6 +72,7 @@ VoxygenLocalization(
         "common.you": "Ihr",
         "common.automatic": "Auto",
         "common.rand_appearance": "Zufälliges Aussehen und Name",
+        "common.random": "Zufällig",
         // Settings Window title
         "common.interface_settings": "Interface Einstellungen",
         "common.gameplay_settings": "Spiel Einstellungen",
@@ -97,6 +98,7 @@ VoxygenLocalization(
         "common.weapons.staff": "Stab",
         "common.weapons.bow": "Bogen",
         "common.weapons.hammer": "Hammer",
+        "common.weapons.sceptre": "Druiden Szepter",
         /// End Common section
 
 
@@ -185,6 +187,8 @@ https://account.veloren.net.
         "hud.chat.pvp_melee_kill_msg": "[{attacker}] hat [{victim}] besiegt",
         "hud.chat.pvp_ranged_kill_msg": "[{attacker}] hat [{victim}] aus der Ferne getötet",
         "hud.chat.pvp_explosion_kill_msg": "[{attacker}] hat [{victim}] hochgejagt",
+        "hud.chat.pvp_energy_kill_msg": "[{attacker}] hat [{victim}] mit Magie erledigt",
+
 
         "hud.chat.npc_melee_kill_msg": "{attacker} tötete [{victim}]",
         "hud.chat.npc_ranged_kill_msg": "{attacker} tötete [{victim}]",
@@ -255,6 +259,7 @@ magischen Gegenstände ergattern?"#,
         "hud.bag.head": "Kopf",
         "hud.bag.neck": "Hals",
         "hud.bag.tabard": "Wappenrock",
+        "hud.bag.glider": "Gleiter",
         "hud.bag.shoulders": "Schultern",
         "hud.bag.chest": "Brust",
         "hud.bag.hands": "Hände",
diff --git a/assets/voxygen/i18n/en.ron b/assets/voxygen/i18n/en.ron
index 3999e25769..cf7d23bdcf 100644
--- a/assets/voxygen/i18n/en.ron
+++ b/assets/voxygen/i18n/en.ron
@@ -101,6 +101,7 @@ Is the client up to date?"#,
         "common.weapons.staff": "Staff",
         "common.weapons.bow": "Bow",
         "common.weapons.hammer": "Hammer",
+        "common.weapons.sceptre": "Healing Sceptre",
         "common.rand_appearance": "Random appearance and name",
         /// End Common section
 
@@ -260,6 +261,7 @@ magically infused items?"#,
         "hud.bag.chest": "Chest",
         "hud.bag.hands": "Hands",
         "hud.bag.lantern": "Lantern",
+        "hud.bag.glider": "Glider",
         "hud.bag.belt": "Belt",
         "hud.bag.ring": "Ring",
         "hud.bag.back": "Back",
diff --git a/assets/voxygen/item_image_manifest.ron b/assets/voxygen/item_image_manifest.ron
index e977592f9c..fb4b51f230 100644
--- a/assets/voxygen/item_image_manifest.ron
+++ b/assets/voxygen/item_image_manifest.ron
@@ -68,7 +68,7 @@
     ),
     Tool(Sword("WoodTraining")): VoxTrans(
         "voxel.weapon.sword.wood_ore_2h",
-        (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.3,
+        (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.2,
     ),
     Tool(Sword("LongFine3")): VoxTrans(
         "voxel.weapon.sword.long_2h_fine-3",
@@ -1174,7 +1174,9 @@
     Consumable("MushroomStick"): Png(
         "element.icons.item_shroom_stick",
     ),
-        
+    Consumable("SunflowerTea"): Png(
+        "element.icons.item_sunflower_tea",
+    ),        
     // Throwables
     Throwable(Bomb): VoxTrans(
         "voxel.object.bomb",
@@ -1209,8 +1211,15 @@
         "voxel.weapon.hammer.craftsman",
         (1.0, 1.0, 0.0), (-135.0, 90.0, 0.0), 1.0,
     ),
+    Ingredient("SewingSet"): Png(
+        "element.icons.item_bag_t1_purp",
+    ),
     Ingredient("Flower"): VoxTrans(
-        "voxel.sprite.flowers.flower_red_2",
+        "voxel.sprite.flowers.sunflower_1",
+        (-2.0, -0.5, -1.0), (-60.0, 40.0, 20.0), 1.1,
+    ),
+    Ingredient("Sunflower"): VoxTrans(
+        "voxel.sprite.flowers.sunflower_1",
         (0.0, -1.0, 0.0), (-50.0, 40.0, 20.0), 0.8,
     ),
     Ingredient("Grass"): VoxTrans(
@@ -1221,13 +1230,22 @@
         "voxel.sprite.rocks.rock-0",
         (0.0, 0.0, 0.0), (-50.0, 40.0, 20.0), 0.8,
     ),
+    Ingredient("IcyShard"): Png(
+        "element.icons.item_ice_shard",
+    ),
     Ingredient("Twigs"): VoxTrans(
         "voxel.sprite.twigs.twigs-0",
         (0.0, 0.0, 0.0), (-20.0, 10.0, 20.0), 0.9,
     ),
+    Ingredient("Honey"): Png(
+        "element.icons.item_honey",
+    ),
     Ingredient("LeatherScraps"): Png(
         "element.icons.item_leather0",
     ),
+    Ingredient("ClothScraps"): Png(
+        "element.icons.item_cloth0",
+    ),
     Ingredient("ShinyGem"): Png(
         "element.icons.gem",
     ),
@@ -1238,6 +1256,23 @@
         "voxel.object.potion_empty",
         (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8,
     ),
+    // Gliders 
+    Glider("Starter"): VoxTrans(
+        "voxel.glider.glider_starter",
+        (-2.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.9,
+    ),
+    Glider("Blue0"): VoxTrans(
+        "voxel.glider.glider_blue",
+        (6.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 1.1,
+    ),
+    Glider("Purple0"): VoxTrans(
+        "voxel.glider.glider_cultists",
+        (5.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 1.1,
+    ),
+    Glider("Leaves"): VoxTrans(
+        "voxel.glider.glider_leaves",
+        (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 1.1,
+    ),
     // Debug Items
     Tool(Debug("Boost")): VoxTrans(
         "voxel.weapon.tool.broom_belzeshrub_purple",
diff --git a/assets/voxygen/voxel/armor/chest/plate_grey-0.vox b/assets/voxygen/voxel/armor/chest/plate_grey-0.vox
new file mode 100644
index 0000000000..99c9efa470
Binary files /dev/null and b/assets/voxygen/voxel/armor/chest/plate_grey-0.vox differ
diff --git a/assets/voxygen/voxel/armor/pants/plate_grey-0.vox b/assets/voxygen/voxel/armor/pants/plate_grey-0.vox
new file mode 100644
index 0000000000..8a671a4872
Binary files /dev/null and b/assets/voxygen/voxel/armor/pants/plate_grey-0.vox differ
diff --git a/assets/voxygen/voxel/glider/glider_blue.vox b/assets/voxygen/voxel/glider/glider_blue.vox
new file mode 100644
index 0000000000..39f2f1cb99
Binary files /dev/null and b/assets/voxygen/voxel/glider/glider_blue.vox differ
diff --git a/assets/voxygen/voxel/glider/glider_cultists.vox b/assets/voxygen/voxel/glider/glider_cultists.vox
new file mode 100644
index 0000000000..2dd072666f
Binary files /dev/null and b/assets/voxygen/voxel/glider/glider_cultists.vox differ
diff --git a/assets/voxygen/voxel/glider/glider_leaves.vox b/assets/voxygen/voxel/glider/glider_leaves.vox
new file mode 100644
index 0000000000..a8e25ee127
Binary files /dev/null and b/assets/voxygen/voxel/glider/glider_leaves.vox differ
diff --git a/assets/voxygen/voxel/glider/glider_starter.vox b/assets/voxygen/voxel/glider/glider_starter.vox
new file mode 100644
index 0000000000..bbb0edf844
Binary files /dev/null and b/assets/voxygen/voxel/glider/glider_starter.vox differ
diff --git a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron
index c17403b4e2..293502079f 100644
--- a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron
+++ b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron
@@ -40,6 +40,10 @@
             vox_spec: ("armor.chest.plate_green-0", (-7.0, -3.5, 2.0)),
             color: None
         ),
+        "PlateRed0": (
+            vox_spec: ("armor.chest.plate_grey-0", (-7.0, -3.5, 2.0)),
+            color: Some((124, 38, 46))
+        ),
         "Leather0": (
             vox_spec: ("armor.chest.leather-0", (-7.0, -3.5, 2.0)),
             color: None
diff --git a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron
index 9b8e94c453..bd707f546a 100644
--- a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron
+++ b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron
@@ -36,6 +36,10 @@
             vox_spec: ("armor.pants.plate_green-0", (-5.0, -3.5, 1.0)),
             color: None
         ),
+        "PlateRed0": (
+            vox_spec: ("armor.pants.plate_grey-0", (-5.0, -3.5, 1.0)),
+            color: Some((124, 38, 46))
+        ),
         "Leather0": (
             vox_spec: ("armor.pants.leather-0", (-5.0, -3.5, 1.0)),
             color: None
diff --git a/assets/voxygen/voxel/humanoid_glider_manifest.ron b/assets/voxygen/voxel/humanoid_glider_manifest.ron
new file mode 100644
index 0000000000..70bd865e7e
--- /dev/null
+++ b/assets/voxygen/voxel/humanoid_glider_manifest.ron
@@ -0,0 +1,24 @@
+((
+    default: (
+        vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
+        color: None
+    ),
+    map: {
+        "Starter": (
+            vox_spec: ("glider.glider_starter", (-15.0, -5.0, -5.0)),
+            color: None
+        ),   
+        "Blue0": (
+            vox_spec: ("glider.glider_blue", (-26.0, -26.0, -5.0)),
+            color: None
+        ),   
+        "Purple0": (
+            vox_spec: ("glider.glider_cultists", (-26.0, -16.0, -5.0)),
+            color: None
+        ),
+        "Leaves": (
+            vox_spec: ("glider.glider_leaves", (-26.0, -26.0, -5.0)),
+            color: None
+        ),
+    },
+))
diff --git a/client/src/lib.rs b/client/src/lib.rs
index 00543fdd7b..fdd3cd795e 100644
--- a/client/src/lib.rs
+++ b/client/src/lib.rs
@@ -602,9 +602,15 @@ impl Client {
             .collect();
     }
 
-    pub fn toggle_lantern(&mut self) {
+    pub fn enable_lantern(&mut self) {
         self.singleton_stream
-            .send(ClientMsg::ControlEvent(ControlEvent::ToggleLantern))
+            .send(ClientMsg::ControlEvent(ControlEvent::EnableLantern))
+            .unwrap();
+    }
+
+    pub fn disable_lantern(&mut self) {
+        self.singleton_stream
+            .send(ClientMsg::ControlEvent(ControlEvent::DisableLantern))
             .unwrap();
     }
 
@@ -682,6 +688,14 @@ impl Client {
             .is_some()
     }
 
+    pub fn is_lantern_enabled(&self) -> bool {
+        self.state
+            .ecs()
+            .read_storage::<comp::LightEmitter>()
+            .get(self.entity)
+            .is_some()
+    }
+
     pub fn mount(&mut self, entity: EcsEntity) {
         if let Some(uid) = self.state.read_component_copied(entity) {
             self.singleton_stream
diff --git a/common/src/comp/controller.rs b/common/src/comp/controller.rs
index a8e930a83e..b9c7e1cb4c 100644
--- a/common/src/comp/controller.rs
+++ b/common/src/comp/controller.rs
@@ -30,7 +30,9 @@ pub enum GroupManip {
 
 #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
 pub enum ControlEvent {
-    ToggleLantern,
+    //ToggleLantern,
+    EnableLantern,
+    DisableLantern,
     Mount(Uid),
     Unmount,
     InventoryManip(InventoryManip),
diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs
index fd92e7840a..a2bd213bb6 100644
--- a/common/src/comp/inventory/item/mod.rs
+++ b/common/src/comp/inventory/item/mod.rs
@@ -62,6 +62,17 @@ impl Lantern {
 pub struct Glider {
     pub kind: String,
 }
+#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Copy)]
+pub enum Quality {
+    Low,       // Grey
+    Common,    // UI Main Color
+    Moderate,  // Green
+    High,      // Blue
+    Epic,      // Purple
+    Legendary, // Gold
+    Artifact,  // Orange
+    Debug,     // Red
+}
 
 #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
 pub enum ItemKind {
@@ -124,6 +135,7 @@ pub struct ItemDef {
     pub name: String,
     pub description: String,
     pub kind: ItemKind,
+    pub quality: Quality,
 }
 
 impl PartialEq for ItemDef {
@@ -282,6 +294,8 @@ impl Item {
 
     pub fn amount(&self) -> u32 { u32::from(self.amount) }
 
+    pub fn quality(&self) -> Quality { self.item_def.quality }
+
     pub fn try_reclaim_from_block(block: Block) -> Option<Self> {
         let chosen;
         let mut rng = rand::thread_rng();
@@ -296,7 +310,7 @@ impl Item {
             SpriteKind::RedFlower => "common.items.flowers.red",
             SpriteKind::WhiteFlower => "common.items.flowers.white",
             SpriteKind::YellowFlower => "common.items.flowers.yellow",
-            SpriteKind::Sunflower => "common.items.flowers.sun",
+            SpriteKind::Sunflower => "common.items.flowers.sunflower",
             SpriteKind::LongGrass => "common.items.grasses.long",
             SpriteKind::MediumGrass => "common.items.grasses.medium",
             SpriteKind::ShortGrass => "common.items.grasses.short",
@@ -316,6 +330,7 @@ impl Item {
                 chosen = Lottery::<String>::load_expect("common.loot_tables.loot_table_food");
                 chosen.choose()
             },
+            SpriteKind::Beehive => "common.items.crafting_ing.honey",
             SpriteKind::Stones => "common.items.crafting_ing.stones",
             SpriteKind::Twigs => "common.items.crafting_ing.twigs",
             SpriteKind::ShinyGem => "common.items.crafting_ing.shiny_gem",
@@ -330,6 +345,7 @@ pub trait ItemDesc {
     fn description(&self) -> &str;
     fn name(&self) -> &str;
     fn kind(&self) -> &ItemKind;
+    fn quality(&self) -> &Quality;
 }
 
 impl ItemDesc for Item {
@@ -338,6 +354,8 @@ impl ItemDesc for Item {
     fn name(&self) -> &str { &self.item_def.name }
 
     fn kind(&self) -> &ItemKind { &self.item_def.kind }
+
+    fn quality(&self) -> &Quality { &self.item_def.quality }
 }
 
 impl ItemDesc for ItemDef {
@@ -346,6 +364,8 @@ impl ItemDesc for ItemDef {
     fn name(&self) -> &str { &self.name }
 
     fn kind(&self) -> &ItemKind { &self.kind }
+
+    fn quality(&self) -> &Quality { &self.quality }
 }
 
 impl Component for Item {
diff --git a/common/src/event.rs b/common/src/event.rs
index a8480143ca..96c779c56a 100644
--- a/common/src/event.rs
+++ b/common/src/event.rs
@@ -73,7 +73,8 @@ pub enum ServerEvent {
         entity: EcsEntity,
         vel: Vec3<f32>,
     },
-    ToggleLantern(EcsEntity),
+    EnableLantern(EcsEntity),
+    DisableLantern(EcsEntity),
     Mount(EcsEntity, EcsEntity),
     Unmount(EcsEntity),
     Possess(Uid, Uid),
diff --git a/common/src/loadout_builder.rs b/common/src/loadout_builder.rs
index 775a55c0ce..72156e50fd 100644
--- a/common/src/loadout_builder.rs
+++ b/common/src/loadout_builder.rs
@@ -124,40 +124,44 @@ impl LoadoutBuilder {
         };
 
         let loadout = match body {
-            Body::Humanoid(_) => {
-                if is_giant {
-                    Loadout {
-                        active_item,
-                        second_item: None,
-                        shoulder: Some(Item::new_from_asset_expect(
-                            "common.items.armor.shoulder.plate_0",
-                        )),
-                        chest: Some(Item::new_from_asset_expect(
-                            "common.items.armor.chest.plate_green_0",
-                        )),
-                        belt: Some(Item::new_from_asset_expect(
-                            "common.items.armor.belt.plate_0",
-                        )),
-                        hand: Some(Item::new_from_asset_expect(
-                            "common.items.armor.hand.plate_0",
-                        )),
-                        pants: Some(Item::new_from_asset_expect(
-                            "common.items.armor.pants.plate_green_0",
-                        )),
-                        foot: Some(Item::new_from_asset_expect(
-                            "common.items.armor.foot.plate_0",
-                        )),
-                        back: None,
-                        ring: None,
-                        neck: None,
-                        lantern: None,
-                        glider: None,
-                        head: None,
-                        tabard: None,
-                    }
-                } else {
-                    match alignment {
-                        Alignment::Npc => Loadout {
+            Body::Humanoid(_) => match alignment {
+                Alignment::Npc => {
+                    if is_giant {
+                        Loadout {
+                            active_item,
+                            second_item: None,
+                            shoulder: Some(Item::new_from_asset_expect(
+                                "common.items.armor.shoulder.plate_0",
+                            )),
+                            chest: Some(Item::new_from_asset_expect(match alignment {
+                                Alignment::Enemy => "common.items.npc_armor.chest.plate_red_0",
+                                _ => "common.items.npc_armor.chest.plate_green_0",
+                            })),
+                            belt: Some(Item::new_from_asset_expect(
+                                "common.items.armor.belt.plate_0",
+                            )),
+                            hand: Some(Item::new_from_asset_expect(
+                                "common.items.armor.hand.plate_0",
+                            )),
+                            pants: Some(Item::new_from_asset_expect(match alignment {
+                                Alignment::Enemy => "common.items.npc_armor.pants.plate_red_0",
+                                _ => "common.items.npc_armor.pants.plate_green_0",
+                            })),
+                            foot: Some(Item::new_from_asset_expect(
+                                "common.items.armor.foot.plate_0",
+                            )),
+                            back: None,
+                            ring: None,
+                            neck: None,
+                            lantern: Some(Item::new_from_asset_expect(
+                                "common.items.lantern.black_0",
+                            )),
+                            glider: None,
+                            head: None,
+                            tabard: None,
+                        }
+                    } else {
+                        Loadout {
                             active_item,
                             second_item: None,
                             shoulder: None,
@@ -191,47 +195,50 @@ impl LoadoutBuilder {
                             back: None,
                             ring: None,
                             neck: None,
-                            lantern: None,
-                            glider: None,
-                            head: None,
-                            tabard: None,
-                        },
-                        Alignment::Enemy => Loadout {
-                            active_item,
-                            second_item: None,
-                            shoulder: Some(Item::new_from_asset_expect(
-                                "common.items.armor.shoulder.cultist_shoulder_purple",
-                            )),
-                            chest: Some(Item::new_from_asset_expect(
-                                "common.items.armor.chest.cultist_chest_purple",
-                            )),
-                            belt: Some(Item::new_from_asset_expect(
-                                "common.items.armor.belt.cultist_belt",
-                            )),
-                            hand: Some(Item::new_from_asset_expect(
-                                "common.items.armor.hand.cultist_hands_purple",
-                            )),
-                            pants: Some(Item::new_from_asset_expect(
-                                "common.items.armor.pants.cultist_legs_purple",
-                            )),
-                            foot: Some(Item::new_from_asset_expect(
-                                "common.items.armor.foot.cultist_boots",
-                            )),
-                            back: Some(Item::new_from_asset_expect(
-                                "common.items.armor.back.dungeon_purple-0",
-                            )),
-                            ring: None,
-                            neck: None,
                             lantern: Some(Item::new_from_asset_expect(
                                 "common.items.lantern.black_0",
                             )),
                             glider: None,
                             head: None,
                             tabard: None,
-                        },
-                        _ => LoadoutBuilder::animal(body).build(),
+                        }
                     }
-                }
+                },
+                Alignment::Enemy => Loadout {
+                    active_item,
+                    second_item: None,
+                    shoulder: Some(Item::new_from_asset_expect(
+                        "common.items.armor.shoulder.cultist_shoulder_purple",
+                    )),
+                    chest: Some(Item::new_from_asset_expect(
+                        "common.items.armor.chest.cultist_chest_purple",
+                    )),
+                    belt: Some(Item::new_from_asset_expect(
+                        "common.items.armor.belt.cultist_belt",
+                    )),
+                    hand: Some(Item::new_from_asset_expect(
+                        "common.items.armor.hand.cultist_hands_purple",
+                    )),
+                    pants: Some(Item::new_from_asset_expect(
+                        "common.items.armor.pants.cultist_legs_purple",
+                    )),
+                    foot: Some(Item::new_from_asset_expect(
+                        "common.items.armor.foot.cultist_boots",
+                    )),
+                    back: Some(Item::new_from_asset_expect(
+                        "common.items.armor.back.dungeon_purple-0",
+                    )),
+                    ring: None,
+                    neck: None,
+                    lantern: match rand::thread_rng().gen_range(0, 3) {
+                        0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")),
+                        _ => None,
+                    },
+                    glider: None,
+                    head: None,
+                    tabard: None,
+                },
+                _ => LoadoutBuilder::animal(body).build(),
             },
             Body::Golem(golem) => match golem.species {
                 golem::Species::StoneGolem => Loadout {
diff --git a/common/src/state.rs b/common/src/state.rs
index be586f6b55..aa39b19c23 100644
--- a/common/src/state.rs
+++ b/common/src/state.rs
@@ -25,7 +25,7 @@ use vek::*;
 const DAY_CYCLE_FACTOR: f64 = 24.0 * 2.0;
 
 /// A resource that stores the time of day.
-#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
+#[derive(Copy, Clone, Debug, Serialize, Deserialize, Default)]
 pub struct TimeOfDay(pub f64);
 
 /// A resource that stores the tick (i.e: physics) time.
@@ -237,20 +237,8 @@ impl State {
     pub fn get_time_of_day(&self) -> f64 { self.ecs.read_resource::<TimeOfDay>().0 }
 
     /// Get the current in-game day period (period of the day/night cycle)
-    pub fn get_day_period(&self) -> DayPeriod {
-        let tod = self.get_time_of_day().rem_euclid(60.0 * 60.0 * 24.0);
-        if tod < 60.0 * 60.0 * 4.0 {
-            DayPeriod::Night
-        } else if tod < 60.0 * 60.0 * 10.0 {
-            DayPeriod::Morning
-        } else if tod < 60.0 * 60.0 * 16.0 {
-            DayPeriod::Noon
-        } else if tod < 60.0 * 60.0 * 20.0 {
-            DayPeriod::Evening
-        } else {
-            DayPeriod::Night
-        }
-    }
+    /// Get the current in-game day period (period of the day/night cycle)
+    pub fn get_day_period(&self) -> DayPeriod { self.get_time_of_day().into() }
 
     /// Get the current in-game time.
     ///
diff --git a/common/src/states/glide.rs b/common/src/states/glide.rs
index c2269e298b..4a5040449b 100644
--- a/common/src/states/glide.rs
+++ b/common/src/states/glide.rs
@@ -6,7 +6,6 @@ use crate::{
 };
 use serde::{Deserialize, Serialize};
 use vek::Vec2;
-
 // Gravity is 9.81 * 4, so this makes gravity equal to .15
 const GLIDE_ANTIGRAV: f32 = crate::sys::phys::GRAVITY * 0.90;
 const GLIDE_ACCEL: f32 = 12.0;
@@ -32,6 +31,9 @@ impl CharacterBehavior for Data {
         {
             update.character = CharacterState::Idle;
         }
+        if data.loadout.glider.is_none() {
+            update.character = CharacterState::Idle
+        };
         // If there is a wall in front of character and they are trying to climb go to
         // climb
         handle_climb(&data, &mut update);
diff --git a/common/src/states/glide_wield.rs b/common/src/states/glide_wield.rs
index c1b486dc74..cb32fbe509 100644
--- a/common/src/states/glide_wield.rs
+++ b/common/src/states/glide_wield.rs
@@ -27,6 +27,9 @@ impl CharacterBehavior for Data {
         {
             update.character = CharacterState::Idle;
         }
+        if data.loadout.glider.is_none() {
+            update.character = CharacterState::Idle
+        };
 
         update
     }
diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs
index c970d9cfad..a61e49c1ac 100644
--- a/common/src/states/utils.rs
+++ b/common/src/states/utils.rs
@@ -215,6 +215,7 @@ pub fn attempt_swap_loadout(data: &JoinData, update: &mut StateUpdate) {
 /// Checks that player can wield the glider and updates `CharacterState` if so
 pub fn attempt_glide_wield(data: &JoinData, update: &mut StateUpdate) {
     if data.physics.on_ground
+        && data.loadout.glider.is_some()
         && !data
             .physics
             .in_fluid
diff --git a/common/src/sys/agent.rs b/common/src/sys/agent.rs
index 27ea8a810a..0cc5afdd2d 100644
--- a/common/src/sys/agent.rs
+++ b/common/src/sys/agent.rs
@@ -6,16 +6,17 @@ use crate::{
         group::Invite,
         item::{tool::ToolKind, ItemKind},
         Agent, Alignment, Body, CharacterState, ControlAction, ControlEvent, Controller,
-        GroupManip, Loadout, MountState, Ori, PhysicsState, Pos, Scale, Stats, UnresolvedChatMsg,
-        Vel,
+        GroupManip, LightEmitter, Loadout, MountState, Ori, PhysicsState, Pos, Scale, Stats,
+        UnresolvedChatMsg, Vel,
     },
     event::{EventBus, ServerEvent},
     metrics::SysMetrics,
     path::{Chaser, TraversalConfig},
     span,
-    state::{DeltaTime, Time},
+    state::{DeltaTime, Time, TimeOfDay},
     sync::{Uid, UidAllocator},
     terrain::{Block, TerrainGrid},
+    time::DayPeriod,
     util::Dir,
     vol::ReadVol,
 };
@@ -55,6 +56,8 @@ impl<'a> System<'a> for Sys {
         WriteStorage<'a, Controller>,
         ReadStorage<'a, MountState>,
         ReadStorage<'a, Invite>,
+        Read<'a, TimeOfDay>,
+        ReadStorage<'a, LightEmitter>,
     );
 
     #[allow(clippy::or_fun_call)] // TODO: Pending review in #587
@@ -85,6 +88,8 @@ impl<'a> System<'a> for Sys {
             mut controllers,
             mount_states,
             invites,
+            time_of_day,
+            light_emitter,
         ): Self::SystemData,
     ) {
         let start_time = std::time::Instant::now();
@@ -104,6 +109,7 @@ impl<'a> System<'a> for Sys {
             controller,
             mount_state,
             group,
+            light_emitter,
         ) in (
             &entities,
             &positions,
@@ -119,6 +125,7 @@ impl<'a> System<'a> for Sys {
             &mut controllers,
             mount_states.maybe(),
             groups.maybe(),
+            light_emitter.maybe(),
         )
             .join()
         {
@@ -144,6 +151,33 @@ impl<'a> System<'a> for Sys {
             }
 
             controller.reset();
+            let mut event_emitter = event_bus.emitter();
+            // Light lanterns at night
+            // TODO Add a method to turn on NPC lanterns underground
+            let lantern_equipped = loadout.lantern.as_ref().map_or(false, |item| {
+                matches!(item.kind(), comp::item::ItemKind::Lantern(_))
+            });
+            let lantern_turned_on = light_emitter.is_some();
+            let day_period = DayPeriod::from(time_of_day.0);
+            // Only emit event for agents that have a lantern equipped
+            if lantern_equipped {
+                let mut rng = thread_rng();
+                if day_period.is_dark() && !lantern_turned_on {
+                    // Agents with turned off lanterns turn them on randomly once it's nighttime and
+                    // keep them on
+                    // Only emit event for agents that sill need to
+                    // turn on their lantern
+                    if let 0 = rng.gen_range(0, 1000) {
+                        controller.events.push(ControlEvent::EnableLantern)
+                    }
+                } else if lantern_turned_on && day_period.is_light() {
+                    // agents with turned on lanterns turn them off randomly once it's daytime and
+                    // keep them off
+                    if let 0 = rng.gen_range(0, 2000) {
+                        controller.events.push(ControlEvent::DisableLantern)
+                    }
+                }
+            };
 
             let mut inputs = &mut controller.inputs;
 
@@ -513,7 +547,7 @@ impl<'a> System<'a> for Sys {
                                             if agent.can_speak {
                                                 let msg =
                                                     "npc.speech.villager_under_attack".to_string();
-                                                event_bus.emit_now(ServerEvent::Chat(
+                                                event_emitter.emit(ServerEvent::Chat(
                                                     UnresolvedChatMsg::npc(*uid, msg),
                                                 ));
                                             }
diff --git a/common/src/sys/controller.rs b/common/src/sys/controller.rs
index 002b7d732c..380b176adf 100644
--- a/common/src/sys/controller.rs
+++ b/common/src/sys/controller.rs
@@ -84,8 +84,11 @@ impl<'a> System<'a> for Sys {
                         }
                     },
                     ControlEvent::Unmount => server_emitter.emit(ServerEvent::Unmount(entity)),
-                    ControlEvent::ToggleLantern => {
-                        server_emitter.emit(ServerEvent::ToggleLantern(entity))
+                    ControlEvent::EnableLantern => {
+                        server_emitter.emit(ServerEvent::EnableLantern(entity))
+                    },
+                    ControlEvent::DisableLantern => {
+                        server_emitter.emit(ServerEvent::DisableLantern(entity))
                     },
                     ControlEvent::InventoryManip(manip) => {
                         // Unwield if a wielded equipment slot is being modified, to avoid entering
diff --git a/common/src/terrain/sprite.rs b/common/src/terrain/sprite.rs
index bc568c8378..40349525f9 100644
--- a/common/src/terrain/sprite.rs
+++ b/common/src/terrain/sprite.rs
@@ -169,7 +169,7 @@ impl SpriteKind {
             SpriteKind::RedFlower => false,
             SpriteKind::WhiteFlower => false,
             SpriteKind::YellowFlower => false,
-            SpriteKind::Sunflower => false,
+            SpriteKind::Sunflower => true,
             SpriteKind::LongGrass => false,
             SpriteKind::MediumGrass => false,
             SpriteKind::ShortGrass => false,
@@ -183,6 +183,7 @@ impl SpriteKind {
             SpriteKind::Twigs => true,
             SpriteKind::ShinyGem => true,
             SpriteKind::Crate => true,
+            SpriteKind::Beehive => true,
             _ => false,
         }
     }
diff --git a/common/src/time.rs b/common/src/time.rs
index 8434b131b2..2b8ceec266 100644
--- a/common/src/time.rs
+++ b/common/src/time.rs
@@ -6,6 +6,23 @@ pub enum DayPeriod {
     Evening,
 }
 
+impl From<f64> for DayPeriod {
+    fn from(time_of_day: f64) -> Self {
+        let tod = time_of_day.rem_euclid(60.0 * 60.0 * 24.0);
+        if tod < 60.0 * 60.0 * 4.0 {
+            DayPeriod::Night
+        } else if tod < 60.0 * 60.0 * 10.0 {
+            DayPeriod::Morning
+        } else if tod < 60.0 * 60.0 * 16.0 {
+            DayPeriod::Noon
+        } else if tod < 60.0 * 60.0 * 20.0 {
+            DayPeriod::Evening
+        } else {
+            DayPeriod::Night
+        }
+    }
+}
+
 impl DayPeriod {
     pub fn is_dark(&self) -> bool { *self == DayPeriod::Night }
 
diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs
index 9f9e762d2a..308363bc22 100644
--- a/server/src/events/entity_manipulation.rs
+++ b/server/src/events/entity_manipulation.rs
@@ -1,4 +1,8 @@
-use crate::{client::Client, comp::quadruped_small, Server, SpawnPoint, StateExt};
+use crate::{
+    client::Client,
+    comp::{biped_large, quadruped_medium, quadruped_small},
+    Server, SpawnPoint, StateExt,
+};
 use common::{
     assets::Asset,
     comp::{
@@ -307,48 +311,60 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc
                     1 => "common.loot_tables.loot_table_armor_light",
                     2 => "common.loot_tables.loot_table_armor_cloth",
                     3 => "common.loot_tables.loot_table_weapon_common",
+                    4 => "common.loots_tables.loot_table_armor_misc",
                     _ => "common.loot_tables.loot_table_humanoids",
                 },
                 Some(common::comp::Body::QuadrupedSmall(quadruped_small)) => {
                     match quadruped_small.species {
                         quadruped_small::Species::Dodarock => match rng.gen_range(0, 6) {
-                            0 => "common.loot_tables.loot_table_armor_misc",
                             1 => "common.loot_tables.loot_table_rocks",
                             _ => "common.loot_tables.loot_table_rocks",
                         },
                         _ => match rng.gen_range(0, 4) {
                             0 => "common.loot_tables.loot_table_food",
-                            1 => "common.loot_tables.loot_table_armor_misc",
                             2 => "common.loot_tables.loot_table_animal_parts",
                             _ => "common.loot_tables.loot_table_animal_parts",
                         },
                     }
                 },
-                Some(common::comp::Body::QuadrupedMedium(_)) => match rng.gen_range(0, 4) {
-                    0 => "common.loot_tables.loot_table_food",
-                    1 => "common.loot_tables.loot_table_armor_misc",
-                    2 => "common.loot_tables.loot_table_animal_parts",
-                    _ => "common.loot_tables.loot_table_animal_parts",
+                Some(common::comp::Body::QuadrupedMedium(quadruped_medium)) => {
+                    match quadruped_medium.species {
+                        quadruped_medium::Species::Frostfang => {
+                            "common.loot_tables.loot_table_frostfang"
+                        },
+                        _ => match rng.gen_range(0, 4) {
+                            0 => "common.loot_tables.loot_table_food",
+                            2 => "common.loot_tables.loot_table_animal_parts",
+                            _ => "common.loot_tables.loot_table_animal_parts",
+                        },
+                    }
                 },
                 Some(common::comp::Body::BirdMedium(_)) => match rng.gen_range(0, 3) {
                     0 => "common.loot_tables.loot_table_food",
-                    1 => "common.loot_tables.loot_table_armor_misc",
                     _ => "common.loot_tables.loot_table",
                 },
-                Some(common::comp::Body::BipedLarge(_)) => match rng.gen_range(0, 8) {
-                    0 => "common.loot_tables.loot_table_food",
-                    1 => "common.loot_tables.loot_table_armor_nature",
-                    3 => "common.loot_tables.loot_table_armor_heavy",
-                    5 => "common.loot_tables.loot_table_weapon_uncommon",
-                    6 => "common.loot_tables.loot_table_weapon_rare",
-                    _ => "common.loot_tables.loot_table_cave_large",
+                Some(common::comp::Body::BipedLarge(biped_large)) => match biped_large.species {
+                    biped_large::Species::Wendigo => match rng.gen_range(0, 7) {
+                        0 => "common.loot_tables.loot_table_food",
+                        1 => "common.loot_tables.loot_table_wendigo",
+                        3 => "common.loot_tables.loot_table_armor_heavy",
+                        5 => "common.loot_tables.loot_table_weapon_uncommon",
+                        6 => "common.loot_tables.loot_table_weapon_rare",
+                        _ => "common.loot_tables.loot_table_cave_large",
+                    },
+                    _ => match rng.gen_range(0, 8) {
+                        0 => "common.loot_tables.loot_table_food",
+                        1 => "common.loot_tables.loot_table_armor_nature",
+                        3 => "common.loot_tables.loot_table_armor_heavy",
+                        5 => "common.loot_tables.loot_table_weapon_uncommon",
+                        6 => "common.loot_tables.loot_table_weapon_rare",
+                        _ => "common.loot_tables.loot_table_cave_large",
+                    },
                 },
                 Some(common::comp::Body::Golem(_)) => match rng.gen_range(0, 9) {
                     0 => "common.loot_tables.loot_table_food",
-                    1 => "common.loot_tables.loot_table_armor_misc",
                     2 => "common.loot_tables.loot_table_armor_light",
                     3 => "common.loot_tables.loot_table_armor_heavy",
-                    4 => "common.loot_tables.loot_table_armor_misc",
                     5 => "common.loot_tables.loot_table_weapon_common",
                     6 => "common.loot_tables.loot_table_weapon_uncommon",
                     7 => "common.loot_tables.loot_table_weapon_rare",
diff --git a/server/src/events/interaction.rs b/server/src/events/interaction.rs
index f3fa1dc713..b5060208f5 100644
--- a/server/src/events/interaction.rs
+++ b/server/src/events/interaction.rs
@@ -10,39 +10,43 @@ use common::{
 use specs::{world::WorldExt, Entity as EcsEntity};
 use tracing::error;
 
-pub fn handle_lantern(server: &mut Server, entity: EcsEntity) {
+pub fn handle_lantern(server: &mut Server, entity: EcsEntity, enable: bool) {
     let ecs = server.state_mut().ecs();
-    if ecs
+
+    let lantern_exists = ecs
         .read_storage::<comp::LightEmitter>()
         .get(entity)
-        .map_or(false, |light| light.strength > 0.0)
-    {
-        server
-            .state_mut()
-            .ecs()
-            .write_storage::<comp::LightEmitter>()
-            .remove(entity);
-    } else {
-        let loadout_storage = ecs.read_storage::<comp::Loadout>();
-        let lantern_opt = loadout_storage
-            .get(entity)
-            .and_then(|loadout| loadout.lantern.as_ref())
-            .and_then(|item| {
-                if let comp::item::ItemKind::Lantern(l) = item.kind() {
-                    Some(l)
-                } else {
-                    None
-                }
-            });
-        if let Some(lantern) = lantern_opt {
-            let _ = ecs
+        .map_or(false, |light| light.strength > 0.0);
+
+    if lantern_exists != enable {
+        if !enable {
+            server
+                .state_mut()
+                .ecs()
                 .write_storage::<comp::LightEmitter>()
-                .insert(entity, comp::LightEmitter {
-                    col: lantern.color(),
-                    strength: lantern.strength(),
-                    flicker: 0.35,
-                    animated: true,
+                .remove(entity);
+        } else {
+            let loadout_storage = ecs.read_storage::<comp::Loadout>();
+            let lantern_opt = loadout_storage
+                .get(entity)
+                .and_then(|loadout| loadout.lantern.as_ref())
+                .and_then(|item| {
+                    if let comp::item::ItemKind::Lantern(l) = item.kind() {
+                        Some(l)
+                    } else {
+                        None
+                    }
                 });
+            if let Some(lantern) = lantern_opt {
+                let _ =
+                    ecs.write_storage::<comp::LightEmitter>()
+                        .insert(entity, comp::LightEmitter {
+                            col: lantern.color(),
+                            strength: lantern.strength(),
+                            flicker: 0.35,
+                            animated: true,
+                        });
+            }
         }
     }
 }
diff --git a/server/src/events/inventory_manip.rs b/server/src/events/inventory_manip.rs
index 0ee5a4430e..1f879bcbc4 100644
--- a/server/src/events/inventory_manip.rs
+++ b/server/src/events/inventory_manip.rs
@@ -172,7 +172,9 @@ pub fn handle_inventory(server: &mut Server, entity: EcsEntity, manip: comp::Inv
                         inventory
                             .get(slot)
                             .map_or((false, None), |i| match i.kind() {
-                                ItemKind::Tool(_) | ItemKind::Armor { .. } => (true, None),
+                                ItemKind::Tool(_)
+                                | ItemKind::Armor { .. }
+                                | ItemKind::Glider(_) => (true, None),
                                 ItemKind::Lantern(lantern) => (true, Some(lantern)),
                                 _ => (false, None),
                             });
diff --git a/server/src/events/mod.rs b/server/src/events/mod.rs
index 0f961e11b1..794f43bbe0 100644
--- a/server/src/events/mod.rs
+++ b/server/src/events/mod.rs
@@ -100,7 +100,8 @@ impl Server {
                 ServerEvent::LandOnGround { entity, vel } => {
                     handle_land_on_ground(&self, entity, vel)
                 },
-                ServerEvent::ToggleLantern(entity) => handle_lantern(self, entity),
+                ServerEvent::EnableLantern(entity) => handle_lantern(self, entity, true),
+                ServerEvent::DisableLantern(entity) => handle_lantern(self, entity, false),
                 ServerEvent::Mount(mounter, mountee) => handle_mount(self, mounter, mountee),
                 ServerEvent::Unmount(mounter) => handle_unmount(self, mounter),
                 ServerEvent::Possess(possessor_uid, possesse_uid) => {
diff --git a/server/src/sys/terrain.rs b/server/src/sys/terrain.rs
index e372a95073..9be68b799b 100644
--- a/server/src/sys/terrain.rs
+++ b/server/src/sys/terrain.rs
@@ -120,10 +120,6 @@ impl<'a> System<'a> for Sys {
                 // let damage = stats.level.level() as i32; TODO: Make NPC base damage
                 // non-linearly depend on their level
 
-                let loadout =
-                    LoadoutBuilder::build_loadout(body, alignment, main_tool, entity.is_giant)
-                        .build();
-
                 let mut scale = entity.scale;
 
                 // TODO: Remove this and implement scaling or level depending on stuff like
@@ -136,18 +132,12 @@ impl<'a> System<'a> for Sys {
 
                 // Replace stuff if it's a boss
                 if entity.is_giant {
-                    if rand::random::<f32>() < 0.65 {
+                    if rand::random::<f32>() < 0.65 && entity.alignment != Alignment::Enemy {
                         let body_new = comp::humanoid::Body::random();
                         body = comp::Body::Humanoid(body_new);
-                        let adjective = if let Alignment::Enemy = entity.alignment {
-                            "Angry"
-                        } else {
-                            "Gentle"
-                        };
                         stats = comp::Stats::new(
                             format!(
-                                "{} Giant {}",
-                                adjective,
+                                "Gentle Giant {}",
                                 get_npc_name(&NPC_NAMES.humanoid, body_new.species)
                             ),
                             body,
@@ -157,6 +147,10 @@ impl<'a> System<'a> for Sys {
                     scale = 2.0 + rand::random::<f32>();
                 }
 
+                let loadout =
+                    LoadoutBuilder::build_loadout(body, alignment, main_tool, entity.is_giant)
+                        .build();
+
                 stats.update_max_hp(stats.body_type);
 
                 stats
diff --git a/voxygen/src/hud/bag.rs b/voxygen/src/hud/bag.rs
index 881742b54e..f1252c9f0d 100644
--- a/voxygen/src/hud/bag.rs
+++ b/voxygen/src/hud/bag.rs
@@ -3,9 +3,11 @@ use super::{
     item_imgs::ItemImgs,
     slots::{ArmorSlot, EquipSlot, InventorySlot, SlotManager},
     util::loadout_slot_text,
-    Show, CRITICAL_HP_COLOR, LOW_HP_COLOR, TEXT_COLOR, UI_HIGHLIGHT_0, UI_MAIN, XP_COLOR,
+    Show, CRITICAL_HP_COLOR, LOW_HP_COLOR, QUALITY_COMMON, TEXT_COLOR, UI_HIGHLIGHT_0, UI_MAIN,
+    XP_COLOR,
 };
 use crate::{
+    hud::get_quality_col,
     i18n::VoxygenLocalization,
     ui::{
         fonts::ConrodVoxygenFonts,
@@ -14,7 +16,7 @@ use crate::{
     },
 };
 use client::Client;
-use common::comp::Stats;
+use common::comp::{item::Quality, Stats};
 use conrod_core::{
     color,
     widget::{self, Button, Image, Rectangle, Text},
@@ -72,6 +74,7 @@ widget_ids! {
         feet_slot,
         back_slot,
         tabard_slot,
+        glider_slot,
         mainhand_slot,
         offhand_slot,
         // ???
@@ -171,7 +174,6 @@ impl<'a> Widget for Bag<'a> {
             Some(l) => l,
             None => return None,
         };
-
         let exp_percentage = (self.stats.exp.current() as f64) / (self.stats.exp.maximum() as f64);
         let exp_threshold = format!(
             "{}/{} {}",
@@ -184,7 +186,7 @@ impl<'a> Widget for Bag<'a> {
         let bag_space = format!("{}/{}", space_used, space_max);
         let bag_space_percentage = space_used as f32 / space_max as f32;
         let level = (self.stats.level.level()).to_string();
-        let currency = 0; // TODO: Add as a Stat maybe?
+        let currency = 0; // TODO: Add as a Stat          
 
         // Tooltips
         let item_tooltip = Tooltip::new({
@@ -202,7 +204,6 @@ impl<'a> Widget for Bag<'a> {
         .title_font_size(self.fonts.cyri.scale(15))
         .parent(ui.window)
         .desc_font_size(self.fonts.cyri.scale(12))
-        .title_text_color(TEXT_COLOR)
         .font_id(self.fonts.cyri.conrod_id)
         .desc_text_color(TEXT_COLOR);
         // BG
@@ -308,19 +309,6 @@ impl<'a> Widget for Bag<'a> {
             .font_size(self.fonts.cyri.scale(22))
             .color(TEXT_COLOR)
             .set(state.ids.inventory_title, ui);
-            //Armor Slots
-            //Slots BG
-            /*Image::new(self.imgs.inv_runes)
-                .w_h(424.0, 454.0)
-                .mid_top_with_margin_on(state.ids.bg, 0.0)
-                .color(Some(UI_HIGHLIGHT_0))
-                .floating(true)
-                .set(state.ids.slots_bg, ui);
-            Image::new(self.imgs.inv_slots)
-            .w_h(424.0, 401.0)
-            .mid_top_with_margin_on(state.ids.bg, 57.0)
-            .color(Some(UI_HIGHLIGHT_0))
-            .set(state.ids.slots_bg, ui);*/
             // Armor Slots
             let mut slot_maker = SlotMaker {
                 empty_slot: self.imgs.armor_slot_empty,
@@ -343,138 +331,329 @@ impl<'a> Widget for Bag<'a> {
                 slot_manager: Some(self.slot_manager),
             };
             let i18n = &self.localized_strings;
+            let filled_slot = self.imgs.armor_slot;
             //  Head
             let (title, desc) =
                 loadout_slot_text(loadout.head.as_ref(), || (i18n.get("hud.bag.head"), ""));
+            let head_q_col = loadout
+                .head
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Head), [45.0; 2])
                 .mid_top_with_margin_on(state.ids.bg_frame, 60.0)
                 .with_icon(self.imgs.head_bg, Vec2::new(32.0, 40.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .with_background_color(TEXT_COLOR)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    head_q_col,
+                )
                 .set(state.ids.head_slot, ui);
             //  Necklace
             let (title, desc) =
                 loadout_slot_text(loadout.neck.as_ref(), || (i18n.get("hud.bag.neck"), ""));
+            let neck_q_col = loadout
+                .neck
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Neck), [45.0; 2])
                 .mid_bottom_with_margin_on(state.ids.head_slot, -55.0)
                 .with_icon(self.imgs.necklace_bg, Vec2::new(40.0, 31.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    neck_q_col,
+                )
                 .set(state.ids.neck_slot, ui);
             // Chest
             //Image::new(self.imgs.armor_slot) // different graphics for empty/non empty
             let (title, desc) =
                 loadout_slot_text(loadout.chest.as_ref(), || (i18n.get("hud.bag.chest"), ""));
+            let chest_q_col = loadout
+                .chest
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Chest), [85.0; 2])
                 .mid_bottom_with_margin_on(state.ids.neck_slot, -95.0)
                 .with_icon(self.imgs.chest_bg, Vec2::new(64.0, 42.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    chest_q_col,
+                )
                 .set(state.ids.chest_slot, ui);
             //  Shoulders
             let (title, desc) = loadout_slot_text(loadout.shoulder.as_ref(), || {
                 (i18n.get("hud.bag.shoulders"), "")
             });
+            let shoulder_q_col = loadout
+                .shoulder
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Shoulders), [70.0; 2])
                 .bottom_left_with_margins_on(state.ids.chest_slot, 0.0, -80.0)
                 .with_icon(self.imgs.shoulders_bg, Vec2::new(60.0, 36.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    shoulder_q_col,
+                )
                 .set(state.ids.shoulders_slot, ui);
             // Hands
             let (title, desc) =
                 loadout_slot_text(loadout.hand.as_ref(), || (i18n.get("hud.bag.hands"), ""));
+            let chest_q_col = loadout
+                .hand
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Hands), [70.0; 2])
                 .bottom_right_with_margins_on(state.ids.chest_slot, 0.0, -80.0)
                 .with_icon(self.imgs.hands_bg, Vec2::new(55.0, 60.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    chest_q_col,
+                )
                 .set(state.ids.hands_slot, ui);
             // Belt
             let (title, desc) =
                 loadout_slot_text(loadout.belt.as_ref(), || (i18n.get("hud.bag.belt"), ""));
+            let belt_q_col = loadout
+                .belt
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Belt), [45.0; 2])
                 .mid_bottom_with_margin_on(state.ids.chest_slot, -55.0)
                 .with_icon(self.imgs.belt_bg, Vec2::new(40.0, 23.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    belt_q_col,
+                )
                 .set(state.ids.belt_slot, ui);
             // Legs
             let (title, desc) =
                 loadout_slot_text(loadout.pants.as_ref(), || (i18n.get("hud.bag.legs"), ""));
+            let legs_q_col = loadout
+                .pants
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Legs), [85.0; 2])
                 .mid_bottom_with_margin_on(state.ids.belt_slot, -95.0)
                 .with_icon(self.imgs.legs_bg, Vec2::new(48.0, 70.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    legs_q_col,
+                )
                 .set(state.ids.legs_slot, ui);
             // Lantern
             let (title, desc) = loadout_slot_text(loadout.lantern.as_ref(), || {
                 (i18n.get("hud.bag.lantern"), "")
             });
+            let lantern_q_col = loadout
+                .lantern
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Lantern, [45.0; 2])
                 .bottom_right_with_margins_on(state.ids.shoulders_slot, -55.0, 0.0)
                 .with_icon(self.imgs.lantern_bg, Vec2::new(24.0, 38.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    lantern_q_col,
+                )
                 .set(state.ids.lantern_slot, ui);
             // Ring
             let (title, desc) =
                 loadout_slot_text(loadout.ring.as_ref(), || (i18n.get("hud.bag.ring"), ""));
+            let ring_q_col = loadout
+                .ring
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Ring), [45.0; 2])
                 .bottom_left_with_margins_on(state.ids.hands_slot, -55.0, 0.0)
                 .with_icon(self.imgs.ring_bg, Vec2::new(36.0, 40.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    ring_q_col,
+                )
                 .set(state.ids.ring_slot, ui);
             // Back
             let (title, desc) =
                 loadout_slot_text(loadout.back.as_ref(), || (i18n.get("hud.bag.back"), ""));
+            let back_q_col = loadout
+                .back
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Back), [45.0; 2])
                 .down_from(state.ids.lantern_slot, 10.0)
                 .with_icon(self.imgs.back_bg, Vec2::new(33.0, 40.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    back_q_col,
+                )
                 .set(state.ids.back_slot, ui);
             // Foot
             let (title, desc) =
                 loadout_slot_text(loadout.foot.as_ref(), || (i18n.get("hud.bag.feet"), ""));
+            let foot_q_col = loadout
+                .foot
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Feet), [45.0; 2])
                 .down_from(state.ids.ring_slot, 10.0)
                 .with_icon(self.imgs.feet_bg, Vec2::new(32.0, 40.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    foot_q_col,
+                )
                 .set(state.ids.feet_slot, ui);
             // Tabard
             let (title, desc) =
                 loadout_slot_text(loadout.tabard.as_ref(), || (i18n.get("hud.bag.tabard"), ""));
+            let tabard_q_col = loadout
+                .tabard
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Armor(ArmorSlot::Tabard), [70.0; 2])
                 .top_right_with_margins_on(state.ids.bg_frame, 80.5, 53.0)
                 .with_icon(self.imgs.tabard_bg, Vec2::new(60.0, 60.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    tabard_q_col,
+                )
                 .set(state.ids.tabard_slot, ui);
+            // Glider
+            let (title, desc) =
+                loadout_slot_text(loadout.glider.as_ref(), || (i18n.get("hud.bag.glider"), ""));
+            let glider_q_col = loadout
+                .glider
+                .as_ref()
+                .map(|item| get_quality_col(item))
+                .unwrap_or(QUALITY_COMMON);
+            slot_maker
+                .fabricate(EquipSlot::Glider, [70.0; 2])
+                .top_left_with_margins_on(state.ids.bg_frame, 80.5, 53.0)
+                .with_icon(self.imgs.glider_bg, Vec2::new(60.0, 60.0), Some(UI_MAIN))
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    glider_q_col,
+                )
+                .set(state.ids.glider_slot, ui);
             // Mainhand/Left-Slot
             let (title, desc) =
                 loadout_slot_text(loadout.active_item.as_ref().map(|i| &i.item), || {
                     (i18n.get("hud.bag.mainhand"), "")
                 });
+            let mainhand_q_col = loadout
+                .active_item
+                .as_ref()
+                .map(|item| get_quality_col(&item.item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Mainhand, [85.0; 2])
                 .bottom_right_with_margins_on(state.ids.back_slot, -95.0, 0.0)
                 .with_icon(self.imgs.mainhand_bg, Vec2::new(75.0, 75.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    mainhand_q_col,
+                )
                 .set(state.ids.mainhand_slot, ui);
             // Offhand/Right-Slot
             let (title, desc) =
                 loadout_slot_text(loadout.second_item.as_ref().map(|i| &i.item), || {
                     (i18n.get("hud.bag.offhand"), "")
                 });
+            let offhand_q_col = loadout
+                .second_item
+                .as_ref()
+                .map(|item| get_quality_col(&item.item))
+                .unwrap_or(QUALITY_COMMON);
             slot_maker
                 .fabricate(EquipSlot::Offhand, [85.0; 2])
                 .bottom_left_with_margins_on(state.ids.feet_slot, -95.0, 0.0)
                 .with_icon(self.imgs.offhand_bg, Vec2::new(75.0, 75.0), Some(UI_MAIN))
-                .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                .filled_slot(filled_slot)
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    offhand_q_col,
+                )
                 .set(state.ids.offhand_slot, ui);
         } else {
             // Stats
@@ -633,8 +812,26 @@ impl<'a> Widget for Bag<'a> {
                 );
             if let Some(item) = item {
                 let (title, desc) = super::util::item_text(item);
+                let quality_col = get_quality_col(item);
+                let quality_col_img = match item.quality() {
+                    Quality::Low => self.imgs.inv_slot_grey,
+                    Quality::Common => self.imgs.inv_slot,
+                    Quality::Moderate => self.imgs.inv_slot_green,
+                    Quality::High => self.imgs.inv_slot_blue,
+                    Quality::Epic => self.imgs.inv_slot_purple,
+                    Quality::Legendary => self.imgs.inv_slot_gold,
+                    Quality::Artifact => self.imgs.inv_slot_orange,
+                    _ => self.imgs.inv_slot_red,
+                };
                 slot_widget
-                    .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                    .filled_slot(quality_col_img)
+                    .with_tooltip(
+                        self.tooltip_manager,
+                        title,
+                        &*desc,
+                        &item_tooltip,
+                        quality_col,
+                    )
                     .set(state.ids.inv_slots[i], ui);
             } else {
                 slot_widget.set(state.ids.inv_slots[i], ui);
@@ -675,7 +872,13 @@ impl<'a> Widget for Bag<'a> {
             .press_image(self.imgs.inv_tab_inactive_press)
             .image_color(UI_HIGHLIGHT_0)
             .down_from(state.ids.tab_1, 0.0)
-            .with_tooltip(self.tooltip_manager, "Not yet Available", "", &item_tooltip)
+            .with_tooltip(
+                self.tooltip_manager,
+                "Not yet Available",
+                "",
+                &item_tooltip,
+                TEXT_COLOR,
+            )
             .set(state.ids.tab_2, ui)
             .was_clicked()
         {}
@@ -685,7 +888,13 @@ impl<'a> Widget for Bag<'a> {
             .press_image(self.imgs.inv_tab_inactive_press)
             .down_from(state.ids.tab_2, 0.0)
             .image_color(UI_HIGHLIGHT_0)
-            .with_tooltip(self.tooltip_manager, "Not yet Available", "", &item_tooltip)
+            .with_tooltip(
+                self.tooltip_manager,
+                "Not yet Available",
+                "",
+                &item_tooltip,
+                TEXT_COLOR,
+            )
             .set(state.ids.tab_3, ui)
             .was_clicked()
         {}
@@ -695,7 +904,13 @@ impl<'a> Widget for Bag<'a> {
             .press_image(self.imgs.inv_tab_inactive_press)
             .down_from(state.ids.tab_3, 0.0)
             .image_color(UI_HIGHLIGHT_0)
-            .with_tooltip(self.tooltip_manager, "Not yet Available", "", &item_tooltip)
+            .with_tooltip(
+                self.tooltip_manager,
+                "Not yet Available",
+                "",
+                &item_tooltip,
+                TEXT_COLOR,
+            )
             .set(state.ids.tab_4, ui)
             .was_clicked()
         {}
diff --git a/voxygen/src/hud/buttons.rs b/voxygen/src/hud/buttons.rs
index 40a163ee9d..e98cbebf19 100644
--- a/voxygen/src/hud/buttons.rs
+++ b/voxygen/src/hud/buttons.rs
@@ -137,7 +137,6 @@ impl<'a> Widget for Buttons<'a> {
         .title_font_size(self.fonts.cyri.scale(15))
         .parent(ui.window)
         .desc_font_size(self.fonts.cyri.scale(12))
-        .title_text_color(TEXT_COLOR)
         .font_id(self.fonts.cyri.conrod_id)
         .desc_text_color(TEXT_COLOR);
         // Bag
@@ -165,6 +164,7 @@ impl<'a> Widget for Buttons<'a> {
                 .replace("{playername}", &self.stats.name.to_string().as_str()),
             "",
             &button_tooltip,
+            TEXT_COLOR,
         )
         .set(state.ids.bag, ui)
         .was_clicked()
@@ -225,6 +225,7 @@ impl<'a> Widget for Buttons<'a> {
                 &localized_strings.get("common.settings"),
                 "",
                 &button_tooltip,
+                TEXT_COLOR,
             )
             .set(state.ids.settings_button, ui)
             .was_clicked()
@@ -262,6 +263,7 @@ impl<'a> Widget for Buttons<'a> {
                 &localized_strings.get("hud.social"),
                 "",
                 &button_tooltip,
+                TEXT_COLOR,
             )
             .set(state.ids.social_button, ui)
             .was_clicked()
@@ -298,6 +300,7 @@ impl<'a> Widget for Buttons<'a> {
                 &localized_strings.get("hud.map.map_title"),
                 "",
                 &button_tooltip,
+                TEXT_COLOR,
             )
             .set(state.ids.map_button, ui)
             .was_clicked()
@@ -335,6 +338,7 @@ impl<'a> Widget for Buttons<'a> {
                 &localized_strings.get("hud.spell"),
                 "",
                 &button_tooltip,
+                TEXT_COLOR,
             )
             .set(state.ids.spellbook_button, ui)
             .was_clicked()
@@ -372,6 +376,7 @@ impl<'a> Widget for Buttons<'a> {
                 &localized_strings.get("hud.crafting"),
                 "",
                 &button_tooltip,
+                TEXT_COLOR,
             )
             .set(state.ids.crafting_button, ui)
             .was_clicked()
diff --git a/voxygen/src/hud/crafting.rs b/voxygen/src/hud/crafting.rs
index 23077964d6..0532dd06d2 100644
--- a/voxygen/src/hud/crafting.rs
+++ b/voxygen/src/hud/crafting.rs
@@ -4,17 +4,20 @@ use super::{
     TEXT_COLOR, TEXT_DULL_RED_COLOR, TEXT_GRAY_COLOR, UI_HIGHLIGHT_0, UI_MAIN,
 };
 use crate::{
+    hud::get_quality_col,
     i18n::VoxygenLocalization,
     ui::{fonts::ConrodVoxygenFonts, ImageFrame, Tooltip, TooltipManager, Tooltipable},
 };
 use client::{self, Client};
-use common::comp::{item::ItemDesc, Inventory};
+use common::comp::{
+    item::{ItemDesc, Quality},
+    Inventory,
+};
 use conrod_core::{
     color,
     widget::{self, Button, Image, Rectangle, Scrollbar, Text},
     widget_ids, Color, Colorable, Labelable, Positionable, Sizeable, Widget, WidgetCommon,
 };
-
 widget_ids! {
     pub struct Ids {
         window,
@@ -39,6 +42,7 @@ widget_ids! {
         ingredients_txt,
         output_img_frame,
         output_img,
+        output_amount,
     }
 }
 
@@ -135,7 +139,6 @@ impl<'a> Widget for Crafting<'a> {
         .title_font_size(self.fonts.cyri.scale(15))
         .parent(ui.window)
         .desc_font_size(self.fonts.cyri.scale(12))
-        .title_text_color(TEXT_COLOR)
         .font_id(self.fonts.cyri.conrod_id)
         .desc_text_color(TEXT_COLOR);
 
@@ -234,7 +237,25 @@ impl<'a> Widget for Crafting<'a> {
                     events.push(Event::CraftRecipe(recipe.clone()));
                 }
                 // Result Image BG
-                Image::new(self.imgs.inv_slot)
+                let quality_col_img = if let Some(recipe) = state
+                    .selected_recipe
+                    .as_ref()
+                    .and_then(|r| self.client.recipe_book().get(r.as_str()))
+                {
+                    match recipe.output.0.quality {
+                        Quality::Low => self.imgs.inv_slot_grey,
+                        Quality::Common => self.imgs.inv_slot,
+                        Quality::Moderate => self.imgs.inv_slot_green,
+                        Quality::High => self.imgs.inv_slot_blue,
+                        Quality::Epic => self.imgs.inv_slot_purple,
+                        Quality::Legendary => self.imgs.inv_slot_gold,
+                        Quality::Artifact => self.imgs.inv_slot_orange,
+                        _ => self.imgs.inv_slot_red,
+                    }
+                } else {
+                    self.imgs.inv_slot
+                };
+                Image::new(quality_col_img)
                     .w_h(60.0, 60.0)
                     .top_right_with_margins_on(state.ids.align_ing, 15.0, 10.0)
                     .parent(ids.align_ing)
@@ -248,19 +269,26 @@ impl<'a> Widget for Crafting<'a> {
                     let output_text = format!("x{}", &recipe.output.1.to_string());
                     // Output Image
                     let (title, desc) = super::util::item_text(&*recipe.output.0);
+                    let quality_col = get_quality_col(&*recipe.output.0);
                     Button::image(
                         self.item_imgs
                             .img_id_or_not_found_img((&*recipe.output.0.kind()).into()),
                     )
                     .w_h(55.0, 55.0)
-                    .middle_of(state.ids.output_img_frame)
                     .label(&output_text)
                     .label_color(TEXT_COLOR)
                     .label_font_size(self.fonts.cyri.scale(14))
                     .label_font_id(self.fonts.cyri.conrod_id)
                     .label_y(conrod_core::position::Relative::Scalar(-24.0))
                     .label_x(conrod_core::position::Relative::Scalar(24.0))
-                    .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
+                    .middle_of(state.ids.output_img_frame)
+                    .with_tooltip(
+                        self.tooltip_manager,
+                        title,
+                        &*desc,
+                        &item_tooltip,
+                        quality_col,
+                    )
                     .set(state.ids.output_img, ui);
                 }
             },
@@ -385,7 +413,18 @@ impl<'a> Widget for Crafting<'a> {
                 } else {
                     0.0
                 };
-                let frame = Image::new(self.imgs.inv_slot).w_h(25.0, 25.0);
+                let quality_col = get_quality_col(&**item_def);
+                let quality_col_img = match &item_def.quality {
+                    Quality::Low => self.imgs.inv_slot_grey,
+                    Quality::Common => self.imgs.inv_slot,
+                    Quality::Moderate => self.imgs.inv_slot_green,
+                    Quality::High => self.imgs.inv_slot_blue,
+                    Quality::Epic => self.imgs.inv_slot_purple,
+                    Quality::Legendary => self.imgs.inv_slot_gold,
+                    Quality::Artifact => self.imgs.inv_slot_orange,
+                    _ => self.imgs.inv_slot_red,
+                };
+                let frame = Image::new(quality_col_img).w_h(25.0, 25.0);
                 let frame = if *amount == 0 {
                     frame.down_from(state.ids.req_text[i], 10.0 + frame_offset)
                 } else {
@@ -394,12 +433,20 @@ impl<'a> Widget for Crafting<'a> {
                 frame.set(state.ids.ingredient_frame[i], ui);
                 //Item Image
                 let (title, desc) = super::util::item_text(&**item_def);
-                Button::image(self.item_imgs.img_id_or_not_found_img((&*item_def.kind()).into()))
-                    .w_h(22.0, 22.0)
-                    .middle_of(state.ids.ingredient_frame[i])
-                    //.image_color(col)
-                    .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip)
-                    .set(state.ids.ingredient_img[i], ui);
+                Button::image(
+                    self.item_imgs
+                        .img_id_or_not_found_img((&*item_def.kind()).into()),
+                )
+                .w_h(22.0, 22.0)
+                .middle_of(state.ids.ingredient_frame[i])
+                .with_tooltip(
+                    self.tooltip_manager,
+                    title,
+                    &*desc,
+                    &item_tooltip,
+                    quality_col,
+                )
+                .set(state.ids.ingredient_img[i], ui);
                 // Ingredients text and amount
                 // Don't show inventory amounts above 999 to avoid the widget clipping
                 let over9k = "99+";
diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs
index 3a2e21382b..7dbe148a98 100644
--- a/voxygen/src/hud/img_ids.rs
+++ b/voxygen/src/hud/img_ids.rs
@@ -224,6 +224,13 @@ image_ids! {
         inv_frame: "voxygen.element.misc_bg.inv_frame",
         char_art: "voxygen.element.icons.character",
         inv_slot: "voxygen.element.buttons.inv_slot",
+        inv_slot_grey: "voxygen.element.buttons.inv_slot_grey",
+        inv_slot_green: "voxygen.element.buttons.inv_slot_green",
+        inv_slot_blue: "voxygen.element.buttons.inv_slot_blue",
+        inv_slot_purple: "voxygen.element.buttons.inv_slot_purple",
+        inv_slot_gold: "voxygen.element.buttons.inv_slot_gold",
+        inv_slot_orange: "voxygen.element.buttons.inv_slot_orange",
+        inv_slot_red: "voxygen.element.buttons.inv_slot_red",
         inv_slot_sel: "voxygen.element.buttons.inv_slot_sel",
         scrollbar_bg: "voxygen.element.slider.scrollbar",
         inv_tab_active: "voxygen.element.buttons.inv_tab_active",
@@ -243,6 +250,7 @@ image_ids! {
         feet_bg: "voxygen.element.icons.feet",
         ring_bg: "voxygen.element.icons.ring",
         tabard_bg: "voxygen.element.icons.tabard",
+        glider_bg: "voxygen.element.icons.glider",
         chest_bg: "voxygen.element.icons.chest",
         back_bg: "voxygen.element.icons.back",
         lantern_bg: "voxygen.element.icons.lantern",
diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs
index 8d72386d30..8eaeafa482 100644
--- a/voxygen/src/hud/mod.rs
+++ b/voxygen/src/hud/mod.rs
@@ -56,7 +56,15 @@ use crate::{
     GlobalState,
 };
 use client::Client;
-use common::{assets::Asset, comp, span, sync::Uid, terrain::TerrainChunk, vol::RectRasterableVol};
+use common::{
+    assets::Asset,
+    comp,
+    comp::item::{ItemDesc, Quality},
+    span,
+    sync::Uid,
+    terrain::TerrainChunk,
+    vol::RectRasterableVol,
+};
 use conrod_core::{
     text::cursor::Index,
     widget::{self, Button, Image, Text},
@@ -89,6 +97,16 @@ const MANA_COLOR: Color = Color::Rgba(0.29, 0.62, 0.75, 0.9);
 //const FOCUS_COLOR: Color = Color::Rgba(1.0, 0.56, 0.04, 1.0);
 //const RAGE_COLOR: Color = Color::Rgba(0.5, 0.04, 0.13, 1.0);
 
+// Item Quality Colors
+const QUALITY_LOW: Color = Color::Rgba(0.41, 0.41, 0.41, 1.0); // Grey - Trash, can be sold to vendors
+const QUALITY_COMMON: Color = Color::Rgba(0.79, 1.09, 1.09, 1.0); // No Color - Crafting mats, food, starting equipment, quest items (like keys), rewards for easy quests
+const QUALITY_MODERATE: Color = Color::Rgba(0.06, 0.69, 0.12, 1.0); // Green - Quest Rewards, commonly looted items from NPCs
+const QUALITY_HIGH: Color = Color::Rgba(0.18, 0.32, 0.9, 1.0); // Blue - Dungeon rewards, boss loot, rewards for hard quests
+const QUALITY_EPIC: Color = Color::Rgba(0.58, 0.29, 0.93, 1.0); // Purple - Rewards for epic quests and very hard bosses
+const QUALITY_LEGENDARY: Color = Color::Rgba(0.92, 0.76, 0.0, 1.0); // Gold - Legendary items that require a big effort to acquire
+const QUALITY_ARTIFACT: Color = Color::Rgba(0.74, 0.24, 0.11, 1.0); // Orange - Not obtainable by normal means, "artifacts"
+const QUALITY_DEBUG: Color = Color::Rgba(0.79, 0.19, 0.17, 1.0); // Red - Admin and debug items
+
 // Chat Colors
 /// Color for chat command errors (yellow !)
 const ERROR_COLOR: Color = Color::Rgba(1.0, 1.0, 0.0, 1.0);
@@ -108,7 +126,7 @@ const GROUP_COLOR: Color = Color::Rgba(0.47, 0.84, 1.0, 1.0);
 const FACTION_COLOR: Color = Color::Rgba(0.24, 1.0, 0.48, 1.0);
 /// Color for regional chat
 const REGION_COLOR: Color = Color::Rgba(0.8, 1.0, 0.8, 1.0);
-/// Color for death messages
+/// Color for death messagesw
 const KILL_COLOR: Color = Color::Rgba(1.0, 0.17, 0.17, 1.0);
 /// Color for global messages
 const WORLD_COLOR: Color = Color::Rgba(0.95, 1.0, 0.95, 1.0);
@@ -2641,3 +2659,16 @@ impl Hud {
 
     pub fn auto_walk(&mut self, auto_walk: bool) { self.show.auto_walk = auto_walk; }
 }
+// Get item qualities of equipped items and assign a tooltip title/frame color
+pub fn get_quality_col<I: ItemDesc>(item: &I) -> Color {
+    match item.quality() {
+        Quality::Low => QUALITY_LOW,
+        Quality::Common => QUALITY_COMMON,
+        Quality::Moderate => QUALITY_MODERATE,
+        Quality::High => QUALITY_HIGH,
+        Quality::Epic => QUALITY_EPIC,
+        Quality::Legendary => QUALITY_LEGENDARY,
+        Quality::Artifact => QUALITY_ARTIFACT,
+        Quality::Debug => QUALITY_DEBUG,
+    }
+}
diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs
index 7c6957aefe..899581ba4f 100644
--- a/voxygen/src/hud/skillbar.rs
+++ b/voxygen/src/hud/skillbar.rs
@@ -766,7 +766,6 @@ impl<'a> Widget for Skillbar<'a> {
         .title_font_size(self.fonts.cyri.scale(15))
         .parent(ui.window)
         .desc_font_size(self.fonts.cyri.scale(12))
-        .title_text_color(TEXT_COLOR)
         .font_id(self.fonts.cyri.conrod_id)
         .desc_text_color(TEXT_COLOR);
         // Helper
@@ -813,9 +812,10 @@ impl<'a> Widget for Skillbar<'a> {
         //Slot 5
         let slot = slot_maker
             .fabricate(hotbar::Slot::Five, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot)
             .bottom_left_with_margins_on(state.ids.m1_slot, 0.0, -20.0 * scale);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::Five) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot5, ui);
         } else {
             slot.set(state.ids.slot5, ui);
@@ -823,9 +823,10 @@ impl<'a> Widget for Skillbar<'a> {
         // Slot 4
         let slot = slot_maker
             .fabricate(hotbar::Slot::Four, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot)
             .left_from(state.ids.slot5, 0.0);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::Four) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot4, ui);
         } else {
             slot.set(state.ids.slot4, ui);
@@ -833,9 +834,10 @@ impl<'a> Widget for Skillbar<'a> {
         // Slot 3
         let slot = slot_maker
             .fabricate(hotbar::Slot::Three, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot)
             .left_from(state.ids.slot4, 0.0);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::Three) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot3, ui);
         } else {
             slot.set(state.ids.slot3, ui);
@@ -843,35 +845,36 @@ impl<'a> Widget for Skillbar<'a> {
         // Slot 2
         let slot = slot_maker
             .fabricate(hotbar::Slot::Two, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot)
             .left_from(state.ids.slot3, 0.0);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::Two) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot2, ui);
         } else {
             slot.set(state.ids.slot2, ui);
         }
         // Slot 1
         slot_maker.empty_slot = self.imgs.skillbar_slot_l;
-        slot_maker.filled_slot = self.imgs.skillbar_slot_l;
         slot_maker.selected_slot = self.imgs.skillbar_slot_l_act;
         let slot = slot_maker
             .fabricate(hotbar::Slot::One, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot_l)
             .left_from(state.ids.slot2, 0.0);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::One) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot1, ui);
         } else {
             slot.set(state.ids.slot1, ui);
         }
         // Slot 6
         slot_maker.empty_slot = self.imgs.skillbar_slot;
-        slot_maker.filled_slot = self.imgs.skillbar_slot;
         slot_maker.selected_slot = self.imgs.skillbar_slot_act;
         let slot = slot_maker
             .fabricate(hotbar::Slot::Six, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot)
             .bottom_right_with_margins_on(state.ids.m2_slot, 0.0, -20.0 * scale);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::Six) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot6, ui);
         } else {
             slot.set(state.ids.slot6, ui);
@@ -879,9 +882,10 @@ impl<'a> Widget for Skillbar<'a> {
         // Slot 7
         let slot = slot_maker
             .fabricate(hotbar::Slot::Seven, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot)
             .right_from(state.ids.slot6, 0.0);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::Seven) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot7, ui);
         } else {
             slot.set(state.ids.slot7, ui);
@@ -889,9 +893,10 @@ impl<'a> Widget for Skillbar<'a> {
         // Slot 8
         let slot = slot_maker
             .fabricate(hotbar::Slot::Eight, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot)
             .right_from(state.ids.slot7, 0.0);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::Eight) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot8, ui);
         } else {
             slot.set(state.ids.slot8, ui);
@@ -899,22 +904,23 @@ impl<'a> Widget for Skillbar<'a> {
         // Slot 9
         let slot = slot_maker
             .fabricate(hotbar::Slot::Nine, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot)
             .right_from(state.ids.slot8, 0.0);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::Nine) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot9, ui);
         } else {
             slot.set(state.ids.slot9, ui);
         }
         // Quickslot
         slot_maker.empty_slot = self.imgs.skillbar_slot_r;
-        slot_maker.filled_slot = self.imgs.skillbar_slot_r;
         slot_maker.selected_slot = self.imgs.skillbar_slot_r_act;
         let slot = slot_maker
             .fabricate(hotbar::Slot::Ten, [20.0 * scale as f32; 2])
+            .filled_slot(self.imgs.skillbar_slot_r)
             .right_from(state.ids.slot9, 0.0);
         if let Some((title, desc)) = tooltip_text(hotbar::Slot::Ten) {
-            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip)
+            slot.with_tooltip(self.tooltip_manager, title, desc, &item_tooltip, TEXT_COLOR)
                 .set(state.ids.slot10, ui);
         } else {
             slot.set(state.ids.slot10, ui);
diff --git a/voxygen/src/hud/social.rs b/voxygen/src/hud/social.rs
index fd85c7b38c..68680a7d01 100644
--- a/voxygen/src/hud/social.rs
+++ b/voxygen/src/hud/social.rs
@@ -141,7 +141,6 @@ impl<'a> Widget for Social<'a> {
         .title_font_size(self.fonts.cyri.scale(15))
         .parent(ui.window)
         .desc_font_size(self.fonts.cyri.scale(12))
-        .title_text_color(TEXT_COLOR)
         .font_id(self.fonts.cyri.conrod_id)
         .desc_text_color(TEXT_COLOR);
 
@@ -399,7 +398,13 @@ impl<'a> Widget for Social<'a> {
                     None => alias.clone(), // character select or spectating
                 };
                 let level = match &player_info.character {
-                    Some(character) => format!("{} ", &character.level),
+                    Some(character) => {
+                        if character.level > 999 {
+                            "[A]".to_string() // Hide player levels that can't be obtained by normal means. As "infinte" levels are temporary this will avoid clipping.
+                        } else {
+                            character.level.to_string()
+                        }
+                    },
                     None => "".to_string(), // character select or spectating
                 };
                 let zone_name = match &player_info.character {
@@ -439,7 +444,13 @@ impl<'a> Widget for Social<'a> {
                     .label_y(conrod_core::position::Relative::Scalar(1.0))
                     .label_font_id(self.fonts.cyri.conrod_id)
                     .label_color(TEXT_COLOR)
-                    .with_tooltip(self.tooltip_manager, &acc_name_txt, "", &button_tooltip)
+                    .with_tooltip(
+                        self.tooltip_manager,
+                        &acc_name_txt,
+                        "",
+                        &button_tooltip,
+                        TEXT_COLOR,
+                    )
                     .set(state.ids.player_names[i], ui);
                 // Player Levels
                 Button::image(if !selected {
@@ -560,7 +571,13 @@ impl<'a> Widget for Social<'a> {
                     &self.localized_strings.get("hud.group.members")
                 );
                 invite_button
-                    .with_tooltip(self.tooltip_manager, &tooltip_txt, "", &button_tooltip)
+                    .with_tooltip(
+                        self.tooltip_manager,
+                        &tooltip_txt,
+                        "",
+                        &button_tooltip,
+                        TEXT_COLOR,
+                    )
                     .set(state.ids.invite_button, ui)
             } else {
                 invite_button.set(state.ids.invite_button, ui)
diff --git a/voxygen/src/hud/util.rs b/voxygen/src/hud/util.rs
index bae2edda3b..ec2156add5 100644
--- a/voxygen/src/hud/util.rs
+++ b/voxygen/src/hud/util.rs
@@ -22,19 +22,34 @@ pub fn item_text<'a>(item: &'a impl ItemDesc) -> (&'_ str, Cow<'a, str>) {
     let desc: Cow<str> = match item.kind() {
         ItemKind::Armor(armor) => Cow::Owned(armor_desc(&armor, item.description())),
         ItemKind::Tool(tool) => Cow::Owned(tool_desc(&tool, item.description())),
-        /*ItemKind::Consumable(kind, effect, ..) => {
-            Cow::Owned(consumable_desc(consumable, item.description()))
-        },*/
-        // ItemKind::Throwable => {},
-        // ItemKind::Utility => {},
-        // ItemKind::Ingredient => {},
-        // ItemKind::Lantern => {},
-        _ => Cow::Borrowed(item.description()),
+        ItemKind::Glider(_glider) => Cow::Owned(glider_desc(item.description())),
+        ItemKind::Consumable { .. } => Cow::Owned(consumable_desc(item.description())),
+        ItemKind::Throwable { .. } => Cow::Owned(throwable_desc(item.description())),
+        ItemKind::Utility { .. } => Cow::Owned(utility_desc(item.description())),
+        ItemKind::Ingredient { .. } => Cow::Owned(ingredient_desc(item.description())),
+        ItemKind::Lantern { .. } => Cow::Owned(lantern_desc(item.description())),
+        //_ => Cow::Borrowed(item.description()),
     };
 
     (item.name(), desc)
 }
 
+fn glider_desc(desc: &str) -> String { format!("Glider\n\n{}\n\n<Right-Click to use>", desc) }
+
+fn consumable_desc(desc: &str) -> String {
+    format!("Consumable\n\n{}\n\n<Right-Click to use>", desc)
+}
+
+fn throwable_desc(desc: &str) -> String {
+    format!("Can be thrown\n\n{}\n\n<Right-Click to use>", desc)
+}
+
+fn utility_desc(desc: &str) -> String { format!("{}\n\n<Right-Click to use>", desc) }
+
+fn ingredient_desc(desc: &str) -> String { format!("Crafting Ingredient\n\n{}", desc) }
+
+fn lantern_desc(desc: &str) -> String { format!("Lantern\n\n{}\n\n<Right-Click to use>", desc) }
+
 // Armor Description
 fn armor_desc(armor: &Armor, desc: &str) -> String {
     // TODO: localization
diff --git a/voxygen/src/key_state.rs b/voxygen/src/key_state.rs
index 5d12a95888..775c556058 100644
--- a/voxygen/src/key_state.rs
+++ b/voxygen/src/key_state.rs
@@ -9,6 +9,7 @@ pub struct KeyState {
     pub climb_down: bool,
     pub toggle_wield: bool,
     pub toggle_glide: bool,
+    pub toggle_lantern: bool,
     pub toggle_sit: bool,
     pub toggle_sneak: bool,
     pub toggle_dance: bool,
@@ -30,6 +31,7 @@ impl Default for KeyState {
             climb_down: false,
             toggle_wield: false,
             toggle_glide: false,
+            toggle_lantern: false,
             toggle_sit: false,
             toggle_sneak: false,
             toggle_dance: false,
diff --git a/voxygen/src/menu/char_selection/ui.rs b/voxygen/src/menu/char_selection/ui.rs
index 1639841fb8..25fc83a9c7 100644
--- a/voxygen/src/menu/char_selection/ui.rs
+++ b/voxygen/src/menu/char_selection/ui.rs
@@ -25,7 +25,6 @@ use conrod_core::{
     widget::{text_box::Event as TextBoxEvent, Button, Image, Rectangle, Scrollbar, Text, TextBox},
     widget_ids, Borderable, Color, Colorable, Labelable, Positionable, Sizeable, UiCell, Widget,
 };
-//use inline_tweak::*;
 use rand::{thread_rng, Rng};
 use std::sync::Arc;
 
@@ -34,8 +33,7 @@ const STARTER_BOW: &str = "common.items.weapons.bow.starter_bow";
 const STARTER_AXE: &str = "common.items.weapons.axe.starter_axe";
 const STARTER_STAFF: &str = "common.items.weapons.staff.starter_staff";
 const STARTER_SWORD: &str = "common.items.weapons.sword.starter_sword";
-const STARTER_DAGGER: &str = "common.items.weapons.dagger.starter_dagger";
-//const STARTER_SCEPTRE: &str = "common.items.weapons.sceptre.starter_sceptre";
+const STARTER_SCEPTRE: &str = "common.items.weapons.sceptre.starter_sceptre";
 // // Use in future MR to make this a starter weapon
 
 // UI Color-Theme
@@ -78,13 +76,6 @@ widget_ids! {
         //Alpha Disclaimer
         alpha_text,
 
-        // REMOVE THIS AFTER IMPLEMENTATION
-        daggers_grey,
-        axe_grey,
-        hammer_grey,
-        bow_grey,
-        staff_grey,
-
 
         // Characters
         character_boxes[],
@@ -160,8 +151,8 @@ widget_ids! {
         // Tools
         sword,
         sword_button,
-        daggers,
-        daggers_button,
+        sceptre,
+        sceptre_button,
         axe,
         axe_button,
         hammer,
@@ -207,7 +198,7 @@ image_ids! {
         slider_indicator: "voxygen.element.slider.indicator",
 
         // Tool Icons
-        daggers: "voxygen.element.icons.daggers",
+        sceptre: "voxygen.element.icons.sceptre",
         sword: "voxygen.element.icons.sword",
         axe: "voxygen.element.icons.axe",
         hammer: "voxygen.element.icons.hammer",
@@ -411,6 +402,9 @@ impl CharSelectionUi {
                 loadout.foot = Some(comp::Item::new_from_asset_expect(
                     "common.items.armor.starter.sandals_0",
                 ));
+                loadout.glider = Some(comp::Item::new_from_asset_expect(
+                    "common.items.armor.starter.glider",
+                ));
                 Some(loadout.clone())
             },
         }
@@ -462,7 +456,6 @@ impl CharSelectionUi {
         .desc_font_size(self.fonts.cyri.scale(10))
         .parent(ui_widgets.window)
         .font_id(self.fonts.cyri.conrod_id)
-        .title_text_color(TEXT_COLOR)
         .desc_text_color(TEXT_COLOR_2);
 
         // Set the info content if we encountered an error related to characters
@@ -782,6 +775,7 @@ impl CharSelectionUi {
                             &self.voxygen_i18n.get("char_selection.delete_permanently"),
                             "",
                             &tooltip_human,
+                            TEXT_COLOR,
                         )
                         .set(self.ids.character_deletes[i], ui_widgets)
                         .was_clicked()
@@ -917,6 +911,7 @@ impl CharSelectionUi {
                             &self.voxygen_i18n.get("char_selection.create_info_name"),
                             "",
                             &tooltip_human,
+                            TEXT_COLOR,
                         )
                         .set(self.ids.create_button, ui_widgets)
                         .was_clicked()
@@ -1089,6 +1084,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.species.human"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.species_1, ui_widgets)
                 .was_clicked()
@@ -1115,6 +1111,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.species.orc"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.species_2, ui_widgets)
                 .was_clicked()
@@ -1140,6 +1137,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.species.dwarf"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.species_3, ui_widgets)
                 .was_clicked()
@@ -1165,6 +1163,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.species.elf"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.species_4, ui_widgets)
                 .was_clicked()
@@ -1191,6 +1190,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.species.undead"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.species_5, ui_widgets)
                 .was_clicked()
@@ -1216,6 +1216,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.species.danari"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.species_6, ui_widgets)
                 .was_clicked()
@@ -1223,36 +1224,36 @@ impl CharSelectionUi {
                     body.species = humanoid::Species::Danari;
                     body.validate();
                 }
-
-                // Hammer
-                Image::new(self.imgs.hammer)
+                // Healing Sceptre
+                Image::new(self.imgs.sceptre)
                     .w_h(70.0, 70.0)
                     .bottom_left_with_margins_on(self.ids.creation_buttons_alignment_2, 0.0, 0.0)
-                    .set(self.ids.hammer, ui_widgets);
-                if Button::image(if let Some(STARTER_HAMMER) = tool {
+                    .set(self.ids.sceptre, ui_widgets);
+                if Button::image(if let Some(STARTER_SCEPTRE) = tool {
                     self.imgs.icon_border_pressed
                 } else {
                     self.imgs.icon_border
                 })
-                .middle_of(self.ids.hammer)
+                .middle_of(self.ids.sceptre)
                 .hover_image(self.imgs.icon_border_mo)
                 .press_image(self.imgs.icon_border_press)
                 .with_tooltip(
                     tooltip_manager,
-                    &self.voxygen_i18n.get("common.weapons.hammer"),
+                    &self.voxygen_i18n.get("common.weapons.sceptre"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
-                .set(self.ids.hammer_button, ui_widgets)
+                .set(self.ids.sceptre_button, ui_widgets)
                 .was_clicked()
                 {
-                    *tool = Some(STARTER_HAMMER);
+                    *tool = Some(STARTER_SCEPTRE);
                 }
 
                 // Bow
                 Image::new(self.imgs.bow)
                     .w_h(70.0, 70.0)
-                    .right_from(self.ids.hammer, 2.0)
+                    .right_from(self.ids.sceptre, 2.0)
                     .set(self.ids.bow, ui_widgets);
                 if Button::image(if let Some(STARTER_BOW) = tool {
                     self.imgs.icon_border_pressed
@@ -1267,6 +1268,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.weapons.bow"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.bow_button, ui_widgets)
                 .was_clicked()
@@ -1291,6 +1293,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.weapons.staff"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.staff_button, ui_widgets)
                 .was_clicked()
@@ -1300,7 +1303,7 @@ impl CharSelectionUi {
                 // Sword
                 Image::new(self.imgs.sword)
                     .w_h(70.0, 70.0)
-                    .up_from(self.ids.hammer, 2.0)
+                    .up_from(self.ids.sceptre, 2.0)
                     .set(self.ids.sword, ui_widgets);
                 if Button::image(if let Some(STARTER_SWORD) = tool {
                     self.imgs.icon_border_pressed
@@ -1315,6 +1318,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.weapons.sword"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.sword_button, ui_widgets)
                 .was_clicked()
@@ -1322,33 +1326,36 @@ impl CharSelectionUi {
                     *tool = Some(STARTER_SWORD);
                 }
 
-                // Daggers
-                Image::new(self.imgs.daggers)
+                // Hammer
+                Image::new(self.imgs.hammer)
                     .w_h(70.0, 70.0)
                     .right_from(self.ids.sword, 2.0)
-                    .set(self.ids.daggers, ui_widgets);
-                if Button::image(if let Some(STARTER_DAGGER) = tool {
+                    .set(self.ids.hammer, ui_widgets);
+                if Button::image(if let Some(STARTER_HAMMER) = tool {
                     self.imgs.icon_border_pressed
                 } else {
                     self.imgs.icon_border
                 })
-                .middle_of(self.ids.daggers)
-                //.hover_image(self.imgs.icon_border_mo)
-                //.press_image(self.imgs.icon_border_press)
-                //.with_tooltip(tooltip_manager, "Daggers", "", &tooltip_human)
-                .set(self.ids.daggers_button, ui_widgets)
+                .middle_of(self.ids.hammer)
+                .hover_image(self.imgs.icon_border_mo)
+                .press_image(self.imgs.icon_border_press)
+                .with_tooltip(
+                    tooltip_manager,
+                    &self.voxygen_i18n.get("common.weapons.hammer"),
+                    "",
+                    &tooltip_human,
+                    TEXT_COLOR,
+                )
+                .set(self.ids.hammer_button, ui_widgets)
                 .was_clicked()
                 {
-                    // *tool = Some(STARTER_DAGGER);
-                } // REMOVE THIS AFTER IMPLEMENTATION
-                Rectangle::fill_with([67.0, 67.0], color::rgba(0.0, 0.0, 0.0, 0.8))
-                    .middle_of(self.ids.daggers)
-                    .set(self.ids.daggers_grey, ui_widgets);
+                    *tool = Some(STARTER_HAMMER);
+                }
 
                 // Axe
                 Image::new(self.imgs.axe)
                     .w_h(70.0, 70.0)
-                    .right_from(self.ids.daggers, 2.0)
+                    .right_from(self.ids.hammer, 2.0)
                     .set(self.ids.axe, ui_widgets);
                 if Button::image(if let Some(STARTER_AXE) = tool {
                     self.imgs.icon_border_pressed
@@ -1363,6 +1370,7 @@ impl CharSelectionUi {
                     &self.voxygen_i18n.get("common.weapons.axe"),
                     "",
                     &tooltip_human,
+                    TEXT_COLOR,
                 )
                 .set(self.ids.axe_button, ui_widgets)
                 .was_clicked()
@@ -1380,6 +1388,7 @@ impl CharSelectionUi {
                         &self.voxygen_i18n.get("common.rand_appearance"),
                         "",
                         &tooltip_human,
+                        TEXT_COLOR,
                     )
                     .set(self.ids.random_button, ui_widgets)
                     .was_clicked()
diff --git a/voxygen/src/menu/main/ui.rs b/voxygen/src/menu/main/ui.rs
index 9bcc3f72b1..81355d8996 100644
--- a/voxygen/src/menu/main/ui.rs
+++ b/voxygen/src/menu/main/ui.rs
@@ -292,7 +292,6 @@ impl<'a> MainMenuUi {
         .title_font_size(self.fonts.cyri.scale(15))
         .desc_font_size(self.fonts.cyri.scale(10))
         .font_id(self.fonts.cyri.conrod_id)
-        .title_text_color(TEXT_COLOR)
         .desc_text_color(TEXT_COLOR_2);
 
         // Background image, Veloren logo, Alpha-Version Label
diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs
index 421b3259eb..60e48498cf 100644
--- a/voxygen/src/scene/figure/cache.rs
+++ b/voxygen/src/scene/figure/cache.rs
@@ -101,6 +101,7 @@ pub(super) struct CharacterCacheKey {
     /// state changes, so for now we don't bother with this.
     pub tool: Option<CharacterToolKey>,
     pub lantern: Option<String>,
+    pub glider: Option<String>,
     pub hand: Option<String>,
     pub foot: Option<String>,
 }
@@ -204,6 +205,13 @@ impl CharacterCacheKey {
             } else {
                 None
             },
+            glider: if let Some(ItemKind::Glider(glider)) =
+                loadout.glider.as_ref().map(|i| i.kind())
+            {
+                Some(glider.kind.clone())
+            } else {
+                None
+            },
             hand: if let Some(ItemKind::Armor(Armor {
                 kind: ArmorKind::Hand(armor),
                 ..
diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs
index 68d24bbb87..bc87ab9312 100644
--- a/voxygen/src/scene/figure/load.rs
+++ b/voxygen/src/scene/figure/load.rs
@@ -331,6 +331,8 @@ struct HumMainWeaponSpec(HashMap<ToolKind, ArmorVoxSpec>);
 #[derive(Deserialize)]
 struct HumArmorLanternSpec(ArmorVoxSpecMap<String, ArmorVoxSpec>);
 #[derive(Deserialize)]
+struct HumArmorGliderSpec(ArmorVoxSpecMap<String, ArmorVoxSpec>);
+#[derive(Deserialize)]
 struct HumArmorHeadSpec(ArmorVoxSpecMap<String, ArmorVoxSpec>);
 #[derive(Deserialize)]
 struct HumArmorTabardSpec(ArmorVoxSpecMap<String, ArmorVoxSpec>);
@@ -349,6 +351,7 @@ make_vox_spec!(
         armor_foot: HumArmorFootSpec = "voxygen.voxel.humanoid_armor_foot_manifest",
         main_weapon: HumMainWeaponSpec = "voxygen.voxel.humanoid_main_weapon_manifest",
         armor_lantern: HumArmorLanternSpec = "voxygen.voxel.humanoid_lantern_manifest",
+        armor_glider: HumArmorGliderSpec = "voxygen.voxel.humanoid_glider_manifest",
         // TODO: Add these.
         /* armor_head: HumArmorHeadSpec = "voxygen.voxel.humanoid_armor_head_manifest",
         tabard: HumArmorTabardSpec = "voxygen.voxel.humanoid_armor_tabard_manifest", */
@@ -358,6 +361,7 @@ make_vox_spec!(
             third_person: None,
             tool: None,
             lantern: None,
+            glider: None,
             hand: None,
             foot: None,
         };
@@ -367,6 +371,7 @@ make_vox_spec!(
         let third_person = loadout.third_person.as_ref();
         let tool = loadout.tool.as_ref();
         let lantern = loadout.lantern.as_deref();
+        let glider = loadout.glider.as_deref();
         let hand = loadout.hand.as_deref();
         let foot = loadout.foot.as_deref();
 
@@ -439,7 +444,11 @@ make_vox_spec!(
                     loadout.shoulder.as_deref(),
                 )
             }),
-            Some(mesh_glider()),
+            Some(spec.armor_glider.asset.mesh_glider(
+                body,
+                &spec.color.asset,
+                glider,
+            )),
             tool.and_then(|tool| tool.active.as_ref()).map(|tool| {
                 spec.main_weapon.asset.mesh_main_weapon(
                     tool,
@@ -974,8 +983,40 @@ impl HumArmorTabardSpec {
         (tabard, Vec3::from(spec.vox_spec.1))
     }
 }
-// TODO: Inventory
-fn mesh_glider() -> BoneMeshes { load_mesh("object.glider", Vec3::new(-26.0, -26.0, -5.0)) }
+impl HumArmorGliderSpec {
+    fn mesh_glider(
+        &self,
+        body: &Body,
+        color_spec: &HumColorSpec,
+        glider: Option<&str>,
+    ) -> BoneMeshes {
+        let spec = if let Some(kind) = glider {
+            match self.0.map.get(kind) {
+                Some(spec) => spec,
+                None => {
+                    error!(?kind, "No glider specification exists");
+                    return load_mesh("not_found", Vec3::new(-4.0, -3.5, 2.0));
+                },
+            }
+        } else {
+            &self.0.default
+        };
+
+        let mut glider_segment = color_spec.color_segment(
+            graceful_load_mat_segment(&spec.vox_spec.0),
+            body.species.skin_color(body.skin),
+            color_spec.hair_color(body.species, body.hair_color),
+            body.species.eye_color(body.eye_color),
+        );
+        if let Some(color) = spec.color {
+            let glider_color = Vec3::from(color);
+            glider_segment =
+                glider_segment.map_rgb(|rgb| recolor_grey(rgb, Rgb::from(glider_color)));
+        }
+
+        (glider_segment, Vec3::from(spec.vox_spec.1))
+    }
+}
 
 fn mesh_hold() -> BoneMeshes {
     load_mesh(
diff --git a/voxygen/src/session.rs b/voxygen/src/session.rs
index 23c3bc3c82..0d0c39a118 100644
--- a/voxygen/src/session.rs
+++ b/voxygen/src/session.rs
@@ -437,7 +437,12 @@ impl PlayState for SessionState {
                         }
                     }
                     Event::InputUpdate(GameInput::ToggleLantern, true) => {
-                        self.client.borrow_mut().toggle_lantern();
+                        let mut client = self.client.borrow_mut();
+                        if client.is_lantern_enabled() {
+                            client.disable_lantern();
+                        } else {
+                            client.enable_lantern();
+                        }
                     },
                     Event::InputUpdate(GameInput::Mount, true) => {
                         let mut client = self.client.borrow_mut();
@@ -921,7 +926,7 @@ impl PlayState for SessionState {
                         client.drop_slot(x);
                         if let comp::slot::Slot::Equip(equip_slot) = x {
                             if let comp::slot::EquipSlot::Lantern = equip_slot {
-                                client.toggle_lantern();
+                                client.disable_lantern();
                             }
                         }
                     },
diff --git a/voxygen/src/ui/widgets/slot.rs b/voxygen/src/ui/widgets/slot.rs
index ede57d47cd..74c3b2e1c9 100644
--- a/voxygen/src/ui/widgets/slot.rs
+++ b/voxygen/src/ui/widgets/slot.rs
@@ -72,8 +72,8 @@ where
         Slot::new(
             contents,
             self.empty_slot,
-            self.filled_slot,
             self.selected_slot,
+            self.filled_slot,
             content_size,
             self.selected_content_scale,
             self.amount_font,
@@ -309,7 +309,6 @@ pub struct Slot<'a, K: SlotKey<C, I> + Into<S>, C, I, S: SumSlot> {
 
     // Images for slot background and frame
     empty_slot: image::Id,
-    filled_slot: image::Id,
     selected_slot: image::Id,
     background_color: Option<Color>,
 
@@ -326,6 +325,7 @@ pub struct Slot<'a, K: SlotKey<C, I> + Into<S>, C, I, S: SumSlot> {
     amount_text_color: Color,
 
     slot_manager: Option<&'a mut SlotManager<S>>,
+    filled_slot: image::Id,
     // Should we just pass in the ImageKey?
     content_source: &'a C,
     image_source: &'a I,
@@ -365,6 +365,11 @@ where
         self
     }
 
+    pub fn filled_slot(mut self, img: image::Id) -> Self {
+        self.filled_slot = img;
+        self
+    }
+
     pub fn with_icon(mut self, img: image::Id, size: Vec2<f32>, color: Option<Color>) -> Self {
         self.icon = Some((img, size, color));
         self
@@ -437,7 +442,6 @@ where
         let Slot {
             slot_key,
             empty_slot,
-            filled_slot,
             selected_slot,
             background_color,
             content_size,
@@ -481,7 +485,7 @@ where
         let slot_image = if let Interaction::Selected = interaction {
             selected_slot
         } else if content_image.is_some() {
-            filled_slot
+            self.filled_slot
         } else {
             empty_slot
         };
diff --git a/voxygen/src/ui/widgets/tooltip.rs b/voxygen/src/ui/widgets/tooltip.rs
index ee5f077ccc..e491523b43 100644
--- a/voxygen/src/ui/widgets/tooltip.rs
+++ b/voxygen/src/ui/widgets/tooltip.rs
@@ -5,7 +5,6 @@ use conrod_core::{
     WidgetCommon, WidgetStyle,
 };
 use std::time::{Duration, Instant};
-
 #[derive(Copy, Clone)]
 struct Hover(widget::Id, [f64; 2]);
 #[derive(Copy, Clone)]
@@ -18,6 +17,7 @@ enum HoverState {
 
 // Spacing between the tooltip and mouse
 const MOUSE_PAD_Y: f64 = 15.0;
+const TEXT_COLOR: Color = Color::Rgba(1.0, 1.0, 1.0, 1.0); // Default text color
 
 pub struct TooltipManager {
     tooltip_id: widget::Id,
@@ -96,6 +96,7 @@ impl TooltipManager {
         tooltip: &Tooltip,
         title_text: &str,
         desc_text: &str,
+        title_col: Color,
         img_id: Option<image::Id>,
         image_dims: Option<(f64, f64)>,
         src_id: widget::Id,
@@ -111,6 +112,7 @@ impl TooltipManager {
                 .clone()
                 .title(title_text)
                 .desc(desc_text)
+                .title_col(title_col)
                 .image(img_id)
                 .image_dims(image_dims);
 
@@ -163,6 +165,7 @@ pub struct Tooltipped<'a, W> {
     img_id: Option<image::Id>,
     image_dims: Option<(f64, f64)>,
     tooltip: &'a Tooltip<'a>,
+    title_col: Color,
 }
 impl<'a, W: Widget> Tooltipped<'a, W> {
     pub fn tooltip_image(mut self, img_id: image::Id) -> Self {
@@ -181,6 +184,7 @@ impl<'a, W: Widget> Tooltipped<'a, W> {
             self.tooltip,
             self.title_text,
             self.desc_text,
+            self.title_col,
             self.img_id,
             self.image_dims,
             id,
@@ -198,6 +202,7 @@ pub trait Tooltipable {
         title_text: &'a str,
         desc_text: &'a str,
         tooltip: &'a Tooltip<'a>,
+        title_col: Color,
     ) -> Tooltipped<'a, Self>
     where
         Self: std::marker::Sized;
@@ -209,6 +214,7 @@ impl<W: Widget> Tooltipable for W {
         title_text: &'a str,
         desc_text: &'a str,
         tooltip: &'a Tooltip<'a>,
+        title_col: Color,
     ) -> Tooltipped<'a, W> {
         Tooltipped {
             inner: self,
@@ -218,6 +224,7 @@ impl<W: Widget> Tooltipable for W {
             img_id: None,
             image_dims: None,
             tooltip,
+            title_col,
         }
     }
 }
@@ -240,6 +247,7 @@ pub struct Tooltip<'a> {
     common: widget::CommonBuilder,
     title_text: &'a str,
     desc_text: &'a str,
+    title_col: Color,
     image: Option<image::Id>,
     image_dims: Option<(f64, f64)>,
     style: Style,
@@ -271,7 +279,6 @@ pub struct State {
 
 impl<'a> Tooltip<'a> {
     builder_methods! {
-        pub title_text_color { style.title.color = Some(Color) }
         pub desc_text_color { style.desc.color = Some(Color) }
         pub title_font_size { style.title.font_size = Some(FontSize) }
         pub desc_font_size { style.desc.font_size = Some(FontSize) }
@@ -282,6 +289,7 @@ impl<'a> Tooltip<'a> {
         desc { desc_text = &'a str }
         image_dims { image_dims = Option<(f64, f64)> }
         transparency { transparency = f32 }
+        title_col { title_col = Color}
     }
 
     pub fn new(image_frame: ImageFrame) -> Self {
@@ -294,6 +302,7 @@ impl<'a> Tooltip<'a> {
             image_frame,
             image: None,
             image_dims: None,
+            title_col: TEXT_COLOR,
         }
     }
 
@@ -403,7 +412,7 @@ impl<'a> Widget for Tooltip<'a> {
                 .parent(id)
                 .with_style(self.style.title)
                 // Apply transparency
-                .color(style.title.color(ui.theme()).alpha(self.transparency));
+                .color(self.title_col);
 
             if self.image.is_some() {
                 title
diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs
index 84c1eae4fd..29063f0227 100644
--- a/world/src/site/dungeon/mod.rs
+++ b/world/src/site/dungeon/mod.rs
@@ -488,7 +488,7 @@ impl Floor {
                         .do_if(RandomField::new(room.seed.wrapping_add(1)).chance(Vec3::from(tile_pos), 0.2) && !room.boss, |e| e.into_giant())
                         .with_alignment(comp::Alignment::Enemy)
                         .with_body(comp::Body::Humanoid(comp::humanoid::Body::random()))
-                        .with_automatic_name()
+                        .with_name("Cultist Acolyte")
                         .with_loot_drop(comp::Item::new_from_asset_expect(chosen))
                         .with_main_tool(comp::Item::new_from_asset_expect(match dynamic_rng.gen_range(0, 6) {
                             0 => "common.items.npc_weapons.axe.malachite_axe-0",
diff --git a/world/src/site/settlement/mod.rs b/world/src/site/settlement/mod.rs
index 67f899adff..022f33bfb4 100644
--- a/world/src/site/settlement/mod.rs
+++ b/world/src/site/settlement/mod.rs
@@ -861,13 +861,13 @@ impl Settlement {
                 let entity_wpos = Vec3::new(wpos2d.x as f32, wpos2d.y as f32, col_sample.alt + 3.0);
 
                 if matches!(sample.plot, Some(Plot::Town { .. }))
-                    && RandomField::new(self.seed).chance(Vec3::from(wpos2d), 1.0 / (50.0 * 50.0))
+                    && RandomField::new(self.seed).chance(Vec3::from(wpos2d), 1.0 / (50.0 * 40.0))
                 {
                     let is_human: bool;
                     let is_dummy =
                         RandomField::new(self.seed + 1).chance(Vec3::from(wpos2d), 1.0 / 15.0);
                     let entity = EntityInfo::at(entity_wpos)
-                        .with_body(match dynamic_rng.gen_range(0, 4) {
+                        .with_body(match dynamic_rng.gen_range(0, 5) {
                             _ if is_dummy => {
                                 is_human = false;
                                 object::Body::TrainingDummy.into()