From 03adbc4340dfc4e25ce3e82df63c4478fcff96c0 Mon Sep 17 00:00:00 2001
From: Adam Fogle <lawtonfogle@gmail.com>
Date: Sat, 5 Oct 2019 14:01:32 -0400
Subject: [PATCH] Redid the mainfest files to remove race/gender. Now based on
 armor slot enum. Added color to the manifest files. Manifest files aren't yet
 being used, but will load.

---
 .../hand/{default_left.vox => bare_left.vox}  | Bin
 .../{default_right.vox => bare_right.vox}     | Bin
 .../voxel/humanoid_armor_belt_manifest.ron    |  93 ++---------
 .../voxel/humanoid_armor_chest_manifest.ron   | 108 ++++---------
 .../voxel/humanoid_armor_foot_manifest.ron    | 112 +++-----------
 .../voxel/humanoid_armor_hand_manifest.ron    | 144 +++---------------
 .../voxel/humanoid_armor_pants_manifest.ron   | 106 +++----------
 .../humanoid_armor_shoulder_manifest.ron      | 142 +++++------------
 common/src/comp/body/humanoid.rs              |  33 +++-
 voxygen/src/scene/figure/load.rs              | 101 ++++++------
 10 files changed, 213 insertions(+), 626 deletions(-)
 rename assets/voxygen/voxel/armor/hand/{default_left.vox => bare_left.vox} (100%)
 rename assets/voxygen/voxel/armor/hand/{default_right.vox => bare_right.vox} (100%)

diff --git a/assets/voxygen/voxel/armor/hand/default_left.vox b/assets/voxygen/voxel/armor/hand/bare_left.vox
similarity index 100%
rename from assets/voxygen/voxel/armor/hand/default_left.vox
rename to assets/voxygen/voxel/armor/hand/bare_left.vox
diff --git a/assets/voxygen/voxel/armor/hand/default_right.vox b/assets/voxygen/voxel/armor/hand/bare_right.vox
similarity index 100%
rename from assets/voxygen/voxel/armor/hand/default_right.vox
rename to assets/voxygen/voxel/armor/hand/bare_right.vox
diff --git a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron
index 77bec882e9..3562c7ee86 100644
--- a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron
+++ b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron
@@ -1,87 +1,12 @@
 ({
-    (Human, Male): (
-        offset: (-7.0, -4.0, -6.0),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
+    Dark:(
+        voxSpec: ("armor.belt.dark", (0, 0, 0)),
+        recolor: false,
+        color: (0,0,0)
     ),
-    (Human, Female): (
-        offset: (-7.0, -4.0, -6.0),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),
-    (Orc, Male): (
-        offset: (-8.0, -5.0, -6.75),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),	
-    (Orc, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),
-    (Elf, Male): (
-        offset: (-8.0, -4.0, -6.0),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),	
-    (Elf, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),
-    (Dwarf, Male): (
-        offset: (-6.0, -4.5, -6.0),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),	
-    (Dwarf, Female): (
-        offset: (-6.0, -4.5, -6.0),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),
-    (Undead, Male): (
-        offset: (-5.0, -4.0, -6.75),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),	
-    (Undead, Female): (
-        offset: (-5.0, -4.0, -6.75),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),
-    (Danari, Male): (
-        offset: (-9.0, -4.0, -7.5),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),	
-    (Danari, Female): (
-        offset: (-9.0, -4.0, -7.5),
-        belt: [
-            Some(("armor.belt.dark", (0, 0, 0))),
-            Some(("armor.belt.cloth_turq", (0, 0, 0))),
-        ]
-    ),
-    // More here
+    Cloth:(
+        voxSpec: ("armor.belt.cloth_turq", (0, 0, 0)),
+        recolor: false,
+        color: (0,0,0)
+    )
 })
\ No newline at end of file
diff --git a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron
index a109e37eb6..8dd93df467 100644
--- a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron
+++ b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron
@@ -1,87 +1,37 @@
 ({
-    (Human, Male): (
-        offset: (-7.0, -4.0, -6.0),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
+    Blue: (
+        voxSpec: ("armor.chest.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (44, 74, 109)
     ),
-    (Human, Female): (
-        offset: (-7.0, -4.0, -6.0),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
+    Brown: (
+        voxSpec: ("armor.chest.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (90, 49, 43)
     ),
-    (Orc, Male): (
-        offset: (-8.0, -5.0, -6.75),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Orc, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
+    Dark: (
+        voxSpec: ("armor.chest.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (73, 63, 59)
     ),
-    (Elf, Male): (
-        offset: (-8.0, -4.0, -6.0),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Elf, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
+    Green: (
+        voxSpec: ("armor.chest.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (59, 95, 67)
     ),
-    (Dwarf, Male): (
-        offset: (-6.0, -4.5, -6.0),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Dwarf, Female): (
-        offset: (-6.0, -4.5, -6.0),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
+    Orange: (
+        voxSpec: ("armor.chest.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (109, 58, 58)
     ),
-    (Undead, Male): (
-        offset: (-5.0, -4.0, -6.75),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Undead, Female): (
-        offset: (-5.0, -4.0, -6.75),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
+    Midnight: (
+        voxSpec: ("armor.chest.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (29, 26, 33)
     ),
-    (Danari, Male): (
-        offset: (-9.0, -4.0, -7.5),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Danari, Female): (
-        offset: (-9.0, -4.0, -7.5),
-        chest: [
-            Some(("armor.chest.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.chest.grayscale", (0, 0, 0))),
-        ]
-    ),
-    // More here
+    Kimono: (
+        voxSpec: ("armor.chest.cloth_red_kimono", (0, 0, 0)),
+        recolor: false,
+        color: (0,0,0)
+    )
 })
\ No newline at end of file
diff --git a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron
index 852d005f7a..950e20eac1 100644
--- a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron
+++ b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron
@@ -1,100 +1,22 @@
 ({
-    //For now I'm assuming we will still need a per race/gender offset.
-    (Human, Male): (
-        offset: (-7.0, -4.0, -6.0),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
+    Bare: (
+        voxSpec: ("armor.foot.none", (0, 0, 0)),
+        recolor: false,
+        color: (0,0,0)
     ),
-    (Human, Female): (
-        offset: (-7.0, -4.0, -6.0),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
+    Dark: (
+        voxSpec: ("armor.foot.dark-0", (0, 0, 0)),
+        recolor: false,
+        color: (0,0,0)
     ),
-    (Orc, Male): (
-        offset: (-8.0, -5.0, -6.75),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
-    ),	
-    (Orc, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
+    Sandal: (
+        voxSpec: ("armor.foot.cloth_sandals", (0, 0, 0)),
+        recolor: false,
+        color: (0,0,0)
     ),
-    (Elf, Male): (
-        offset: (-8.0, -4.0, -6.0),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
-    ),	
-    (Elf, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
-    ),
-    (Dwarf, Male): (
-        offset: (-6.0, -4.5, -6.0),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
-    ),	
-    (Dwarf, Female): (
-        offset: (-6.0, -4.5, -6.0),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
-    ),
-    (Undead, Male): (
-        offset: (-5.0, -4.0, -6.75),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
-    ),	
-    (Undead, Female): (
-        offset: (-5.0, -4.0, -6.75),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
-    ),
-    (Danari, Male): (
-        offset: (-9.0, -4.0, -7.5),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
-    ),	
-    (Danari, Female): (
-        offset: (-9.0, -4.0, -7.5),
-        foot: [
-            Some(("armor.foot.cloth_sandals", (0, 0, 0))),
-            Some(("armor.foot.dark_jester-elf_shoe", (0, 0, 0))),
-            Some(("armor.foot.dark-0", (0, 0, 0))),
-        ]
-    ),
-    // More here
+    Jester: (
+        voxSpec: ("armor.foot.dark_jester-elf_shoe", (0, 0, 0)),
+        recolor: false,
+        color: (0,0,0)
+    )
 })
\ No newline at end of file
diff --git a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron
index 05b9ba0993..0208a47cf2 100644
--- a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron
+++ b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron
@@ -1,124 +1,26 @@
 ({
-    //For now I'm assuming we will still need a per race/gender offset.
-    (Human, Male): (
-        offset: (-7.0, -4.0, -6.0),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
+    Bare: (
+        left: (
+            voxSpec: ("armor.hand.bare_left", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        ),
+        right: (
+            voxSpec: ("armor.hand.bare_right", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        )
     ),
-    (Human, Female): (
-        offset: (-7.0, -4.0, -6.0),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),
-    (Orc, Male): (
-        offset: (-8.0, -5.0, -6.75),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),	
-    (Orc, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),
-    (Elf, Male): (
-        offset: (-8.0, -4.0, -6.0),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),	
-    (Elf, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),
-    (Dwarf, Male): (
-        offset: (-6.0, -4.5, -6.0),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),	
-    (Dwarf, Female): (
-        offset: (-6.0, -4.5, -6.0),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),
-    (Undead, Male): (
-        offset: (-5.0, -4.0, -6.75),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),	
-    (Undead, Female): (
-        offset: (-5.0, -4.0, -6.75),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),
-    (Danari, Male): (
-        offset: (-9.0, -4.0, -7.5),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),	
-    (Danari, Female): (
-        offset: (-9.0, -4.0, -7.5),
-        hand: [
-            Some(("armor.hand.cloth_basic_left", (0, 0, 0))),
-            Some(("armor.hand.cloth_basic_right", (0, 0, 0))),
-            Some(("armor.hand.dark-0", (0, 0, 0))),
-            Some(("armor.hand.default_left", (0, 0, 0))),
-            Some(("armor.hand.default_right", (0, 0, 0))),
-        ]
-    ),
-    // More here
+    Cloth: (
+        left: (
+            voxSpec: ("armor.hand.cloth_basic_left", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        ),
+        right: (
+            voxSpec: ("armor.hand.cloth_basic_right", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        )
+    )
 })
\ No newline at end of file
diff --git a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron
index 5606cd2d92..45bb2561e5 100644
--- a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron
+++ b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron
@@ -1,88 +1,32 @@
 ({
-    //For now I'm assuming we will still need a per race/gender offset.
-    (Human, Male): (
-        offset: (-7.0, -4.0, -6.0),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
+    Blue: (
+        voxSpec: ("armor.pants.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (28, 66, 109)
     ),
-    (Human, Female): (
-        offset: (-7.0, -4.0, -6.0),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
+    Brown: (
+        voxSpec: ("armor.pants.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (54, 30, 26)
     ),
-    (Orc, Male): (
-        offset: (-8.0, -5.0, -6.75),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Orc, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
+    Dark: (
+        voxSpec: ("armor.pants.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (24, 19, 17)
     ),
-    (Elf, Male): (
-        offset: (-8.0, -4.0, -6.0),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Elf, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
+    Green: (
+        voxSpec: ("armor.pants.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (49, 95, 59)
     ),
-    (Dwarf, Male): (
-        offset: (-6.0, -4.5, -6.0),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Dwarf, Female): (
-        offset: (-6.0, -4.5, -6.0),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
+    Orange: (
+        voxSpec: ("armor.pants.grayscale", (0, 0, 0)),
+        recolor: true,
+        color: (148, 52, 33)
     ),
-    (Undead, Male): (
-        offset: (-5.0, -4.0, -6.75),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Undead, Female): (
-        offset: (-5.0, -4.0, -6.75),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
-    ),
-    (Danari, Male): (
-        offset: (-9.0, -4.0, -7.5),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
-    ),	
-    (Danari, Female): (
-        offset: (-9.0, -4.0, -7.5),
-        pants: [
-            Some(("armor.pants.cloth_red_kimono", (0, 0, 0))),
-            Some(("armor.pants.grayscale", (0, 0, 0))),
-        ]
-    ),
-    // More here
+    Kimono: (
+        voxSpec: ("armor.pants.cloth_red_kimono", (0, 0, 0)),
+        recolor: false,
+        color: (0,0,0)
+    )
 })
\ No newline at end of file
diff --git a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron
index 852d064230..57e4f837c8 100644
--- a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron
+++ b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron
@@ -1,112 +1,38 @@
 ({
-    //For now I'm assuming we will still need a per race/gender offset.
-    (Human, Male): (
-        offset: (-7.0, -4.0, -6.0),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
+    None: (
+        left: (
+            voxSpec: ("armor.shoulder.none_left", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        ),
+        right: (
+            voxSpec: ("armor.shoulder.none_right", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        )
     ),
-    (Human, Female): (
-        offset: (-7.0, -4.0, -6.0),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
+    Brown1: (
+        left: (
+            voxSpec: ("armor.shoulder.brown_left", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        ),
+        right: (
+            voxSpec: ("armor.shoulder.brown_right", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        )
     ),
-    (Orc, Male): (
-        offset: (-8.0, -5.0, -6.75),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),	
-    (Orc, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),
-    (Elf, Male): (
-        offset: (-8.0, -4.0, -6.0),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),	
-    (Elf, Female): (
-        offset: (-8.0, -4.0, -6.0),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),
-    (Dwarf, Male): (
-        offset: (-6.0, -4.5, -6.0),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),	
-    (Dwarf, Female): (
-        offset: (-6.0, -4.5, -6.0),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),
-    (Undead, Male): (
-        offset: (-5.0, -4.0, -6.75),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),	
-    (Undead, Female): (
-        offset: (-5.0, -4.0, -6.75),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),	
-    (Danari, Male): (
-        offset: (-9.0, -4.0, -7.5),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),	
-    (Danari, Female): (
-        offset: (-9.0, -4.0, -7.5),
-        shoulder: [
-            Some(("armor.shoulder.brown_left", (0, 0, 0))),
-            Some(("armor.shoulder.chain_left", (0, 0, 0))),
-            Some(("armor.shoulder.brown_right", (0, 0, 0))),
-            Some(("armor.shoulder.chain_right", (0, 0, 0))),
-        ]
-    ),
-    // More here
+    Chain: (
+        left: (
+            voxSpec: ("armor.shoulder.chain_left", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        ),
+        right: (
+            voxSpec: ("armor.shoulder.chain_right", (0, 0, 0)),
+            recolor: false,
+            color: (0,0,0)
+        )
+    )
 })
\ No newline at end of file
diff --git a/common/src/comp/body/humanoid.rs b/common/src/comp/body/humanoid.rs
index e47f8f3054..a8b1106f33 100644
--- a/common/src/comp/body/humanoid.rs
+++ b/common/src/comp/body/humanoid.rs
@@ -393,23 +393,26 @@ pub enum Chest {
     Green,
     Orange,
     Midnight,
+    Kimono,
 }
-pub const ALL_CHESTS: [Chest; 6] = [
+pub const ALL_CHESTS: [Chest; 7] = [
     Chest::Blue,
     Chest::Brown,
     Chest::Dark,
     Chest::Green,
     Chest::Orange,
     Chest::Midnight,
+    Chest::Kimono,
 ];
 
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
 pub enum Belt {
     Dark,
+    Cloth,
 }
-pub const ALL_BELTS: [Belt; 1] = [
-    //Belt::Default,
+pub const ALL_BELTS: [Belt; 2] = [
     Belt::Dark,
+    Belt::Cloth,
 ];
 
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
@@ -419,35 +422,49 @@ pub enum Pants {
     Dark,
     Green,
     Orange,
+    Kimono,
 }
-pub const ALL_PANTS: [Pants; 5] = [
+pub const ALL_PANTS: [Pants; 6] = [
     Pants::Blue,
     Pants::Brown,
     Pants::Dark,
     Pants::Green,
     Pants::Orange,
+    Pants::Kimono,
 ];
 
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
 pub enum Hand {
     Bare,
-    Dark,
+    Cloth,
 }
-pub const ALL_HANDS: [Hand; 2] = [Hand::Bare, Hand::Dark];
+pub const ALL_HANDS: [Hand; 2] = [Hand::Bare, Hand::Cloth];
 
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
 pub enum Foot {
     Bare,
     Dark,
+    Sandal,
+    Jester,
 }
-pub const ALL_FEET: [Foot; 2] = [Foot::Bare, Foot::Dark];
+pub const ALL_FEET: [Foot; 4] = [
+    Foot::Bare, 
+    Foot::Dark,
+    Foot::Sandal,
+    Foot::Jester,
+];
 
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
 pub enum Shoulder {
     None,
     Brown1,
+    Chain,
 }
-pub const ALL_SHOULDERS: [Shoulder; 2] = [Shoulder::None, Shoulder::Brown1];
+pub const ALL_SHOULDERS: [Shoulder; 3] = [
+    Shoulder::None, 
+    Shoulder::Brown1,
+    Shoulder::Chain,
+];
 
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
 pub enum Eyebrows {
diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs
index 0a0a585f56..88923e7341 100644
--- a/voxygen/src/scene/figure/load.rs
+++ b/voxygen/src/scene/figure/load.rs
@@ -84,16 +84,32 @@ fn recolor_grey(rgb: Rgb<u8>, color: Rgb<u8>) -> Rgb<u8> {
 
 // All offsets should be relative to an initial origin that doesn't change when combining segments
 #[derive(Serialize, Deserialize)]
-struct VoxSpec(String, [i32; 3]);
+struct VoxSpec<T>(String, [T; 3]);
+
+// Armor can have the color modified.
+#[derive(Serialize, Deserialize)]
+struct ArmorVoxSpec{
+    voxSpec: VoxSpec<f32>,
+    recolor: bool,
+    color: [u8; 3]
+}
+
+// For use by armor with a left and right component
+#[derive(Serialize, Deserialize)]
+struct SidedArmorVoxSpec{
+    left: ArmorVoxSpec,
+    right: ArmorVoxSpec
+}
+
 // All reliant on humanoid::Race and humanoid::BodyType
 #[derive(Serialize, Deserialize)]
 struct HumHeadSubSpec {
     offset: [f32; 3], // Should be relative to initial origin
-    head: VoxSpec,
-    eyes: VoxSpec,
-    hair: Vec<Option<VoxSpec>>,
-    beard: Vec<Option<VoxSpec>>,
-    accessory: Vec<Option<VoxSpec>>,
+    head: VoxSpec<i32>,
+    eyes: VoxSpec<i32>,
+    hair: Vec<Option<VoxSpec<i32>>>,
+    beard: Vec<Option<VoxSpec<i32>>>,
+    accessory: Vec<Option<VoxSpec<i32>>>,
 }
 #[derive(Serialize, Deserialize)]
 pub struct HumHeadSpec(HashMap<(Race, BodyType), HumHeadSubSpec>);
@@ -192,54 +208,22 @@ impl HumHeadSpec {
         )
     }
 }
-// All reliant on humanoid::Race and humanoid::BodyType
 // Armor spects should be in the same order, top to bottom.
 // These seem overly split up, but wanted to keep the armor seperated
-// unlike head which is done above.  This can also make adding further
-// customization easier, such as allowing a 'chest_emblem' to be added.
-#[derive(Serialize, Deserialize)]
-struct HumArmorShoulderSubSpec {
-    offset: [f32; 3],
-    shoulder:  Vec<Option<VoxSpec>>,
-}
-#[derive(Serialize, Deserialize)]
-struct HumArmorChestSubSpec {
-    offset: [f32; 3],
-    chest: Vec<Option<VoxSpec>>,
-}
-#[derive(Serialize, Deserialize)]
-struct HumArmorHandSubSpec {
-    offset: [f32; 3],
-    hand:  Vec<Option<VoxSpec>>,
-}
-#[derive(Serialize, Deserialize)]
-struct HumArmorBeltSubSpec {
-    offset: [f32; 3],
-    belt: Vec<Option<VoxSpec>>,
-}
-#[derive(Serialize, Deserialize)]
-struct HumArmorPantsSubSpec {
-    offset: [f32; 3],
-    pants:  Vec<Option<VoxSpec>>,
-}
-#[derive(Serialize, Deserialize)]
-struct HumArmorFootSubSpec {
-    offset: [f32; 3],
-    foot:  Vec<Option<VoxSpec>>,
-}
+// unlike head which is done above.
 
 #[derive(Serialize, Deserialize)]
-pub struct HumArmorShoulderSpec(HashMap<(Race, BodyType), HumArmorShoulderSubSpec>);
+pub struct HumArmorShoulderSpec(HashMap<Shoulder, SidedArmorVoxSpec>);
 #[derive(Serialize, Deserialize)]
-pub struct HumArmorChestSpec(HashMap<(Race, BodyType), HumArmorChestSubSpec>);
+pub struct HumArmorChestSpec(HashMap<Chest, ArmorVoxSpec>);
 #[derive(Serialize, Deserialize)]
-pub struct HumArmorHandSpec(HashMap<(Race, BodyType), HumArmorHandSubSpec>);
+pub struct HumArmorHandSpec(HashMap<Hand, SidedArmorVoxSpec>);
 #[derive(Serialize, Deserialize)]
-pub struct HumArmorBeltSpec(HashMap<(Race, BodyType), HumArmorBeltSubSpec>);
+pub struct HumArmorBeltSpec(HashMap<Belt, ArmorVoxSpec>);
 #[derive(Serialize, Deserialize)]
-pub struct HumArmorPantsSpec(HashMap<(Race, BodyType), HumArmorPantsSubSpec>);
+pub struct HumArmorPantsSpec(HashMap<Pants, ArmorVoxSpec>);
 #[derive(Serialize, Deserialize)]
-pub struct HumArmorFootSpec(HashMap<(Race, BodyType), HumArmorFootSubSpec>);
+pub struct HumArmorFootSpec(HashMap<Foot, ArmorVoxSpec>);
 
 impl Asset for HumArmorShoulderSpec {
     const ENDINGS: &'static [&'static str] = &["ron"];
@@ -296,6 +280,9 @@ impl HumArmorShoulderSpec {
             graceful_load_mat_segment(match shoulder {
                 Shoulder::None => return Mesh::new(),
                 Shoulder::Brown1 => "armor.shoulder.brown_left",
+                //This is wrong and similar are wrong but will be fixed
+                //by the hotloading.
+                Shoulder::Chain => "armor.shoulder.brown_left",
             }),
             race.skin_color(skin),
             race.hair_color(hair_color),
@@ -318,6 +305,7 @@ impl HumArmorShoulderSpec {
             graceful_load_mat_segment(match shoulder {
                 Shoulder::None => return Mesh::new(),
                 Shoulder::Brown1 => "armor.shoulder.brown_right",
+                Shoulder::Chain => "armor.shoulder.brown_right",
             }),
             race.skin_color(skin),
             race.hair_color(hair_color),
@@ -349,6 +337,8 @@ impl HumArmorChestSpec {
             Chest::Green => (59, 95, 67),
             Chest::Orange => (109, 58, 58),
             Chest::Midnight => (29, 26, 33),
+            //Also wrong, will be fixed when reading manifest files.
+            Chest::Kimono => (0,0,0),
         };
 
         let color = |mat_segment| {
@@ -391,8 +381,9 @@ impl HumArmorHandSpec {
     ) -> Mesh<FigurePipeline> {
         let hand_segment = color_segment(
             graceful_load_mat_segment(match hand {
-                Hand::Bare => "armor.hand.default_left",
-                Hand::Dark => "armor.hand.default_left",
+                Hand::Bare => "armor.hand.bare_left",
+                //also to be fixed
+                Hand::Cloth => "armor.hand.bare_left",
             }),
             race.skin_color(skin),
             race.hair_color(hair_color),
@@ -413,8 +404,9 @@ impl HumArmorHandSpec {
     ) -> Mesh<FigurePipeline> {
         let hand_segment = color_segment(
             graceful_load_mat_segment(match hand {
-                Hand::Bare => "armor.hand.default_right",
-                Hand::Dark => "armor.hand.default_right",
+                Hand::Bare => "armor.hand.bare_right",
+                //also to be fixed
+                Hand::Cloth => "armor.hand.bare_right",
             }),
             race.skin_color(skin),
             race.hair_color(hair_color),
@@ -438,8 +430,9 @@ impl HumArmorBeltSpec {
     ) -> Mesh<FigurePipeline> {
         load_mesh(
             match belt {
-                //Belt::Default => "figure/body/belt_male",
                 Belt::Dark => "armor.belt.dark",
+                //also wrong
+                Belt::Cloth => "armor.belt.dark",
             },
             Vec3::new(-4.0, -3.5, 2.0),
         )
@@ -466,6 +459,8 @@ impl HumArmorPantsSpec {
             Pants::Dark => (24, 19, 17),
             Pants::Green => (49, 95, 59),
             Pants::Orange => (148, 52, 33),
+            //also wrong
+            Pants::Kimono => (148, 52, 33),
         };
 
         let pants_segment = color_segment(
@@ -498,6 +493,9 @@ impl HumArmorFootSpec {
             graceful_load_mat_segment(match foot {
                 Foot::Bare => "armor.foot.dark-0",
                 Foot::Dark => "armor.foot.dark-0",
+                //wrong
+                Foot::Sandal => "armor.foot.dark-0",
+                Foot::Jester => "armor.foot.dark-0",
             }),
             race.skin_color(skin),
             race.hair_color(hair_color),
@@ -520,6 +518,9 @@ impl HumArmorFootSpec {
             graceful_load_mat_segment(match foot {
                 Foot::Bare => "armor.foot.dark-0",
                 Foot::Dark => "armor.foot.dark-0",
+                //wrong
+                Foot::Sandal => "armor.foot.dark-0",
+                Foot::Jester => "armor.foot.dark-0",
             }),
             race.skin_color(skin),
             race.hair_color(hair_color),