diff --git a/assets/common/items/npc_armor/biped_small/husk/chest/husk.ron b/assets/common/items/npc_armor/biped_small/husk/chest/husk.ron new file mode 100644 index 0000000000..52f348aa4d --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/husk/chest/husk.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Husk", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("Husk"), + stats: ( + protection: Normal(18.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/husk/foot/husk.ron b/assets/common/items/npc_armor/biped_small/husk/foot/husk.ron new file mode 100644 index 0000000000..26d36b1654 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/husk/foot/husk.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Husk", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Foot("Husk"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/husk/hand/husk.ron b/assets/common/items/npc_armor/biped_small/husk/hand/husk.ron new file mode 100644 index 0000000000..4bd37ed64c --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/husk/hand/husk.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Husk", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Husk"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/husk/head/husk.ron b/assets/common/items/npc_armor/biped_small/husk/head/husk.ron new file mode 100644 index 0000000000..d6bdea23b0 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/husk/head/husk.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Husk", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Husk"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/husk/pants/husk.ron b/assets/common/items/npc_armor/biped_small/husk/pants/husk.ron new file mode 100644 index 0000000000..bfd787e8f5 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/husk/pants/husk.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Husk", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Husk"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/husk/tail/husk.ron b/assets/common/items/npc_armor/biped_small/husk/tail/husk.ron new file mode 100644 index 0000000000..023f942a7b --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/husk/tail/husk.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Husk", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Belt("Husk"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index aeefb77fee..5f273b5593 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -1025,6 +1025,10 @@ myrmidon: ( keyword: "myrmidon", generic: "Myrmidon" + ), + husk: ( + keyword: "husk", + generic: "Husk" ) ) ), diff --git a/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron b/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron index 196b7038b4..d90c1f02f4 100644 --- a/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron @@ -36,5 +36,8 @@ "Myrmidon": ( vox_spec: ("npc.myrmidon.male.chest", (-5.5, -4.0, -3.0)), ), + "Husk": ( + vox_spec: ("npc.husk.male.chest", (-6.0, -4.5, -4.0)), + ), }, )) diff --git a/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron b/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron index 8f16ca7700..beeb493969 100644 --- a/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron @@ -88,5 +88,13 @@ vox_spec: ("npc.myrmidon.male.foot_r", (-1.5, -2.5, -7.0)), ) ), + "Husk": ( + left: ( + vox_spec: ("npc.husk.male.foot_r", (-2.0, -3.5, -7.0)), + ), + right: ( + vox_spec: ("npc.husk.male.foot_r", (-2.0, -3.5, -7.0)), + ) + ), }, )) diff --git a/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron b/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron index 30d10a0f42..ce40fb213f 100644 --- a/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron @@ -96,5 +96,13 @@ vox_spec: ("npc.myrmidon.male.hand_r", (0.0, -2.0, -9.0)), ) ), + "Husk": ( + left: ( + vox_spec: ("npc.husk.male.hand_r", (-7.0, -2.5, -10.0)), + ), + right: ( + vox_spec: ("npc.husk.male.hand_r", (0.0, -2.5, -10.0)), + ) + ), }, )) diff --git a/assets/voxygen/voxel/biped_small_armor_head_manifest.ron b/assets/voxygen/voxel/biped_small_armor_head_manifest.ron index 08b8b55326..8c98ff367e 100644 --- a/assets/voxygen/voxel/biped_small_armor_head_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_head_manifest.ron @@ -36,5 +36,8 @@ "Myrmidon": ( vox_spec: ("npc.myrmidon.male.head", (-4.5, -7.0, -6.5)), ), + "Husk": ( + vox_spec: ("npc.husk.male.head", (-6.0, -6.0, -5.5)), + ), }, )) diff --git a/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron index be48415201..439cbb92ba 100644 --- a/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron @@ -36,5 +36,8 @@ "Myrmidon": ( vox_spec: ("npc.myrmidon.male.pants", (-2.5, -4.5, -1.5)), ), + "Husk": ( + vox_spec: ("npc.husk.male.pants", (-5.0, -4.5, -3.0)), + ), }, )) diff --git a/assets/voxygen/voxel/npc/husk/male/chest.vox b/assets/voxygen/voxel/npc/husk/male/chest.vox new file mode 100644 index 0000000000..9578b1c9f8 Binary files /dev/null and b/assets/voxygen/voxel/npc/husk/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/husk/male/foot_r.vox b/assets/voxygen/voxel/npc/husk/male/foot_r.vox new file mode 100644 index 0000000000..da334289a1 Binary files /dev/null and b/assets/voxygen/voxel/npc/husk/male/foot_r.vox differ diff --git a/assets/voxygen/voxel/npc/husk/male/hand_r.vox b/assets/voxygen/voxel/npc/husk/male/hand_r.vox new file mode 100644 index 0000000000..9f35691920 Binary files /dev/null and b/assets/voxygen/voxel/npc/husk/male/hand_r.vox differ diff --git a/assets/voxygen/voxel/npc/husk/male/head.vox b/assets/voxygen/voxel/npc/husk/male/head.vox new file mode 100644 index 0000000000..03802a7eea Binary files /dev/null and b/assets/voxygen/voxel/npc/husk/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/husk/male/pants.vox b/assets/voxygen/voxel/npc/husk/male/pants.vox new file mode 100644 index 0000000000..ed4810f8b1 Binary files /dev/null and b/assets/voxygen/voxel/npc/husk/male/pants.vox differ diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 068942a11e..ddddfd04cd 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -393,6 +393,7 @@ impl Body { biped_small::Species::Sahagin => 500, biped_small::Species::Haniwa => 700, biped_small::Species::Myrmidon => 800, + biped_small::Species::Husk => 200, _ => 600, }, Body::Object(object) => match object { diff --git a/common/src/comp/body/biped_small.rs b/common/src/comp/body/biped_small.rs index 9746589373..945586f393 100644 --- a/common/src/comp/body/biped_small.rs +++ b/common/src/comp/body/biped_small.rs @@ -44,6 +44,7 @@ make_case_elim!( Gnoll = 7, Haniwa = 8, Myrmidon = 9, + Husk = 10, } ); @@ -62,6 +63,7 @@ pub struct AllSpecies { pub gnoll: SpeciesMeta, pub haniwa: SpeciesMeta, pub myrmidon: SpeciesMeta, + pub husk: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -80,11 +82,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Gnoll => &self.gnoll, Species::Haniwa => &self.haniwa, Species::Myrmidon => &self.myrmidon, + Species::Husk => &self.husk, } } } -pub const ALL_SPECIES: [Species; 10] = [ +pub const ALL_SPECIES: [Species; 11] = [ Species::Gnome, Species::Sahagin, Species::Adlet, @@ -95,6 +98,7 @@ pub const ALL_SPECIES: [Species; 10] = [ Species::Gnoll, Species::Haniwa, Species::Myrmidon, + Species::Husk, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 36108bfe53..19be81e629 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -42,6 +42,7 @@ pub enum LoadoutConfig { Sahagin, Haniwa, Myrmidon, + Husk, Guard, Villager, Merchant, @@ -503,6 +504,24 @@ impl LoadoutBuilder { "common.items.npc_armor.biped_small.myrmidon.tail.myrmidon", ))) .build(), + Husk => LoadoutBuilder::new() + .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.husk.head.husk", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.husk.foot.husk", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.husk.hand.husk", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.husk.chest.husk", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.husk.pants.husk", + ))) + .build(), Guard => LoadoutBuilder::new() .active_item(active_item) .shoulder(Some(Item::new_from_asset_expect( diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index 6c926679ca..5f193b0bf3 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -120,6 +120,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnoll, _) => (5.5, -1.0), (Haniwa, _) => (0.0, 7.0), (Myrmidon, _) => (0.0, 8.0), + (Husk, _) => (0.5, 8.5), }, chest: match (body.species, body.body_type) { (Gnome, _) => (0.0, 9.0), @@ -132,6 +133,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnoll, _) => (0.0, 15.5), (Haniwa, _) => (0.0, 11.0), (Myrmidon, _) => (0.0, 11.0), + (Husk, _) => (0.0, 11.0), }, pants: match (body.species, body.body_type) { (Gnome, _) => (0.0, -3.0), @@ -144,6 +146,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnoll, _) => (0.5, -7.5), (Haniwa, _) => (0.0, -3.5), (Myrmidon, _) => (0.0, -3.0), + (Husk, _) => (-1.0, -6.0), }, tail: match (body.species, body.body_type) { (Gnome, _) => (0.0, 0.0), @@ -156,6 +159,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnoll, _) => (-2.5, -2.0), (Haniwa, _) => (-4.5, -2.0), (Myrmidon, _) => (-2.5, -1.0), + (Husk, _) => (0.0, 0.0), }, hand: match (body.species, body.body_type) { (Gnome, _) => (4.0, 0.5, -1.0), @@ -168,6 +172,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnoll, _) => (3.5, 0.5, -1.0), (Haniwa, _) => (4.25, -1.0, 1.5), (Myrmidon, _) => (3.5, 1.5, 2.0), + (Husk, _) => (4.0, 0.0, 1.0), }, foot: match (body.species, body.body_type) { (Gnome, _) => (3.0, 0.0, 4.0), @@ -180,6 +185,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnoll, _) => (3.0, 1.0, 7.0), (Haniwa, _) => (3.0, 0.5, 8.0), (Myrmidon, _) => (3.0, 0.5, 7.0), + (Husk, _) => (4.0, 0.5, 7.0), }, grip: match (body.species, body.body_type) { (Gnome, _) => (0.0, 0.0, 5.0), @@ -192,6 +198,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnoll, _) => (1.0, 0.0, 9.0), (Haniwa, _) => (0.0, 0.5, 8.0), (Myrmidon, _) => (0.0, 0.0, 8.0), + (Husk, _) => (0.0, 0.0, 8.0), }, scaler: match (body.species, body.body_type) { (Gnome, _) => 1.0, @@ -204,6 +211,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnoll, _) => 1.0, (Haniwa, _) => 1.4, (Myrmidon, _) => 1.5, + (Husk, _) => 1.4, }, } }