From 75bfbff2c382c5f20f0668183e178874053c6534 Mon Sep 17 00:00:00 2001 From: flo666 Date: Sun, 18 Dec 2022 10:23:57 +0100 Subject: [PATCH] bristlemane --- .../entity/wild/aggressive/bristlemane.ron | 11 +++ assets/common/npc_names.ron | 4 ++ .../voxel/npc/bristlemane/male/foot_br.vox | 3 + .../voxel/npc/bristlemane/male/foot_fr.vox | 3 + .../voxel/npc/bristlemane/male/head.vox | 3 + .../voxel/npc/bristlemane/male/jaw.vox | 3 + .../voxel/npc/bristlemane/male/leg_br.vox | 3 + .../voxel/npc/bristlemane/male/leg_fr.vox | 3 + .../voxel/npc/bristlemane/male/neck.vox | 3 + .../voxel/npc/bristlemane/male/tail.vox | 3 + .../voxel/npc/bristlemane/male/torso_back.vox | 3 + .../npc/bristlemane/male/torso_front.vox | 3 + .../quadruped_medium_central_manifest.ron | 60 ++++++++++++++++ .../quadruped_medium_lateral_manifest.ron | 68 +++++++++++++++++++ common/src/comp/body.rs | 3 + common/src/comp/body/quadruped_medium.rs | 6 +- common/src/states/utils.rs | 1 + voxygen/anim/src/quadruped_medium/mod.rs | 13 ++++ 18 files changed, 195 insertions(+), 1 deletion(-) create mode 100644 assets/common/entity/wild/aggressive/bristlemane.ron create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/head.vox create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/bristlemane/male/torso_front.vox diff --git a/assets/common/entity/wild/aggressive/bristlemane.ron b/assets/common/entity/wild/aggressive/bristlemane.ron new file mode 100644 index 0000000000..caecec1dc6 --- /dev/null +++ b/assets/common/entity/wild/aggressive/bristlemane.ron @@ -0,0 +1,11 @@ +#![enable(implicit_some)] +( + name: Automatic, + body: RandomWith("bristlemane"), + alignment: Alignment(Enemy), + loot: LootTable("common.loot_tables.creature.quad_medium.generic"), + inventory: ( + loadout: FromBody, + ), + meta: [], +) \ No newline at end of file diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 4725cbf0fa..c5238753c6 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -567,6 +567,10 @@ keyword: "akhlut", generic: "Akhlut" ), + bristlemane: ( + keyword: "bristlemane", + generic: "Bristlemane" + ), ) ), quadruped_small: ( diff --git a/assets/voxygen/voxel/npc/bristlemane/male/foot_br.vox b/assets/voxygen/voxel/npc/bristlemane/male/foot_br.vox new file mode 100644 index 0000000000..054692397d --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19e589a775bda39b285da005a0e74a122cb13aa290f26e89859223369292e449 +size 1232 diff --git a/assets/voxygen/voxel/npc/bristlemane/male/foot_fr.vox b/assets/voxygen/voxel/npc/bristlemane/male/foot_fr.vox new file mode 100644 index 0000000000..e9b9def8ff --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6baead060652857c09b7f87d312684d5e12cff21d387b7a6e58fb4e27a594799 +size 1288 diff --git a/assets/voxygen/voxel/npc/bristlemane/male/head.vox b/assets/voxygen/voxel/npc/bristlemane/male/head.vox new file mode 100644 index 0000000000..dc15a0e559 --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:670b511a28c17c19c9ddba4291d823cd4f158b969b9ca89ede027ceaa9e2f3b2 +size 4852 diff --git a/assets/voxygen/voxel/npc/bristlemane/male/jaw.vox b/assets/voxygen/voxel/npc/bristlemane/male/jaw.vox new file mode 100644 index 0000000000..77e3129d43 --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32f503455d1a9156d68679ecc91e887eaf44922bf50c9e7613f10a41f1af9e9b +size 1484 diff --git a/assets/voxygen/voxel/npc/bristlemane/male/leg_br.vox b/assets/voxygen/voxel/npc/bristlemane/male/leg_br.vox new file mode 100644 index 0000000000..c1db42778f --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad8031ca27ffbb086d75e38d8a4f20727e7b433d8c099a75cf302ef5d040b51e +size 1276 diff --git a/assets/voxygen/voxel/npc/bristlemane/male/leg_fr.vox b/assets/voxygen/voxel/npc/bristlemane/male/leg_fr.vox new file mode 100644 index 0000000000..07cdbbac20 --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b933075effba021325ad2a45f00dc4d7ca483cd66527f74596f06d176025dc10 +size 1304 diff --git a/assets/voxygen/voxel/npc/bristlemane/male/neck.vox b/assets/voxygen/voxel/npc/bristlemane/male/neck.vox new file mode 100644 index 0000000000..67227cf088 --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:931e3e29bacbf5b240756ce139f277935347ff4ba1a1d452131d1881fb413f27 +size 1920 diff --git a/assets/voxygen/voxel/npc/bristlemane/male/tail.vox b/assets/voxygen/voxel/npc/bristlemane/male/tail.vox new file mode 100644 index 0000000000..5342ba499c --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cd629cf16702e77141b6a84e7b27956bcd5703363fd72b6ca587a36133d6cc1 +size 1192 diff --git a/assets/voxygen/voxel/npc/bristlemane/male/torso_back.vox b/assets/voxygen/voxel/npc/bristlemane/male/torso_back.vox new file mode 100644 index 0000000000..95aa7a3758 --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c553059c694bbd8b0eefb3dcd312f14ca0e74b968256c7c6c10fced6fb88c16 +size 2292 diff --git a/assets/voxygen/voxel/npc/bristlemane/male/torso_front.vox b/assets/voxygen/voxel/npc/bristlemane/male/torso_front.vox new file mode 100644 index 0000000000..75a93cb26a --- /dev/null +++ b/assets/voxygen/voxel/npc/bristlemane/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:044eed19ce74ae47ad3490b4386d2a2a0ec5789c0f2870b964499ef80d2f4f67 +size 5372 diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index 58a87f3988..da44081463 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -2099,4 +2099,64 @@ central: ("npc.akhlut.male.tail"), ), ), + (Bristlemane, Male): ( + head: ( + offset: (-7.5, 0.0, -8.5), + central: ("npc.bristlemane.male.head"), + ), + neck: ( + offset: (-3.5, -2.0, -6.5), + central: ("npc.bristlemane.male.neck"), + ), + jaw: ( + offset: (-3.5, -3.5, -0.5), + central: ("npc.bristlemane.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -5.0, -6.0), + central: ("npc.bristlemane.male.torso_front"), + ), + torso_back: ( + offset: (-3.5, -8.0, -6.0), + central: ("npc.bristlemane.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-1.5, -6.0, -4.5), + central: ("npc.bristlemane.male.tail"), + ), + ), + (Bristlemane, Female): ( + head: ( + offset: (-7.5, 0.0, -8.5), + central: ("npc.bristlemane.male.head"), + ), + neck: ( + offset: (-3.5, -2.0, -6.5), + central: ("npc.bristlemane.male.neck"), + ), + jaw: ( + offset: (-3.5, -3.5, -0.5), + central: ("npc.bristlemane.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -5.0, -6.0), + central: ("npc.bristlemane.male.torso_front"), + ), + torso_back: ( + offset: (-3.5, -8.0, -6.0), + central: ("npc.bristlemane.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-1.5, -6.0, -4.5), + central: ("npc.bristlemane.male.tail"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index f1a1bb3c90..20287bd1b7 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -2379,4 +2379,72 @@ lateral: ("npc.akhlut.male.foot_br"), ), ), + (Bristlemane, Male): ( + leg_fl: ( + offset: (-1.5, -2.0, -2.0), + lateral: ("npc.bristlemane.male.leg_fr"), + ), + leg_fr: ( + offset: (-1.5, -2.0, -2.0), + lateral: ("npc.bristlemane.male.leg_fr"), + ), + leg_bl: ( + offset: (-1.5, -2.0, -4.0), + lateral: ("npc.bristlemane.male.leg_br"), + ), + leg_br: ( + offset: (-1.5, -2.0, -4.0), + lateral: ("npc.bristlemane.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -1.5, -5.0), + lateral: ("npc.bristlemane.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -1.5, -5.0), + lateral: ("npc.bristlemane.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.0, -2.0, -5.0), + lateral: ("npc.bristlemane.male.foot_br"), + ), + foot_br: ( + offset: (-1.0, -2.0, -5.0), + lateral: ("npc.bristlemane.male.foot_br"), + ), + ), + (Bristlemane, Female): ( + leg_fl: ( + offset: (-1.5, -2.0, -2.0), + lateral: ("npc.bristlemane.male.leg_fr"), + ), + leg_fr: ( + offset: (-1.5, -2.0, -2.0), + lateral: ("npc.bristlemane.male.leg_fr"), + ), + leg_bl: ( + offset: (-1.5, -2.0, -4.0), + lateral: ("npc.bristlemane.male.leg_br"), + ), + leg_br: ( + offset: (-1.5, -2.0, -4.0), + lateral: ("npc.bristlemane.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -1.5, -5.0), + lateral: ("npc.bristlemane.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -1.5, -5.0), + lateral: ("npc.bristlemane.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.0, -2.0, -5.0), + lateral: ("npc.bristlemane.male.foot_br"), + ), + foot_br: ( + offset: (-1.0, -2.0, -5.0), + lateral: ("npc.bristlemane.male.foot_br"), + ), + ), }) diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index b1d86310db..4ef50e5cf6 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -463,6 +463,7 @@ impl Body { quadruped_medium::Species::Horse => Vec3::new(2.0, 3.0, 2.4), quadruped_medium::Species::Lion => Vec3::new(2.0, 3.3, 2.0), quadruped_medium::Species::Moose => Vec3::new(2.0, 4.0, 2.5), + quadruped_medium::Species::Bristlemane => Vec3::new(2.0, 4.0, 2.5), quadruped_medium::Species::Roshwalr => Vec3::new(2.0, 3.5, 2.2), quadruped_medium::Species::Saber => Vec3::new(2.0, 3.0, 2.0), quadruped_medium::Species::Tarasque => Vec3::new(2.0, 4.0, 2.6), @@ -713,6 +714,7 @@ impl Body { quadruped_medium::Species::Panda => 90, quadruped_medium::Species::Bear => 90, quadruped_medium::Species::Moose => 80, + quadruped_medium::Species::Bristlemane => 90, quadruped_medium::Species::Dreadhorn => 370, quadruped_medium::Species::Mammoth => 250, quadruped_medium::Species::Ngoubou => 290, @@ -979,6 +981,7 @@ impl Body { (quadruped_medium::Species::Bear, _) => [0.0, -0.4, 2.5], (quadruped_medium::Species::Dreadhorn, _) => [0.0, 0.2, 3.5], (quadruped_medium::Species::Moose, _) => [0.0, -0.6, 2.1], + (quadruped_medium::Species::Bristlemane, _) => [0.0, -0.6, 2.1], (quadruped_medium::Species::Snowleopard, _) => [-0.5, -0.5, 1.4], (quadruped_medium::Species::Mammoth, _) => [0.0, 4.9, 7.2], (quadruped_medium::Species::Ngoubou, _) => [0.0, 0.3, 2.0], diff --git a/common/src/comp/body/quadruped_medium.rs b/common/src/comp/body/quadruped_medium.rs index 5dfaf2ade9..a875f04a29 100644 --- a/common/src/comp/body/quadruped_medium.rs +++ b/common/src/comp/body/quadruped_medium.rs @@ -70,6 +70,7 @@ pub enum Species { Llama = 34, Alpaca = 35, Akhlut = 36, + Bristlemane = 37, } /// Data representing per-species generic data. @@ -112,6 +113,7 @@ pub struct AllSpecies { pub llama: SpeciesMeta, pub alpaca: SpeciesMeta, pub akhlut: SpeciesMeta, + pub bristlemane: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -155,11 +157,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Llama => &self.llama, Species::Alpaca => &self.alpaca, Species::Akhlut => &self.akhlut, + Species::Bristlemane => &self.bristlemane, } } } -pub const ALL_SPECIES: [Species; 35] = [ +pub const ALL_SPECIES: [Species; 36] = [ Species::Grolgar, Species::Saber, Species::Tiger, @@ -195,6 +198,7 @@ pub const ALL_SPECIES: [Species; 35] = [ Species::Llama, Species::Alpaca, Species::Akhlut, + Species::Bristlemane, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index acbc8b6b2b..6490ff096f 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -89,6 +89,7 @@ impl Body { quadruped_medium::Species::Llama => 120.0, quadruped_medium::Species::Alpaca => 110.0, quadruped_medium::Species::Akhlut => 90.0, + quadruped_medium::Species::Bristlemane => 135.0, }, Body::BipedLarge(body) => match body.species { biped_large::Species::Slysaurok => 100.0, diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index 03550d463c..8f38144eea 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -237,6 +237,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (0.5, 10.0), (Alpaca, _) => (0.5, 7.5), (Akhlut, _) => (1.0, 3.5), + (Bristlemane, _) => (-3.0, -2.0), }, neck: match (body.species, body.body_type) { (Grolgar, _) => (1.0, -1.0), @@ -276,6 +277,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (2.5, 4.5), (Alpaca, _) => (-1.5, 3.0), (Akhlut, _) => (8.5, -1.0), + (Bristlemane, _) => (6.0, 2.5), }, jaw: match (body.species, body.body_type) { (Grolgar, _) => (7.0, 2.0), @@ -316,6 +318,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (4.0, -1.0), (Alpaca, _) => (3.0, -2.5), (Akhlut, _) => (0.0, -4.5), + (Bristlemane, _) => (8.0, -6.0), }, tail: match (body.species, body.body_type) { (Grolgar, _) => (-11.5, -0.5), @@ -355,6 +358,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (-9.0, 6.0), (Alpaca, _) => (-8.5, 3.5), (Akhlut, _) => (-14.0, -2.0), + (Bristlemane, _) => (-7.0, -5.5), }, torso_front: match (body.species, body.body_type) { (Grolgar, _) => (10.0, 13.0), @@ -394,6 +398,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (7.0, 15.0), (Alpaca, _) => (7.0, 11.5), (Akhlut, _) => (5.5, 14.5), + (Bristlemane, _) => (1.5, 9.0), }, torso_back: match (body.species, body.body_type) { (Grolgar, _) => (-10.0, 1.5), @@ -433,6 +438,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (-8.0, 0.0), (Alpaca, _) => (-6.0, 0.0), (Akhlut, _) => (-7.0, 1.0), + (Bristlemane, _) => (-4.0, 2.0), }, ears: match (body.species, body.body_type) { (Grolgar, _) => (5.0, 8.0), @@ -473,6 +479,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (1.0, 3.5), (Alpaca, _) => (1.0, 2.0), (Akhlut, _) => (12.0, -3.0), + (Bristlemane, _) => (6.0, 1.0), }, leg_f: match (body.species, body.body_type) { (Grolgar, _) => (7.5, -5.5, -1.0), @@ -512,6 +519,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (5.0, -1.5, -1.0), (Alpaca, _) => (3.5, -2.5, -0.5), (Akhlut, _) => (8.0, -2.0, 0.5), + (Bristlemane, _) => (6.0, 1.0, -2.0), }, leg_b: match (body.species, body.body_type) { (Grolgar, _) => (6.0, -6.5, -4.0), @@ -551,6 +559,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (5.0, -7.0, -2.0), (Alpaca, _) => (3.5, -7.0, 0.0), (Akhlut, _) => (6.0, -7.5, -2.0), + (Bristlemane, _) => (4.5, -3.0, -2.0), }, feet_f: match (body.species, body.body_type) { (Grolgar, _) => (0.0, 0.0, -4.0), @@ -590,6 +599,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (-0.5, 0.5, -6.0), (Alpaca, _) => (0.0, -0.5, -5.0), (Akhlut, _) => (0.0, 0.0, -5.0), + (Bristlemane, _) => (0.0, -0.5, -2.0), }, feet_b: match (body.species, body.body_type) { (Grolgar, _) => (0.5, -1.5, -3.0), @@ -629,6 +639,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Llama, _) => (0.5, -1.5, -3.5), (Alpaca, _) => (-0.5, -0.5, -5.5), (Akhlut, _) => (1.5, -1.0, -4.5), + (Bristlemane, _) => (-0.5, 0.0, -4.0), }, scaler: match (body.species, body.body_type) { (Grolgar, _) => 1.05, @@ -657,6 +668,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mammoth, _) => 3.0, (Ngoubou, _) => 1.0, (Akhlut, _) => 1.4, + (Bristlemane, _) => 1.1, _ => 0.9, }, startangle: match (body.species, body.body_type) { @@ -779,6 +791,7 @@ fn mount_point(body: &Body) -> Vec3 { (Llama, _) => (0.0, -6.0, 2.0), (Alpaca, _) => (0.0, -9.0, 0.0), (Akhlut, _) => (0.0, -6.0, 1.0), + (Bristlemane, _) => (0.0, -9.0, 3.0), } .into() }