diff --git a/assets/common/items/npc_weapons/hammer/harvester_scythe.ron b/assets/common/items/npc_weapons/hammer/harvester_scythe.ron new file mode 100644 index 0000000000..d048830d32 --- /dev/null +++ b/assets/common/items/npc_weapons/hammer/harvester_scythe.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Harvester Sythe", + description: "Placeholder", + kind: Tool( + ( + kind: HammerSimple, + hands: Two, + stats: ( + equip_time_millis: 500, + power: 1.00, + poise_strength: 1.00, + speed: 1.0 + ), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index d39ab78c06..d8cda5f0bc 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -853,6 +853,10 @@ yeti: ( keyword: "yeti", generic: "Yeti" + ), + harvester: ( + keyword: "harvester", + generic: "Harvester" ) ) ), diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index 53b125df98..fda5200e91 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -676,4 +676,56 @@ central: ("armor.empty"), ) ), + (Harvester, Male): ( + head: ( + offset: (-11.0, -10.0, -9.0), + central: ("npc.harvester.male.head"), + ), + torso_upper: ( + offset: (-6.0, -7.0, -5.5), + central: ("npc.harvester.male.torso_upper"), + ), + torso_lower: ( + offset: (-3.0, -4.0, -9.0), + central: ("npc.harvester.male.torso_lower"), + ), + jaw: ( + offset: (-4.0, 0.0, -2.0), + central: ("npc.harvester.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Harvester, Female): ( + head: ( + offset: (-11.0, -10.0, -9.0), + central: ("npc.harvester.male.head"), + ), + torso_upper: ( + offset: (-6.0, -7.0, -5.5), + central: ("npc.harvester.male.torso_upper"), + ), + torso_lower: ( + offset: (-3.0, -4.0, -9.0), + central: ("npc.harvester.male.torso_lower"), + ), + jaw: ( + offset: (-4.0, 0.0, -2.0), + central: ("npc.harvester.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_large_lateral_manifest.ron b/assets/voxygen/voxel/biped_large_lateral_manifest.ron index 04d18e2da5..947200d5c3 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -883,4 +883,72 @@ lateral: ("npc.yeti.male.foot_r"), ) ), + (Harvester, Male): ( + shoulder_l: ( + offset: (-3.0, -2.5, -4.0), + lateral: ("npc.harvester.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.0, -2.5, -4.0), + lateral: ("npc.harvester.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -2.0, -10.0), + lateral: ("npc.harvester.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -2.0, -10.0), + lateral: ("npc.harvester.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -3.0, -3.0), + lateral: ("npc.harvester.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -3.0, -3.0), + lateral: ("npc.harvester.male.leg_r"), + ), + foot_l: ( + offset: (-3.5, -4.0, -4.0), + lateral: ("npc.harvester.male.foot_l"), + ), + foot_r: ( + offset: (-3.5, -4.0, -4.0), + lateral: ("npc.harvester.male.foot_r"), + ) + ), + (Harvester, Female): ( + shoulder_l: ( + offset: (-3.0, -2.5, -4.0), + lateral: ("npc.harvester.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.0, -2.5, -4.0), + lateral: ("npc.harvester.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -2.0, -10.0), + lateral: ("npc.harvester.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -2.0, -10.0), + lateral: ("npc.harvester.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -3.0, -3.0), + lateral: ("npc.harvester.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -3.0, -3.0), + lateral: ("npc.harvester.male.leg_r"), + ), + foot_l: ( + offset: (-3.5, -4.0, -4.0), + lateral: ("npc.harvester.male.foot_l"), + ), + foot_r: ( + offset: (-3.5, -4.0, -4.0), + lateral: ("npc.harvester.male.foot_r"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron index 0be85c1c27..05959366fc 100644 --- a/assets/voxygen/voxel/biped_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -755,13 +755,17 @@ color: None ), "common.items.npc_weapons.axe.minotaur_axe": ( - vox_spec: ("weapon.axe.minotaur_axe", (-2.5, -9.0, -6.0)), + vox_spec: ("weapon.axe.2haxe_minotaur", (-2.5, -9.0, -6.0)), color: None ), "common.items.npc_weapons.hammer.yeti_hammer": ( vox_spec: ("weapon.hammer.2hhammer_yeti", (-7.5, -7.0, -7.0)), color: None ), + "common.items.npc_weapons.hammer.harvester_scythe": ( + vox_spec: ("weapon.hammer.2hhammer_harvester", (-1.5, -7.5, -6.0)), + color: None + ), //BIPEDSMALL "common.items.npc_weapons.biped_small.adlet.adlet_bow": ( vox_spec: ("weapon.biped_small.bow.adlet", (-1.5, -3.0, -5.0)), diff --git a/assets/voxygen/voxel/npc/harvester/male/foot_l.vox b/assets/voxygen/voxel/npc/harvester/male/foot_l.vox new file mode 100644 index 0000000000..e812c88f6e Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/foot_l.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/foot_r.vox b/assets/voxygen/voxel/npc/harvester/male/foot_r.vox new file mode 100644 index 0000000000..d7d43f9463 Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/foot_r.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/hand_l.vox b/assets/voxygen/voxel/npc/harvester/male/hand_l.vox new file mode 100644 index 0000000000..36f2f34543 Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/hand_l.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/hand_r.vox b/assets/voxygen/voxel/npc/harvester/male/hand_r.vox new file mode 100644 index 0000000000..4587d5132f Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/hand_r.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/head.vox b/assets/voxygen/voxel/npc/harvester/male/head.vox new file mode 100644 index 0000000000..cc0d23a31f Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/jaw.vox b/assets/voxygen/voxel/npc/harvester/male/jaw.vox new file mode 100644 index 0000000000..cc3310fd6e Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/leg_l.vox b/assets/voxygen/voxel/npc/harvester/male/leg_l.vox new file mode 100644 index 0000000000..191eddd538 Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/leg_l.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/leg_r.vox b/assets/voxygen/voxel/npc/harvester/male/leg_r.vox new file mode 100644 index 0000000000..658e3caa0a Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/shoulder_l.vox b/assets/voxygen/voxel/npc/harvester/male/shoulder_l.vox new file mode 100644 index 0000000000..cdc4a9d5a2 Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/shoulder_l.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/shoulder_r.vox b/assets/voxygen/voxel/npc/harvester/male/shoulder_r.vox new file mode 100644 index 0000000000..eb377c34b5 Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/shoulder_r.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/torso_lower.vox b/assets/voxygen/voxel/npc/harvester/male/torso_lower.vox new file mode 100644 index 0000000000..801c08acd8 Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/torso_lower.vox differ diff --git a/assets/voxygen/voxel/npc/harvester/male/torso_upper.vox b/assets/voxygen/voxel/npc/harvester/male/torso_upper.vox new file mode 100644 index 0000000000..f12e9031d1 Binary files /dev/null and b/assets/voxygen/voxel/npc/harvester/male/torso_upper.vox differ diff --git a/assets/voxygen/voxel/weapon/axe/2haxe_harvester.vox b/assets/voxygen/voxel/weapon/axe/2haxe_harvester.vox new file mode 100644 index 0000000000..83909c9b5b Binary files /dev/null and b/assets/voxygen/voxel/weapon/axe/2haxe_harvester.vox differ diff --git a/assets/voxygen/voxel/weapon/axe/minotaur_axe.vox b/assets/voxygen/voxel/weapon/axe/2haxe_minotaur.vox similarity index 100% rename from assets/voxygen/voxel/weapon/axe/minotaur_axe.vox rename to assets/voxygen/voxel/weapon/axe/2haxe_minotaur.vox diff --git a/assets/voxygen/voxel/weapon/hammer/2hhammer_harvester.vox b/assets/voxygen/voxel/weapon/hammer/2hhammer_harvester.vox new file mode 100644 index 0000000000..83909c9b5b Binary files /dev/null and b/assets/voxygen/voxel/weapon/hammer/2hhammer_harvester.vox differ diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 9028eb536e..8aa0853c95 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -369,6 +369,7 @@ impl Body { biped_large::Species::Tidalwarrior => 2500, biped_large::Species::Yeti => 2000, biped_large::Species::Minotaur => 5000, + biped_large::Species::Harvester => 2000, _ => 1000, }, Body::BipedSmall(biped_small) => match biped_small.species { @@ -480,6 +481,7 @@ impl Body { biped_large::Species::Mindflayer => 250, biped_large::Species::Tidalwarrior => 90, biped_large::Species::Yeti => 80, + biped_large::Species::Harvester => 80, _ => 100, }, Body::BipedSmall(_) => 10, diff --git a/common/src/comp/body/biped_large.rs b/common/src/comp/body/biped_large.rs index 81f8eedc3b..1208021085 100644 --- a/common/src/comp/body/biped_large.rs +++ b/common/src/comp/body/biped_large.rs @@ -47,6 +47,7 @@ make_case_elim!( Minotaur = 10, Tidalwarrior = 11, Yeti = 12, + Harvester = 13, } ); @@ -68,6 +69,7 @@ pub struct AllSpecies { pub minotaur: SpeciesMeta, pub tidalwarrior: SpeciesMeta, pub yeti: SpeciesMeta, + pub harvester: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -89,11 +91,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Minotaur => &self.minotaur, Species::Tidalwarrior => &self.tidalwarrior, Species::Yeti => &self.yeti, + Species::Harvester => &self.harvester, } } } -pub const ALL_SPECIES: [Species; 13] = [ +pub const ALL_SPECIES: [Species; 14] = [ Species::Ogre, Species::Cyclops, Species::Wendigo, @@ -107,6 +110,7 @@ pub const ALL_SPECIES: [Species; 13] = [ Species::Minotaur, Species::Tidalwarrior, Species::Yeti, + Species::Harvester, ]; 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 18e3d1b250..7131840b60 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -261,6 +261,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.hammer.yeti_hammer", )); }, + (biped_large::Species::Harvester, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.hammer.harvester_scythe", + )); + }, }, Body::Object(object::Body::Crossbow) => { main_tool = Some(Item::new_from_asset_expect( diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index 250479dfcd..47a46ba1a7 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -207,6 +207,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => (6.0, 3.0), (Tidalwarrior, _) => (6.5, 5.0), (Yeti, _) => (8.5, 4.0), + (Harvester, _) => (6.0, 11.0), }, jaw: match (body.species, body.body_type) { (Ogre, _) => (0.0, 0.0), @@ -222,6 +223,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => (2.0, -4.0), (Tidalwarrior, _) => (0.0, 0.0), (Yeti, _) => (-5.0, -5.0), + (Harvester, _) => (-2.0, -7.0), }, upper_torso: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 27.5), @@ -238,6 +240,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => (-1.0, 31.5), (Tidalwarrior, _) => (-1.0, 25.0), (Yeti, _) => (-1.0, 23.5), + (Harvester, _) => (-1.0, 18.0), }, lower_torso: match (body.species, body.body_type) { (Ogre, Male) => (1.0, -7.0), @@ -254,6 +257,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => (1.5, -8.5), (Tidalwarrior, _) => (0.0, -9.5), (Yeti, _) => (0.0, -6.5), + (Harvester, _) => (-1.0, -4.5), }, tail: match (body.species, body.body_type) { (Werewolf, _) => (-5.5, -2.0), @@ -278,6 +282,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => (10.0, 1.0, -1.0), (Tidalwarrior, _) => (14.0, -0.5, 2.0), (Yeti, _) => (10.5, 1.0, -2.5), + (Harvester, _) => (8.0, 1.0, -1.5), }, hand: match (body.species, body.body_type) { (Ogre, Male) => (14.5, 0.0, -4.0), @@ -294,6 +299,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => (12.5, 0.5, -7.0), (Tidalwarrior, _) => (15.5, -0.5, -3.0), (Yeti, _) => (12.0, 1.5, -6.0), + (Harvester, _) => (11.5, 1.5, -5.5), }, leg: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 0.0, -4.0), @@ -310,6 +316,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => (5.0, 0.0, -10.0), (Tidalwarrior, _) => (2.5, 0.0, -5.5), (Yeti, _) => (4.0, 0.0, -5.5), + (Harvester, _) => (3.5, 1.0, -4.0), }, foot: match (body.species, body.body_type) { (Ogre, Male) => (4.0, 1.0, -12.0), @@ -326,6 +333,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => (6.0, 4.5, -17.5), (Tidalwarrior, _) => (3.5, 0.5, -10.5), (Yeti, _) => (4.5, 0.5, -12.5), + (Harvester, _) => (4.5, 0.5, -9.5), }, scaler: match (body.species, body.body_type) { (Ogre, Male) => 1.4, @@ -342,6 +350,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => 2.0, (Tidalwarrior, _) => 2.0, (Yeti, _) => 1.5, + (Harvester, _) => 1.5, }, tempo: match (body.species, body.body_type) { (Ogre, Male) => 0.9, @@ -367,6 +376,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Minotaur, _) => 14.0, (Tidalwarrior, _) => 14.0, (Yeti, _) => 12.5, + (Harvester, _) => 7.5, }, shl: match (body.species, body.body_type) { (Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0),