From 266986626d553ab12c3c00ced76c3d200dc3dfb6 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Wed, 23 Dec 2020 01:24:44 -0500 Subject: [PATCH 01/36] biped_small setup --- assets/common/npc_names.ron | 14 ++ .../voxel/biped_small_central_manifest.ron | 46 ++++ .../voxel/biped_small_lateral_manifest.ron | 38 +++ common/src/comp/agent.rs | 1 + common/src/comp/body.rs | 17 +- common/src/comp/body/biped_small.rs | 78 ++++++ common/src/comp/mod.rs | 2 +- common/src/npc.rs | 13 +- common/src/states/utils.rs | 2 + voxygen/anim/src/biped_small/idle.rs | 44 ++++ voxygen/anim/src/biped_small/mod.rs | 114 +++++++++ voxygen/anim/src/biped_small/run.rs | 44 ++++ voxygen/anim/src/lib.rs | 1 + voxygen/src/scene/figure/load.rs | 236 ++++++++++++++++++ voxygen/src/scene/figure/mod.rs | 138 +++++++++- 15 files changed, 778 insertions(+), 10 deletions(-) create mode 100644 assets/voxygen/voxel/biped_small_central_manifest.ron create mode 100644 assets/voxygen/voxel/biped_small_lateral_manifest.ron create mode 100644 common/src/comp/body/biped_small.rs create mode 100644 voxygen/anim/src/biped_small/idle.rs create mode 100644 voxygen/anim/src/biped_small/mod.rs create mode 100644 voxygen/anim/src/biped_small/run.rs diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 1d068ea772..6827f42355 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -881,6 +881,20 @@ ), species: () ), + biped_small: ( + body: ( + keyword: "biped_small", + names: [ + "Harvey" + ] + ), + species: ( + clownfish: ( + keyword: "gremlin", + generic: "Gremlin" + ) + ) + ), fish_small: ( body: ( keyword: "fish_small", diff --git a/assets/voxygen/voxel/biped_small_central_manifest.ron b/assets/voxygen/voxel/biped_small_central_manifest.ron new file mode 100644 index 0000000000..50dd30551c --- /dev/null +++ b/assets/voxygen/voxel/biped_small_central_manifest.ron @@ -0,0 +1,46 @@ +({ + (Gremlin, Male): ( + head: ( + offset: (-1.5, -7.5, -5.0), + central: ("npc.gremlin.male.chest"), + ), + chest: ( + offset: (-1.5, -7.5, -5.0), + central: ("npc.gremlin.male.chest"), + ), + shorts: ( + offset: (-1.5, -7.5, -5.0), + central: ("npc.gremlin.male.chest"), + ), + tail: ( + offset: (-0.5, -5.0, -2.5), + central: ("npc.gremlin.male.tail"), + ), + main: ( + offset: (-1.5, -7.5, -5.0), + central: ("npc.gremlin.male.chest"), + ), + ), + (Gremlin, Female): ( + head: ( + offset: (-1.5, -7.5, -5.0), + central: ("npc.gremlin.male.chest"), + ), + chest: ( + offset: (-1.5, -7.5, -5.0), + central: ("npc.gremlin.male.chest"), + ), + shorts: ( + offset: (-1.5, -7.5, -5.0), + central: ("npc.gremlin.male.chest"), + ), + tail: ( + offset: (-0.5, -5.0, -2.5), + central: ("npc.gremlin.male.tail"), + ), + main: ( + offset: (-1.5, -7.5, -5.0), + central: ("npc.gremlin.male.chest"), + ), + ), +}) diff --git a/assets/voxygen/voxel/biped_small_lateral_manifest.ron b/assets/voxygen/voxel/biped_small_lateral_manifest.ron new file mode 100644 index 0000000000..75fa3b3901 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_lateral_manifest.ron @@ -0,0 +1,38 @@ +({ + (Gremlin, Male): ( + hand_l: ( + offset: (-0.5, -3.0, -4.0), + lateral: ("npc.gremlin.male.hand_l"), + ), + hand_r: ( + offset: (-0.5, -3.0, -4.0), + lateral: ("npc.gremlin.male.hand_r"), + ), + foot_l: ( + offset: (-0.5, -3.0, -4.0), + lateral: ("npc.gremlin.male.fooot_l"), + ), + foot_r: ( + offset: (-0.5, -3.0, -4.0), + lateral: ("npc.gremlin.male.foot_r"), + ), + ), + (Gremlin, Female): ( + hand_l: ( + offset: (-0.5, -3.0, -4.0), + lateral: ("npc.gremlin.male.hand_l"), + ), + hand_r: ( + offset: (-0.5, -3.0, -4.0), + lateral: ("npc.gremlin.male.hand_r"), + ), + foot_l: ( + offset: (-0.5, -3.0, -4.0), + lateral: ("npc.gremlin.male.fooot_l"), + ), + foot_r: ( + offset: (-0.5, -3.0, -4.0), + lateral: ("npc.gremlin.male.foot_r"), + ), + ), +}) diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index b80c4b1c06..2d60b968c0 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -150,6 +150,7 @@ impl<'a> From<&'a Body> for Psyche { quadruped_low::Species::Pangolin => 0.4, _ => 0.6, }, + Body::BipedSmall(_) => 0.5, Body::BirdMedium(_) => 0.5, Body::BirdSmall(_) => 0.4, Body::FishMedium(_) => 0.15, diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 742a487adb..a25f9ff89e 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -1,4 +1,5 @@ pub mod biped_large; +pub mod biped_small; pub mod bird_medium; pub mod bird_small; pub mod dragon; @@ -38,10 +39,11 @@ make_case_elim!( BirdSmall(body: bird_small::Body) = 6, FishSmall(body: fish_small::Body) = 7, BipedLarge(body: biped_large::Body)= 8, - Object(body: object::Body) = 9, - Golem(body: golem::Body) = 10, - Theropod(body: theropod::Body) = 11, - QuadrupedLow(body: quadruped_low::Body) = 12, + BipedSmall(body: biped_small::Body)= 9, + Object(body: object::Body) = 10, + Golem(body: golem::Body) = 11, + Theropod(body: theropod::Body) = 12, + QuadrupedLow(body: quadruped_low::Body) = 13, } ); @@ -71,6 +73,7 @@ pub struct AllBodies { pub bird_small: BodyData, pub fish_small: BodyData>, pub biped_large: BodyData>, + pub biped_small: BodyData>, pub object: BodyData, pub golem: BodyData>, pub theropod: BodyData>, @@ -91,6 +94,7 @@ impl core::ops::Index for AllBodies &self.fish_medium.body, NpcKind::Clownfish => &self.fish_small.body, NpcKind::Ogre => &self.biped_large.body, + NpcKind::Gremlin => &self.biped_small.body, NpcKind::StoneGolem => &self.golem.body, NpcKind::Archaeos => &self.theropod.body, NpcKind::Reddragon => &self.dragon.body, @@ -115,6 +119,7 @@ impl<'a, BodyMeta, SpeciesMeta> core::ops::Index<&'a Body> for AllBodies &self.bird_small.body, Body::FishSmall(_) => &self.fish_small.body, Body::BipedLarge(_) => &self.biped_large.body, + Body::BipedSmall(_) => &self.biped_small.body, Body::Object(_) => &self.object.body, Body::Golem(_) => &self.golem.body, Body::Theropod(_) => &self.theropod.body, @@ -200,6 +205,7 @@ impl Body { _ => 4.6, }, Body::Golem(_) => 2.5, + Body::BipedSmall(_) => 0.75, Body::Object(_) => 0.4, } } @@ -262,6 +268,7 @@ impl Body { _ => 4.6, }, Body::Golem(_) => 5.0, + Body::BipedSmall(_) => 1.5, Body::Object(object) => match object { object::Body::Crossbow => 1.7, _ => 1.0, @@ -339,6 +346,7 @@ impl Body { biped_large::Species::Mindflayer => 8000, _ => 1000, }, + Body::BipedSmall(_) => 10000, Body::Object(object) => match object { object::Body::TrainingDummy => 10000, object::Body::Crossbow => 800, @@ -428,6 +436,7 @@ impl Body { biped_large::Species::Mindflayer => 250, _ => 100, }, + Body::BipedSmall(_) => 10, Body::Object(_) => 10, Body::Golem(_) => 260, Body::Theropod(_) => 20, diff --git a/common/src/comp/body/biped_small.rs b/common/src/comp/body/biped_small.rs new file mode 100644 index 0000000000..b6fe13c5ff --- /dev/null +++ b/common/src/comp/body/biped_small.rs @@ -0,0 +1,78 @@ +use crate::{make_case_elim, make_proj_elim}; +use rand::{seq::SliceRandom, thread_rng}; +use serde::{Deserialize, Serialize}; + +make_proj_elim!( + body, + #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] + pub struct Body { + pub species: Species, + pub body_type: BodyType, + } +); + +impl Body { + pub fn random() -> Self { + let mut rng = thread_rng(); + let species = *(&ALL_SPECIES).choose(&mut rng).unwrap(); + Self::random_with(&mut rng, &species) + } + + #[inline] + pub fn random_with(rng: &mut impl rand::Rng, &species: &Species) -> Self { + let body_type = *(&ALL_BODY_TYPES).choose(rng).unwrap(); + Self { species, body_type } + } +} + +impl From for super::Body { + fn from(body: Body) -> Self { super::Body::BipedSmall(body) } +} + +make_case_elim!( + species, + #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] + #[repr(u32)] + pub enum Species { + Gremlin = 0, + } +); + +/// Data representing per-species generic data. +/// +/// NOTE: Deliberately don't (yet?) implement serialize. +#[derive(Clone, Debug, Deserialize)] +pub struct AllSpecies { + pub gremlin: SpeciesMeta, +} + +impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { + type Output = SpeciesMeta; + + #[inline] + fn index(&self, &index: &'a Species) -> &Self::Output { + match index { + Species::Gremlin => &self.gremlin, + } + } +} + +pub const ALL_SPECIES: [Species; 1] = [Species::Gremlin]; + +impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { + type IntoIter = std::iter::Copied>; + type Item = Species; + + fn into_iter(self) -> Self::IntoIter { ALL_SPECIES.iter().copied() } +} + +make_case_elim!( + body_type, + #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] + #[repr(u32)] + pub enum BodyType { + Female = 0, + Male = 1, + } +); +pub const ALL_BODY_TYPES: [BodyType; 2] = [BodyType::Female, BodyType::Male]; diff --git a/common/src/comp/mod.rs b/common/src/comp/mod.rs index e893baaa39..e9b10c2cf4 100644 --- a/common/src/comp/mod.rs +++ b/common/src/comp/mod.rs @@ -46,7 +46,7 @@ pub use self::{ aura::{Aura, AuraChange, AuraKind, Auras}, beam::{Beam, BeamSegment}, body::{ - biped_large, bird_medium, bird_small, dragon, fish_medium, fish_small, golem, humanoid, + biped_large, biped_small, bird_medium, bird_small, dragon, fish_medium, fish_small, golem, humanoid, object, quadruped_low, quadruped_medium, quadruped_small, theropod, AllBodies, Body, BodyData, }, diff --git a/common/src/npc.rs b/common/src/npc.rs index 8d68c507e9..17414adc78 100644 --- a/common/src/npc.rs +++ b/common/src/npc.rs @@ -16,13 +16,14 @@ pub enum NpcKind { Clownfish, Marlin, Ogre, + Gremlin, Archaeos, StoneGolem, Reddragon, Crocodile, } -pub const ALL_NPCS: [NpcKind; 11] = [ +pub const ALL_NPCS: [NpcKind; 12] = [ NpcKind::Humanoid, NpcKind::Wolf, NpcKind::Pig, @@ -30,6 +31,7 @@ pub const ALL_NPCS: [NpcKind; 11] = [ NpcKind::Clownfish, NpcKind::Marlin, NpcKind::Ogre, + NpcKind::Gremlin, NpcKind::Archaeos, NpcKind::StoneGolem, NpcKind::Reddragon, @@ -123,6 +125,7 @@ pub fn kind_to_body(kind: NpcKind) -> Body { NpcKind::Clownfish => comp::fish_small::Body::random().into(), NpcKind::Marlin => comp::fish_medium::Body::random().into(), NpcKind::Ogre => comp::biped_large::Body::random().into(), + NpcKind::Gremlin => comp::biped_small::Body::random().into(), NpcKind::Archaeos => comp::theropod::Body::random().into(), NpcKind::StoneGolem => comp::golem::Body::random().into(), NpcKind::Reddragon => comp::dragon::Body::random().into(), @@ -249,6 +252,14 @@ impl NpcBody { comp::biped_large::Body::random_with, ) }) + .or_else(|| { + parse( + s, + NpcKind::Gremlin, + &npc_names.biped_small, + comp::biped_small::Body::random_with, + ) + }) .or_else(|| { parse( s, diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 334f8ae039..84aa9d1cc9 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -60,6 +60,7 @@ impl Body { quadruped_medium::Species::Kelpie => 180.0, quadruped_medium::Species::Horse => 180.0, }, + Body::BipedSmall(_) => 100.0, Body::BirdMedium(_) => 80.0, Body::FishMedium(_) => 80.0, Body::Dragon(_) => 250.0, @@ -116,6 +117,7 @@ impl Body { Body::BirdSmall(_) => 35.0, Body::FishSmall(_) => 10.0, Body::BipedLarge(_) => 12.0, + Body::BipedSmall(_) => 12.0, Body::Object(_) => 10.0, Body::Golem(_) => 8.0, Body::Theropod(theropod) => match theropod.species { diff --git a/voxygen/anim/src/biped_small/idle.rs b/voxygen/anim/src/biped_small/idle.rs new file mode 100644 index 0000000000..6e90bc485e --- /dev/null +++ b/voxygen/anim/src/biped_small/idle.rs @@ -0,0 +1,44 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; + +pub struct IdleAnimation; + +type IdleAnimationDependency = (Vec3, Vec3, Vec3, f64, Vec3); + +impl Animation for IdleAnimation { + type Dependency = IdleAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_idle\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "Biped_small_idle")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_velocity, _orientation, _last_ori, _global_time, _avg_vel): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + next.head.scale = Vec3::one(); + + next.chest.scale = Vec3::one() / 13.0; + + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) / 13.0; + next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); + next.main.position = Vec3::new(0.0, 0.0, 0.0); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.hand_l.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); + next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); + next.foot_l.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); + next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); + + next + } +} diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs new file mode 100644 index 0000000000..408ab9f139 --- /dev/null +++ b/voxygen/anim/src/biped_small/mod.rs @@ -0,0 +1,114 @@ +pub mod idle; +pub mod run; + +// Reexports +pub use self::{idle::IdleAnimation, run::RunAnimation}; + +use super::{make_bone, vek::*, FigureBoneData, Skeleton}; +use common::comp::{self}; +use core::convert::TryFrom; + +pub type Body = comp::biped_small::Body; + +skeleton_impls!(struct BipedSmallSkeleton { + + head, + + chest, + + shorts, + + tail, + + main, + + hand_l, + + hand_r, + + foot_l, + + foot_r, +}); + +impl Skeleton for BipedSmallSkeleton { + type Attr = SkeletonAttr; + type Body = Body; + + const BONE_COUNT: usize = 9; + #[cfg(feature = "use-dyn-lib")] + const COMPUTE_FN: &'static [u8] = b"biped_small_compute_mats\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_compute_mats")] + fn compute_matrices_inner( + &self, + base_mat: Mat4, + buf: &mut [FigureBoneData; super::MAX_BONE_COUNT], + ) -> Vec3 { + let chest_mat = base_mat * Mat4::::from(self.chest); + let shorts_mat = chest_mat * Mat4::::from(self.chest); + + *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ + make_bone(chest_mat * Mat4::::from(self.head)), + make_bone(chest_mat), + make_bone(shorts_mat), + make_bone(shorts_mat * Mat4::::from(self.tail)), + make_bone(chest_mat * Mat4::::from(self.main)), + make_bone(chest_mat * Mat4::::from(self.hand_l)), + make_bone(chest_mat * Mat4::::from(self.hand_l)), + make_bone(base_mat * Mat4::::from(self.foot_l)), + make_bone(base_mat * Mat4::::from(self.foot_l)), + ]; + Vec3::default() + } +} + +pub struct SkeletonAttr { + head: (f32, f32), + chest: (f32, f32), + shorts: (f32, f32), + tail: (f32, f32), + hand: (f32, f32, f32), + foot: (f32, f32, f32), +} + +impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { + type Error = (); + + fn try_from(body: &'a comp::Body) -> Result { + match body { + comp::Body::BipedSmall(body) => Ok(SkeletonAttr::from(body)), + _ => Err(()), + } + } +} + +impl Default for SkeletonAttr { + fn default() -> Self { + Self { + head: (0.0, 0.0), + chest: (0.0, 0.0), + shorts: (0.0, 0.0), + tail: (0.0, 0.0), + hand: (0.0, 0.0, 0.0), + foot: (0.0, 0.0, 0.0), + } + } +} + +impl<'a> From<&'a Body> for SkeletonAttr { + fn from(body: &'a Body) -> Self { + use comp::biped_small::Species::*; + Self { + head: match (body.species, body.body_type) { + (Gremlin, _) => (0.0, 5.0), + }, + chest: match (body.species, body.body_type) { + (Gremlin, _) => (0.0, 5.0), + }, + shorts: match (body.species, body.body_type) { + (Gremlin, _) => (0.0, 5.0), + }, + tail: match (body.species, body.body_type) { + (Gremlin, _) => (-7.5, -0.5), + }, + hand: match (body.species, body.body_type) { + (Gremlin, _) => (2.0, 0.5, 1.0), + }, + foot: match (body.species, body.body_type) { + (Gremlin, _) => (2.0, 0.5, 1.0), + }, + } + } +} diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs new file mode 100644 index 0000000000..c1ed6375ae --- /dev/null +++ b/voxygen/anim/src/biped_small/run.rs @@ -0,0 +1,44 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; + +pub struct RunAnimation; + +type RunAnimationDependency = (Vec3, Vec3, Vec3, f64, Vec3); + +impl Animation for RunAnimation { + type Dependency = RunAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_run\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "Biped_small_run")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_velocity, _orientation, _last_ori, _global_time, _avg_vel): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + next.head.scale = Vec3::one(); + + next.chest.scale = Vec3::one() / 13.0; + + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) / 13.0; + next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); + next.main.position = Vec3::new(0.0, 0.0, 0.0); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.hand_l.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); + next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); + next.foot_l.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); + next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); + + next + } +} diff --git a/voxygen/anim/src/lib.rs b/voxygen/anim/src/lib.rs index ffe1380b00..4e6a9cbbc8 100644 --- a/voxygen/anim/src/lib.rs +++ b/voxygen/anim/src/lib.rs @@ -40,6 +40,7 @@ macro_rules! skeleton_impls { } pub mod biped_large; +pub mod biped_small; pub mod bird_medium; pub mod bird_small; pub mod character; diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 0f2bf8a2d8..412d1475e8 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -3,6 +3,7 @@ use common::{ assets::{self, AssetExt, AssetHandle, DotVoxAsset, Ron}, comp::{ biped_large::{self, BodyType as BLBodyType, Species as BLSpecies}, + biped_small::{self, BodyType as BSBodyType, Species as BSSpecies}, bird_medium::{self, BodyType as BMBodyType, Species as BMSpecies}, bird_small, dragon::{self, BodyType as DBodyType, Species as DSpecies}, @@ -2468,6 +2469,241 @@ impl FishSmallLateralSpec { //// +#[derive(Deserialize)] +struct BipedSmallCentralSpec(HashMap<(BSSpecies, BSBodyType), SidedBSCentralVoxSpec>); + +#[derive(Deserialize)] +struct SidedBSCentralVoxSpec { + head: BipedSmallCentralSubSpec, + chest: BipedSmallCentralSubSpec, + shorts: BipedSmallCentralSubSpec, + tail: BipedSmallCentralSubSpec, + main: BipedSmallCentralSubSpec, +} +#[derive(Deserialize)] +struct BipedSmallCentralSubSpec { + offset: [f32; 3], // Should be relative to initial origin + central: VoxSimple, +} +#[derive(Deserialize)] +struct BipedSmallLateralSpec(HashMap<(BSSpecies, BSBodyType), SidedBSLateralVoxSpec>); +#[derive(Deserialize)] +struct SidedBSLateralVoxSpec { + hand_l: BipedSmallLateralSubSpec, + hand_r: BipedSmallLateralSubSpec, + foot_l: BipedSmallLateralSubSpec, + foot_r: BipedSmallLateralSubSpec, +} +#[derive(Deserialize)] +struct BipedSmallLateralSubSpec { + offset: [f32; 3], // Should be relative to initial origin + lateral: VoxSimple, +} + +make_vox_spec!( + biped_small::Body, + struct BipedSmallSpec { + central: BipedSmallCentralSpec = "voxygen.voxel.biped_small_central_manifest", + lateral: BipedSmallLateralSpec = "voxygen.voxel.biped_small_lateral_manifest", + }, + |FigureKey { body, .. }, spec| { + [ + Some(spec.central.read().0.mesh_head( + body.species, + body.body_type, + )), + Some(spec.central.read().0.mesh_chest( + body.species, + body.body_type, + )), + Some(spec.central.read().0.mesh_shorts( + body.species, + body.body_type, + )), + Some(spec.central.read().0.mesh_tail( + body.species, + body.body_type, + )), + Some(spec.central.read().0.mesh_main( + body.species, + body.body_type, + )), + Some(spec.lateral.read().0.mesh_hand_l( + body.species, + body.body_type, + )), + Some(spec.lateral.read().0.mesh_hand_r( + body.species, + body.body_type, + )), + Some(spec.lateral.read().0.mesh_foot_l( + body.species, + body.body_type, + )), + Some(spec.lateral.read().0.mesh_foot_r( + body.species, + body.body_type, + )), + None, + None, + None, + None, + None, + None, + None, + ] + }, +); + +impl BipedSmallCentralSpec { + fn mesh_head(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No head specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let central = graceful_load_segment(&spec.head.central.0); + + (central, Vec3::from(spec.head.offset)) + } + + fn mesh_chest(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No chest specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let central = graceful_load_segment(&spec.chest.central.0); + + (central, Vec3::from(spec.chest.offset)) + } + + fn mesh_shorts(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No shorts specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let central = graceful_load_segment(&spec.shorts.central.0); + + (central, Vec3::from(spec.shorts.offset)) + } + + fn mesh_tail(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No tail specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let central = graceful_load_segment(&spec.tail.central.0); + + (central, Vec3::from(spec.tail.offset)) + } + + fn mesh_main(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No main specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let central = graceful_load_segment(&spec.main.central.0); + + (central, Vec3::from(spec.main.offset)) + } +} + +impl BipedSmallLateralSpec { + fn mesh_hand_l(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No hand specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.hand_l.lateral.0); + + (lateral, Vec3::from(spec.hand_l.offset)) + } + + fn mesh_hand_r(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No hand specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.hand_r.lateral.0); + + (lateral, Vec3::from(spec.hand_r.offset)) + } + + fn mesh_foot_l(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No foot specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.foot_l.lateral.0); + + (lateral, Vec3::from(spec.foot_l.offset)) + } + + fn mesh_foot_r(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No foot specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.foot_r.lateral.0); + + (lateral, Vec3::from(spec.foot_r.offset)) + } +} +//// + #[derive(Deserialize)] struct DragonCentralSpec(HashMap<(DSpecies, DBodyType), SidedDCentralVoxSpec>); diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 295a3552e5..88c6146357 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -18,10 +18,10 @@ use crate::{ }, }; use anim::{ - biped_large::BipedLargeSkeleton, bird_medium::BirdMediumSkeleton, - bird_small::BirdSmallSkeleton, character::CharacterSkeleton, dragon::DragonSkeleton, - fish_medium::FishMediumSkeleton, fish_small::FishSmallSkeleton, golem::GolemSkeleton, - object::ObjectSkeleton, quadruped_low::QuadrupedLowSkeleton, + biped_large::BipedLargeSkeleton, biped_small::BipedSmallSkeleton, + bird_medium::BirdMediumSkeleton, bird_small::BirdSmallSkeleton, character::CharacterSkeleton, + dragon::DragonSkeleton, fish_medium::FishMediumSkeleton, fish_small::FishSmallSkeleton, + golem::GolemSkeleton, object::ObjectSkeleton, quadruped_low::QuadrupedLowSkeleton, quadruped_medium::QuadrupedMediumSkeleton, quadruped_small::QuadrupedSmallSkeleton, theropod::TheropodSkeleton, Animation, Skeleton, }; @@ -98,6 +98,7 @@ struct FigureMgrStates { bird_small_states: HashMap>, fish_small_states: HashMap>, biped_large_states: HashMap>, + biped_small_states: HashMap>, golem_states: HashMap>, object_states: HashMap>, } @@ -116,6 +117,7 @@ impl FigureMgrStates { bird_small_states: HashMap::new(), fish_small_states: HashMap::new(), biped_large_states: HashMap::new(), + biped_small_states: HashMap::new(), golem_states: HashMap::new(), object_states: HashMap::new(), } @@ -172,6 +174,10 @@ impl FigureMgrStates { .biped_large_states .get_mut(&entity) .map(DerefMut::deref_mut), + Body::BipedSmall(_) => self + .biped_small_states + .get_mut(&entity) + .map(DerefMut::deref_mut), Body::Golem(_) => self.golem_states.get_mut(&entity).map(DerefMut::deref_mut), Body::Object(_) => self.object_states.get_mut(&entity).map(DerefMut::deref_mut), } @@ -196,6 +202,7 @@ impl FigureMgrStates { Body::BirdSmall(_) => self.bird_small_states.remove(&entity).map(|e| e.meta), Body::FishSmall(_) => self.fish_small_states.remove(&entity).map(|e| e.meta), Body::BipedLarge(_) => self.biped_large_states.remove(&entity).map(|e| e.meta), + Body::BipedSmall(_) => self.biped_small_states.remove(&entity).map(|e| e.meta), Body::Golem(_) => self.golem_states.remove(&entity).map(|e| e.meta), Body::Object(_) => self.object_states.remove(&entity).map(|e| e.meta), } @@ -214,6 +221,7 @@ impl FigureMgrStates { self.bird_small_states.retain(|k, v| f(k, &mut *v)); self.fish_small_states.retain(|k, v| f(k, &mut *v)); self.biped_large_states.retain(|k, v| f(k, &mut *v)); + self.biped_small_states.retain(|k, v| f(k, &mut *v)); self.golem_states.retain(|k, v| f(k, &mut *v)); self.object_states.retain(|k, v| f(k, &mut *v)); } @@ -231,6 +239,7 @@ impl FigureMgrStates { + self.bird_small_states.len() + self.fish_small_states.len() + self.biped_large_states.len() + + self.biped_small_states.len() + self.golem_states.len() + self.object_states.len() } @@ -290,6 +299,11 @@ impl FigureMgrStates { .iter() .filter(|(_, c)| c.visible()) .count() + + self + .biped_small_states + .iter() + .filter(|(_, c)| c.visible()) + .count() + self .golem_states .iter() @@ -316,6 +330,7 @@ pub struct FigureMgr { fish_medium_model_cache: FigureModelCache, fish_small_model_cache: FigureModelCache, biped_large_model_cache: FigureModelCache, + biped_small_model_cache: FigureModelCache, object_model_cache: FigureModelCache, golem_model_cache: FigureModelCache, states: FigureMgrStates, @@ -336,6 +351,7 @@ impl FigureMgr { fish_medium_model_cache: FigureModelCache::new(), fish_small_model_cache: FigureModelCache::new(), biped_large_model_cache: FigureModelCache::new(), + biped_small_model_cache: FigureModelCache::new(), object_model_cache: FigureModelCache::new(), golem_model_cache: FigureModelCache::new(), states: FigureMgrStates::default(), @@ -365,6 +381,8 @@ impl FigureMgr { .clean(&mut self.col_lights, tick); self.biped_large_model_cache .clean(&mut self.col_lights, tick); + self.biped_small_model_cache + .clean(&mut self.col_lights, tick); self.object_model_cache.clean(&mut self.col_lights, tick); self.golem_model_cache.clean(&mut self.col_lights, tick); } @@ -2519,6 +2537,99 @@ impl FigureMgr { terrain, ); }, + Body::BipedSmall(body) => { + let (model, skeleton_attr) = self.biped_small_model_cache.get_or_create_model( + renderer, + &mut self.col_lights, + *body, + inventory, + tick, + player_camera_mode, + player_character_state, + scene_data.thread_pool, + ); + + let state = self + .states + .biped_small_states + .entry(entity) + .or_insert_with(|| { + FigureState::new(renderer, BipedSmallSkeleton::default()) + }); + + let (character, last_character) = match (character, last_character) { + (Some(c), Some(l)) => (c, l), + _ => continue, + }; + + if !character.same_variant(&last_character.0) { + state.state_time = 0.0; + } + + let target_base = match ( + physics.on_ground, + vel.0.magnitude_squared() > MOVING_THRESHOLD_SQR, // Moving + physics.in_liquid.is_some(), // In water + ) { + // Idle + (true, false, false) => anim::biped_small::IdleAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + (vel.0, ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + // Run + (true, true, _) => anim::biped_small::RunAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + (vel.0, ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + // Jump + (false, _, false) => anim::biped_small::RunAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + (vel.0, ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + // Swim + (false, _, true) => anim::biped_small::RunAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + (vel.0, ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + _ => anim::biped_small::RunAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + (vel.0, ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + }; + + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt_lerp); + state.update( + renderer, + pos.0, + ori, + scale, + col, + dt, + state_animation_rate, + model, + lpindex, + in_frustum, + is_player, + camera, + &mut update_buf, + terrain, + ); + }, Body::Dragon(body) => { let (model, skeleton_attr) = self.dragon_model_cache.get_or_create_model( renderer, @@ -3808,6 +3919,7 @@ impl FigureMgr { fish_medium_model_cache, fish_small_model_cache, biped_large_model_cache, + biped_small_model_cache, object_model_cache, golem_model_cache, states: @@ -3823,6 +3935,7 @@ impl FigureMgr { bird_small_states, fish_small_states, biped_large_states, + biped_small_states, golem_states, object_states, }, @@ -4016,6 +4129,23 @@ impl FigureMgr { ), ) }), + Body::BipedSmall(body) => biped_small_states + .get(&entity) + .filter(|state| filter_state(&*state)) + .map(move |state| { + ( + state.locals(), + state.bone_consts(), + biped_small_model_cache.get_model( + col_lights, + *body, + inventory, + tick, + player_camera_mode, + character_state, + ), + ) + }), Body::Golem(body) => golem_states .get(&entity) .filter(|state| filter_state(&*state)) From 7cf723bb9dfa2297b5c396903e61fb322c68cebb Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 24 Dec 2020 02:52:02 -0500 Subject: [PATCH 02/36] gnome --- assets/common/npc_names.ron | 6 +- .../voxel/biped_small_central_manifest.ron | 36 ++-- .../voxel/biped_small_lateral_manifest.ron | 36 ++-- assets/voxygen/voxel/npc/gnome/male/chest.vox | 3 + .../voxygen/voxel/npc/gnome/male/foot_l.vox | 3 + .../voxygen/voxel/npc/gnome/male/foot_r.vox | 3 + .../voxygen/voxel/npc/gnome/male/hand_l.vox | 3 + .../voxygen/voxel/npc/gnome/male/hand_r.vox | 3 + assets/voxygen/voxel/npc/gnome/male/head.vox | 3 + .../voxygen/voxel/npc/gnome/male/shorts.vox | 3 + common/src/comp/body/biped_small.rs | 8 +- common/src/npc.rs | 8 +- voxygen/anim/src/biped_small/idle.rs | 18 +- voxygen/anim/src/biped_small/mod.rs | 18 +- voxygen/anim/src/biped_small/run.rs | 156 ++++++++++++++++-- voxygen/anim/src/character/run.rs | 4 +- voxygen/src/scene/figure/mod.rs | 36 +++- 17 files changed, 264 insertions(+), 83 deletions(-) create mode 100644 assets/voxygen/voxel/npc/gnome/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/gnome/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/gnome/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/gnome/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/gnome/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/gnome/male/head.vox create mode 100644 assets/voxygen/voxel/npc/gnome/male/shorts.vox diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 6827f42355..0e93b93ccc 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -889,9 +889,9 @@ ] ), species: ( - clownfish: ( - keyword: "gremlin", - generic: "Gremlin" + gnome: ( + keyword: "gnome", + generic: "Gnome" ) ) ), diff --git a/assets/voxygen/voxel/biped_small_central_manifest.ron b/assets/voxygen/voxel/biped_small_central_manifest.ron index 50dd30551c..9b325d72bc 100644 --- a/assets/voxygen/voxel/biped_small_central_manifest.ron +++ b/assets/voxygen/voxel/biped_small_central_manifest.ron @@ -1,46 +1,46 @@ ({ - (Gremlin, Male): ( + (Gnome, Male): ( head: ( - offset: (-1.5, -7.5, -5.0), - central: ("npc.gremlin.male.chest"), + offset: (-8.0, -6.5, -12.0), + central: ("npc.gnome.male.head"), ), chest: ( - offset: (-1.5, -7.5, -5.0), - central: ("npc.gremlin.male.chest"), + offset: (-5.0, -3.0, -2.5), + central: ("npc.gnome.male.chest"), ), shorts: ( - offset: (-1.5, -7.5, -5.0), - central: ("npc.gremlin.male.chest"), + offset: (-4.0, -3.5, -2.5), + central: ("npc.gnome.male.shorts"), ), tail: ( offset: (-0.5, -5.0, -2.5), - central: ("npc.gremlin.male.tail"), + central: ("armor.empty"), ), main: ( offset: (-1.5, -7.5, -5.0), - central: ("npc.gremlin.male.chest"), + central: ("armor.empty"), ), ), - (Gremlin, Female): ( + (Gnome, Female): ( head: ( - offset: (-1.5, -7.5, -5.0), - central: ("npc.gremlin.male.chest"), + offset: (-8.0, -6.5, -12.0), + central: ("npc.gnome.male.head"), ), chest: ( - offset: (-1.5, -7.5, -5.0), - central: ("npc.gremlin.male.chest"), + offset: (-5.0, -3.0, -2.5), + central: ("npc.gnome.male.chest"), ), shorts: ( - offset: (-1.5, -7.5, -5.0), - central: ("npc.gremlin.male.chest"), + offset: (-4.0, -3.5, -2.5), + central: ("npc.gnome.male.shorts"), ), tail: ( offset: (-0.5, -5.0, -2.5), - central: ("npc.gremlin.male.tail"), + central: ("armor.empty"), ), main: ( offset: (-1.5, -7.5, -5.0), - central: ("npc.gremlin.male.chest"), + central: ("armor.empty"), ), ), }) diff --git a/assets/voxygen/voxel/biped_small_lateral_manifest.ron b/assets/voxygen/voxel/biped_small_lateral_manifest.ron index 75fa3b3901..aa2ddba155 100644 --- a/assets/voxygen/voxel/biped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_small_lateral_manifest.ron @@ -1,38 +1,38 @@ ({ - (Gremlin, Male): ( + (Gnome, Male): ( hand_l: ( - offset: (-0.5, -3.0, -4.0), - lateral: ("npc.gremlin.male.hand_l"), + offset: (-2.0, -2.0, -5.0), + lateral: ("npc.gnome.male.hand_l"), ), hand_r: ( - offset: (-0.5, -3.0, -4.0), - lateral: ("npc.gremlin.male.hand_r"), + offset: (-2.0, -2.0, -5.0), + lateral: ("npc.gnome.male.hand_r"), ), foot_l: ( - offset: (-0.5, -3.0, -4.0), - lateral: ("npc.gremlin.male.fooot_l"), + offset: (-1.5, -2.0, -4.0), + lateral: ("npc.gnome.male.foot_l"), ), foot_r: ( - offset: (-0.5, -3.0, -4.0), - lateral: ("npc.gremlin.male.foot_r"), + offset: (-1.5, -2.0, -4.0), + lateral: ("npc.gnome.male.foot_r"), ), ), - (Gremlin, Female): ( + (Gnome, Female): ( hand_l: ( - offset: (-0.5, -3.0, -4.0), - lateral: ("npc.gremlin.male.hand_l"), + offset: (-2.0, -2.0, -5.0), + lateral: ("npc.gnome.male.hand_l"), ), hand_r: ( - offset: (-0.5, -3.0, -4.0), - lateral: ("npc.gremlin.male.hand_r"), + offset: (-2.0, -2.0, -5.0), + lateral: ("npc.gnome.male.hand_r"), ), foot_l: ( - offset: (-0.5, -3.0, -4.0), - lateral: ("npc.gremlin.male.fooot_l"), + offset: (-1.5, -2.0, -4.0), + lateral: ("npc.gnome.male.foot_l"), ), foot_r: ( - offset: (-0.5, -3.0, -4.0), - lateral: ("npc.gremlin.male.foot_r"), + offset: (-1.5, -2.0, -4.0), + lateral: ("npc.gnome.male.foot_r"), ), ), }) diff --git a/assets/voxygen/voxel/npc/gnome/male/chest.vox b/assets/voxygen/voxel/npc/gnome/male/chest.vox new file mode 100644 index 0000000000..04a2841e16 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6acdfb5c0d402b8b8f82c9a294e1d65adc8ad23f1911b380a90a93ce6ca00f78 +size 1752 diff --git a/assets/voxygen/voxel/npc/gnome/male/foot_l.vox b/assets/voxygen/voxel/npc/gnome/male/foot_l.vox new file mode 100644 index 0000000000..245f2e5c04 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1df3ebd080235330d78d44113bc16e5dd8fb9d515afee112cb86b27dc22c3e3 +size 1264 diff --git a/assets/voxygen/voxel/npc/gnome/male/foot_r.vox b/assets/voxygen/voxel/npc/gnome/male/foot_r.vox new file mode 100644 index 0000000000..8c3e8a9c9c --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:417fa23a21f543a0d08ecd7621436792008e2e5c12a816eeffb9bd4443bb4137 +size 1264 diff --git a/assets/voxygen/voxel/npc/gnome/male/hand_l.vox b/assets/voxygen/voxel/npc/gnome/male/hand_l.vox new file mode 100644 index 0000000000..cf25e21c4b --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b7ab3b14b7850bd213ad400712ad88189fcf8574b075e0c9941b4752bf766d3 +size 1380 diff --git a/assets/voxygen/voxel/npc/gnome/male/hand_r.vox b/assets/voxygen/voxel/npc/gnome/male/hand_r.vox new file mode 100644 index 0000000000..cb179f89f2 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:347ca2a79d3f5199e5c3e4d68078fa74e616b8bf8ed8d3a3110a32bb346a6d08 +size 1380 diff --git a/assets/voxygen/voxel/npc/gnome/male/head.vox b/assets/voxygen/voxel/npc/gnome/male/head.vox new file mode 100644 index 0000000000..6dfa08ca40 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3113963a0773c49f7c5d59ca26a654d6a5dfced6f3da78e92c286da57ad89bf +size 3848 diff --git a/assets/voxygen/voxel/npc/gnome/male/shorts.vox b/assets/voxygen/voxel/npc/gnome/male/shorts.vox new file mode 100644 index 0000000000..e64cbb4730 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/shorts.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e0deb158454c543936ca5e4e40ac179e6d6b8be9d4d6c160425028823355fb3 +size 1680 diff --git a/common/src/comp/body/biped_small.rs b/common/src/comp/body/biped_small.rs index b6fe13c5ff..85950c8d20 100644 --- a/common/src/comp/body/biped_small.rs +++ b/common/src/comp/body/biped_small.rs @@ -34,7 +34,7 @@ make_case_elim!( #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] #[repr(u32)] pub enum Species { - Gremlin = 0, + Gnome = 0, } ); @@ -43,7 +43,7 @@ make_case_elim!( /// NOTE: Deliberately don't (yet?) implement serialize. #[derive(Clone, Debug, Deserialize)] pub struct AllSpecies { - pub gremlin: SpeciesMeta, + pub gnome: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -52,12 +52,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies #[inline] fn index(&self, &index: &'a Species) -> &Self::Output { match index { - Species::Gremlin => &self.gremlin, + Species::Gnome => &self.gnome, } } } -pub const ALL_SPECIES: [Species; 1] = [Species::Gremlin]; +pub const ALL_SPECIES: [Species; 1] = [Species::Gnome]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/common/src/npc.rs b/common/src/npc.rs index 17414adc78..d7eebe5f17 100644 --- a/common/src/npc.rs +++ b/common/src/npc.rs @@ -16,7 +16,7 @@ pub enum NpcKind { Clownfish, Marlin, Ogre, - Gremlin, + Gnome, Archaeos, StoneGolem, Reddragon, @@ -31,7 +31,7 @@ pub const ALL_NPCS: [NpcKind; 12] = [ NpcKind::Clownfish, NpcKind::Marlin, NpcKind::Ogre, - NpcKind::Gremlin, + NpcKind::Gnome, NpcKind::Archaeos, NpcKind::StoneGolem, NpcKind::Reddragon, @@ -125,7 +125,7 @@ pub fn kind_to_body(kind: NpcKind) -> Body { NpcKind::Clownfish => comp::fish_small::Body::random().into(), NpcKind::Marlin => comp::fish_medium::Body::random().into(), NpcKind::Ogre => comp::biped_large::Body::random().into(), - NpcKind::Gremlin => comp::biped_small::Body::random().into(), + NpcKind::Gnome => comp::biped_small::Body::random().into(), NpcKind::Archaeos => comp::theropod::Body::random().into(), NpcKind::StoneGolem => comp::golem::Body::random().into(), NpcKind::Reddragon => comp::dragon::Body::random().into(), @@ -255,7 +255,7 @@ impl NpcBody { .or_else(|| { parse( s, - NpcKind::Gremlin, + NpcKind::Gnome, &npc_names.biped_small, comp::biped_small::Body::random_with, ) diff --git a/voxygen/anim/src/biped_small/idle.rs b/voxygen/anim/src/biped_small/idle.rs index 6e90bc485e..6dad997260 100644 --- a/voxygen/anim/src/biped_small/idle.rs +++ b/voxygen/anim/src/biped_small/idle.rs @@ -2,6 +2,7 @@ use super::{ super::{vek::*, Animation}, BipedSmallSkeleton, SkeletonAttr, }; +use std::{f32::consts::PI, ops::Mul}; pub struct IdleAnimation; @@ -14,7 +15,7 @@ impl Animation for IdleAnimation { #[cfg(feature = "use-dyn-lib")] const UPDATE_FN: &'static [u8] = b"biped_small_idle\0"; - #[cfg_attr(feature = "be-dyn-lib", export_name = "Biped_small_idle")] + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_idle")] fn update_skeleton_inner( skeleton: &Self::Skeleton, @@ -24,20 +25,23 @@ impl Animation for IdleAnimation { s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let slow = (anim_time as f32 * 4.0).sin(); - next.head.scale = Vec3::one(); + next.foot_l.scale = Vec3::one() / 13.0; + next.foot_r.scale = Vec3::one() / 13.0; next.chest.scale = Vec3::one() / 13.0; + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slow * -0.1); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) / 13.0; + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3) / 13.0; next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); next.main.position = Vec3::new(0.0, 0.0, 0.0); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.hand_l.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.foot_l.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); + next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); + next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); + next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2) / 13.0; + next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2) / 13.0; next } diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index 408ab9f139..73c22b02f3 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -37,7 +37,7 @@ impl Skeleton for BipedSmallSkeleton { buf: &mut [FigureBoneData; super::MAX_BONE_COUNT], ) -> Vec3 { let chest_mat = base_mat * Mat4::::from(self.chest); - let shorts_mat = chest_mat * Mat4::::from(self.chest); + let shorts_mat = chest_mat * Mat4::::from(self.shorts); *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ make_bone(chest_mat * Mat4::::from(self.head)), @@ -46,9 +46,9 @@ impl Skeleton for BipedSmallSkeleton { make_bone(shorts_mat * Mat4::::from(self.tail)), make_bone(chest_mat * Mat4::::from(self.main)), make_bone(chest_mat * Mat4::::from(self.hand_l)), - make_bone(chest_mat * Mat4::::from(self.hand_l)), - make_bone(base_mat * Mat4::::from(self.foot_l)), + make_bone(chest_mat * Mat4::::from(self.hand_r)), make_bone(base_mat * Mat4::::from(self.foot_l)), + make_bone(base_mat * Mat4::::from(self.foot_r)), ]; Vec3::default() } @@ -92,22 +92,22 @@ impl<'a> From<&'a Body> for SkeletonAttr { use comp::biped_small::Species::*; Self { head: match (body.species, body.body_type) { - (Gremlin, _) => (0.0, 5.0), + (Gnome, _) => (-1.0, 9.0), }, chest: match (body.species, body.body_type) { - (Gremlin, _) => (0.0, 5.0), + (Gnome, _) => (0.0, 9.0), }, shorts: match (body.species, body.body_type) { - (Gremlin, _) => (0.0, 5.0), + (Gnome, _) => (0.0, -3.0), }, tail: match (body.species, body.body_type) { - (Gremlin, _) => (-7.5, -0.5), + (Gnome, _) => (0.0, 0.0), }, hand: match (body.species, body.body_type) { - (Gremlin, _) => (2.0, 0.5, 1.0), + (Gnome, _) => (6.0, 0.5, -1.0), }, foot: match (body.species, body.body_type) { - (Gremlin, _) => (2.0, 0.5, 1.0), + (Gnome, _) => (3.0, 0.0, 4.0), }, } } diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index c1ed6375ae..7afb3e20d8 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -2,10 +2,11 @@ use super::{ super::{vek::*, Animation}, BipedSmallSkeleton, SkeletonAttr, }; +use std::{f32::consts::PI, ops::Mul}; pub struct RunAnimation; -type RunAnimationDependency = (Vec3, Vec3, Vec3, f64, Vec3); +type RunAnimationDependency = (Vec3, Vec3, Vec3, f64, Vec3, f32); impl Animation for RunAnimation { type Dependency = RunAnimationDependency; @@ -14,30 +15,157 @@ impl Animation for RunAnimation { #[cfg(feature = "use-dyn-lib")] const UPDATE_FN: &'static [u8] = b"biped_small_run\0"; - #[cfg_attr(feature = "be-dyn-lib", export_name = "Biped_small_run")] + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_run")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, _orientation, _last_ori, _global_time, _avg_vel): Self::Dependency, + (velocity, orientation, last_ori, global_time, avg_vel, acc_vel): Self::Dependency, anim_time: f64, - _rate: &mut f32, + rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + *rate = 1.0; + let impact = (avg_vel.z).max(-8.0); + let speednorm = speed / 9.4; + + let lab = 1.0; + + let footrotl = (((1.0) + / (0.5 + (0.5) * ((acc_vel * 1.6 * lab as f32 + PI * 1.4).sin()).powi(2))) + .sqrt()) + * ((acc_vel * 1.6 * lab as f32 + PI * 1.4).sin()); + + let footrotr = (((1.0) + / (0.5 + (0.5) * ((acc_vel * 1.6 * lab as f32 + PI * 0.4).sin()).powi(2))) + .sqrt()) + * ((acc_vel * 1.6 * lab as f32 + PI * 0.4).sin()); + + let shortalter = (acc_vel * lab as f32 * 1.6 + PI / -2.0).sin(); + + let foothoril = (acc_vel * 1.6 * lab as f32 + PI * 1.45).sin(); + let foothorir = (acc_vel * 1.6 * lab as f32 + PI * (0.45)).sin(); + let footstrafel = (acc_vel * 1.6 * lab as f32 + PI * 1.45).sin(); + let footstrafer = (acc_vel * 1.6 * lab as f32 + PI * (0.95)).sin(); + + let footvertl = (acc_vel * 1.6 * lab as f32).sin(); + let footvertr = (acc_vel * 1.6 * lab as f32 + PI).sin(); + let footvertsl = (acc_vel * 1.6 * lab as f32).sin(); + let footvertsr = (acc_vel * 1.6 * lab as f32 + PI * 0.5).sin(); + + let shortalt = (acc_vel * lab as f32 * 1.6 + PI / 2.0).sin(); + + let short = (((5.0) / (1.5 + 3.5 * ((acc_vel * lab as f32 * 1.6).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 * 1.6).sin()); + let direction = velocity.y * -0.098 * orientation.y + velocity.x * -0.098 * orientation.x; + + let side = + (velocity.x * -0.098 * orientation.y + velocity.y * 0.098 * orientation.x) * -1.0; + let sideabs = side.abs(); + let ori: Vec2 = Vec2::from(orientation); + let last_ori = Vec2::from(last_ori); + let tilt = if ::vek::Vec2::new(ori, last_ori) + .map(|o| o.magnitude_squared()) + .map(|m| m > 0.001 && m.is_finite()) + .reduce_and() + && ori.angle_between(last_ori).is_finite() + { + ori.angle_between(last_ori).min(0.2) + * last_ori.determine_side(Vec2::zero(), ori).signum() + } else { + 0.0 + } * 1.3; + //println!("speednorm {} ",side); + + let head_look = Vec2::new( + ((global_time + anim_time) as f32 / 18.0) + .floor() + .mul(7331.0) + .sin() + * 0.2, + ((global_time + anim_time) as f32 / 18.0) + .floor() + .mul(1337.0) + .sin() + * 0.1, + ); + next.chest.scale = Vec3::one() / 13.0; + next.foot_l.scale = Vec3::one() / 13.0; + next.foot_r.scale = Vec3::one() / 13.0; + next.head.position = Vec3::new(0.0, -1.0 + s_a.head.0, s_a.head.1 + short * 0.1); + next.head.orientation = + Quaternion::rotation_z(tilt * -2.5 + head_look.x * 0.2 - short * 0.02) + * Quaternion::rotation_x(head_look.y + 0.45 * speednorm); + + next.chest.position = Vec3::new( + 0.0, + s_a.chest.0, + s_a.chest.1 + 1.0 * speednorm + shortalt * -0.8, + ) / 13.0; + next.chest.orientation = Quaternion::rotation_z(short * 0.06 + tilt * -0.6) + * Quaternion::rotation_y(tilt * 1.6) + * Quaternion::rotation_x( + impact * 0.06 + shortalter * 0.035 + speednorm * -0.4 + (tilt.abs()), + ); + + next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); + next.shorts.orientation = Quaternion::rotation_x(0.1 * speednorm) + * Quaternion::rotation_z(short * 0.25 + tilt * -1.5) + * Quaternion::rotation_y(tilt * 0.7); + + next.hand_l.position = Vec3::new( + -s_a.hand.0 + foothorir * -1.3 * speednorm, + 1.0 * speednorm + s_a.hand.1 + foothorir * -3.5 * speednorm, + 1.5 * speednorm + s_a.hand.2 - foothorir * 2.5 * speednorm, + ); + next.hand_l.orientation = + Quaternion::rotation_x(0.4 * speednorm + (footrotr * -1.2) * speednorm) + * Quaternion::rotation_y(footrotr * 0.4 * speednorm); + + next.hand_r.position = Vec3::new( + s_a.hand.0 + foothoril * 1.3 * speednorm, + 1.0 * speednorm + s_a.hand.1 + foothoril * -3.5 * speednorm, + 1.5 * speednorm + s_a.hand.2 - foothoril * 2.5 * speednorm, + ); + next.hand_r.orientation = + Quaternion::rotation_x(0.4 * speednorm + (footrotl * -1.2) * speednorm) + * Quaternion::rotation_y(footrotl * -0.4 * speednorm); + + // + next.foot_l.position = Vec3::new( + -s_a.foot.0 + footstrafel * sideabs * 3.0 + tilt * -2.0, + s_a.foot.1 + + (1.0 - sideabs) * (-1.0 * speednorm + foothoril * -7.5 * speednorm) + + (direction * 5.0).max(0.0), + s_a.foot.2 + + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -2.1 * speednorm).max(-1.0))) + + side * ((footvertsl * 1.5).max(-1.0)), + ) / 13.0; + next.foot_l.orientation = Quaternion::rotation_x( + (1.0 - sideabs) * (-0.2 + foothoril * -1.3 * speednorm) + sideabs * -0.5, + ) * Quaternion::rotation_y( + tilt * 2.0 + side * 0.3 + side * (foothoril * 0.3), + ) * Quaternion::rotation_z(side * 0.2); + + next.foot_r.position = Vec3::new( + s_a.foot.0 + footstrafer * sideabs * 3.0 + tilt * -2.0, + s_a.foot.1 + + (1.0 - sideabs) * (-1.0 * speednorm + foothorir * -7.5 * speednorm) + + (direction * 5.0).max(0.0), + s_a.foot.2 + + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -2.1 * speednorm).max(-1.0))) + + side * ((footvertsr * -1.5).max(-1.0)), + ) / 13.0; + next.foot_r.orientation = Quaternion::rotation_x( + (1.0 - sideabs) * (-0.2 + foothorir * -1.3 * speednorm) + sideabs * -0.5, + ) * Quaternion::rotation_y( + tilt * 2.0 + side * 0.3 + side * (foothorir * 0.3), + ) * Quaternion::rotation_z(side * 0.2); next.head.scale = Vec3::one(); - next.chest.scale = Vec3::one() / 13.0; - - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) / 13.0; - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.hand_l.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.foot_l.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); next } diff --git a/voxygen/anim/src/character/run.rs b/voxygen/anim/src/character/run.rs index 44025d0af7..6f6de75c29 100644 --- a/voxygen/anim/src/character/run.rs +++ b/voxygen/anim/src/character/run.rs @@ -175,7 +175,7 @@ impl Animation for RunAnimation { + side * ((footvertsl * 1.5).max(-1.0)), ); next.foot_l.orientation = Quaternion::rotation_x( - (1.0 - sideabs) * (-0.2 + foothoril * -1.3 * speednorm) + sideabs * -0.5, + (1.0 - sideabs) * (-0.2 + foothoril * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( tilt * 2.0 + side * 0.3 + side * (foothoril * 0.3), ) * Quaternion::rotation_z(side * 0.2); @@ -190,7 +190,7 @@ impl Animation for RunAnimation { + side * ((footvertsr * -1.5).max(-1.0)), ); next.foot_r.orientation = Quaternion::rotation_x( - (1.0 - sideabs) * (-0.2 + foothorir * -1.3 * speednorm) + sideabs * -0.5, + (1.0 - sideabs) * (-0.2 + foothorir * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( tilt * 2.0 + side * 0.3 + side * (foothorir * 0.3), ) * Quaternion::rotation_z(side * 0.2); diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 88c6146357..a9d645ae5f 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2582,7 +2582,14 @@ impl FigureMgr { // Run (true, true, _) => anim::biped_small::RunAnimation::update_skeleton( &BipedSmallSkeleton::default(), - (vel.0, ori, state.last_ori, time, state.avg_vel), + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, @@ -2590,7 +2597,14 @@ impl FigureMgr { // Jump (false, _, false) => anim::biped_small::RunAnimation::update_skeleton( &BipedSmallSkeleton::default(), - (vel.0, ori, state.last_ori, time, state.avg_vel), + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, @@ -2598,14 +2612,28 @@ impl FigureMgr { // Swim (false, _, true) => anim::biped_small::RunAnimation::update_skeleton( &BipedSmallSkeleton::default(), - (vel.0, ori, state.last_ori, time, state.avg_vel), + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, ), _ => anim::biped_small::RunAnimation::update_skeleton( &BipedSmallSkeleton::default(), - (vel.0, ori, state.last_ori, time, state.avg_vel), + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, From f48fea57f43d2dd5a867d4cec42ce88c59e3ade2 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sun, 27 Dec 2020 16:01:02 +0100 Subject: [PATCH 03/36] Sahagin, Adlet npcs --- assets/common/npc_names.ron | 8 ++ .../voxel/biped_small_central_manifest.ron | 88 +++++++++++++++++++ .../voxel/biped_small_lateral_manifest.ron | 72 +++++++++++++++ assets/voxygen/voxel/npc/adlet/male/chest.vox | 3 + .../voxygen/voxel/npc/adlet/male/foot_l.vox | 3 + .../voxygen/voxel/npc/adlet/male/foot_r.vox | 3 + .../voxygen/voxel/npc/adlet/male/hand_l.vox | 3 + .../voxygen/voxel/npc/adlet/male/hand_r.vox | 3 + assets/voxygen/voxel/npc/adlet/male/head.vox | 3 + .../voxygen/voxel/npc/adlet/male/shorts.vox | 3 + assets/voxygen/voxel/npc/adlet/male/tail.vox | 3 + .../voxygen/voxel/npc/sahagin/male/chest.vox | 3 + .../voxygen/voxel/npc/sahagin/male/foot_l.vox | 3 + .../voxygen/voxel/npc/sahagin/male/foot_r.vox | 3 + .../voxygen/voxel/npc/sahagin/male/hand_l.vox | 3 + .../voxygen/voxel/npc/sahagin/male/hand_r.vox | 3 + .../voxygen/voxel/npc/sahagin/male/head.vox | 3 + .../voxygen/voxel/npc/sahagin/male/shorts.vox | 3 + .../voxygen/voxel/npc/sahagin/male/tail.vox | 3 + .../voxel/weapon/npcweapon/cyclops_hammer.vox | 3 - assets/voxygen/voxel/weapon/spear/adlet.vox | 3 + assets/voxygen/voxel/weapon/spear/sahagin.vox | 3 + common/src/comp/body.rs | 2 +- common/src/comp/body/biped_small.rs | 12 ++- voxygen/anim/src/biped_small/mod.rs | 12 +++ voxygen/anim/src/biped_small/run.rs | 52 +++++------ 26 files changed, 272 insertions(+), 31 deletions(-) create mode 100644 assets/voxygen/voxel/npc/adlet/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/head.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/shorts.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/sahagin/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/sahagin/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/sahagin/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/sahagin/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/sahagin/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/sahagin/male/head.vox create mode 100644 assets/voxygen/voxel/npc/sahagin/male/shorts.vox create mode 100644 assets/voxygen/voxel/npc/sahagin/male/tail.vox delete mode 100644 assets/voxygen/voxel/weapon/npcweapon/cyclops_hammer.vox create mode 100644 assets/voxygen/voxel/weapon/spear/adlet.vox create mode 100644 assets/voxygen/voxel/weapon/spear/sahagin.vox diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 0e93b93ccc..e08840b6d4 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -892,6 +892,14 @@ gnome: ( keyword: "gnome", generic: "Gnome" + ), + sahagin: ( + keyword: "sahagin", + generic: "Sahagin" + ), + adlet: ( + keyword: "adlet", + generic: "Adlet" ) ) ), diff --git a/assets/voxygen/voxel/biped_small_central_manifest.ron b/assets/voxygen/voxel/biped_small_central_manifest.ron index 9b325d72bc..86d077e456 100644 --- a/assets/voxygen/voxel/biped_small_central_manifest.ron +++ b/assets/voxygen/voxel/biped_small_central_manifest.ron @@ -43,4 +43,92 @@ central: ("armor.empty"), ), ), + (Sahagin, Male): ( + head: ( + offset: (-2.5, 0.0, -4.5), + central: ("npc.sahagin.male.head"), + ), + chest: ( + offset: (-4.5, -8.0, -8.0), + central: ("npc.sahagin.male.chest"), + ), + shorts: ( + offset: (-2.5, -3.5, -2.0), + central: ("npc.sahagin.male.shorts"), + ), + tail: ( + offset: (-1.5, -13.0, -5.0), + central: ("npc.sahagin.male.tail"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.sahagin"), + ), + ), + (Sahagin, Female): ( + head: ( + offset: (-2.5, 0.0, -4.5), + central: ("npc.sahagin.male.head"), + ), + chest: ( + offset: (-4.5, -8.0, -8.0), + central: ("npc.sahagin.male.chest"), + ), + shorts: ( + offset: (-2.5, -3.5, -2.0), + central: ("npc.sahagin.male.shorts"), + ), + tail: ( + offset: (-1.5, -13.0, -5.0), + central: ("npc.sahagin.male.tail"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.sahagin"), + ), + ), + (Adlet, Male): ( + head: ( + offset: (-7.0, -4.5, -6.0), + central: ("npc.adlet.male.head"), + ), + chest: ( + offset: (-5.0, -3.5, -2.0), + central: ("npc.adlet.male.chest"), + ), + shorts: ( + offset: (-5.0, -4.5, -3.0), + central: ("npc.adlet.male.shorts"), + ), + tail: ( + offset: (-1.0, -5.0, -1.0), + central: ("npc.adlet.male.tail"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.adlet"), + ), + ), + (Adlet, Female): ( + head: ( + offset: (-7.0, -4.5, -6.0), + central: ("npc.adlet.male.head"), + ), + chest: ( + offset: (-5.0, -3.5, -2.0), + central: ("npc.adlet.male.chest"), + ), + shorts: ( + offset: (-5.0, -4.5, -3.0), + central: ("npc.adlet.male.shorts"), + ), + tail: ( + offset: (-1.0, -5.0, -1.0), + central: ("npc.adlet.male.tail"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.adlet"), + ), + ), }) diff --git a/assets/voxygen/voxel/biped_small_lateral_manifest.ron b/assets/voxygen/voxel/biped_small_lateral_manifest.ron index aa2ddba155..edca8bc940 100644 --- a/assets/voxygen/voxel/biped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_small_lateral_manifest.ron @@ -35,4 +35,76 @@ lateral: ("npc.gnome.male.foot_r"), ), ), + (Sahagin, Male): ( + hand_l: ( + offset: (0.0, -2.5, -11.0), + lateral: ("npc.sahagin.male.hand_l"), + ), + hand_r: ( + offset: (-7.0, -2.5, -11.0), + lateral: ("npc.sahagin.male.hand_r"), + ), + foot_l: ( + offset: (-2.5, -2.0, -8.0), + lateral: ("npc.sahagin.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -2.0, -8.0), + lateral: ("npc.sahagin.male.foot_r"), + ), + ), + (Sahagin, Female): ( + hand_l: ( + offset: (0.0, -2.5, -11.0), + lateral: ("npc.sahagin.male.hand_l"), + ), + hand_r: ( + offset: (-7.0, -2.5, -11.0), + lateral: ("npc.sahagin.male.hand_r"), + ), + foot_l: ( + offset: (-2.5, -2.0, -8.0), + lateral: ("npc.sahagin.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -2.0, -8.0), + lateral: ("npc.sahagin.male.foot_r"), + ), + ), + (Adlet, Male): ( + hand_l: ( + offset: (-2.0, -2.0, -6.0), + lateral: ("npc.adlet.male.hand_l"), + ), + hand_r: ( + offset: (-2.0, -2.0, -6.0), + lateral: ("npc.adlet.male.hand_r"), + ), + foot_l: ( + offset: (-1.5, -3.0, -7.0), + lateral: ("npc.adlet.male.foot_l"), + ), + foot_r: ( + offset: (-1.5, -3.0, -7.0), + lateral: ("npc.adlet.male.foot_r"), + ), + ), + (Adlet, Female): ( + hand_l: ( + offset: (-2.0, -2.0, -6.0), + lateral: ("npc.adlet.male.hand_l"), + ), + hand_r: ( + offset: (-2.0, -2.0, -6.0), + lateral: ("npc.adlet.male.hand_r"), + ), + foot_l: ( + offset: (-1.5, -3.0, -7.0), + lateral: ("npc.adlet.male.foot_l"), + ), + foot_r: ( + offset: (-1.5, -3.0, -7.0), + lateral: ("npc.adlet.male.foot_r"), + ), + ), }) diff --git a/assets/voxygen/voxel/npc/adlet/male/chest.vox b/assets/voxygen/voxel/npc/adlet/male/chest.vox new file mode 100644 index 0000000000..5ba90ecd91 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed21307a67cc28e6aafa5bf2ce6ee4a4752008e60fbc8548440f4e6a97490490 +size 1688 diff --git a/assets/voxygen/voxel/npc/adlet/male/foot_l.vox b/assets/voxygen/voxel/npc/adlet/male/foot_l.vox new file mode 100644 index 0000000000..02dda8f8f3 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fff771288bd843ba433f8f9c7eb855452480b8710d5021d2ee022a471f4def20 +size 1304 diff --git a/assets/voxygen/voxel/npc/adlet/male/foot_r.vox b/assets/voxygen/voxel/npc/adlet/male/foot_r.vox new file mode 100644 index 0000000000..fd9a64bc1d --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec5b001f718eeaba782262f84ddb375ead7a62fd2fe19b2bba3c1a39f3404a16 +size 1304 diff --git a/assets/voxygen/voxel/npc/adlet/male/hand_l.vox b/assets/voxygen/voxel/npc/adlet/male/hand_l.vox new file mode 100644 index 0000000000..4752784440 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6107b1f4789e6479d1340aa45713be40d705a7a6e8f93a2081336d72197021a9 +size 1420 diff --git a/assets/voxygen/voxel/npc/adlet/male/hand_r.vox b/assets/voxygen/voxel/npc/adlet/male/hand_r.vox new file mode 100644 index 0000000000..bff8a36769 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe3cee39cf25b7be4cbca9e6a6fa0d7f9629b71c91b1b393e8cc074555f5609b +size 1420 diff --git a/assets/voxygen/voxel/npc/adlet/male/head.vox b/assets/voxygen/voxel/npc/adlet/male/head.vox new file mode 100644 index 0000000000..26a71c9cec --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a936f5a25ab1b9dcc72f7824b00b743ae7866822cfc4764238bfa9419a5d9a0f +size 3336 diff --git a/assets/voxygen/voxel/npc/adlet/male/shorts.vox b/assets/voxygen/voxel/npc/adlet/male/shorts.vox new file mode 100644 index 0000000000..8cbfbfde97 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/shorts.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45ad1cf02069507286e9e45ae1a3f9a5739653b86ba40cd2327cfc833c1e9b7a +size 1904 diff --git a/assets/voxygen/voxel/npc/adlet/male/tail.vox b/assets/voxygen/voxel/npc/adlet/male/tail.vox new file mode 100644 index 0000000000..f4cf97a571 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:558e995b6496a667225c1b6083a986c1d975c71afed60fe52c88b95d33f5839d +size 1232 diff --git a/assets/voxygen/voxel/npc/sahagin/male/chest.vox b/assets/voxygen/voxel/npc/sahagin/male/chest.vox new file mode 100644 index 0000000000..357523d8bd --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc352e09cf8794c2bba919f140cca1f7cca2711185007967f7f0be15edc064d3 +size 2940 diff --git a/assets/voxygen/voxel/npc/sahagin/male/foot_l.vox b/assets/voxygen/voxel/npc/sahagin/male/foot_l.vox new file mode 100644 index 0000000000..c006778a48 --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6d6e8aa6875db50d7c60899704d28dcdf8a4cfd23ce5fb1786029c84b9be86f +size 1308 diff --git a/assets/voxygen/voxel/npc/sahagin/male/foot_r.vox b/assets/voxygen/voxel/npc/sahagin/male/foot_r.vox new file mode 100644 index 0000000000..6e7a0d105a --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26c13cb8d7bfaa16392289306c9d756478842deb9a697f883162fc4a484738bb +size 1308 diff --git a/assets/voxygen/voxel/npc/sahagin/male/hand_l.vox b/assets/voxygen/voxel/npc/sahagin/male/hand_l.vox new file mode 100644 index 0000000000..7a47b5201e --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b04d6c515c659c5aecd2c58ee5ca1611a4f5f185a9c9eecd5bb668de756e09b +size 1476 diff --git a/assets/voxygen/voxel/npc/sahagin/male/hand_r.vox b/assets/voxygen/voxel/npc/sahagin/male/hand_r.vox new file mode 100644 index 0000000000..143f5acd6d --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1467f658d9b07186a84b87a3a165653d8fc1f898fa28f4ee8582c25935df4a73 +size 1476 diff --git a/assets/voxygen/voxel/npc/sahagin/male/head.vox b/assets/voxygen/voxel/npc/sahagin/male/head.vox new file mode 100644 index 0000000000..505ea421b7 --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aad1c94c98c966d2c419dcda9b1bd071e678e3c6ad18e9f0772c08672846d14c +size 1880 diff --git a/assets/voxygen/voxel/npc/sahagin/male/shorts.vox b/assets/voxygen/voxel/npc/sahagin/male/shorts.vox new file mode 100644 index 0000000000..a48214f36f --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/shorts.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5720aee2e2d8cd40f6cd3014cd557f02f6050fbad180288f4088fe1aa62f9643 +size 1432 diff --git a/assets/voxygen/voxel/npc/sahagin/male/tail.vox b/assets/voxygen/voxel/npc/sahagin/male/tail.vox new file mode 100644 index 0000000000..882c6aed76 --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6de1a8e65358dc9787a3c5b73cebf42f30abaf540f8e54eb5cde03eab48b90b +size 1400 diff --git a/assets/voxygen/voxel/weapon/npcweapon/cyclops_hammer.vox b/assets/voxygen/voxel/weapon/npcweapon/cyclops_hammer.vox deleted file mode 100644 index 93bf3d1752..0000000000 --- a/assets/voxygen/voxel/weapon/npcweapon/cyclops_hammer.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ef11b80feaf3144e07c4779baa8eaf248e4311e3c927e050193f254ff7136111 -size 29267 diff --git a/assets/voxygen/voxel/weapon/spear/adlet.vox b/assets/voxygen/voxel/weapon/spear/adlet.vox new file mode 100644 index 0000000000..fdd2d0bd3e --- /dev/null +++ b/assets/voxygen/voxel/weapon/spear/adlet.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c691f98dee4882cbca0e81ca89998259369f55c49b03b6f43d5b546d69b93bc8 +size 1288 diff --git a/assets/voxygen/voxel/weapon/spear/sahagin.vox b/assets/voxygen/voxel/weapon/spear/sahagin.vox new file mode 100644 index 0000000000..fe093f417d --- /dev/null +++ b/assets/voxygen/voxel/weapon/spear/sahagin.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf6d16fca51e28ab79b779428bec61032558224cc890b96caba0459f078c96d9 +size 1308 diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index a25f9ff89e..edcc366654 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -268,7 +268,7 @@ impl Body { _ => 4.6, }, Body::Golem(_) => 5.0, - Body::BipedSmall(_) => 1.5, + Body::BipedSmall(_) => 1.4, Body::Object(object) => match object { object::Body::Crossbow => 1.7, _ => 1.0, diff --git a/common/src/comp/body/biped_small.rs b/common/src/comp/body/biped_small.rs index 85950c8d20..7fd14af32d 100644 --- a/common/src/comp/body/biped_small.rs +++ b/common/src/comp/body/biped_small.rs @@ -35,6 +35,8 @@ make_case_elim!( #[repr(u32)] pub enum Species { Gnome = 0, + Sahagin = 1, + Adlet = 2, } ); @@ -44,6 +46,8 @@ make_case_elim!( #[derive(Clone, Debug, Deserialize)] pub struct AllSpecies { pub gnome: SpeciesMeta, + pub sahagin: SpeciesMeta, + pub adlet: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -53,11 +57,17 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies fn index(&self, &index: &'a Species) -> &Self::Output { match index { Species::Gnome => &self.gnome, + Species::Sahagin => &self.sahagin, + Species::Adlet => &self.adlet, } } } -pub const ALL_SPECIES: [Species; 1] = [Species::Gnome]; +pub const ALL_SPECIES: [Species; 3] = [ + Species::Gnome, + Species::Sahagin, + Species::Adlet, +]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index 73c22b02f3..2a23083043 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -93,21 +93,33 @@ impl<'a> From<&'a Body> for SkeletonAttr { Self { head: match (body.species, body.body_type) { (Gnome, _) => (-1.0, 9.0), + (Sahagin, _) => (7.0, -3.5), + (Adlet, _) => (0.0, 7.0), }, chest: match (body.species, body.body_type) { (Gnome, _) => (0.0, 9.0), + (Sahagin, _) => (0.0, 15.0), + (Adlet, _) => (0.0, 11.0), }, shorts: match (body.species, body.body_type) { (Gnome, _) => (0.0, -3.0), + (Sahagin, _) => (0.5, -7.0), + (Adlet, _) => (0.0, -3.0), }, tail: match (body.species, body.body_type) { (Gnome, _) => (0.0, 0.0), + (Sahagin, _) => (-2.5, -2.0), + (Adlet, _) => (-4.5, -2.0), }, hand: match (body.species, body.body_type) { (Gnome, _) => (6.0, 0.5, -1.0), + (Sahagin, _) => (9.5, 3.5, -2.0), + (Adlet, _) => (6.0, -0.5, 0.0), }, foot: match (body.species, body.body_type) { (Gnome, _) => (3.0, 0.0, 4.0), + (Sahagin, _) => (3.0, 1.0, 8.0), + (Adlet, _) => (3.0, 0.5, 7.0), }, } } diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index 7afb3e20d8..20e4f88c0b 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -32,32 +32,32 @@ impl Animation for RunAnimation { let lab = 1.0; - let footrotl = (((1.0) - / (0.5 + (0.5) * ((acc_vel * 1.6 * lab as f32 + PI * 1.4).sin()).powi(2))) + let footrotl = (((5.0) + / (0.5 + (5.5) * ((acc_vel * 1.4 * lab as f32 + PI * 1.4).sin()).powi(2))) .sqrt()) - * ((acc_vel * 1.6 * lab as f32 + PI * 1.4).sin()); + * ((acc_vel * 1.4 * lab as f32 + PI * 1.4).sin()); - let footrotr = (((1.0) - / (0.5 + (0.5) * ((acc_vel * 1.6 * lab as f32 + PI * 0.4).sin()).powi(2))) + let footrotr = (((5.0) + / (0.5 + (5.5) * ((acc_vel * 1.4 * lab as f32 + PI * 0.4).sin()).powi(2))) .sqrt()) - * ((acc_vel * 1.6 * lab as f32 + PI * 0.4).sin()); + * ((acc_vel * 1.4 * lab as f32 + PI * 0.4).sin()); - let shortalter = (acc_vel * lab as f32 * 1.6 + PI / -2.0).sin(); + let shortalter = (acc_vel * lab as f32 * 1.4 + PI / -2.0).sin(); - let foothoril = (acc_vel * 1.6 * lab as f32 + PI * 1.45).sin(); - let foothorir = (acc_vel * 1.6 * lab as f32 + PI * (0.45)).sin(); - let footstrafel = (acc_vel * 1.6 * lab as f32 + PI * 1.45).sin(); - let footstrafer = (acc_vel * 1.6 * lab as f32 + PI * (0.95)).sin(); + let foothoril = (acc_vel * 1.4 * lab as f32 + PI * 1.45).sin(); + let foothorir = (acc_vel * 1.4 * lab as f32 + PI * (0.45)).sin(); + let footstrafel = (acc_vel * 1.4 * lab as f32 + PI * 1.45).sin(); + let footstrafer = (acc_vel * 1.4 * lab as f32 + PI * (0.95)).sin(); - let footvertl = (acc_vel * 1.6 * lab as f32).sin(); - let footvertr = (acc_vel * 1.6 * lab as f32 + PI).sin(); - let footvertsl = (acc_vel * 1.6 * lab as f32).sin(); - let footvertsr = (acc_vel * 1.6 * lab as f32 + PI * 0.5).sin(); + let footvertl = (acc_vel * 1.4 * lab as f32).sin(); + let footvertr = (acc_vel * 1.4 * lab as f32 + PI).sin(); + let footvertsl = (acc_vel * 1.4 * lab as f32).sin(); + let footvertsr = (acc_vel * 1.4 * lab as f32 + PI * 0.5).sin(); - let shortalt = (acc_vel * lab as f32 * 1.6 + PI / 2.0).sin(); + let shortalt = (acc_vel * lab as f32 * 1.4 + PI / 2.0).sin(); - let short = (((5.0) / (1.5 + 3.5 * ((acc_vel * lab as f32 * 1.6).sin()).powi(2))).sqrt()) - * ((acc_vel * lab as f32 * 1.6).sin()); + let short = (((5.0) / (1.5 + 3.5 * ((acc_vel * lab as f32 * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 * 1.4).sin()); let direction = velocity.y * -0.098 * orientation.y + velocity.x * -0.098 * orientation.x; let side = @@ -115,18 +115,18 @@ impl Animation for RunAnimation { * Quaternion::rotation_y(tilt * 0.7); next.hand_l.position = Vec3::new( - -s_a.hand.0 + foothorir * -1.3 * speednorm, - 1.0 * speednorm + s_a.hand.1 + foothorir * -3.5 * speednorm, - 1.5 * speednorm + s_a.hand.2 - foothorir * 2.5 * speednorm, + -s_a.hand.0 + footrotr * -1.3 * speednorm, + 1.0 * speednorm + s_a.hand.1 + footrotr * -3.5 * speednorm, + 1.5 * speednorm + s_a.hand.2 - footrotr * 2.5 * speednorm, ); next.hand_l.orientation = Quaternion::rotation_x(0.4 * speednorm + (footrotr * -1.2) * speednorm) * Quaternion::rotation_y(footrotr * 0.4 * speednorm); next.hand_r.position = Vec3::new( - s_a.hand.0 + foothoril * 1.3 * speednorm, - 1.0 * speednorm + s_a.hand.1 + foothoril * -3.5 * speednorm, - 1.5 * speednorm + s_a.hand.2 - foothoril * 2.5 * speednorm, + s_a.hand.0 + footrotl * 1.3 * speednorm, + 1.0 * speednorm + s_a.hand.1 + footrotl * -3.5 * speednorm, + 1.5 * speednorm + s_a.hand.2 - footrotl * 2.5 * speednorm, ); next.hand_r.orientation = Quaternion::rotation_x(0.4 * speednorm + (footrotl * -1.2) * speednorm) @@ -136,7 +136,7 @@ impl Animation for RunAnimation { next.foot_l.position = Vec3::new( -s_a.foot.0 + footstrafel * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.0 * speednorm + foothoril * -7.5 * speednorm) + + (1.0 - sideabs) * (-1.0 * speednorm + footrotl * -7.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -2.1 * speednorm).max(-1.0))) @@ -151,7 +151,7 @@ impl Animation for RunAnimation { next.foot_r.position = Vec3::new( s_a.foot.0 + footstrafer * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.0 * speednorm + foothorir * -7.5 * speednorm) + + (1.0 - sideabs) * (-1.0 * speednorm + footrotr * -7.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -2.1 * speednorm).max(-1.0))) From ebfb59f041f4c6812847d2253ca72688d4b988a8 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sat, 9 Jan 2021 20:59:48 +0100 Subject: [PATCH 04/36] Trims skeletal attributes --- voxygen/anim/src/biped_large/mod.rs | 26 +++++----- voxygen/anim/src/bird_medium/mod.rs | 4 +- voxygen/anim/src/character/mod.rs | 46 +++++++++--------- voxygen/anim/src/quadruped_low/mod.rs | 8 +-- voxygen/anim/src/quadruped_medium/mod.rs | 40 ++------------- voxygen/anim/src/quadruped_small/mod.rs | 62 +++--------------------- voxygen/src/hud/mod.rs | 2 +- 7 files changed, 51 insertions(+), 137 deletions(-) diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index a097139895..bbe51978f0 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -238,7 +238,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Occultsaurok, _) => (-4.5, -6.0), (Mightysaurok, _) => (-4.5, -6.0), (Slysaurok, _) => (-4.5, -6.0), - (_, _) => (0.0, 0.0), + _ => (0.0, 0.0), }, shoulder: match (body.species, body.body_type) { (Ogre, Male) => (12.0, 0.5, 0.0), @@ -295,65 +295,65 @@ impl<'a> From<&'a Body> for SkeletonAttr { shl: match (body.species, body.body_type) { (Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0), (Mightysaurok, _) => (-1.75, -9.0, 3.5, 1.47, -0.2, 0.0), - (_, _) => (-4.75, -1.0, 2.5, 1.47, -0.2, 0.0), + _ => (-4.75, -1.0, 2.5, 1.47, -0.2, 0.0), }, shr: match (body.species, body.body_type) { (Dullahan, _) => (5.75, -11.5, 4.5, 1.47, 0.3, 0.0), (Mightysaurok, _) => (2.75, -9.5, -0.5, 1.47, 0.3, 0.0), - (_, _) => (3.75, -1.5, -0.5, 1.47, 0.3, 0.0), + _ => (3.75, -1.5, -0.5, 1.47, 0.3, 0.0), }, sc: match (body.species, body.body_type) { (Dullahan, _) => (-7.0, 17.0, -16.0, -0.1, 0.0, 0.0), (Mightysaurok, _) => (-7.0, 15.0, -11.0, -0.1, 0.0, 0.0), - (_, _) => (-7.0, 7.0, -10.0, -0.1, 0.0, 0.0), + _ => (-7.0, 7.0, -10.0, -0.1, 0.0, 0.0), }, hhl: match (body.species, body.body_type) { (Ogre, Male) => (-9.0, -10.0, 23.0, 1.57, -0.57, 0.0), (Cyclops, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), (Troll, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), - (_, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), + _ => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), }, hhr: match (body.species, body.body_type) { (Ogre, Male) => (-5.0, -13.0, 0.0, 1.57, -0.57, 0.0), (Cyclops, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), (Troll, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), - (_, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), + _ => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), }, hc: match (body.species, body.body_type) { (Ogre, Male) => (11.5, 9.0, -13.0, -0.57, -1.57, 1.0), (Cyclops, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), (Troll, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), - (_, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), + _ => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), }, sthl: match (body.species, body.body_type) { (Ogre, Female) => (-1.0, -5.0, 12.0, 1.27, 0.0, 0.0), (Occultsaurok, _) => (-1.0, -7.0, 12.0, 1.27, 0.0, 0.0), (Mindflayer, _) => (1.0, -10.5, 7.0, 1.27, 0.0, 0.0), - (_, _) => (11.0, 5.0, -4.0, 1.27, 0.0, 0.0), + _ => (11.0, 5.0, -4.0, 1.27, 0.0, 0.0), }, sthr: match (body.species, body.body_type) { (Ogre, Female) => (5.0, -3.5, 18.0, 1.57, 0.8, 0.0), (Occultsaurok, _) => (7.0, -3.5, 18.0, 1.57, 0.8, 0.0), (Mindflayer, _) => (7.0, -9.0, 13.0, 1.57, 0.8, 0.0), - (_, _) => (17.0, 7.5, 2.0, 1.57, 0.8, 0.0), + _ => (17.0, 7.5, 2.0, 1.57, 0.8, 0.0), }, stc: match (body.species, body.body_type) { (Ogre, Female) => (-10.0, 7.0, -23.0, -0.3, 0.15, 0.0), (Occultsaurok, _) => (-10.0, 7.0, -22.0, -0.3, 0.15, 0.0), (Mindflayer, _) => (-10.0, 12.5, -22.0, -0.3, 0.15, 0.0), - (_, _) => (-18.0, 1.0, -2.0, -0.3, 0.15, 0.0), + _ => (-18.0, 1.0, -2.0, -0.3, 0.15, 0.0), }, bhl: match (body.species, body.body_type) { (Slysaurok, _) => (-1.0, -12.0, 1.0, 1.57, 0.0, 0.0), - (_, _) => (3.0, 2.5, 0.0, 1.2, -0.6, -0.3), + _ => (3.0, 2.5, 0.0, 1.2, -0.6, -0.3), }, bhr: match (body.species, body.body_type) { (Slysaurok, _) => (0.0, -6.0, -2.0, 1.57, 0.0, 0.0), - (_, _) => (5.9, 5.5, -5.0, 1.2, -0.6, -0.3), + _ => (5.9, 5.5, -5.0, 1.2, -0.6, -0.3), }, bc: match (body.species, body.body_type) { (Slysaurok, _) => (1.0, 13.0, -8.0, 0.0, 1.2, -0.6), - (_, _) => (-7.0, 3.0, -8.0, 0.0, 0.0, 0.0), + _ => (-7.0, 3.0, -8.0, 0.0, 0.0, 0.0), }, beast: matches!((body.species, body.body_type), (Werewolf, _)), float: matches!((body.species, body.body_type), (Mindflayer, _)), diff --git a/voxygen/anim/src/bird_medium/mod.rs b/voxygen/anim/src/bird_medium/mod.rs index 9f969f47a7..d4ce88524d 100644 --- a/voxygen/anim/src/bird_medium/mod.rs +++ b/voxygen/anim/src/bird_medium/mod.rs @@ -140,14 +140,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Cockatrice, _) => (4.0, -3.5, 12.0), }, feed: match (body.species, body.body_type) { - (Duck, _) => 1.0, - (Chicken, _) => 1.0, (Goose, _) => 1.4, (Peacock, _) => 1.6, (Eagle, _) => 1.2, - (Snowyowl, _) => 1.0, (Parrot, _) => 1.2, (Cockatrice, _) => 1.3, + _ => 1.0, }, } } diff --git a/voxygen/anim/src/character/mod.rs b/voxygen/anim/src/character/mod.rs index bd9a6c5c82..3ca3521a24 100644 --- a/voxygen/anim/src/character/mod.rs +++ b/voxygen/anim/src/character/mod.rs @@ -243,73 +243,73 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Danari, Female) => (-1.5, 7.0), }, chest: match (body.species, body.body_type) { - (_, _) => (0.0, 8.0), + _ => (0.0, 8.0), }, belt: match (body.species, body.body_type) { - (_, _) => (0.0, -2.0), + _ => (0.0, -2.0), }, back: match (body.species, body.body_type) { - (_, _) => (-3.1, 7.25), + _ => (-3.1, 7.25), }, shorts: match (body.species, body.body_type) { - (_, _) => (0.0, -5.0), + _ => (0.0, -5.0), }, hand: match (body.species, body.body_type) { - (_, _) => (7.0, -0.25, 0.5), + _ => (7.0, -0.25, 0.5), }, foot: match (body.species, body.body_type) { - (_, _) => (3.4, 0.5, 2.0), + _ => (3.4, 0.5, 2.0), }, shoulder: match (body.species, body.body_type) { - (_, _) => (5.0, 0.0, 5.0), + _ => (5.0, 0.0, 5.0), }, lantern: match (body.species, body.body_type) { - (_, _) => (5.0, 2.5, 5.5), + _ => (5.0, 2.5, 5.5), }, shl: match (body.species, body.body_type) { - (_, _) => (-0.75, -1.0, 0.5, 1.47, -0.2, 0.0), + _ => (-0.75, -1.0, 0.5, 1.47, -0.2, 0.0), }, shr: match (body.species, body.body_type) { - (_, _) => (0.75, -1.5, -2.5, 1.47, 0.3, 0.0), + _ => (0.75, -1.5, -2.5, 1.47, 0.3, 0.0), }, sc: match (body.species, body.body_type) { - (_, _) => (-7.0, 7.0, 2.0, -0.1, 0.0, 0.0), + _ => (-7.0, 7.0, 2.0, -0.1, 0.0, 0.0), }, hhl: match (body.species, body.body_type) { - (_, _) => (-0.5, -1.0, 10.0, 4.71, 0.0, 0.0), + _ => (-0.5, -1.0, 10.0, 4.71, 0.0, 0.0), }, hhr: match (body.species, body.body_type) { - (_, _) => (0.0, 0.0, 0.0, 4.71, 0.0, 0.0), + _ => (0.0, 0.0, 0.0, 4.71, 0.0, 0.0), }, hc: match (body.species, body.body_type) { - (_, _) => (6.0, 7.0, 1.0, -0.3, -1.57, 3.64), + _ => (6.0, 7.0, 1.0, -0.3, -1.57, 3.64), }, sthl: match (body.species, body.body_type) { - (_, _) => (0.0, 0.0, 6.0, 1.97, 0.0, 0.0), + _ => (0.0, 0.0, 6.0, 1.97, 0.0, 0.0), }, sthr: match (body.species, body.body_type) { - (_, _) => (0.0, 0.0, 0.0, 1.27, 0.2, 0.0), + _ => (0.0, 0.0, 0.0, 1.27, 0.2, 0.0), }, stc: match (body.species, body.body_type) { - (_, _) => (-5.0, 7.0, -2.0, -0.3, 0.15, 0.0), + _ => (-5.0, 7.0, -2.0, -0.3, 0.15, 0.0), }, ahl: match (body.species, body.body_type) { - (_, _) => (-0.5, -1.0, 7.0, 1.17, PI, 0.0), + _ => (-0.5, -1.0, 7.0, 1.17, PI, 0.0), }, ahr: match (body.species, body.body_type) { - (_, _) => (0.0, -1.0, 1.0, -2.0, 0.0, PI), + _ => (0.0, -1.0, 1.0, -2.0, 0.0, PI), }, ac: match (body.species, body.body_type) { - (_, _) => (-8.0, 11.0, 3.0, 2.0, 0.0, 0.0), + _ => (-8.0, 11.0, 3.0, 2.0, 0.0, 0.0), }, bhl: match (body.species, body.body_type) { - (_, _) => (0.0, -4.0, 1.0, 1.57, 0.0, 0.0), + _ => (0.0, -4.0, 1.0, 1.57, 0.0, 0.0), }, bhr: match (body.species, body.body_type) { - (_, _) => (1.0, 2.0, -2.0, 1.57, 0.0, 0.0), + _ => (1.0, 2.0, -2.0, 1.57, 0.0, 0.0), }, bc: match (body.species, body.body_type) { - (_, _) => (-5.0, 9.0, 1.0, 0.0, 1.2, -0.6), + _ => (-5.0, 9.0, 1.0, 0.0, 1.2, -0.6), }, } } diff --git a/voxygen/anim/src/quadruped_low/mod.rs b/voxygen/anim/src/quadruped_low/mod.rs index e7c936a5d1..4f09ceb0d0 100644 --- a/voxygen/anim/src/quadruped_low/mod.rs +++ b/voxygen/anim/src/quadruped_low/mod.rs @@ -247,27 +247,23 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Salamander, _) => (1.4), (Monitor, _) => (1.1), (Asp, _) => (1.4), - (Tortoise, _) => (1.0), (Rocksnapper, _) => (1.4), (Pangolin, _) => (1.3), (Maneater, _) => (1.4), - (Sandshark, _) => (1.0), - (Hakulaq, _) => (1.0), (Lavadrake, _) => (1.4), + _ => (1.0), }, tempo: match (body.species, body.body_type) { (Crocodile, _) => (0.7), (Alligator, _) => (0.7), (Salamander, _) => (0.75), (Monitor, _) => (1.4), - (Asp, _) => (1.0), (Tortoise, _) => (0.7), (Rocksnapper, _) => (0.7), (Pangolin, _) => (1.15), (Maneater, _) => (0.9), - (Sandshark, _) => (1.0), - (Hakulaq, _) => (1.0), (Lavadrake, _) => (1.1), + _ => (1.0), }, } } diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index 10f87dd25c..4f8d693584 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -391,20 +391,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Lion, _) => (1.3), (Tarasque, _) => (1.3), (Tiger, _) => (1.2), - (Wolf, _) => (1.0), - (Frostfang, _) => (1.0), - (Mouflon, _) => (1.0), (Catoblepas, _) => (1.3), - (Bonerattler, _) => (1.0), - (Deer, _) => (1.0), - (Hirdrasil, _) => (1.0), (Roshwalr, _) => (1.2), - (Donkey, _) => (1.0), - (Camel, _) => (1.0), - (Zebra, _) => (1.0), - (Antelope, _) => (1.0), - (Kelpie, _) => (1.0), - (Horse, _) => (1.0), + _ => (1.0), }, startangle: match (body.species, body.body_type) { //changes the default angle of front feet @@ -413,21 +402,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tuskram, _) => (0.3), (Lion, _) => (0.2), (Tarasque, _) => (-0.5), - (Tiger, _) => (0.0), - (Wolf, _) => (0.0), - (Frostfang, _) => (0.0), - (Mouflon, _) => (0.0), (Catoblepas, _) => (-0.5), (Bonerattler, _) => (-0.7), - (Deer, _) => (0.0), - (Hirdrasil, _) => (0.0), (Roshwalr, _) => (-0.3), - (Donkey, _) => (0.0), - (Camel, _) => (0.0), - (Zebra, _) => (0.0), - (Antelope, _) => (0.0), - (Kelpie, _) => (0.0), - (Horse, _) => (0.0), + _ => (0.0), }, tempo: match (body.species, body.body_type) { (Grolgar, _) => (0.85), @@ -435,43 +413,35 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tuskram, _) => (0.9), (Lion, _) => (0.95), (Tarasque, _) => (0.95), - (Tiger, _) => (1.0), (Wolf, _) => (1.1), - (Frostfang, _) => (1.0), (Mouflon, _) => (0.85), (Catoblepas, _) => (1.1), - (Bonerattler, _) => (1.0), (Deer, _) => (0.85), (Hirdrasil, _) => (0.85), (Roshwalr, _) => (0.75), (Donkey, _) => (0.85), - (Camel, _) => (1.0), (Zebra, _) => (0.85), - (Antelope, _) => (1.0), (Kelpie, _) => (0.85), (Horse, _) => (0.85), + _ => (1.0), }, spring: match (body.species, body.body_type) { (Grolgar, _) => (0.9), (Saber, _) => (0.9), (Tuskram, _) => (0.9), - (Lion, _) => (1.0), - (Tarasque, _) => (1.0), - (Tiger, _) => (1.0), (Wolf, _) => (1.2), - (Frostfang, _) => (1.0), (Mouflon, _) => (0.9), (Catoblepas, _) => (0.55), (Bonerattler, _) => (1.1), (Deer, _) => (0.9), (Hirdrasil, _) => (1.1), - (Roshwalr, _) => (1.0), (Donkey, _) => (0.85), (Camel, _) => (0.85), (Zebra, _) => (0.85), (Antelope, _) => (1.2), (Kelpie, _) => (0.95), (Horse, _) => (0.85), + _ => (1.0), }, feed: match (body.species, body.body_type) { (Tuskram, _) => (true, 0.5), @@ -483,7 +453,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (false, 0.9), (Kelpie, _) => (false, 1.0), (Horse, _) => (true, 0.85), - (_, _) => (false, 0.0), + _ => (false, 0.0), }, } } diff --git a/voxygen/anim/src/quadruped_small/mod.rs b/voxygen/anim/src/quadruped_small/mod.rs index f48d05c471..64c7ddbf14 100644 --- a/voxygen/anim/src/quadruped_small/mod.rs +++ b/voxygen/anim/src/quadruped_small/mod.rs @@ -245,19 +245,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { scaler: match (body.species, body.body_type) { (Pig, _) => (0.9), (Fox, _) => (0.9), - (Sheep, _) => (1.0), (Boar, _) => (1.1), (Jackalope, _) => (0.8), (Skunk, _) => (0.9), (Cat, _) => (0.8), (Batfox, _) => (1.1), - (Raccoon, _) => (1.0), - (Quokka, _) => (1.0), (Dodarock, _) => (1.2), (Holladon, _) => (1.4), - (Hyena, _) => (1.0), (Rabbit, _) => (0.7), - (Truffler, _) => (1.0), (Frog, _) => (0.7), (Rat, _) => (0.65), (Axolotl, _) => (0.65), @@ -266,97 +261,64 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Squirrel, _) => (0.7), (Fungome, _) => (0.9), (Porcupine, _) => (0.8), - (Beaver, _) => (1.0), (Hare, _) => (0.8), + _ => (1.0), }, tempo: match (body.species, body.body_type) { - (Pig, _) => (1.0), - (Fox, _) => (1.0), - (Sheep, _) => (1.0), (Boar, _) => (1.1), - (Jackalope, _) => (1.0), - (Skunk, _) => (1.0), (Cat, _) => (1.1), - (Batfox, _) => (1.0), - (Raccoon, _) => (1.0), (Quokka, _) => (1.2), - (Dodarock, _) => (1.0), - (Holladon, _) => (1.0), (Hyena, _) => (1.1), (Rabbit, _) => (1.15), - (Truffler, _) => (1.0), (Frog, _) => (1.15), (Rat, _) => (1.0), (Axolotl, _) => (1.2), (Gecko, _) => (1.1), (Turtle, _) => (0.9), (Squirrel, _) => (1.15), - (Fungome, _) => (1.0), (Porcupine, _) => (1.2), (Beaver, _) => (1.2), (Hare, _) => (1.15), + _ => (1.0), }, maximize: match (body.species, body.body_type) { - (Pig, _) => (1.0), (Fox, _) => (1.3), (Sheep, _) => (1.1), (Boar, _) => (1.4), (Jackalope, _) => (1.2), - (Skunk, _) => (1.0), - (Cat, _) => (1.0), - (Batfox, _) => (1.0), - (Raccoon, _) => (1.0), - (Quokka, _) => (1.0), - (Dodarock, _) => (1.0), - (Holladon, _) => (1.0), (Hyena, _) => (1.4), (Rabbit, _) => (1.3), - (Truffler, _) => (1.0), (Frog, _) => (1.3), - (Rat, _) => (1.0), (Axolotl, _) => (0.9), - (Gecko, _) => (1.0), (Turtle, _) => (0.8), - (Squirrel, _) => (1.0), (Fungome, _) => (0.7), - (Porcupine, _) => (1.0), - (Beaver, _) => (1.0), (Hare, _) => (1.3), + _ => (1.0), }, minimize: match (body.species, body.body_type) { (Pig, _) => (0.6), (Fox, _) => (1.3), (Sheep, _) => (0.8), - (Boar, _) => (1.0), (Jackalope, _) => (0.8), (Skunk, _) => (0.9), (Cat, _) => (0.8), - (Batfox, _) => (1.0), - (Raccoon, _) => (1.0), (Quokka, _) => (0.9), (Dodarock, _) => (0.9), (Holladon, _) => (0.7), (Hyena, _) => (1.4), (Rabbit, _) => (0.8), - (Truffler, _) => (1.0), (Frog, _) => (0.8), - (Rat, _) => (1.0), - (Axolotl, _) => (1.0), - (Gecko, _) => (1.0), (Turtle, _) => (0.8), - (Squirrel, _) => (1.0), (Fungome, _) => (0.4), (Porcupine, _) => (0.9), (Beaver, _) => (0.9), (Hare, _) => (0.8), + _ => (1.0), }, spring: match (body.species, body.body_type) { - (Pig, _) => (1.0), - (Fox, _) => (1.0), (Sheep, _) => (1.2), (Boar, _) => (0.8), (Jackalope, _) => (2.2), - (Skunk, _) => (1.0), (Cat, _) => (1.4), (Batfox, _) => (1.1), (Raccoon, _) => (1.1), @@ -367,43 +329,31 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (2.5), (Truffler, _) => (0.8), (Frog, _) => (2.5), - (Rat, _) => (1.0), (Axolotl, _) => (0.8), (Gecko, _) => (0.6), (Turtle, _) => (0.7), - (Squirrel, _) => (1.0), (Fungome, _) => (0.8), (Porcupine, _) => (1.3), (Beaver, _) => (1.3), (Hare, Male) => (2.2), (Hare, Female) => (2.5), + _ => (1.0), }, feed: match (body.species, body.body_type) { - (Pig, _) => (1.0), - (Fox, _) => (1.0), - (Sheep, _) => (1.0), (Boar, _) => (0.6), - (Jackalope, _) => (1.0), (Skunk, _) => (0.8), - (Cat, _) => (1.0), (Batfox, _) => (0.7), (Raccoon, _) => (0.8), - (Quokka, _) => (1.0), (Dodarock, _) => (0.7), - (Holladon, _) => (1.0), - (Hyena, _) => (1.0), (Rabbit, _) => (1.2), (Truffler, _) => (0.6), (Frog, _) => (0.7), - (Rat, _) => (1.0), (Axolotl, _) => (0.8), (Gecko, _) => (0.8), (Turtle, _) => (0.7), - (Squirrel, _) => (1.0), (Fungome, _) => (0.7), - (Porcupine, _) => (1.0), - (Beaver, _) => (1.0), (Hare, _) => (1.2), + _ => (1.0), }, } } diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 9060506c1a..7e30244c84 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -2240,7 +2240,7 @@ impl Hud { // Don't put NPC messages in chat box. self.new_messages - .retain(|m| !matches!(m.chat_type, comp::ChatType::Npc(_, _))); + .retain(|m| !matches!(m.chat_type, comp::ChatType::Npc(_, _))); // Chat box match Chat::new( From 6f18d16aa25d2a83649b25da37fa3172bb96cae2 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 12 Jan 2021 23:35:59 +0100 Subject: [PATCH 05/36] Add new quadmeds npcs with rough offsets --- assets/common/npc_names.ron | 28 ++ .../voxel/npc/barghest/male/foot_bl.vox | 3 + .../voxel/npc/barghest/male/foot_br.vox | 3 + .../voxel/npc/barghest/male/foot_fl.vox | 3 + .../voxel/npc/barghest/male/foot_fr.vox | 3 + .../voxygen/voxel/npc/barghest/male/head.vox | 3 + .../voxygen/voxel/npc/barghest/male/jaw.vox | 3 + .../voxel/npc/barghest/male/leg_bl.vox | 3 + .../voxel/npc/barghest/male/leg_br.vox | 3 + .../voxel/npc/barghest/male/leg_fl.vox | 3 + .../voxel/npc/barghest/male/leg_fr.vox | 3 + .../voxygen/voxel/npc/barghest/male/neck.vox | 3 + .../voxygen/voxel/npc/barghest/male/tail.vox | 3 + .../voxel/npc/barghest/male/torso_back.vox | 3 + .../voxel/npc/barghest/male/torso_front.vox | 3 + assets/voxygen/voxel/npc/bear/male/ears.vox | 3 + .../voxygen/voxel/npc/bear/male/foot_bl.vox | 3 + .../voxygen/voxel/npc/bear/male/foot_br.vox | 3 + .../voxygen/voxel/npc/bear/male/foot_fl.vox | 3 + .../voxygen/voxel/npc/bear/male/foot_fr.vox | 3 + assets/voxygen/voxel/npc/bear/male/head.vox | 3 + assets/voxygen/voxel/npc/bear/male/jaw.vox | 3 + assets/voxygen/voxel/npc/bear/male/leg_bl.vox | 3 + assets/voxygen/voxel/npc/bear/male/leg_br.vox | 3 + assets/voxygen/voxel/npc/bear/male/leg_fl.vox | 3 + assets/voxygen/voxel/npc/bear/male/leg_fr.vox | 3 + assets/voxygen/voxel/npc/bear/male/neck.vox | 3 + assets/voxygen/voxel/npc/bear/male/tail.vox | 3 + .../voxel/npc/bear/male/torso_back.vox | 3 + .../voxel/npc/bear/male/torso_front.vox | 3 + .../voxygen/voxel/npc/cattle/female/ears.vox | 3 + .../voxel/npc/cattle/female/foot_bl.vox | 3 + .../voxel/npc/cattle/female/foot_br.vox | 3 + .../voxel/npc/cattle/female/foot_fl.vox | 3 + .../voxel/npc/cattle/female/foot_fr.vox | 3 + .../voxygen/voxel/npc/cattle/female/head.vox | 3 + .../voxygen/voxel/npc/cattle/female/jaw.vox | 3 + .../voxel/npc/cattle/female/leg_bl.vox | 3 + .../voxel/npc/cattle/female/leg_br.vox | 3 + .../voxel/npc/cattle/female/leg_fl.vox | 3 + .../voxel/npc/cattle/female/leg_fr.vox | 3 + .../voxygen/voxel/npc/cattle/female/neck.vox | 3 + .../voxygen/voxel/npc/cattle/female/tail.vox | 3 + .../voxel/npc/cattle/female/torso_back.vox | 3 + .../voxel/npc/cattle/female/torso_front.vox | 3 + assets/voxygen/voxel/npc/cattle/male/ears.vox | 3 + .../voxygen/voxel/npc/cattle/male/foot_bl.vox | 3 + .../voxygen/voxel/npc/cattle/male/foot_br.vox | 3 + .../voxygen/voxel/npc/cattle/male/foot_fl.vox | 3 + .../voxygen/voxel/npc/cattle/male/foot_fr.vox | 3 + assets/voxygen/voxel/npc/cattle/male/head.vox | 3 + assets/voxygen/voxel/npc/cattle/male/jaw.vox | 3 + .../voxygen/voxel/npc/cattle/male/leg_bl.vox | 3 + .../voxygen/voxel/npc/cattle/male/leg_br.vox | 3 + .../voxygen/voxel/npc/cattle/male/leg_fl.vox | 3 + .../voxygen/voxel/npc/cattle/male/leg_fr.vox | 3 + assets/voxygen/voxel/npc/cattle/male/neck.vox | 3 + assets/voxygen/voxel/npc/cattle/male/tail.vox | 3 + .../voxel/npc/cattle/male/torso_back.vox | 3 + .../voxel/npc/cattle/male/torso_front.vox | 3 + .../voxygen/voxel/npc/darkhound/male/ears.vox | 3 + .../voxel/npc/darkhound/male/foot_bl.vox | 3 + .../voxel/npc/darkhound/male/foot_br.vox | 3 + .../voxel/npc/darkhound/male/foot_fl.vox | 3 + .../voxel/npc/darkhound/male/foot_fr.vox | 3 + .../voxygen/voxel/npc/darkhound/male/head.vox | 3 + .../voxygen/voxel/npc/darkhound/male/jaw.vox | 3 + .../voxel/npc/darkhound/male/leg_bl.vox | 3 + .../voxel/npc/darkhound/male/leg_br.vox | 3 + .../voxel/npc/darkhound/male/leg_fl.vox | 3 + .../voxel/npc/darkhound/male/leg_fr.vox | 3 + .../voxygen/voxel/npc/darkhound/male/neck.vox | 3 + .../voxygen/voxel/npc/darkhound/male/tail.vox | 3 + .../voxel/npc/darkhound/male/torso_back.vox | 3 + .../voxel/npc/darkhound/male/torso_front.vox | 3 + assets/voxygen/voxel/npc/dog/female/chest.vox | 3 + .../voxygen/voxel/npc/dog/female/foot_bl.vox | 3 + .../voxygen/voxel/npc/dog/female/foot_br.vox | 3 + .../voxygen/voxel/npc/dog/female/foot_fl.vox | 3 + .../voxygen/voxel/npc/dog/female/foot_fr.vox | 3 + assets/voxygen/voxel/npc/dog/female/head.vox | 3 + assets/voxygen/voxel/npc/dog/female/tail.vox | 3 + assets/voxygen/voxel/npc/dog/male/chest.vox | 3 + assets/voxygen/voxel/npc/dog/male/foot_bl.vox | 3 + assets/voxygen/voxel/npc/dog/male/foot_br.vox | 3 + assets/voxygen/voxel/npc/dog/male/foot_fl.vox | 3 + assets/voxygen/voxel/npc/dog/male/foot_fr.vox | 3 + assets/voxygen/voxel/npc/dog/male/head.vox | 3 + assets/voxygen/voxel/npc/dog/male/tail.vox | 3 + .../voxygen/voxel/npc/highland/male/ears.vox | 3 + .../voxel/npc/highland/male/foot_bl.vox | 3 + .../voxel/npc/highland/male/foot_br.vox | 3 + .../voxel/npc/highland/male/foot_fl.vox | 3 + .../voxel/npc/highland/male/foot_fr.vox | 3 + .../voxygen/voxel/npc/highland/male/head.vox | 3 + .../voxygen/voxel/npc/highland/male/jaw.vox | 3 + .../voxel/npc/highland/male/leg_bl.vox | 3 + .../voxel/npc/highland/male/leg_br.vox | 3 + .../voxel/npc/highland/male/leg_fl.vox | 3 + .../voxel/npc/highland/male/leg_fr.vox | 3 + .../voxygen/voxel/npc/highland/male/neck.vox | 3 + .../voxygen/voxel/npc/highland/male/tail.vox | 3 + .../voxel/npc/highland/male/torso_back.vox | 3 + .../voxel/npc/highland/male/torso_front.vox | 3 + assets/voxygen/voxel/npc/panda/male/ears.vox | 3 + .../voxygen/voxel/npc/panda/male/foot_bl.vox | 3 + .../voxygen/voxel/npc/panda/male/foot_br.vox | 3 + .../voxygen/voxel/npc/panda/male/foot_fl.vox | 3 + .../voxygen/voxel/npc/panda/male/foot_fr.vox | 3 + assets/voxygen/voxel/npc/panda/male/head.vox | 3 + assets/voxygen/voxel/npc/panda/male/jaw.vox | 3 + .../voxygen/voxel/npc/panda/male/leg_bl.vox | 3 + .../voxygen/voxel/npc/panda/male/leg_br.vox | 3 + .../voxygen/voxel/npc/panda/male/leg_fl.vox | 3 + .../voxygen/voxel/npc/panda/male/leg_fr.vox | 3 + assets/voxygen/voxel/npc/panda/male/neck.vox | 3 + assets/voxygen/voxel/npc/panda/male/tail.vox | 3 + .../voxel/npc/panda/male/torso_back.vox | 3 + .../voxel/npc/panda/male/torso_front.vox | 3 + assets/voxygen/voxel/npc/yak/male/ears.vox | 3 + assets/voxygen/voxel/npc/yak/male/foot_bl.vox | 3 + assets/voxygen/voxel/npc/yak/male/foot_br.vox | 3 + assets/voxygen/voxel/npc/yak/male/foot_fl.vox | 3 + assets/voxygen/voxel/npc/yak/male/foot_fr.vox | 3 + assets/voxygen/voxel/npc/yak/male/head.vox | 3 + assets/voxygen/voxel/npc/yak/male/jaw.vox | 3 + assets/voxygen/voxel/npc/yak/male/leg_bl.vox | 3 + assets/voxygen/voxel/npc/yak/male/leg_br.vox | 3 + assets/voxygen/voxel/npc/yak/male/leg_fl.vox | 3 + assets/voxygen/voxel/npc/yak/male/leg_fr.vox | 3 + assets/voxygen/voxel/npc/yak/male/neck.vox | 3 + assets/voxygen/voxel/npc/yak/male/tail.vox | 3 + .../voxygen/voxel/npc/yak/male/torso_back.vox | 3 + .../voxel/npc/yak/male/torso_front.vox | 3 + .../quadruped_medium_central_manifest.ron | 420 ++++++++++++++++ .../quadruped_medium_lateral_manifest.ron | 476 ++++++++++++++++++ common/src/comp/agent.rs | 2 + common/src/comp/body.rs | 19 + common/src/comp/body/quadruped_medium.rs | 30 +- common/src/comp/inventory/loadout_builder.rs | 9 +- common/src/states/utils.rs | 7 + voxygen/anim/src/quadruped_medium/idle.rs | 7 +- voxygen/anim/src/quadruped_medium/mod.rs | 93 ++++ world/src/layer/wildlife.rs | 37 +- world/src/site/dungeon/mod.rs | 8 +- 145 files changed, 1514 insertions(+), 21 deletions(-) create mode 100644 assets/voxygen/voxel/npc/barghest/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/head.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/barghest/male/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/ears.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/head.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/bear/male/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/ears.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/head.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/jaw.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/neck.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/tail.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/cattle/female/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/ears.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/head.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/cattle/male/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/ears.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/head.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/darkhound/male/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/dog/female/chest.vox create mode 100644 assets/voxygen/voxel/npc/dog/female/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/dog/female/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/dog/female/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/dog/female/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/dog/female/head.vox create mode 100644 assets/voxygen/voxel/npc/dog/female/tail.vox create mode 100644 assets/voxygen/voxel/npc/dog/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/dog/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/dog/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/dog/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/dog/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/dog/male/head.vox create mode 100644 assets/voxygen/voxel/npc/dog/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/ears.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/head.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/highland/male/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/ears.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/head.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/panda/male/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/ears.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/head.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/yak/male/torso_front.vox diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index e08840b6d4..6786fc1517 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -506,6 +506,34 @@ horse: ( keyword: "horse", generic: "Horse" + ), + barghest: ( + keyword: "barghest", + generic: "Barghest" + ), + cattle: ( + keyword: "cattle", + generic: "Cattle" + ), + darkhound: ( + keyword: "darkhound", + generic: "Darkhound" + ), + highland: ( + keyword: "highland", + generic: "Highland" + ), + yak: ( + keyword: "yak", + generic: "Yak" + ), + panda: ( + keyword: "panda", + generic: "Panda" + ), + bear: ( + keyword: "bear", + generic: "Bear" ) ) ), diff --git a/assets/voxygen/voxel/npc/barghest/male/foot_bl.vox b/assets/voxygen/voxel/npc/barghest/male/foot_bl.vox new file mode 100644 index 0000000000..c1b8628d8c --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:330158ac59154e8cdd07ba60ee1b9981c40cf1f2db333eadbf4ce71bb850600f +size 1352 diff --git a/assets/voxygen/voxel/npc/barghest/male/foot_br.vox b/assets/voxygen/voxel/npc/barghest/male/foot_br.vox new file mode 100644 index 0000000000..cade4195bf --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:881c420266fb65b2a6d503ff98bb19c32767ed554c4ba695bae80b32253204ea +size 1352 diff --git a/assets/voxygen/voxel/npc/barghest/male/foot_fl.vox b/assets/voxygen/voxel/npc/barghest/male/foot_fl.vox new file mode 100644 index 0000000000..7a2afb273c --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0818eb5708de531bb6a643e286c5dcbd558601a4290df7bdce07ab253a2b62d4 +size 2040 diff --git a/assets/voxygen/voxel/npc/barghest/male/foot_fr.vox b/assets/voxygen/voxel/npc/barghest/male/foot_fr.vox new file mode 100644 index 0000000000..7a2afb273c --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0818eb5708de531bb6a643e286c5dcbd558601a4290df7bdce07ab253a2b62d4 +size 2040 diff --git a/assets/voxygen/voxel/npc/barghest/male/head.vox b/assets/voxygen/voxel/npc/barghest/male/head.vox new file mode 100644 index 0000000000..85a2f722be --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d7536a4efd64ff53033e8004a1cd6cf32d9c682e2adf3f1d2658b74afd911e1 +size 5584 diff --git a/assets/voxygen/voxel/npc/barghest/male/jaw.vox b/assets/voxygen/voxel/npc/barghest/male/jaw.vox new file mode 100644 index 0000000000..65f6a1843a --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dfa1c50964bc2dc770324466b0263f5d693d52882109681027ee54f1afd78b8 +size 3044 diff --git a/assets/voxygen/voxel/npc/barghest/male/leg_bl.vox b/assets/voxygen/voxel/npc/barghest/male/leg_bl.vox new file mode 100644 index 0000000000..8690264067 --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:408481796f6185af03aa173530a535ee049428914fa9fa5e4ed520da1d85b472 +size 1636 diff --git a/assets/voxygen/voxel/npc/barghest/male/leg_br.vox b/assets/voxygen/voxel/npc/barghest/male/leg_br.vox new file mode 100644 index 0000000000..29f7503963 --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d86c491f0edbe494f5c58157896bff8025f5ee541c383bd3cd716ba847d5d204 +size 1636 diff --git a/assets/voxygen/voxel/npc/barghest/male/leg_fl.vox b/assets/voxygen/voxel/npc/barghest/male/leg_fl.vox new file mode 100644 index 0000000000..affc602c3d --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:560f3c9beac1c9687c59a2fb1d8a086c2c82506ebdc3c000f6021d07bf828b3d +size 2592 diff --git a/assets/voxygen/voxel/npc/barghest/male/leg_fr.vox b/assets/voxygen/voxel/npc/barghest/male/leg_fr.vox new file mode 100644 index 0000000000..97cb9c89dd --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf40e6b61cab5a8700f594e89f7ab031b3a758e1719deb1043ec1c01cfe845ce +size 2592 diff --git a/assets/voxygen/voxel/npc/barghest/male/neck.vox b/assets/voxygen/voxel/npc/barghest/male/neck.vox new file mode 100644 index 0000000000..c962eeee5d --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01845388ca6e6a0d9669c20fb68e070ff7f03761398404794f175b22117075d5 +size 4548 diff --git a/assets/voxygen/voxel/npc/barghest/male/tail.vox b/assets/voxygen/voxel/npc/barghest/male/tail.vox new file mode 100644 index 0000000000..22951052f3 --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d9f8bc149bcbcf6eaeb8aee62c9647b5756d20d7e91d033091c9eb43fe972cb +size 2364 diff --git a/assets/voxygen/voxel/npc/barghest/male/torso_back.vox b/assets/voxygen/voxel/npc/barghest/male/torso_back.vox new file mode 100644 index 0000000000..e2bf0fede5 --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50ad89d085dc0a8cb3ca5a3394355a37baa5e136883dc69e32034564692550b0 +size 4904 diff --git a/assets/voxygen/voxel/npc/barghest/male/torso_front.vox b/assets/voxygen/voxel/npc/barghest/male/torso_front.vox new file mode 100644 index 0000000000..c259d2c761 --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe9a71f158f2b208349282cb4e66d98e0f6ddd7bf727aa7c3e9b936599a0017b +size 9468 diff --git a/assets/voxygen/voxel/npc/bear/male/ears.vox b/assets/voxygen/voxel/npc/bear/male/ears.vox new file mode 100644 index 0000000000..1d11ca5f90 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4d593059c60e84c26ae502174a4d13485051f71c79f876925ae5c35c9c1fe13 +size 1152 diff --git a/assets/voxygen/voxel/npc/bear/male/foot_bl.vox b/assets/voxygen/voxel/npc/bear/male/foot_bl.vox new file mode 100644 index 0000000000..6aee207029 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bf323ff6820ca512e7f30aac0c6a3c10684e13dfbacb204802bf5372087b7fa +size 1644 diff --git a/assets/voxygen/voxel/npc/bear/male/foot_br.vox b/assets/voxygen/voxel/npc/bear/male/foot_br.vox new file mode 100644 index 0000000000..974c725244 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a171067f6acd7100b55e7f5a8594fb7ae0d2e9f830e44ced0eccdb388645d8b2 +size 1644 diff --git a/assets/voxygen/voxel/npc/bear/male/foot_fl.vox b/assets/voxygen/voxel/npc/bear/male/foot_fl.vox new file mode 100644 index 0000000000..ed05709a46 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:815d0c01fd543070bb592224ad7304c6c8ec6f5006684127de9bcf530f77fe0d +size 1792 diff --git a/assets/voxygen/voxel/npc/bear/male/foot_fr.vox b/assets/voxygen/voxel/npc/bear/male/foot_fr.vox new file mode 100644 index 0000000000..bb2793afa1 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a75db338cf2b56647af0a5b261d6ac9a988527b1e844b7b293cc1cfb790a634 +size 1792 diff --git a/assets/voxygen/voxel/npc/bear/male/head.vox b/assets/voxygen/voxel/npc/bear/male/head.vox new file mode 100644 index 0000000000..054f38161a --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:511c310e2efccda253372ade99f0e42ba71acc59b02cfadc41064973a6e48b4b +size 3128 diff --git a/assets/voxygen/voxel/npc/bear/male/jaw.vox b/assets/voxygen/voxel/npc/bear/male/jaw.vox new file mode 100644 index 0000000000..3a4b561060 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96f8bb45455098ee8b450ad61494149c6f14a31f13ae849caf67a0b2898131d0 +size 1244 diff --git a/assets/voxygen/voxel/npc/bear/male/leg_bl.vox b/assets/voxygen/voxel/npc/bear/male/leg_bl.vox new file mode 100644 index 0000000000..dff638b54e --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec01423928a2fb630ce718f28ace9a3da4b686ac292ad20a46b0a9fbefc3a5d9 +size 1852 diff --git a/assets/voxygen/voxel/npc/bear/male/leg_br.vox b/assets/voxygen/voxel/npc/bear/male/leg_br.vox new file mode 100644 index 0000000000..e57e0b6ac9 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0158e291e218e741816c02a2315b3d6cbcdb9bcb022ea03637f2d1339f98b9d +size 1852 diff --git a/assets/voxygen/voxel/npc/bear/male/leg_fl.vox b/assets/voxygen/voxel/npc/bear/male/leg_fl.vox new file mode 100644 index 0000000000..24c561ea4f --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d009912a423e387437d686e736e199e7c58819439c5aa9c2e3ddf80f281f43e3 +size 1792 diff --git a/assets/voxygen/voxel/npc/bear/male/leg_fr.vox b/assets/voxygen/voxel/npc/bear/male/leg_fr.vox new file mode 100644 index 0000000000..ad10a9af22 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf78f473efa727d39ce74a73a43de7a67da08d3f3d51ad865bea258fd8037daa +size 1792 diff --git a/assets/voxygen/voxel/npc/bear/male/neck.vox b/assets/voxygen/voxel/npc/bear/male/neck.vox new file mode 100644 index 0000000000..9c507cffcd --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dab0f135b4e3bd5cfdac109ae9c9af2712ef2595ef5741da17b2601894a6ddfc +size 2120 diff --git a/assets/voxygen/voxel/npc/bear/male/tail.vox b/assets/voxygen/voxel/npc/bear/male/tail.vox new file mode 100644 index 0000000000..9d52d99d05 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4a5491f90b3fe94c69d4c09914a5cb265b5f97e998826e9616858101796aaaf +size 1336 diff --git a/assets/voxygen/voxel/npc/bear/male/torso_back.vox b/assets/voxygen/voxel/npc/bear/male/torso_back.vox new file mode 100644 index 0000000000..b8dbf4c16b --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bd1c2965441a352756c11d8245d698343f02ebf1dfac5b47bd14ba82394160f +size 6812 diff --git a/assets/voxygen/voxel/npc/bear/male/torso_front.vox b/assets/voxygen/voxel/npc/bear/male/torso_front.vox new file mode 100644 index 0000000000..748025a4e0 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12be3dbe23d2a418dfede1c6c4a482aa93eebb1fa50334aa7790d1a2dc325aeb +size 7512 diff --git a/assets/voxygen/voxel/npc/cattle/female/ears.vox b/assets/voxygen/voxel/npc/cattle/female/ears.vox new file mode 100644 index 0000000000..808df1f55d --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef16716a3c34c5a937c61e462a3ceddc6850dce6b46640a0675005b6fe8b9e3b +size 1168 diff --git a/assets/voxygen/voxel/npc/cattle/female/foot_bl.vox b/assets/voxygen/voxel/npc/cattle/female/foot_bl.vox new file mode 100644 index 0000000000..0e68e83277 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a83019f09ec8b365d240b8958910fb03d588d46b3769c01f804a48815e01d9c9 +size 1356 diff --git a/assets/voxygen/voxel/npc/cattle/female/foot_br.vox b/assets/voxygen/voxel/npc/cattle/female/foot_br.vox new file mode 100644 index 0000000000..7687247d37 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0162cc53cfbda10605b84f776f5a206204c46cc6fc0b3074cea1042d4205bd89 +size 1356 diff --git a/assets/voxygen/voxel/npc/cattle/female/foot_fl.vox b/assets/voxygen/voxel/npc/cattle/female/foot_fl.vox new file mode 100644 index 0000000000..b8ff8df974 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37b3eb7438b03dd38a5894315aee3141d2b3a1af01e5033e54b4c95b9ffbbfce +size 1384 diff --git a/assets/voxygen/voxel/npc/cattle/female/foot_fr.vox b/assets/voxygen/voxel/npc/cattle/female/foot_fr.vox new file mode 100644 index 0000000000..18ad78a760 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e3873227506a00579a7a967ea0e45b30229a471d99cee0359fe5a0c7570dcbc +size 1384 diff --git a/assets/voxygen/voxel/npc/cattle/female/head.vox b/assets/voxygen/voxel/npc/cattle/female/head.vox new file mode 100644 index 0000000000..a6bc43361f --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee7f58ac229888c4b0039b1ff4c566e7d15d91d54bfed6811232d95f704b5359 +size 2296 diff --git a/assets/voxygen/voxel/npc/cattle/female/jaw.vox b/assets/voxygen/voxel/npc/cattle/female/jaw.vox new file mode 100644 index 0000000000..ea5c639414 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b004375e895dc27b00ccda21c17aa7b4febf8b283bd0e7b03e4cb8cb5d0d416f +size 1184 diff --git a/assets/voxygen/voxel/npc/cattle/female/leg_bl.vox b/assets/voxygen/voxel/npc/cattle/female/leg_bl.vox new file mode 100644 index 0000000000..69e43996ce --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a1227487605288610f234b24e9750c0f2aef12a2854b7b66e1a9342f13c0262 +size 1680 diff --git a/assets/voxygen/voxel/npc/cattle/female/leg_br.vox b/assets/voxygen/voxel/npc/cattle/female/leg_br.vox new file mode 100644 index 0000000000..f0f3cb3abd --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a7817a84243a30d3498a8b3aacd8ec2a56a047a92e3a1507a0ae94c0c5fdfaa +size 1680 diff --git a/assets/voxygen/voxel/npc/cattle/female/leg_fl.vox b/assets/voxygen/voxel/npc/cattle/female/leg_fl.vox new file mode 100644 index 0000000000..86bb23ec71 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7062a0a3697243800e75177c669bf9f96bca8b95331887f5e952ed6f6b32d1ae +size 1584 diff --git a/assets/voxygen/voxel/npc/cattle/female/leg_fr.vox b/assets/voxygen/voxel/npc/cattle/female/leg_fr.vox new file mode 100644 index 0000000000..b91091286d --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b027dca88db4cec8273d878dac69e800fc4ee3afa18bdfa9b8a38ada60b851f +size 1584 diff --git a/assets/voxygen/voxel/npc/cattle/female/neck.vox b/assets/voxygen/voxel/npc/cattle/female/neck.vox new file mode 100644 index 0000000000..b419939db5 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e70c01ae08121b8188e1c2f12019e89b5de7d23da0b2d908e4c0a63ef1cff7c +size 2552 diff --git a/assets/voxygen/voxel/npc/cattle/female/tail.vox b/assets/voxygen/voxel/npc/cattle/female/tail.vox new file mode 100644 index 0000000000..5535ec743f --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aef0a909b120b053b57e563f249db4ccc8813ffc00dbc580e577fa87b9395360 +size 1352 diff --git a/assets/voxygen/voxel/npc/cattle/female/torso_back.vox b/assets/voxygen/voxel/npc/cattle/female/torso_back.vox new file mode 100644 index 0000000000..de7163e908 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52c5c314242a5f763e817beac6128655143188f2a4663a3ec580d364f70f66cb +size 5236 diff --git a/assets/voxygen/voxel/npc/cattle/female/torso_front.vox b/assets/voxygen/voxel/npc/cattle/female/torso_front.vox new file mode 100644 index 0000000000..2879bc2932 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fefec0b64537efcc3c4ec39ea37feec7dd808c383e1ef2b53d3575dd9e97c834 +size 5224 diff --git a/assets/voxygen/voxel/npc/cattle/male/ears.vox b/assets/voxygen/voxel/npc/cattle/male/ears.vox new file mode 100644 index 0000000000..8ed7ffe298 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11c52d0746adfe98dab62397d05eaab4d08a654170c5352ec3afee8343dcedde +size 1168 diff --git a/assets/voxygen/voxel/npc/cattle/male/foot_bl.vox b/assets/voxygen/voxel/npc/cattle/male/foot_bl.vox new file mode 100644 index 0000000000..11f4d4588f --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5b93c6673ecf6f3b7106bc206b019074939493e569ed9454e45dfc100d11ad8 +size 1356 diff --git a/assets/voxygen/voxel/npc/cattle/male/foot_br.vox b/assets/voxygen/voxel/npc/cattle/male/foot_br.vox new file mode 100644 index 0000000000..7c8b112ef6 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe5a0e9b3575369741365ce71ee87187e69a107154cff3b519eb7626fea00b69 +size 1356 diff --git a/assets/voxygen/voxel/npc/cattle/male/foot_fl.vox b/assets/voxygen/voxel/npc/cattle/male/foot_fl.vox new file mode 100644 index 0000000000..8a513b5e74 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4af263bc9b225d9f78cfaf50c8ac55cf021dfc24dd537a9c3f3ad233b9916c0d +size 1384 diff --git a/assets/voxygen/voxel/npc/cattle/male/foot_fr.vox b/assets/voxygen/voxel/npc/cattle/male/foot_fr.vox new file mode 100644 index 0000000000..33bedbb6cb --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e5e04d3a841450fb906ee89b7384770ab1a90eee74c82ab1b1926a6587e6054 +size 1384 diff --git a/assets/voxygen/voxel/npc/cattle/male/head.vox b/assets/voxygen/voxel/npc/cattle/male/head.vox new file mode 100644 index 0000000000..3539e3e206 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7420c86b8d904789e923144d1c5fbad2427ebe21a316f24698982a4642b697e +size 2640 diff --git a/assets/voxygen/voxel/npc/cattle/male/jaw.vox b/assets/voxygen/voxel/npc/cattle/male/jaw.vox new file mode 100644 index 0000000000..0cff761c61 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:894bac4b2b15c7b1126ddd39be75db3c296ae0a590626cbcd025ffba77d41e91 +size 1184 diff --git a/assets/voxygen/voxel/npc/cattle/male/leg_bl.vox b/assets/voxygen/voxel/npc/cattle/male/leg_bl.vox new file mode 100644 index 0000000000..0a885bc090 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94faba53344cdec7fd8a672278c3bd2cb0a28bb340981c87d6b0df210879d80a +size 1680 diff --git a/assets/voxygen/voxel/npc/cattle/male/leg_br.vox b/assets/voxygen/voxel/npc/cattle/male/leg_br.vox new file mode 100644 index 0000000000..936a2091cd --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dac98754c6aea5e963d276ad2914e5d484d9c7a2c84ee9027b290f03e71566df +size 1680 diff --git a/assets/voxygen/voxel/npc/cattle/male/leg_fl.vox b/assets/voxygen/voxel/npc/cattle/male/leg_fl.vox new file mode 100644 index 0000000000..ccd8b92ffa --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d6be622d45ad945948713a1ae4fc84adfb248a39515036e3c8f6fe31410f40a +size 1952 diff --git a/assets/voxygen/voxel/npc/cattle/male/leg_fr.vox b/assets/voxygen/voxel/npc/cattle/male/leg_fr.vox new file mode 100644 index 0000000000..203c5a12dc --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:693553ea5e974aa23808b0a742685f647912915de10febd643c187d67366339c +size 1952 diff --git a/assets/voxygen/voxel/npc/cattle/male/neck.vox b/assets/voxygen/voxel/npc/cattle/male/neck.vox new file mode 100644 index 0000000000..ebe7b47510 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04f379a7283d0f9d3b6bc4ec90979f33d98ecc7068ba567f6ff31d18315a41ff +size 2872 diff --git a/assets/voxygen/voxel/npc/cattle/male/tail.vox b/assets/voxygen/voxel/npc/cattle/male/tail.vox new file mode 100644 index 0000000000..5625f718cf --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b397d4e3cb930b0d50f88eb256fb81599d730c8ae53c6dba54ad6589e5c08af +size 1352 diff --git a/assets/voxygen/voxel/npc/cattle/male/torso_back.vox b/assets/voxygen/voxel/npc/cattle/male/torso_back.vox new file mode 100644 index 0000000000..da1778120c --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7aafd5e1bf6bae8d146be5a492addabcc833c626437e99d0874669eadef55e7e +size 5380 diff --git a/assets/voxygen/voxel/npc/cattle/male/torso_front.vox b/assets/voxygen/voxel/npc/cattle/male/torso_front.vox new file mode 100644 index 0000000000..73ad117603 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3bb46cc151462aba7a07d687308ced9b6da667207bc8e56aa6ca9a782ad26b2 +size 6416 diff --git a/assets/voxygen/voxel/npc/darkhound/male/ears.vox b/assets/voxygen/voxel/npc/darkhound/male/ears.vox new file mode 100644 index 0000000000..be63d667e5 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d80826947324e175f23127e368ed0e04bed2e02069f114397103782bf19afd76 +size 1216 diff --git a/assets/voxygen/voxel/npc/darkhound/male/foot_bl.vox b/assets/voxygen/voxel/npc/darkhound/male/foot_bl.vox new file mode 100644 index 0000000000..72a861d55a --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd383a80ad883ba3ecb8a7352b786beb0590b03d84368391c18ea554694fb599 +size 1396 diff --git a/assets/voxygen/voxel/npc/darkhound/male/foot_br.vox b/assets/voxygen/voxel/npc/darkhound/male/foot_br.vox new file mode 100644 index 0000000000..db36974f95 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3808693bbdb7857cc14177b5d9c2bdae504c4472c5b9b131c3e6c887e7e9283d +size 1396 diff --git a/assets/voxygen/voxel/npc/darkhound/male/foot_fl.vox b/assets/voxygen/voxel/npc/darkhound/male/foot_fl.vox new file mode 100644 index 0000000000..e8d95c34bb --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f49cd636fab9a09dc4c98832c12be5dd720d6f1f87771396ac309a1a39b5365 +size 1336 diff --git a/assets/voxygen/voxel/npc/darkhound/male/foot_fr.vox b/assets/voxygen/voxel/npc/darkhound/male/foot_fr.vox new file mode 100644 index 0000000000..3cb8a20d56 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b14d7638a2bd5b12431525b156b4d6b67cd82d08b6c679076565c740449f1ef +size 1336 diff --git a/assets/voxygen/voxel/npc/darkhound/male/head.vox b/assets/voxygen/voxel/npc/darkhound/male/head.vox new file mode 100644 index 0000000000..da61c020a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beec6ec3b457a3bdfc45ef96884c9c43487aaa46afe3154cd79a2fe73e0dc5fe +size 1728 diff --git a/assets/voxygen/voxel/npc/darkhound/male/jaw.vox b/assets/voxygen/voxel/npc/darkhound/male/jaw.vox new file mode 100644 index 0000000000..46288b1d6c --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06db8c2059efab785aa5e21f6c6e1fb1dcf51ee13037effb9363a65325e9f529 +size 1236 diff --git a/assets/voxygen/voxel/npc/darkhound/male/leg_bl.vox b/assets/voxygen/voxel/npc/darkhound/male/leg_bl.vox new file mode 100644 index 0000000000..2a2b2264e6 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fec22d5427c0d42da4171befd9fe858933127c8e4df0430f6c807710b42e8cf +size 1464 diff --git a/assets/voxygen/voxel/npc/darkhound/male/leg_br.vox b/assets/voxygen/voxel/npc/darkhound/male/leg_br.vox new file mode 100644 index 0000000000..bb6e43fb56 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8896549e6fb15a3eff8a2f54b62e28970dfccbc675394a44235abf7269defdeb +size 1464 diff --git a/assets/voxygen/voxel/npc/darkhound/male/leg_fl.vox b/assets/voxygen/voxel/npc/darkhound/male/leg_fl.vox new file mode 100644 index 0000000000..b98fe8c1d2 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88ea2f92adcb532a0dbe8097bb0d67141ce373752e34733c48062a696bf2a357 +size 1448 diff --git a/assets/voxygen/voxel/npc/darkhound/male/leg_fr.vox b/assets/voxygen/voxel/npc/darkhound/male/leg_fr.vox new file mode 100644 index 0000000000..6284746824 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d46e3f2d36a17f6ec7f34fcf29722b8fa927cdd26a864760337143039635fdf7 +size 1448 diff --git a/assets/voxygen/voxel/npc/darkhound/male/neck.vox b/assets/voxygen/voxel/npc/darkhound/male/neck.vox new file mode 100644 index 0000000000..62fd3b4c3a --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:471f240c7898b3e7866a0cda065feb0b744a45ba75ade46cce6ffe5501b33df6 +size 1500 diff --git a/assets/voxygen/voxel/npc/darkhound/male/tail.vox b/assets/voxygen/voxel/npc/darkhound/male/tail.vox new file mode 100644 index 0000000000..b74ed3024c --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f21ebe56a10a801c91766087b41adb443d7209c5b7f029aab536b2fc12f105be +size 1348 diff --git a/assets/voxygen/voxel/npc/darkhound/male/torso_back.vox b/assets/voxygen/voxel/npc/darkhound/male/torso_back.vox new file mode 100644 index 0000000000..953ad994a1 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b01a1ca8834ab5dd52f611e74f529bf86b89a7154a45a210f9f50850b7704005 +size 2388 diff --git a/assets/voxygen/voxel/npc/darkhound/male/torso_front.vox b/assets/voxygen/voxel/npc/darkhound/male/torso_front.vox new file mode 100644 index 0000000000..76c572f511 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0b3d0e49842c9eeebe946123d95178fff6097e53c528678ff675bd722696e29 +size 3476 diff --git a/assets/voxygen/voxel/npc/dog/female/chest.vox b/assets/voxygen/voxel/npc/dog/female/chest.vox new file mode 100644 index 0000000000..359cbcba37 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c277e5c426fd9b831849b6fc282130ec82300b49103e5f1c01cecb373d6a5866 +size 2136 diff --git a/assets/voxygen/voxel/npc/dog/female/foot_bl.vox b/assets/voxygen/voxel/npc/dog/female/foot_bl.vox new file mode 100644 index 0000000000..060f51feef --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b6b9a69bbcba3c706b99262d04ddedb1df649efede847d0b8712552539c49df +size 1300 diff --git a/assets/voxygen/voxel/npc/dog/female/foot_br.vox b/assets/voxygen/voxel/npc/dog/female/foot_br.vox new file mode 100644 index 0000000000..8551b115c6 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:290ee67869c332d28c1147bdf36abef069e7159f47533eb42b4a9deaaf3ac8eb +size 1300 diff --git a/assets/voxygen/voxel/npc/dog/female/foot_fl.vox b/assets/voxygen/voxel/npc/dog/female/foot_fl.vox new file mode 100644 index 0000000000..e0631c3513 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cf17480e4774a864fd7fb73145a3e59d8fe9cf4646d0ed398d62510129d7f5b +size 1228 diff --git a/assets/voxygen/voxel/npc/dog/female/foot_fr.vox b/assets/voxygen/voxel/npc/dog/female/foot_fr.vox new file mode 100644 index 0000000000..14917dc876 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66821392e30213e90e6318bb8168a1908cc5740f3818caed5190a47527d35ae6 +size 1228 diff --git a/assets/voxygen/voxel/npc/dog/female/head.vox b/assets/voxygen/voxel/npc/dog/female/head.vox new file mode 100644 index 0000000000..a1d683430a --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8756eb17a0e00e7f8251dbe194d2fd0c1cdaffedab1a8068ab73fac3730c0a3a +size 1772 diff --git a/assets/voxygen/voxel/npc/dog/female/tail.vox b/assets/voxygen/voxel/npc/dog/female/tail.vox new file mode 100644 index 0000000000..e9d802e638 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b75e503a3742c3f2663bfdf404626c49baa9f5aad31409927d787aa28813d90e +size 1432 diff --git a/assets/voxygen/voxel/npc/dog/male/chest.vox b/assets/voxygen/voxel/npc/dog/male/chest.vox new file mode 100644 index 0000000000..fd4c59c2f0 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7eb62fa9b90c4ad88f2fd1dd96ffe45b4630ab1081f3e447ad8c44f8f407237 +size 2136 diff --git a/assets/voxygen/voxel/npc/dog/male/foot_bl.vox b/assets/voxygen/voxel/npc/dog/male/foot_bl.vox new file mode 100644 index 0000000000..ade5f135bc --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d75a171bdb543ffa662929d44071e8bb4846aabd703e04dbddc3b16894857ef1 +size 1300 diff --git a/assets/voxygen/voxel/npc/dog/male/foot_br.vox b/assets/voxygen/voxel/npc/dog/male/foot_br.vox new file mode 100644 index 0000000000..d9e302c8d5 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61c2a707098f9a70032d511f23eb0c4b2488bd0a1ae64cb006e8cde8b70464c4 +size 1300 diff --git a/assets/voxygen/voxel/npc/dog/male/foot_fl.vox b/assets/voxygen/voxel/npc/dog/male/foot_fl.vox new file mode 100644 index 0000000000..fa8ba881ce --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15792830a47d95a14c528debc3ef1f471907933aa5eb422c94b937d3818e4492 +size 1228 diff --git a/assets/voxygen/voxel/npc/dog/male/foot_fr.vox b/assets/voxygen/voxel/npc/dog/male/foot_fr.vox new file mode 100644 index 0000000000..6c4c489c2e --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f93dd3929ec430046b4a877d6ceb93b0f8022f63ae4a358a25d0bf93a93918d +size 1228 diff --git a/assets/voxygen/voxel/npc/dog/male/head.vox b/assets/voxygen/voxel/npc/dog/male/head.vox new file mode 100644 index 0000000000..552506abfe --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ef4784a5e528831069ef27b8fb7640fbf2e3c1edb0392a3d6fd598c61e06c1c +size 1772 diff --git a/assets/voxygen/voxel/npc/dog/male/tail.vox b/assets/voxygen/voxel/npc/dog/male/tail.vox new file mode 100644 index 0000000000..41ecc7221c --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f38f5c494eca27c9eecf1e9a0c7ccd17bd675ea8224be67800665ccc4e8e3f1 +size 1432 diff --git a/assets/voxygen/voxel/npc/highland/male/ears.vox b/assets/voxygen/voxel/npc/highland/male/ears.vox new file mode 100644 index 0000000000..a7bd49c6cf --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9712b72bedf80a26395a54612ecc89948f60e133c6fb655b979d6f7c6bb2f94 +size 1192 diff --git a/assets/voxygen/voxel/npc/highland/male/foot_bl.vox b/assets/voxygen/voxel/npc/highland/male/foot_bl.vox new file mode 100644 index 0000000000..6890e2f784 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44b440bb6bc8367ea0627e404cbfaacfcab42d6793bb2ce2c4433aae8b935c9d +size 1356 diff --git a/assets/voxygen/voxel/npc/highland/male/foot_br.vox b/assets/voxygen/voxel/npc/highland/male/foot_br.vox new file mode 100644 index 0000000000..7c5fe05c4c --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7502bf3bfd951a5908ebaf0298326a1b600781296c988840fc448d17df26fa45 +size 1356 diff --git a/assets/voxygen/voxel/npc/highland/male/foot_fl.vox b/assets/voxygen/voxel/npc/highland/male/foot_fl.vox new file mode 100644 index 0000000000..848e014dd2 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1425e769724c9f93ef3a302125caf7f11755196d34bb16b4b89d0036c8b6f1d0 +size 1384 diff --git a/assets/voxygen/voxel/npc/highland/male/foot_fr.vox b/assets/voxygen/voxel/npc/highland/male/foot_fr.vox new file mode 100644 index 0000000000..ed5b5349b4 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3281dd62983db45d67cb61a5c408dc9fe170f1ad1e5b03714e9f4267411497ad +size 1384 diff --git a/assets/voxygen/voxel/npc/highland/male/head.vox b/assets/voxygen/voxel/npc/highland/male/head.vox new file mode 100644 index 0000000000..8cdd70f2de --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25578b6111f456fb8190905302221679d709b49e8ca725c9e6cd558c2421c84c +size 3128 diff --git a/assets/voxygen/voxel/npc/highland/male/jaw.vox b/assets/voxygen/voxel/npc/highland/male/jaw.vox new file mode 100644 index 0000000000..df29320318 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ec83e1d145fdefb249a41f95ee448cea5a40cac5a642e3b9e3ada92beb4ebb7 +size 1184 diff --git a/assets/voxygen/voxel/npc/highland/male/leg_bl.vox b/assets/voxygen/voxel/npc/highland/male/leg_bl.vox new file mode 100644 index 0000000000..7e83dbd008 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b6ce56d522db5e322d6101c3d601197fe57a052eb3858ffafdba6a92ea879b1 +size 1680 diff --git a/assets/voxygen/voxel/npc/highland/male/leg_br.vox b/assets/voxygen/voxel/npc/highland/male/leg_br.vox new file mode 100644 index 0000000000..a256c4fe5b --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b23dc2c5a91ace542605037869b90ced88c2c808e624b0aef9e3d80a53fe92e +size 1680 diff --git a/assets/voxygen/voxel/npc/highland/male/leg_fl.vox b/assets/voxygen/voxel/npc/highland/male/leg_fl.vox new file mode 100644 index 0000000000..df7d6bdc7a --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afa3f530cf4d9d28f1326c0a8e95575f52fe05d7db0ed639d35cc321300a302e +size 1584 diff --git a/assets/voxygen/voxel/npc/highland/male/leg_fr.vox b/assets/voxygen/voxel/npc/highland/male/leg_fr.vox new file mode 100644 index 0000000000..deb719181d --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d76a5eb7cec685973e53a070a1efa1eb4e6a5b8748335305c1f43a41ccd09f31 +size 1584 diff --git a/assets/voxygen/voxel/npc/highland/male/neck.vox b/assets/voxygen/voxel/npc/highland/male/neck.vox new file mode 100644 index 0000000000..a306405daa --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:911f49107e08161b33e86e488a580e27e58c3f85f007b41af8cae3cd37e434bc +size 2920 diff --git a/assets/voxygen/voxel/npc/highland/male/tail.vox b/assets/voxygen/voxel/npc/highland/male/tail.vox new file mode 100644 index 0000000000..97cf9b72e5 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71ce20b320c818a3c3dd955f5e33190fec06b4d9fbdeb7b1e8a7451fef79ea41 +size 1360 diff --git a/assets/voxygen/voxel/npc/highland/male/torso_back.vox b/assets/voxygen/voxel/npc/highland/male/torso_back.vox new file mode 100644 index 0000000000..1c5575aa85 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd93f1fb2fff553aa1067ecc025b08ed6fc59d8afa9c694193c8605c24ab8263 +size 5500 diff --git a/assets/voxygen/voxel/npc/highland/male/torso_front.vox b/assets/voxygen/voxel/npc/highland/male/torso_front.vox new file mode 100644 index 0000000000..a95d6d39cb --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d863c0f24f7375758c296ce4e9e0d0f96baf54c6234da791f1198a884da163f1 +size 5732 diff --git a/assets/voxygen/voxel/npc/panda/male/ears.vox b/assets/voxygen/voxel/npc/panda/male/ears.vox new file mode 100644 index 0000000000..0df4b389d0 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d9ec2db95f6f2b9299fc8f56e7e32486f0b98dc55fd00414e35030d6b84cfda +size 1176 diff --git a/assets/voxygen/voxel/npc/panda/male/foot_bl.vox b/assets/voxygen/voxel/npc/panda/male/foot_bl.vox new file mode 100644 index 0000000000..0148da1e50 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbf7c4621ea3e1bcbf666f0e539459538d2be02ef0d693914922d5178a7f9487 +size 1600 diff --git a/assets/voxygen/voxel/npc/panda/male/foot_br.vox b/assets/voxygen/voxel/npc/panda/male/foot_br.vox new file mode 100644 index 0000000000..79a36ddf82 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6adf41bd3cd6a66cd973241b72b2b3b51e1b76f101a81ccb5c5eff9d8fe48863 +size 1600 diff --git a/assets/voxygen/voxel/npc/panda/male/foot_fl.vox b/assets/voxygen/voxel/npc/panda/male/foot_fl.vox new file mode 100644 index 0000000000..6d6798bb4e --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5aab186c10645c2adbaeff73ed519f101f95f7400dcb38cdbfe9dfe972d3d410 +size 1704 diff --git a/assets/voxygen/voxel/npc/panda/male/foot_fr.vox b/assets/voxygen/voxel/npc/panda/male/foot_fr.vox new file mode 100644 index 0000000000..4d992eaf97 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:172abed800cea878e4edb20dbb799c3cc0fefe43277f8be14b7bef09e3d107f8 +size 1704 diff --git a/assets/voxygen/voxel/npc/panda/male/head.vox b/assets/voxygen/voxel/npc/panda/male/head.vox new file mode 100644 index 0000000000..8da5d392ba --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b360b44a16448891492229b2344524e297e959f25d554ed6ee759bf2649f3ad +size 3024 diff --git a/assets/voxygen/voxel/npc/panda/male/jaw.vox b/assets/voxygen/voxel/npc/panda/male/jaw.vox new file mode 100644 index 0000000000..ac30435a03 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fed05a7a56faab08d1d67c89306affbd51f6b31a0cef06ba3f8ee56db9dad0b +size 1212 diff --git a/assets/voxygen/voxel/npc/panda/male/leg_bl.vox b/assets/voxygen/voxel/npc/panda/male/leg_bl.vox new file mode 100644 index 0000000000..085665ba54 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82dad7112a43e0c3512c46066607cbc356e52ad2a00525e174a86957e8e7f4d4 +size 1852 diff --git a/assets/voxygen/voxel/npc/panda/male/leg_br.vox b/assets/voxygen/voxel/npc/panda/male/leg_br.vox new file mode 100644 index 0000000000..81231d2c8b --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a65854428c017054ccc1ea9901b96edb89fb79bd626b7591f1f2b35c760aac9 +size 1852 diff --git a/assets/voxygen/voxel/npc/panda/male/leg_fl.vox b/assets/voxygen/voxel/npc/panda/male/leg_fl.vox new file mode 100644 index 0000000000..8a3d23f3ac --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53d67acdc1c06fa648f9d809b6096d38d186ef620e23ede7bb6b3a0ce0bc9709 +size 1760 diff --git a/assets/voxygen/voxel/npc/panda/male/leg_fr.vox b/assets/voxygen/voxel/npc/panda/male/leg_fr.vox new file mode 100644 index 0000000000..665cea65d3 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6a4639292cc5251f19bf43dd19bd21c4816e2160296a9f33ba78a62f2b6c1d1 +size 1760 diff --git a/assets/voxygen/voxel/npc/panda/male/neck.vox b/assets/voxygen/voxel/npc/panda/male/neck.vox new file mode 100644 index 0000000000..1a656cdba5 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:515a91c893f32427e5080dc1b05f7fe66ba5dbb97d7f2ed779274b1fa68c2d49 +size 2120 diff --git a/assets/voxygen/voxel/npc/panda/male/tail.vox b/assets/voxygen/voxel/npc/panda/male/tail.vox new file mode 100644 index 0000000000..ca9ea290e1 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a577050f80d243a0cdd483a667299ec84fc39cf49fde76287a036765c2379ade +size 1336 diff --git a/assets/voxygen/voxel/npc/panda/male/torso_back.vox b/assets/voxygen/voxel/npc/panda/male/torso_back.vox new file mode 100644 index 0000000000..013f824e84 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6293227fb4b9bc19a5d71dc182b411e8a49672b135b7f3fbd185a5aa10816705 +size 7940 diff --git a/assets/voxygen/voxel/npc/panda/male/torso_front.vox b/assets/voxygen/voxel/npc/panda/male/torso_front.vox new file mode 100644 index 0000000000..d239c5fea7 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:339be526fda035d26c1701a7a69ca845dafa2d5a9ecbc6ae9ddca1c8f19392ec +size 7600 diff --git a/assets/voxygen/voxel/npc/yak/male/ears.vox b/assets/voxygen/voxel/npc/yak/male/ears.vox new file mode 100644 index 0000000000..dc87c2cdbb --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:724d3bb27ba9cf63b3d8ff709bf7774987546aa2a26c95e5c596f8faaa54902e +size 1192 diff --git a/assets/voxygen/voxel/npc/yak/male/foot_bl.vox b/assets/voxygen/voxel/npc/yak/male/foot_bl.vox new file mode 100644 index 0000000000..a04cc94cd5 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da8808f71b0872113987b4288deaafe8fbce84a821894a8f728d1964002c1a7d +size 1356 diff --git a/assets/voxygen/voxel/npc/yak/male/foot_br.vox b/assets/voxygen/voxel/npc/yak/male/foot_br.vox new file mode 100644 index 0000000000..d2ab5ec9fe --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce95027700f8d2fca638d370ca6896af1de57c3917a107f22aa94ed7fda03662 +size 1356 diff --git a/assets/voxygen/voxel/npc/yak/male/foot_fl.vox b/assets/voxygen/voxel/npc/yak/male/foot_fl.vox new file mode 100644 index 0000000000..951344d5a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9c8143642cd15c1e0263429980b70c8762647caadeb1323eae533c89e59ddc2 +size 1420 diff --git a/assets/voxygen/voxel/npc/yak/male/foot_fr.vox b/assets/voxygen/voxel/npc/yak/male/foot_fr.vox new file mode 100644 index 0000000000..712a731534 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e71e176392ab3a6053228ead8bb7636d9383c8d31ac6b7fcf61f55904b6a03ab +size 1420 diff --git a/assets/voxygen/voxel/npc/yak/male/head.vox b/assets/voxygen/voxel/npc/yak/male/head.vox new file mode 100644 index 0000000000..5f374cdd6e --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2de6595c9394f7ca90bf9e53096079568eb0115f12524986c159685ccf905bc +size 2680 diff --git a/assets/voxygen/voxel/npc/yak/male/jaw.vox b/assets/voxygen/voxel/npc/yak/male/jaw.vox new file mode 100644 index 0000000000..d2af14ffdf --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9680579a8607d5c3e1189a63ccdee16ceff19dc9075e928be63fb37f27740069 +size 1184 diff --git a/assets/voxygen/voxel/npc/yak/male/leg_bl.vox b/assets/voxygen/voxel/npc/yak/male/leg_bl.vox new file mode 100644 index 0000000000..2edfc7a704 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca3d9e44682f388f084ed5294a2e0157bfc9645fda5ccb39eeebd7aba42f4d06 +size 1880 diff --git a/assets/voxygen/voxel/npc/yak/male/leg_br.vox b/assets/voxygen/voxel/npc/yak/male/leg_br.vox new file mode 100644 index 0000000000..59bdd4d54b --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d84ea87ffd1ca221a1644fe46781c4763256627206057b1fb79cc01fd095bc59 +size 1880 diff --git a/assets/voxygen/voxel/npc/yak/male/leg_fl.vox b/assets/voxygen/voxel/npc/yak/male/leg_fl.vox new file mode 100644 index 0000000000..9095df9bd2 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f07a322bbf33a76f761c16c94f09626586bc86eecdac777029f0f9d4793e216e +size 1908 diff --git a/assets/voxygen/voxel/npc/yak/male/leg_fr.vox b/assets/voxygen/voxel/npc/yak/male/leg_fr.vox new file mode 100644 index 0000000000..de380a6f9e --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09389bc4f9245e1594a7c16396bcdc9326016f4b132361f593599a7ee199b2cf +size 1908 diff --git a/assets/voxygen/voxel/npc/yak/male/neck.vox b/assets/voxygen/voxel/npc/yak/male/neck.vox new file mode 100644 index 0000000000..78a3eba3f6 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fbac3a1bf3da520353910f8dd64070bc68b689a5f98e29bb0f00a2fe0328817 +size 3332 diff --git a/assets/voxygen/voxel/npc/yak/male/tail.vox b/assets/voxygen/voxel/npc/yak/male/tail.vox new file mode 100644 index 0000000000..c9d4ded911 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:017dfed37b627961f93183e77ad28c8d27450cda57b28d5dc66ac27b5e637303 +size 1588 diff --git a/assets/voxygen/voxel/npc/yak/male/torso_back.vox b/assets/voxygen/voxel/npc/yak/male/torso_back.vox new file mode 100644 index 0000000000..a8408768e1 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efaf70700f86c779185fea0897d8aa2e8fdcc2fd4e02112dc77742dd79fda49e +size 6288 diff --git a/assets/voxygen/voxel/npc/yak/male/torso_front.vox b/assets/voxygen/voxel/npc/yak/male/torso_front.vox new file mode 100644 index 0000000000..16a540e0f7 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f2687d4c069390b150601f086b3a0b61bc223e51b3db35ad2597e28a8c9aa98 +size 7920 diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index 8c7f92632c..384717e891 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -1199,4 +1199,424 @@ central: ("npc.horse.male.tail"), ), ), + (Barghest, Male): ( + head: ( + offset: (-7.0, 0.0, -8.0), + central: ("npc.barghest.male.head"), + ), + neck: ( + offset: (-7.0, -1.5, -10.0), + central: ("npc.barghest.male.neck"), + ), + jaw: ( + offset: (-10.0, 0.0, -5.0), + central: ("npc.barghest.male.jaw"), + ), + torso_front: ( + offset: (-8.0, -12.0, -10.5), + central: ("npc.barghest.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -7.0), + central: ("npc.barghest.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-3.0, -15.0, -5.0), + central: ("npc.barghest.male.tail"), + ), + ), + (Barghest, Female): ( + head: ( + offset: (-7.0, 0.0, -8.0), + central: ("npc.barghest.male.head"), + ), + neck: ( + offset: (-7.0, -1.5, -10.0), + central: ("npc.barghest.male.neck"), + ), + jaw: ( + offset: (-10.0, 0.0, -5.0), + central: ("npc.barghest.male.jaw"), + ), + torso_front: ( + offset: (-8.0, -12.0, -10.5), + central: ("npc.barghest.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -7.0), + central: ("npc.barghest.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-3.0, -15.0, -5.0), + central: ("npc.barghest.male.tail"), + ), + ), + (Cattle, Male): ( + head: ( + offset: (-5.0, 0.0, -6.5), + central: ("npc.cattle.male.head"), + ), + neck: ( + offset: (-4.0, -2.0, -7.0), + central: ("npc.cattle.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.cattle.male.jaw"), + ), + torso_front: ( + offset: (-6.0, -9.0, -8.0), + central: ("npc.cattle.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -6.5), + central: ("npc.cattle.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.cattle.male.ears"), + ), + tail: ( + offset: (-1.0, -8.0, -13.0), + central: ("npc.cattle.male.tail"), + ), + ), + (Cattle, Female): ( + head: ( + offset: (-5.0, 0.0, -5.0), + central: ("npc.cattle.female.head"), + ), + neck: ( + offset: (-4.0, -2.0, -6.0), + central: ("npc.cattle.female.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.cattle.female.jaw"), + ), + torso_front: ( + offset: (-6.0, -9.0, -6.5), + central: ("npc.cattle.female.torso_front"), + ), + torso_back: ( + offset: (-6.0, -8.0, -7.5), + central: ("npc.cattle.female.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.cattle.female.ears"), + ), + tail: ( + offset: (-1.0, -8.0, -13.0), + central: ("npc.cattle.female.tail"), + ), + ), + (Darkhound, Male): ( + head: ( + offset: (-2.5, 0.0, -3.5), + central: ("npc.darkhound.male.head"), + ), + neck: ( + offset: (-2.5, -2.0, -3.5), + central: ("npc.darkhound.male.neck"), + ), + jaw: ( + offset: (-1.5, 0.0, -1.5), + central: ("npc.darkhound.male.jaw"), + ), + torso_front: ( + offset: (-3.5, -13.0, -6.0), + central: ("npc.darkhound.male.torso_front"), + ), + torso_back: ( + offset: (-3.5, -12.0, -4.5), + central: ("npc.darkhound.male.torso_back"), + ), + ears: ( + offset: (-2.5, -1.0, 0.0), + central: ("npc.darkhound.male.ears"), + ), + tail: ( + offset: (-1.5, -16.0, -5.0), + central: ("npc.darkhound.male.tail"), + ), + ), + (Darkhound, Female): ( + head: ( + offset: (-2.5, 0.0, -3.5), + central: ("npc.darkhound.male.head"), + ), + neck: ( + offset: (-2.5, -2.0, -3.5), + central: ("npc.darkhound.male.neck"), + ), + jaw: ( + offset: (-1.5, 0.0, -1.5), + central: ("npc.darkhound.male.jaw"), + ), + torso_front: ( + offset: (-3.5, -13.0, -6.0), + central: ("npc.darkhound.male.torso_front"), + ), + torso_back: ( + offset: (-3.5, -12.0, -4.5), + central: ("npc.darkhound.male.torso_back"), + ), + ears: ( + offset: (-2.5, -1.0, 0.0), + central: ("npc.darkhound.male.ears"), + ), + tail: ( + offset: (-1.5, -16.0, -5.0), + central: ("npc.darkhound.male.tail"), + ), + ), + (Highland, Male): ( + head: ( + offset: (-12.0, 0.0, -6.0), + central: ("npc.highland.male.head"), + ), + neck: ( + offset: (-5.0, -2.0, -7.0), + central: ("npc.highland.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.highland.male.jaw"), + ), + torso_front: ( + offset: (-6.0, -9.0, -8.5), + central: ("npc.highland.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -7.5), + central: ("npc.highland.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.highland.male.ears"), + ), + tail: ( + offset: (-1.0, -6.0, -13.0), + central: ("npc.highland.male.tail"), + ), + ), + (Highland, Female): ( + head: ( + offset: (-12.0, 0.0, -6.0), + central: ("npc.highland.male.head"), + ), + neck: ( + offset: (-5.0, -2.0, -7.0), + central: ("npc.highland.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.highland.male.jaw"), + ), + torso_front: ( + offset: (-6.0, -9.0, -8.5), + central: ("npc.highland.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -7.5), + central: ("npc.highland.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.highland.male.ears"), + ), + tail: ( + offset: (-1.0, -6.0, -13.0), + central: ("npc.highland.male.tail"), + ), + ), + (Yak, Male): ( + head: ( + offset: (-7.0, 0.0, -8.0), + central: ("npc.yak.male.head"), + ), + neck: ( + offset: (-5.0, -2.0, -8.0), + central: ("npc.yak.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.yak.male.jaw"), + ), + torso_front: ( + offset: (-7.0, -9.0, -11.0), + central: ("npc.yak.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -9.5), + central: ("npc.yak.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.yak.male.ears"), + ), + tail: ( + offset: (-2.0, -5.0, -15.0), + central: ("npc.yak.male.tail"), + ), + ), + (Yak, Female): ( + head: ( + offset: (-7.0, 0.0, -8.0), + central: ("npc.yak.male.head"), + ), + neck: ( + offset: (-5.0, -2.0, -8.0), + central: ("npc.yak.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.yak.male.jaw"), + ), + torso_front: ( + offset: (-7.0, -9.0, -11.0), + central: ("npc.yak.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -9.5), + central: ("npc.yak.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.yak.male.ears"), + ), + tail: ( + offset: (-2.0, -5.0, -15.0), + central: ("npc.yak.male.tail"), + ), + ), + (Panda, Male): ( + head: ( + offset: (-5.5, 0.0, -5.0), + central: ("npc.panda.male.head"), + ), + neck: ( + offset: (-4.5, -1.5, -5.5), + central: ("npc.panda.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.panda.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -12.0, -7.5), + central: ("npc.panda.male.torso_front"), + ), + torso_back: ( + offset: (-6.5, -12.0, -7.0), + central: ("npc.panda.male.torso_back"), + ), + ears: ( + offset: (-5.5, -1.0, 0.0), + central: ("npc.panda.male.ears"), + ), + tail: ( + offset: (-2.5, -5.0, -3.5), + central: ("npc.panda.male.tail"), + ), + ), + (Panda, Female): ( + head: ( + offset: (-5.5, 0.0, -5.0), + central: ("npc.panda.male.head"), + ), + neck: ( + offset: (-4.5, -1.5, -5.5), + central: ("npc.panda.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.panda.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -12.0, -7.5), + central: ("npc.panda.male.torso_front"), + ), + torso_back: ( + offset: (-6.5, -12.0, -7.0), + central: ("npc.panda.male.torso_back"), + ), + ears: ( + offset: (-5.5, -1.0, 0.0), + central: ("npc.panda.male.ears"), + ), + tail: ( + offset: (-2.5, -5.0, -3.5), + central: ("npc.panda.male.tail"), + ), + ), + (Bear, Male): ( + head: ( + offset: (-5.5, 0.0, -5.0), + central: ("npc.bear.male.head"), + ), + neck: ( + offset: (-4.5, -1.5, -5.5), + central: ("npc.bear.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.bear.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -12.0, -7.5), + central: ("npc.bear.male.torso_front"), + ), + torso_back: ( + offset: (-5.5, -12.0, -7.0), + central: ("npc.bear.male.torso_back"), + ), + ears: ( + offset: (-4.5, -1.0, 0.0), + central: ("npc.bear.male.ears"), + ), + tail: ( + offset: (-2.5, -5.0, -3.5), + central: ("npc.bear.male.tail"), + ), + ), + (Bear, Female): ( + head: ( + offset: (-5.5, 0.0, -5.0), + central: ("npc.bear.male.head"), + ), + neck: ( + offset: (-4.5, -1.5, -5.5), + central: ("npc.bear.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.bear.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -12.0, -7.5), + central: ("npc.bear.male.torso_front"), + ), + torso_back: ( + offset: (-5.5, -12.0, -7.0), + central: ("npc.bear.male.torso_back"), + ), + ears: ( + offset: (-4.5, -1.0, 0.0), + central: ("npc.bear.male.ears"), + ), + tail: ( + offset: (-2.5, -5.0, -3.5), + central: ("npc.bear.male.tail"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index a999b509f4..640eb06690 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -1359,4 +1359,480 @@ lateral: ("npc.horse.male.foot_br"), ), ), + (Barghest, Male): ( + leg_fl: ( + offset: (-3.5, -4.0, -5.0), + lateral: ("npc.barghest.male.leg_fl"), + ), + leg_fr: ( + offset: (-3.5, -4.0, -5.0), + lateral: ("npc.barghest.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -3.5), + lateral: ("npc.barghest.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.5, -3.5), + lateral: ("npc.barghest.male.leg_br"), + ), + foot_fl: ( + offset: (-4.5, -5.5, -7.0), + lateral: ("npc.barghest.male.foot_fl"), + ), + foot_fr: ( + offset: (-4.5, -5.5, -7.0), + lateral: ("npc.barghest.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.barghest.male.foot_bl"), + ), + foot_br: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.barghest.male.foot_br"), + ), + ), + (Barghest, Female): ( + leg_fl: ( + offset: (-3.5, -4.0, -5.0), + lateral: ("npc.barghest.male.leg_fl"), + ), + leg_fr: ( + offset: (-3.5, -4.0, -5.0), + lateral: ("npc.barghest.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -3.5), + lateral: ("npc.barghest.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.5, -3.5), + lateral: ("npc.barghest.male.leg_br"), + ), + foot_fl: ( + offset: (-4.5, -5.5, -7.0), + lateral: ("npc.barghest.male.foot_fl"), + ), + foot_fr: ( + offset: (-4.5, -5.5, -7.0), + lateral: ("npc.barghest.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.barghest.male.foot_bl"), + ), + foot_br: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.barghest.male.foot_br"), + ), + ), + (Cattle, Male): ( + leg_fl: ( + offset: (-2.5, -3.0, -6.5), + lateral: ("npc.cattle.male.leg_fl"), + ), + leg_fr: ( + offset: (-2.5, -3.0, -6.5), + lateral: ("npc.cattle.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -5.0), + lateral: ("npc.cattle.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.0, -5.0), + lateral: ("npc.cattle.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.cattle.male.foot_fl"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.cattle.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.cattle.male.foot_bl"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.cattle.male.foot_br"), + ), + ), + (Cattle, Female): ( + leg_fl: ( + offset: (-2.0, -2.5, -5.5), + lateral: ("npc.cattle.female.leg_fl"), + ), + leg_fr: ( + offset: (-2.0, -2.5, -5.5), + lateral: ("npc.cattle.female.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.cattle.female.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.cattle.female.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.cattle.female.foot_fl"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.cattle.female.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.cattle.female.foot_bl"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.cattle.female.foot_br"), + ), + ), + (Darkhound, Male): ( + leg_fl: ( + offset: (-1.5, -3.5, -4.0), + lateral: ("npc.darkhound.male.leg_fl"), + ), + leg_fr: ( + offset: (-1.5, -3.5, -4.0), + lateral: ("npc.darkhound.male.leg_fr"), + ), + leg_bl: ( + offset: (-1.5, -3.5, -3.5), + lateral: ("npc.darkhound.male.leg_bl"), + ), + leg_br: ( + offset: (-1.5, -3.5, -3.5), + lateral: ("npc.darkhound.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -4.0, -8.0), + lateral: ("npc.darkhound.male.foot_fl"), + ), + foot_fr: ( + offset: (-1.5, -4.0, -8.0), + lateral: ("npc.darkhound.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -3.5, -8.0), + lateral: ("npc.darkhound.male.foot_bl"), + ), + foot_br: ( + offset: (-1.5, -3.5, -8.0), + lateral: ("npc.darkhound.male.foot_br"), + ), + ), + (Darkhound, Female): ( + leg_fl: ( + offset: (-1.5, -3.5, -4.0), + lateral: ("npc.darkhound.male.leg_fl"), + ), + leg_fr: ( + offset: (-1.5, -3.5, -4.0), + lateral: ("npc.darkhound.male.leg_fr"), + ), + leg_bl: ( + offset: (-1.5, -3.5, -3.5), + lateral: ("npc.darkhound.male.leg_bl"), + ), + leg_br: ( + offset: (-1.5, -3.5, -3.5), + lateral: ("npc.darkhound.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -4.0, -8.0), + lateral: ("npc.darkhound.male.foot_fl"), + ), + foot_fr: ( + offset: (-1.5, -4.0, -8.0), + lateral: ("npc.darkhound.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -3.5, -8.0), + lateral: ("npc.darkhound.male.foot_bl"), + ), + foot_br: ( + offset: (-1.5, -3.5, -8.0), + lateral: ("npc.darkhound.male.foot_br"), + ), + ), + (Highland, Male): ( + leg_fl: ( + offset: (-2.0, -2.5, -4.5), + lateral: ("npc.highland.male.leg_fl"), + ), + leg_fr: ( + offset: (-2.0, -2.5, -4.5), + lateral: ("npc.highland.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.highland.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.highland.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.highland.male.foot_fl"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.highland.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.highland.male.foot_bl"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.highland.male.foot_br"), + ), + ), + (Highland, Female): ( + leg_fl: ( + offset: (-2.0, -2.5, -4.5), + lateral: ("npc.highland.male.leg_fl"), + ), + leg_fr: ( + offset: (-2.0, -2.5, -4.5), + lateral: ("npc.highland.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.highland.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.highland.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.highland.male.foot_fl"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.highland.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.highland.male.foot_bl"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.highland.male.foot_br"), + ), + ), + (Yak, Male): ( + leg_fl: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_fl"), + ), + leg_fr: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -9.0), + lateral: ("npc.yak.male.foot_fl"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -9.0), + lateral: ("npc.yak.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.yak.male.foot_bl"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.yak.male.foot_br"), + ), + ), + (Yak, Female): ( + leg_fl: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_fl"), + ), + leg_fr: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -9.0), + lateral: ("npc.yak.male.foot_fl"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -9.0), + lateral: ("npc.yak.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.yak.male.foot_bl"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.yak.male.foot_br"), + ), + ), + (Bear, Male): ( + leg_fl: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.bear.male.leg_fl"), + ), + leg_fr: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.bear.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.bear.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.bear.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.bear.male.foot_fl"), + ), + foot_fr: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.bear.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.bear.male.foot_bl"), + ), + foot_br: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.bear.male.foot_br"), + ), + ), + (Panda, Female): ( + leg_fl: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.panda.male.leg_fl"), + ), + leg_fr: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.panda.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.panda.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.panda.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.panda.male.foot_fl"), + ), + foot_fr: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.panda.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.panda.male.foot_bl"), + ), + foot_br: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.panda.male.foot_br"), + ), + ), + (Panda, Male): ( + leg_fl: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.panda.male.leg_fl"), + ), + leg_fr: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.panda.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.panda.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.panda.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.panda.male.foot_fl"), + ), + foot_fr: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.panda.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.panda.male.foot_bl"), + ), + foot_br: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.panda.male.foot_br"), + ), + ), + (Bear, Female): ( + leg_fl: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.bear.male.leg_fl"), + ), + leg_fr: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.bear.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.bear.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.bear.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.bear.male.foot_fl"), + ), + foot_fr: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.bear.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.bear.male.foot_bl"), + ), + foot_br: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.bear.male.foot_br"), + ), + ), }) diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 2d60b968c0..3260c6c09c 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -141,6 +141,8 @@ impl<'a> From<&'a Body> for Psyche { quadruped_medium::Species::Zebra => 0.7, quadruped_medium::Species::Antelope => 0.6, quadruped_medium::Species::Horse => 0.7, + quadruped_medium::Species::Cattle => 0.7, + quadruped_medium::Species::Darkhound => 0.9, _ => 0.5, }, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index edcc366654..977de09376 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -173,6 +173,12 @@ impl Body { quadruped_medium::Species::Deer => 1.5, quadruped_medium::Species::Donkey => 1.5, quadruped_medium::Species::Kelpie => 1.5, + quadruped_medium::Species::Barghest => 1.8, + quadruped_medium::Species::Cattle => 1.8, + quadruped_medium::Species::Highland => 1.8, + quadruped_medium::Species::Yak => 1.8, + quadruped_medium::Species::Panda => 1.8, + quadruped_medium::Species::Bear => 1.8, _ => 1.5, }, Body::QuadrupedLow(body) => match body.species { @@ -237,6 +243,7 @@ impl Body { quadruped_medium::Species::Lion => 2.0, quadruped_medium::Species::Saber => 2.0, quadruped_medium::Species::Catoblepas => 2.9, + quadruped_medium::Species::Barghest => 2.5, _ => 1.6, }, Body::QuadrupedLow(body) => match body.species { @@ -321,6 +328,12 @@ impl Body { quadruped_medium::Species::Antelope => 300, quadruped_medium::Species::Kelpie => 600, quadruped_medium::Species::Horse => 600, + quadruped_medium::Species::Barghest => 1000, + quadruped_medium::Species::Cattle => 600, + quadruped_medium::Species::Highland => 600, + quadruped_medium::Species::Yak => 600, + quadruped_medium::Species::Panda => 800, + quadruped_medium::Species::Bear => 800, _ => 400, }, Body::BirdMedium(bird_medium) => match bird_medium.species { @@ -411,6 +424,12 @@ impl Body { quadruped_medium::Species::Antelope => 20, quadruped_medium::Species::Kelpie => 30, quadruped_medium::Species::Horse => 30, + quadruped_medium::Species::Barghest => 50, + quadruped_medium::Species::Cattle => 30, + quadruped_medium::Species::Highland => 30, + quadruped_medium::Species::Yak => 30, + quadruped_medium::Species::Panda => 40, + quadruped_medium::Species::Bear => 40, _ => 20, }, Body::BirdMedium(bird_medium) => match bird_medium.species { diff --git a/common/src/comp/body/quadruped_medium.rs b/common/src/comp/body/quadruped_medium.rs index c657d289ce..d1b2b89b43 100644 --- a/common/src/comp/body/quadruped_medium.rs +++ b/common/src/comp/body/quadruped_medium.rs @@ -52,6 +52,13 @@ pub enum Species { Antelope = 19, Kelpie = 20, Horse = 21, + Barghest = 22, + Cattle = 23, + Darkhound = 24, + Highland = 25, + Yak = 26, + Panda = 27, + Bear = 28, } /// Data representing per-species generic data. @@ -79,6 +86,13 @@ pub struct AllSpecies { pub antelope: SpeciesMeta, pub kelpie: SpeciesMeta, pub horse: SpeciesMeta, + pub barghest: SpeciesMeta, + pub cattle: SpeciesMeta, + pub darkhound: SpeciesMeta, + pub highland: SpeciesMeta, + pub yak: SpeciesMeta, + pub panda: SpeciesMeta, + pub bear: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -107,11 +121,18 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Antelope => &self.antelope, Species::Kelpie => &self.kelpie, Species::Horse => &self.horse, + Species::Barghest => &self.barghest, + Species::Cattle => &self.cattle, + Species::Darkhound => &self.darkhound, + Species::Highland => &self.highland, + Species::Yak => &self.yak, + Species::Panda => &self.panda, + Species::Bear => &self.bear, } } } -pub const ALL_SPECIES: [Species; 20] = [ +pub const ALL_SPECIES: [Species; 27] = [ Species::Grolgar, Species::Saber, Species::Tiger, @@ -132,6 +153,13 @@ pub const ALL_SPECIES: [Species; 20] = [ Species::Antelope, Species::Kelpie, Species::Horse, + Species::Barghest, + Species::Cattle, + Species::Darkhound, + Species::Highland, + Species::Yak, + Species::Panda, + Species::Bear, ]; 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 979be8bab6..5f6902da7d 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -89,7 +89,8 @@ impl LoadoutBuilder { quadruped_medium::Species::Wolf | quadruped_medium::Species::Grolgar | quadruped_medium::Species::Lion - | quadruped_medium::Species::Bonerattler => { + | quadruped_medium::Species::Bonerattler + | quadruped_medium::Species::Darkhound => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.quadmedquick", )); @@ -110,7 +111,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.quadmedjump", )); }, - quadruped_medium::Species::Tuskram | quadruped_medium::Species::Roshwalr => { + quadruped_medium::Species::Tuskram + | quadruped_medium::Species::Roshwalr + | quadruped_medium::Species::Highland + | quadruped_medium::Species::Yak + | quadruped_medium::Species::Cattle => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.quadmedcharge", )); diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 84aa9d1cc9..410d0abf44 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -59,6 +59,13 @@ impl Body { quadruped_medium::Species::Antelope => 185.0, quadruped_medium::Species::Kelpie => 180.0, quadruped_medium::Species::Horse => 180.0, + quadruped_medium::Species::Barghest => 180.0, + quadruped_medium::Species::Cattle => 180.0, + quadruped_medium::Species::Darkhound => 180.0, + quadruped_medium::Species::Highland => 180.0, + quadruped_medium::Species::Yak => 180.0, + quadruped_medium::Species::Panda => 180.0, + quadruped_medium::Species::Bear => 180.0, }, Body::BipedSmall(_) => 100.0, Body::BirdMedium(_) => 80.0, diff --git a/voxygen/anim/src/quadruped_medium/idle.rs b/voxygen/anim/src/quadruped_medium/idle.rs index d2a168bec4..4e2c3b3c20 100644 --- a/voxygen/anim/src/quadruped_medium/idle.rs +++ b/voxygen/anim/src/quadruped_medium/idle.rs @@ -112,14 +112,15 @@ impl Animation for IdleAnimation { next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); - next.foot_fl.orientation = Quaternion::rotation_x(0.0); - next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); + next.foot_fr.position = + Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); next.foot_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2 + slower * -0.2); - next.foot_br.position = Vec3::new(s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2 + slower * -0.2); + next.foot_br.position = + Vec3::new(s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2 + slower * -0.2); next } diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index 4f8d693584..ee9ff1ec92 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -163,6 +163,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (1.5, 2.5), (Kelpie, _) => (4.0, -1.0), (Horse, _) => (0.5, 1.5), + (Barghest, _) => (0.5, -2.5), + (Cattle, Male) => (0.5, 3.5), + (Cattle, Female) => (2.5, 4.0), + (Darkhound, _) => (3.0, -1.0), + (Highland, _) => (2.5, 5.0), + (Yak, _) => (2.5, 5.0), + (Panda, _) => (0.0, 0.5), + (Bear, _) => (0.5, 1.5), }, neck: match (body.species, body.body_type) { (Grolgar, _) => (1.0, -1.0), @@ -185,6 +193,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (0.5, 2.5), (Kelpie, _) => (2.0, 1.0), (Horse, _) => (1.5, 1.5), + (Barghest, _) => (0.5, -0.5), + (Cattle, Male) => (0.0, 0.0), + (Cattle, Female) => (0.0, 0.0), + (Darkhound, _) => (1.0, 1.5), + (Highland, _) => (0.0, 1.5), + (Yak, _) => (0.0, 0.0), + (Panda, _) => (0.5, 0.0), + (Bear, _) => (0.5, 0.0), }, jaw: match (body.species, body.body_type) { (Grolgar, _) => (7.0, 2.0), @@ -207,6 +223,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (3.0, 0.5), (Kelpie, _) => (1.0, 1.0), (Horse, _) => (4.0, 1.0), + (Barghest, _) => (6.5, -3.0), + (Cattle, Male) => (5.0, -5.5), + (Cattle, Female) => (5.0, -5.0), + (Darkhound, _) => (2.0, -2.0), + (Highland, _) => (5.0, -6.0), + (Yak, _) => (6.0, -8.0), + (Panda, _) => (3.0, -3.0), + (Bear, _) => (3.5, -2.0), }, tail: match (body.species, body.body_type) { (Grolgar, _) => (-11.5, -0.5), @@ -229,6 +253,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (-10.0, 2.0), (Kelpie, _) => (-9.0, 3.0), (Horse, _) => (-9.0, 1.5), + (Barghest, _) => (-7.0, -4.0), + (Cattle, Male) => (-8.0, 3.5), + (Cattle, Female) => (-8.0, 5.5), + (Darkhound, _) => (-9.0, -3.0), + (Highland, _) => (-9.0, 5.0), + (Yak, _) => (-8.0, 2.5), + (Panda, _) => (-9.5, 0.0), + (Bear, _) => (-10.0, -0.5), }, torso_front: match (body.species, body.body_type) { (Grolgar, _) => (10.0, 13.0), @@ -251,6 +283,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (10.0, 14.0), (Kelpie, _) => (10.0, 16.0), (Horse, _) => (7.0, 16.0), + (Barghest, _) => (11.5, 15.5), + (Cattle, Male) => (7.0, 15.5), + (Cattle, Female) => (7.0, 14.5), + (Darkhound, _) => (7.0, 14.0), + (Highland, _) => (7.0, 12.5), + (Yak, _) => (7.0, 15.5), + (Panda, _) => (7.0, 13.5), + (Bear, _) => (7.0, 14.5), }, torso_back: match (body.species, body.body_type) { (Grolgar, _) => (-10.0, 1.5), @@ -273,6 +313,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (-7.0, 0.0), (Kelpie, _) => (-8.0, -1.0), (Horse, _) => (-8.0, -1.5), + (Barghest, _) => (-9.0, -1.5), + (Cattle, Male) => (-8.0, -0.5), + (Cattle, Female) => (-10.0, -2.0), + (Darkhound, _) => (-12.0, 0.5), + (Highland, _) => (-8.0, -0.5), + (Yak, _) => (-8.0, -0.5), + (Panda, _) => (-11.0, -0.5), + (Bear, _) => (-11.0, -0.5), }, ears: match (body.species, body.body_type) { (Grolgar, _) => (5.0, 8.0), @@ -295,6 +343,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (2.5, 5.0), (Kelpie, _) => (1.0, 7.5), (Horse, _) => (1.0, 7.0), + (Barghest, _) => (12.0, -3.0), + (Cattle, Male) => (2.0, -1.5), + (Cattle, Female) => (2.0, -1.5), + (Darkhound, _) => (1.0, 2.5), + (Highland, _) => (2.0, -1.5), + (Yak, _) => (3.0, -5.0), + (Panda, _) => (1.0, 4.0), + (Bear, _) => (1.0, 4.0), }, leg_f: match (body.species, body.body_type) { (Grolgar, _) => (7.5, -5.5, -1.0), @@ -317,6 +373,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (4.0, -4.5, -2.5), (Kelpie, _) => (4.5, -3.5, -3.5), (Horse, _) => (4.5, -2.5, -3.0), + (Barghest, _) => (9.5, 0.0, -2.5), + (Cattle, Male) => (5.5, -2.0, -2.5), + (Cattle, Female) => (5.5, -2.5, -1.0), + (Darkhound, _) => (4.0, -6.5, -2.0), + (Highland, _) => (5.5, -2.5, 0.0), + (Yak, _) => (4.5, -2.0, -1.5), + (Panda, _) => (7.5, -5.5, -2.0), + (Bear, _) => (7.5, -5.5, -2.0), }, leg_b: match (body.species, body.body_type) { (Grolgar, _) => (6.0, -6.5, -4.0), @@ -339,6 +403,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (3.5, -7.5, -3.5), (Kelpie, _) => (3.5, -7.0, -2.5), (Horse, _) => (3.5, -7.0, -2.0), + (Barghest, _) => (7.0, -3.5, -5.5), + (Cattle, Male) => (4.0, -7.0, -1.0), + (Cattle, Female) => (4.0, -6.5, 0.0), + (Darkhound, _) => (4.0, -6.5, -3.0), + (Highland, _) => (4.5, -7.0, 0.0), + (Yak, _) => (4.5, -6.0, -1.0), + (Panda, _) => (7.0, -7.0, -2.0), + (Bear, _) => (6.5, -6.5, -2.0), }, feet_f: match (body.species, body.body_type) { (Grolgar, _) => (0.0, 0.0, -4.0), @@ -361,6 +433,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (-0.5, 0.0, -3.5), (Kelpie, _) => (-0.5, 0.5, -4.5), (Horse, _) => (-0.5, 0.5, -5.0), + (Barghest, _) => (2.0, 2.5, -6.0), + (Cattle, Male) => (-2.5, 1.0, -5.0), + (Cattle, Female) => (-1.5, 0.5, -5.5), + (Darkhound, _) => (0.0, 0.5, -4.0), + (Highland, _) => (-0.5, 0.5, -4.5), + (Yak, _) => (-0.5, 0.0, -5.0), + (Panda, _) => (-1.0, 2.0, -4.5), + (Bear, _) => (0.0, 2.0, -5.5), }, feet_b: match (body.species, body.body_type) { (Grolgar, _) => (0.5, -1.5, -3.0), @@ -383,6 +463,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (-0.5, -1.5, -3.5), (Kelpie, _) => (0.5, -0.5, -3.5), (Horse, _) => (0.5, -1.5, -3.5), + (Barghest, _) => (0.5, 1.0, -4.5), + (Cattle, Male) => (-0.5, -0.5, -5.0), + (Cattle, Female) => (-0.5, -1.0, -3.5), + (Darkhound, _) => (0.0, -1.0, -3.5), + (Highland, _) => (-0.5, -0.5, -3.0), + (Yak, _) => (-0.5, -0.5, -5.0), + (Panda, _) => (-0.5, 0.5, -5.0), + (Bear, _) => (0.5, 0.5, -6.0), }, scaler: match (body.species, body.body_type) { (Grolgar, _) => (1.3), @@ -393,6 +481,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tiger, _) => (1.2), (Catoblepas, _) => (1.3), (Roshwalr, _) => (1.2), + (Barghest, _) => (1.3), _ => (1.0), }, startangle: match (body.species, body.body_type) { @@ -405,6 +494,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (-0.5), (Bonerattler, _) => (-0.7), (Roshwalr, _) => (-0.3), + (Barghest, _) => (-0.5), _ => (0.0), }, tempo: match (body.species, body.body_type) { @@ -423,6 +513,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Zebra, _) => (0.85), (Kelpie, _) => (0.85), (Horse, _) => (0.85), + (Barghest, _) => (0.95), + (Darkhound, _) => (1.1), _ => (1.0), }, spring: match (body.species, body.body_type) { @@ -441,6 +533,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (1.2), (Kelpie, _) => (0.95), (Horse, _) => (0.85), + (Darkhound, _) => (1.2), _ => (1.0), }, feed: match (body.species, body.body_type) { diff --git a/world/src/layer/wildlife.rs b/world/src/layer/wildlife.rs index 49b7c1644e..1376a23a74 100644 --- a/world/src/layer/wildlife.rs +++ b/world/src/layer/wildlife.rs @@ -133,13 +133,19 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body( - quadruped_medium::Body::random_with( + .with_body(match rng.gen_range(0, 4) { + 0 => { + quadruped_medium::Body::random_with(rng, &quadruped_medium::Species::Mouflon).into() + }, + 1 => { + quadruped_medium::Body::random_with(rng, &quadruped_medium::Species::Yak).into() + }, + _ => quadruped_medium::Body::random_with( rng, - &quadruped_medium::Species::Mouflon, + &quadruped_medium::Species::Highland, ) .into(), - ) + }) .with_alignment(Alignment::Wild) }, group_size: 1..4, @@ -154,11 +160,9 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( 0 => { bird_medium::Body::random_with(rng, &bird_medium::Species::Eagle).into() }, - 1 => quadruped_low::Body::random_with(rng, &quadruped_low::Species::Asp) + 1 => bird_medium::Body::random_with(rng, &bird_medium::Species::Snowyowl) .into(), - 2 => bird_medium::Body::random_with(rng, &bird_medium::Species::Snowyowl) - .into(), - 3 => quadruped_small::Body { + 2 => quadruped_small::Body { species: quadruped_small::Species::Fox, body_type: quadruped_small::BodyType::Female, } @@ -201,7 +205,12 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( &quadruped_medium::Species::Tarasque, ) .into(), - 1 => { + 1 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Bear, + ) + .into(), + 2 => { theropod::Body::random_with(rng, &theropod::Species::Woodraptor).into() }, _ => quadruped_medium::Body::random_with( @@ -222,7 +231,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..11) { + .with_body(match rng.gen_range(0, 12) { 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Deer, @@ -269,6 +278,10 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( &quadruped_medium::Species::Horse, ) .into(), + 10 => { + quadruped_medium::Body::random_with(rng, &quadruped_medium::Species::Cattle) + .into() + }, _ => bird_medium::Body::random_with(rng, &bird_medium::Species::Chicken) .into(), }) @@ -654,7 +667,9 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( &quadruped_medium::Species::Bonerattler, ) .into(), - 1 => { + 1 => quadruped_low::Body::random_with(rng, &quadruped_low::Species::Asp) + .into(), + 2 => { theropod::Body::random_with(rng, &theropod::Species::Sandraptor).into() }, _ => quadruped_low::Body::random_with( diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index a1807fcbdd..431d66ecc9 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -1017,19 +1017,19 @@ impl Floor { .with_body(comp::Body::QuadrupedMedium( comp::quadruped_medium::Body::random_with( dynamic_rng, - &comp::quadruped_medium::Species::Wolf, + &comp::quadruped_medium::Species::Darkhound, ), )) - .with_name("Tamed Wolf".to_string()) + .with_name("Tamed Darkhound".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), EntityInfo::at(tile_wcenter.map(|e| e as f32)) .with_body(comp::Body::QuadrupedMedium( comp::quadruped_medium::Body::random_with( dynamic_rng, - &comp::quadruped_medium::Species::Wolf, + &comp::quadruped_medium::Species::Darkhound, ), )) - .with_name("Tamed Wolf".to_string()) + .with_name("Tamed Darkhound".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 4 => vec![ From 559ece5ede9768d36b1482a6cc17b8cf6cbb6389 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 14 Jan 2021 00:45:56 +0100 Subject: [PATCH 06/36] More npcs work --- assets/common/npc_names.ron | 34 ++++- .../voxel/biped_large_central_manifest.ron | 60 ++++++++ .../voxel/biped_large_lateral_manifest.ron | 68 +++++++++ .../voxel/biped_small_central_manifest.ron | 132 ++++++++++++++++++ .../voxel/biped_small_lateral_manifest.ron | 108 ++++++++++++++ .../voxel/bird_medium_central_manifest.ron | 20 +-- .../voxel/bird_medium_lateral_manifest.ron | 20 +-- .../voxygen/voxel/npc/basilisk/male/chest.vox | 3 + .../voxel/npc/basilisk/male/foot_bl.vox | 3 + .../voxel/npc/basilisk/male/foot_br.vox | 3 + .../voxel/npc/basilisk/male/foot_fl.vox | 3 + .../voxel/npc/basilisk/male/foot_fr.vox | 3 + .../voxel/npc/basilisk/male/head_lower.vox | 3 + .../voxel/npc/basilisk/male/head_upper.vox | 3 + .../voxygen/voxel/npc/basilisk/male/jaw.vox | 3 + .../voxel/npc/basilisk/male/tail_front.vox | 3 + .../voxel/npc/basilisk/male/tail_rear.vox | 3 + .../voxygen/voxel/npc/dog/female/foot_br.vox | 2 +- assets/voxygen/voxel/npc/dog/female/tail.vox | 2 +- assets/voxygen/voxel/npc/dog/male/foot_br.vox | 2 +- assets/voxygen/voxel/npc/dog/male/tail.vox | 2 +- .../voxygen/voxel/npc/gnarling/male/chest.vox | 3 + .../voxel/npc/gnarling/male/dagger.vox | 3 + .../voxel/npc/gnarling/male/foot_l.vox | 3 + .../voxel/npc/gnarling/male/foot_r.vox | 3 + .../voxel/npc/gnarling/male/hand_l.vox | 3 + .../voxel/npc/gnarling/male/hand_r.vox | 3 + .../voxygen/voxel/npc/gnarling/male/head.vox | 3 + .../voxel/npc/gnarling/male/main_hand.vox | 3 + .../voxel/npc/gnarling/male/shorts.vox | 3 + .../voxygen/voxel/npc/gnarling/male/tail.vox | 3 + assets/voxygen/voxel/npc/kappa/male/chest.vox | 3 + .../voxygen/voxel/npc/kappa/male/foot_l.vox | 3 + .../voxygen/voxel/npc/kappa/male/foot_r.vox | 3 + .../voxygen/voxel/npc/kappa/male/hand_l.vox | 3 + .../voxygen/voxel/npc/kappa/male/hand_r.vox | 3 + assets/voxygen/voxel/npc/kappa/male/head.vox | 3 + .../voxygen/voxel/npc/kappa/male/shorts.vox | 3 + assets/voxygen/voxel/npc/kappa/male/tail.vox | 3 + .../voxel/npc/mandragora/male/chest.vox | 3 + .../voxel/npc/mandragora/male/foot_l.vox | 3 + .../voxel/npc/mandragora/male/foot_r.vox | 3 + .../voxel/npc/mandragora/male/hand_l.vox | 3 + .../voxel/npc/mandragora/male/hand_r.vox | 3 + .../voxel/npc/mandragora/male/shorts.vox | 3 + .../voxygen/voxel/npc/minotaur/male/axe.vox | 3 + .../voxel/npc/minotaur/male/foot_l.vox | 3 + .../voxel/npc/minotaur/male/foot_r.vox | 3 + .../voxel/npc/minotaur/male/hand_l.vox | 3 + .../voxel/npc/minotaur/male/hand_r.vox | 3 + .../voxygen/voxel/npc/minotaur/male/head.vox | 3 + .../voxygen/voxel/npc/minotaur/male/leg_l.vox | 3 + .../voxygen/voxel/npc/minotaur/male/leg_r.vox | 3 + .../voxel/npc/minotaur/male/shoulder_l.vox | 3 + .../voxel/npc/minotaur/male/shoulder_r.vox | 3 + .../voxygen/voxel/npc/minotaur/male/tail.vox | 3 + .../voxel/npc/minotaur/male/torso_lower.vox | 3 + .../voxel/npc/minotaur/male/torso_upper.vox | 3 + assets/voxygen/voxel/npc/owl/female/head.vox | 3 + assets/voxygen/voxel/npc/owl/female/leg_l.vox | 3 + assets/voxygen/voxel/npc/owl/female/leg_r.vox | 3 + assets/voxygen/voxel/npc/owl/female/tail.vox | 3 + assets/voxygen/voxel/npc/owl/female/torso.vox | 3 + .../voxygen/voxel/npc/owl/female/wing_l.vox | 3 + .../voxygen/voxel/npc/owl/female/wing_r.vox | 3 + .../voxel/npc/{snowyowl => owl}/male/head.vox | 0 .../npc/{snowyowl => owl}/male/leg_l.vox | 0 .../npc/{snowyowl => owl}/male/leg_r.vox | 0 .../voxel/npc/{snowyowl => owl}/male/tail.vox | 0 .../npc/{snowyowl => owl}/male/torso.vox | 0 .../npc/{snowyowl => owl}/male/wing_l.vox | 0 .../npc/{snowyowl => owl}/male/wing_r.vox | 0 .../voxel/npc/sunlizard/male/chest_back.vox | 3 + .../voxel/npc/sunlizard/male/chest_front.vox | 3 + .../voxel/npc/sunlizard/male/foot_l.vox | 3 + .../voxel/npc/sunlizard/male/foot_r.vox | 3 + .../voxel/npc/sunlizard/male/hand_l.vox | 3 + .../voxel/npc/sunlizard/male/hand_r.vox | 3 + .../voxygen/voxel/npc/sunlizard/male/head.vox | 3 + .../voxygen/voxel/npc/sunlizard/male/jaw.vox | 3 + .../voxel/npc/sunlizard/male/leg_l.vox | 3 + .../voxel/npc/sunlizard/male/leg_r.vox | 3 + .../voxygen/voxel/npc/sunlizard/male/neck.vox | 3 + .../voxel/npc/sunlizard/male/tail_back.vox | 3 + .../voxel/npc/sunlizard/male/tail_front.vox | 3 + .../voxel/quadruped_low_central_manifest.ron | 52 +++++++ .../voxel/quadruped_low_lateral_manifest.ron | 52 +++++-- .../quadruped_small_central_manifest.ron | 28 ++++ .../quadruped_small_lateral_manifest.ron | 36 +++++ .../voxel/theropod_central_manifest.ron | 60 ++++++++ .../voxel/theropod_lateral_manifest.ron | 52 +++++++ common/src/comp/body.rs | 1 + common/src/comp/body/biped_large.rs | 6 +- common/src/comp/body/biped_small.rs | 14 +- common/src/comp/body/bird_medium.rs | 8 +- common/src/comp/body/quadruped_low.rs | 6 +- common/src/comp/body/quadruped_small.rs | 6 +- common/src/comp/body/theropod.rs | 6 +- common/src/comp/inventory/loadout_builder.rs | 5 + common/src/states/utils.rs | 1 + voxygen/anim/src/biped_large/mod.rs | 13 +- voxygen/anim/src/biped_small/mod.rs | 18 +++ voxygen/anim/src/bird_medium/mod.rs | 17 ++- voxygen/anim/src/quadruped_low/mod.rs | 8 ++ voxygen/anim/src/quadruped_medium/idle.rs | 6 +- voxygen/anim/src/quadruped_small/mod.rs | 5 + voxygen/anim/src/theropod/idle.rs | 2 +- voxygen/anim/src/theropod/mod.rs | 11 ++ voxygen/src/hud/mod.rs | 2 +- world/src/layer/wildlife.rs | 30 ++-- 110 files changed, 1025 insertions(+), 71 deletions(-) create mode 100644 assets/voxygen/voxel/npc/basilisk/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/basilisk/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/basilisk/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/basilisk/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/basilisk/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/basilisk/male/head_lower.vox create mode 100644 assets/voxygen/voxel/npc/basilisk/male/head_upper.vox create mode 100644 assets/voxygen/voxel/npc/basilisk/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/basilisk/male/tail_front.vox create mode 100644 assets/voxygen/voxel/npc/basilisk/male/tail_rear.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/dagger.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/head.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/main_hand.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/shorts.vox create mode 100644 assets/voxygen/voxel/npc/gnarling/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/kappa/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/kappa/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/kappa/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/kappa/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/kappa/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/kappa/male/head.vox create mode 100644 assets/voxygen/voxel/npc/kappa/male/shorts.vox create mode 100644 assets/voxygen/voxel/npc/kappa/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/mandragora/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/mandragora/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/mandragora/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/mandragora/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/mandragora/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/mandragora/male/shorts.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/axe.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/head.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/shoulder_l.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/shoulder_r.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/torso_lower.vox create mode 100644 assets/voxygen/voxel/npc/minotaur/male/torso_upper.vox create mode 100644 assets/voxygen/voxel/npc/owl/female/head.vox create mode 100644 assets/voxygen/voxel/npc/owl/female/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/owl/female/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/owl/female/tail.vox create mode 100644 assets/voxygen/voxel/npc/owl/female/torso.vox create mode 100644 assets/voxygen/voxel/npc/owl/female/wing_l.vox create mode 100644 assets/voxygen/voxel/npc/owl/female/wing_r.vox rename assets/voxygen/voxel/npc/{snowyowl => owl}/male/head.vox (100%) rename assets/voxygen/voxel/npc/{snowyowl => owl}/male/leg_l.vox (100%) rename assets/voxygen/voxel/npc/{snowyowl => owl}/male/leg_r.vox (100%) rename assets/voxygen/voxel/npc/{snowyowl => owl}/male/tail.vox (100%) rename assets/voxygen/voxel/npc/{snowyowl => owl}/male/torso.vox (100%) rename assets/voxygen/voxel/npc/{snowyowl => owl}/male/wing_l.vox (100%) rename assets/voxygen/voxel/npc/{snowyowl => owl}/male/wing_r.vox (100%) create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/chest_front.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/head.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/tail_back.vox create mode 100644 assets/voxygen/voxel/npc/sunlizard/male/tail_front.vox diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 6786fc1517..be28efa0fd 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -745,6 +745,10 @@ hare: ( keyword: "hare", generic: "Hare" + ), + dog: ( + keyword: "dog", + generic: "Dog" ) ) ), @@ -776,9 +780,9 @@ keyword: "eagle", generic: "Eagle" ), - snowyowl: ( - keyword: "snowyowl", - generic: "Snowy Owl" + owl: ( + keyword: "owl", + generic: "Owl" ), parrot: ( keyword: "parrot", @@ -837,6 +841,10 @@ mindflayer: ( keyword: "mindflayer", generic: "Mindflayer" + ), + minotaur: ( + keyword: "minotaur", + generic: "Minotaur" ) ) ), @@ -885,6 +893,10 @@ raptor_wood: ( keyword: "raptor_wood", generic: "Wood Raptor" + ), + sunlizard: ( + keyword: "sunlizard", + generic: "Sun Lizard" ) ) ), @@ -928,6 +940,18 @@ adlet: ( keyword: "adlet", generic: "Adlet" + ), + gnarling: ( + keyword: "gnarling", + generic: "Gnarling" + ), + mandragora: ( + keyword: "mandragora", + generic: "Mandragora" + ), + kappa: ( + keyword: "kappa", + generic: "Kappa" ) ) ), @@ -1021,6 +1045,10 @@ lavadrake: ( keyword: "lavadrake", generic: "Lava Drake" + ), + basilisk: ( + keyword: "basilisk", + generic: "Basilisk" ) ) ) diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index 1c61fc917d..e3415df554 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -599,4 +599,64 @@ central: ("weapon.staff.firestaff_mindflayer"), ) ), + (Minotaur, Male): ( + head: ( + offset: (-6.5, 0.0, -8.0), + central: ("npc.minotaur.male.head"), + ), + torso_upper: ( + offset: (-8.5, -8.0, -10.0), + central: ("npc.minotaur.male.torso_upper"), + ), + torso_lower: ( + offset: (-5.5, -5.5, -14.0), + central: ("npc.minotaur.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-1.5, -17.0, -8.0), + central: ("npc.minotaur.male.tail"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + main: ( + offset: (-5.5, -3.5, -4.0), + central: ("weapon.staff.firestaff_mindflayer"), + ) + ), + (Minotaur, Female): ( + head: ( + offset: (-6.5, 0.0, -8.0), + central: ("npc.minotaur.male.head"), + ), + torso_upper: ( + offset: (-8.5, -8.0, -10.0), + central: ("npc.minotaur.male.torso_upper"), + ), + torso_lower: ( + offset: (-5.5, -5.5, -14.0), + central: ("npc.minotaur.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-1.5, -17.0, -8.0), + central: ("npc.minotaur.male.tail"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + main: ( + offset: (-5.5, -3.5, -4.0), + central: ("weapon.staff.firestaff_mindflayer"), + ) + ), }) \ 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 af538c5c72..51d7b8bc17 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -679,4 +679,72 @@ lateral: ("npc.mindflayer.male.foot_r"), ) ), + (Minotaur, Male): ( + shoulder_l: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.minotaur.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.minotaur.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -4.5, -14.0), + lateral: ("npc.minotaur.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -4.5, -14.0), + lateral: ("npc.minotaur.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.minotaur.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.minotaur.male.leg_r"), + ), + foot_l: ( + offset: (-3.5, -9.0, -5.0), + lateral: ("npc.minotaur.male.foot_l"), + ), + foot_r: ( + offset: (-3.5, -9.0, -5.0), + lateral: ("npc.minotaur.male.foot_r"), + ) + ), + (Minotaur, Female): ( + shoulder_l: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.minotaur.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.minotaur.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -4.5, -14.0), + lateral: ("npc.minotaur.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -4.5, -14.0), + lateral: ("npc.minotaur.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.minotaur.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.minotaur.male.leg_r"), + ), + foot_l: ( + offset: (-3.5, -9.0, -5.0), + lateral: ("npc.minotaur.male.foot_l"), + ), + foot_r: ( + offset: (-3.5, -9.0, -5.0), + lateral: ("npc.minotaur.male.foot_r"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_small_central_manifest.ron b/assets/voxygen/voxel/biped_small_central_manifest.ron index 86d077e456..53bb7fdf2e 100644 --- a/assets/voxygen/voxel/biped_small_central_manifest.ron +++ b/assets/voxygen/voxel/biped_small_central_manifest.ron @@ -131,4 +131,136 @@ central: ("weapon.spear.adlet"), ), ), + (Gnarling, Male): ( + head: ( + offset: (-6.5, -5.5, -4.5), + central: ("npc.gnarling.male.head"), + ), + chest: ( + offset: (-4.5, -3.5, -2.5), + central: ("npc.gnarling.male.chest"), + ), + shorts: ( + offset: (-3.5, -3.0, -2.5), + central: ("npc.gnarling.male.shorts"), + ), + tail: ( + offset: (-1.5, -13.0, -3.0), + central: ("npc.gnarling.male.tail"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.adlet"), + ), + ), + (Gnarling, Female): ( + head: ( + offset: (-6.5, -5.5, -4.5), + central: ("npc.gnarling.male.head"), + ), + chest: ( + offset: (-4.5, -3.5, -2.5), + central: ("npc.gnarling.male.chest"), + ), + shorts: ( + offset: (-3.5, -3.0, -2.5), + central: ("npc.gnarling.male.shorts"), + ), + tail: ( + offset: (-1.5, -13.0, -3.0), + central: ("npc.gnarling.male.tail"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.adlet"), + ), + ), + (Mandragora, Male): ( + head: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + chest: ( + offset: (-11.0, -11.0, -6.5), + central: ("npc.mandragora.male.chest"), + ), + shorts: ( + offset: (-3.0, -3.0, -1.0), + central: ("npc.mandragora.male.shorts"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.adlet"), + ), + ), + (Mandragora, Female): ( + head: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + chest: ( + offset: (-11.0, -11.0, -6.5), + central: ("npc.mandragora.male.chest"), + ), + shorts: ( + offset: (-3.0, -3.0, -1.0), + central: ("npc.mandragora.male.shorts"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.adlet"), + ), + ), + (Kappa, Male): ( + head: ( + offset: (-4.5, -5.0, -4.5), + central: ("npc.kappa.male.head"), + ), + chest: ( + offset: (-6.5, -8.0, -7.0), + central: ("npc.kappa.male.chest"), + ), + shorts: ( + offset: (-3.5, -4.0, -1.5), + central: ("npc.kappa.male.shorts"), + ), + tail: ( + offset: (-2.5, -10.0, -5.0), + central: ("npc.kappa.male.tail"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.adlet"), + ), + ), + (Kappa, Female): ( + head: ( + offset: (-4.5, -5.0, -4.5), + central: ("npc.kappa.male.head"), + ), + chest: ( + offset: (-6.5, -8.0, -7.0), + central: ("npc.kappa.male.chest"), + ), + shorts: ( + offset: (-3.5, -4.0, -1.5), + central: ("npc.kappa.male.shorts"), + ), + tail: ( + offset: (-2.5, -10.0, -5.0), + central: ("npc.kappa.male.tail"), + ), + main: ( + offset: (-0.5, -7.5, -5.0), + central: ("weapon.spear.adlet"), + ), + ), }) diff --git a/assets/voxygen/voxel/biped_small_lateral_manifest.ron b/assets/voxygen/voxel/biped_small_lateral_manifest.ron index edca8bc940..d2fae5454e 100644 --- a/assets/voxygen/voxel/biped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_small_lateral_manifest.ron @@ -107,4 +107,112 @@ lateral: ("npc.adlet.male.foot_r"), ), ), + (Gnarling, Male): ( + hand_l: ( + offset: (-1.5, -1.5, -7.0), + lateral: ("npc.gnarling.male.hand_l"), + ), + hand_r: ( + offset: (-1.5, -1.5, -7.0), + lateral: ("npc.gnarling.male.hand_r"), + ), + foot_l: ( + offset: (-1.0, -2.0, -5.0), + lateral: ("npc.gnarling.male.foot_l"), + ), + foot_r: ( + offset: (-1.0, -2.0, -5.0), + lateral: ("npc.gnarling.male.foot_r"), + ), + ), + (Gnarling, Female): ( + hand_l: ( + offset: (-1.5, -1.5, -7.0), + lateral: ("npc.gnarling.male.hand_l"), + ), + hand_r: ( + offset: (-1.5, -1.5, -7.0), + lateral: ("npc.gnarling.male.hand_r"), + ), + foot_l: ( + offset: (-1.0, -2.0, -5.0), + lateral: ("npc.gnarling.male.foot_l"), + ), + foot_r: ( + offset: (-1.0, -2.0, -5.0), + lateral: ("npc.gnarling.male.foot_r"), + ), + ), + (Mandragora, Male): ( + hand_l: ( + offset: (-2.0, -1.5, -7.0), + lateral: ("npc.mandragora.male.hand_l"), + ), + hand_r: ( + offset: (-2.0, -1.5, -7.0), + lateral: ("npc.mandragora.male.hand_r"), + ), + foot_l: ( + offset: (-1.0, -1.5, -4.0), + lateral: ("npc.mandragora.male.foot_l"), + ), + foot_r: ( + offset: (-1.0, -1.5, -4.0), + lateral: ("npc.mandragora.male.foot_r"), + ), + ), + (Mandragora, Female): ( + hand_l: ( + offset: (-2.0, -1.5, -7.0), + lateral: ("npc.mandragora.male.hand_l"), + ), + hand_r: ( + offset: (-2.0, -1.5, -7.0), + lateral: ("npc.mandragora.male.hand_r"), + ), + foot_l: ( + offset: (-1.0, -1.5, -4.0), + lateral: ("npc.mandragora.male.foot_l"), + ), + foot_r: ( + offset: (-1.0, -1.5, -4.0), + lateral: ("npc.mandragora.male.foot_r"), + ), + ), + (Kappa, Male): ( + hand_l: ( + offset: (-3.0, -2.5, -10.0), + lateral: ("npc.kappa.male.hand_l"), + ), + hand_r: ( + offset: (-3.0, -2.5, -10.0), + lateral: ("npc.kappa.male.hand_r"), + ), + foot_l: ( + offset: (-2.5, -3.0, -9.0), + lateral: ("npc.kappa.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -3.0, -9.0), + lateral: ("npc.kappa.male.foot_r"), + ), + ), + (Kappa, Female): ( + hand_l: ( + offset: (-3.0, -2.5, -10.0), + lateral: ("npc.kappa.male.hand_l"), + ), + hand_r: ( + offset: (-3.0, -2.5, -10.0), + lateral: ("npc.kappa.male.hand_r"), + ), + foot_l: ( + offset: (-2.5, -3.0, -9.0), + lateral: ("npc.kappa.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -3.0, -9.0), + lateral: ("npc.kappa.male.foot_r"), + ), + ), }) diff --git a/assets/voxygen/voxel/bird_medium_central_manifest.ron b/assets/voxygen/voxel/bird_medium_central_manifest.ron index 87bf41bdf7..ee00459527 100644 --- a/assets/voxygen/voxel/bird_medium_central_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_central_manifest.ron @@ -139,32 +139,32 @@ central: ("npc.eagle.male.tail"), ) ), - (Snowyowl, Male): ( + (Owl, Male): ( head: ( offset: (-3.5, -4.5, -4.0), - central: ("npc.snowyowl.male.head"), + central: ("npc.owl.male.head"), ), torso: ( offset: (-3.5, -5.0, -3.0), - central: ("npc.snowyowl.male.torso"), + central: ("npc.owl.male.torso"), ), tail: ( offset: (-2.5, -3.0, -2.0), - central: ("npc.snowyowl.male.tail"), + central: ("npc.owl.male.tail"), ) ), - (Snowyowl, Female): ( + (Owl, Female): ( head: ( - offset: (-3.5, -4.5, -4.0), - central: ("npc.snowyowl.male.head"), + offset: (-4.5, -4.5, -4.5), + central: ("npc.owl.female.head"), ), torso: ( - offset: (-3.5, -5.0, -3.0), - central: ("npc.snowyowl.male.torso"), + offset: (-3.5, -5.0, -3.5), + central: ("npc.owl.female.torso"), ), tail: ( offset: (-2.5, -3.0, -2.0), - central: ("npc.snowyowl.male.tail"), + central: ("npc.owl.female.tail"), ) ), (Parrot, Male): ( diff --git a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron index 35116121e2..2147d9d4e4 100644 --- a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron @@ -179,40 +179,40 @@ lateral: ("npc.eagle.male.leg_r"), ) ), - (Snowyowl, Male): ( + (Owl, Male): ( wing_l: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.snowyowl.male.wing_l"), + lateral: ("npc.owl.male.wing_l"), ), wing_r: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.snowyowl.male.wing_r"), + lateral: ("npc.owl.male.wing_r"), ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.snowyowl.male.leg_l"), + lateral: ("npc.owl.male.leg_l"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.snowyowl.male.leg_r"), + lateral: ("npc.owl.male.leg_r"), ) ), - (Snowyowl, Female): ( + (Owl, Female): ( wing_l: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.snowyowl.male.wing_l"), + lateral: ("npc.owl.female.wing_l"), ), wing_r: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.snowyowl.male.wing_r"), + lateral: ("npc.owl.female.wing_r"), ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.snowyowl.male.leg_l"), + lateral: ("npc.owl.female.leg_l"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.snowyowl.male.leg_r"), + lateral: ("npc.owl.female.leg_r"), ) ), (Parrot, Male): ( diff --git a/assets/voxygen/voxel/npc/basilisk/male/chest.vox b/assets/voxygen/voxel/npc/basilisk/male/chest.vox new file mode 100644 index 0000000000..c4a395dbaa --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41dc59bb7c25502be8c91377a392da091e2eefc34a90f706fbe403279291352f +size 10876 diff --git a/assets/voxygen/voxel/npc/basilisk/male/foot_bl.vox b/assets/voxygen/voxel/npc/basilisk/male/foot_bl.vox new file mode 100644 index 0000000000..bc87d80914 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39b32c142cb3e6d3dc186fd9f95338c5b4f24ff471a0231dee87da6eacee9bc3 +size 2920 diff --git a/assets/voxygen/voxel/npc/basilisk/male/foot_br.vox b/assets/voxygen/voxel/npc/basilisk/male/foot_br.vox new file mode 100644 index 0000000000..e9461a2bb5 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9d4c2c39ec3b08cebee105c24edf9cc5b11b0b3f156860a5cbb0960ff59817a +size 2920 diff --git a/assets/voxygen/voxel/npc/basilisk/male/foot_fl.vox b/assets/voxygen/voxel/npc/basilisk/male/foot_fl.vox new file mode 100644 index 0000000000..5cff2571c2 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a109cb737e4bb7bca5f1e1c3567e77dd592206a48cdaddbf3dbe9b6dddef598 +size 3088 diff --git a/assets/voxygen/voxel/npc/basilisk/male/foot_fr.vox b/assets/voxygen/voxel/npc/basilisk/male/foot_fr.vox new file mode 100644 index 0000000000..3002f165c1 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:885bd8acd9ad061d3bcbdd37f21075bc54f2138387e25caf95e4cedf4123f184 +size 3088 diff --git a/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox b/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox new file mode 100644 index 0000000000..29bcbca5d8 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82f16f69a291b05f3d6aab73aaa13a9addd13dc26d9ffc4beceb739a9933f3e7 +size 7428 diff --git a/assets/voxygen/voxel/npc/basilisk/male/head_upper.vox b/assets/voxygen/voxel/npc/basilisk/male/head_upper.vox new file mode 100644 index 0000000000..4a64783e9d --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/head_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dc95681a5e78dbbd5cbca2d4e6763c7b677e3e011bc97f3b79337c32519fda6 +size 3756 diff --git a/assets/voxygen/voxel/npc/basilisk/male/jaw.vox b/assets/voxygen/voxel/npc/basilisk/male/jaw.vox new file mode 100644 index 0000000000..6966ed9c1f --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b35a9d21875eea4afb5a018d436523e16d00c880e24502cef440cc37780f8f58 +size 1552 diff --git a/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox b/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox new file mode 100644 index 0000000000..df5e608380 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b032da5cb40709480fe3850d78beb5c290caf84a2fc57a0559bb50ddceffb69 +size 4416 diff --git a/assets/voxygen/voxel/npc/basilisk/male/tail_rear.vox b/assets/voxygen/voxel/npc/basilisk/male/tail_rear.vox new file mode 100644 index 0000000000..88d41f14a2 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/tail_rear.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b01b1e3e492edd539f3af4469bed8f44df2afa4eaec04222fb790a8edcfd2e8 +size 2772 diff --git a/assets/voxygen/voxel/npc/dog/female/foot_br.vox b/assets/voxygen/voxel/npc/dog/female/foot_br.vox index 8551b115c6..d60f068cd3 100644 --- a/assets/voxygen/voxel/npc/dog/female/foot_br.vox +++ b/assets/voxygen/voxel/npc/dog/female/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:290ee67869c332d28c1147bdf36abef069e7159f47533eb42b4a9deaaf3ac8eb +oid sha256:ff984e3bc856c16cd960b12f75a66f2f766d9313ed84e4be556aebd983b87a9c size 1300 diff --git a/assets/voxygen/voxel/npc/dog/female/tail.vox b/assets/voxygen/voxel/npc/dog/female/tail.vox index e9d802e638..0fd0228784 100644 --- a/assets/voxygen/voxel/npc/dog/female/tail.vox +++ b/assets/voxygen/voxel/npc/dog/female/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b75e503a3742c3f2663bfdf404626c49baa9f5aad31409927d787aa28813d90e +oid sha256:2a46645ac8a712f46be63a7b3c9e167f06a064a42c109d3dc6606a7c4f34b3b1 size 1432 diff --git a/assets/voxygen/voxel/npc/dog/male/foot_br.vox b/assets/voxygen/voxel/npc/dog/male/foot_br.vox index d9e302c8d5..1a3bfec4a9 100644 --- a/assets/voxygen/voxel/npc/dog/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/dog/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61c2a707098f9a70032d511f23eb0c4b2488bd0a1ae64cb006e8cde8b70464c4 +oid sha256:2b71e6540b86675be630cf7e1f606ec2973324490f3e94e143cf8cc3b03e5520 size 1300 diff --git a/assets/voxygen/voxel/npc/dog/male/tail.vox b/assets/voxygen/voxel/npc/dog/male/tail.vox index 41ecc7221c..54b15d3263 100644 --- a/assets/voxygen/voxel/npc/dog/male/tail.vox +++ b/assets/voxygen/voxel/npc/dog/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f38f5c494eca27c9eecf1e9a0c7ccd17bd675ea8224be67800665ccc4e8e3f1 +oid sha256:37781613ca1861357c62686c87ec887ae175b3dcc013dfc113d3fb3c5a977757 size 1432 diff --git a/assets/voxygen/voxel/npc/gnarling/male/chest.vox b/assets/voxygen/voxel/npc/gnarling/male/chest.vox new file mode 100644 index 0000000000..923c912ca7 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6922bb143dee2491811e455ad7f03db1a8658065eb1243065d46265d7a860f12 +size 1648 diff --git a/assets/voxygen/voxel/npc/gnarling/male/dagger.vox b/assets/voxygen/voxel/npc/gnarling/male/dagger.vox new file mode 100644 index 0000000000..d326f3eb98 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/dagger.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82482290ed4562e1b82b21d59008967448f08e58229b69e2cdfa614b717d06ee +size 1312 diff --git a/assets/voxygen/voxel/npc/gnarling/male/foot_l.vox b/assets/voxygen/voxel/npc/gnarling/male/foot_l.vox new file mode 100644 index 0000000000..360a342b98 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc85e3a2fbf52bf69230c123ee07ed647af9383e1b099984f4822dc2e4c0daef +size 1188 diff --git a/assets/voxygen/voxel/npc/gnarling/male/foot_r.vox b/assets/voxygen/voxel/npc/gnarling/male/foot_r.vox new file mode 100644 index 0000000000..95aff98875 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c801957433abef8df299de07b63ba4664599a17236418a7f5b89fcb5a293190 +size 1188 diff --git a/assets/voxygen/voxel/npc/gnarling/male/hand_l.vox b/assets/voxygen/voxel/npc/gnarling/male/hand_l.vox new file mode 100644 index 0000000000..7ba41aa539 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:576881ca227ca535284e13cb707604c1f8a9e79113633943f901cc544300828b +size 1264 diff --git a/assets/voxygen/voxel/npc/gnarling/male/hand_r.vox b/assets/voxygen/voxel/npc/gnarling/male/hand_r.vox new file mode 100644 index 0000000000..a85db94247 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce0fc26d4f82c65c91b5089db9bafc7b8dddf4f9f1758ed35b094b52048f7198 +size 1264 diff --git a/assets/voxygen/voxel/npc/gnarling/male/head.vox b/assets/voxygen/voxel/npc/gnarling/male/head.vox new file mode 100644 index 0000000000..ac64a6de7c --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a4c4c9187984eb5ed3d806ee0769d824c3fe070e42da150d9c43383e958a849 +size 2852 diff --git a/assets/voxygen/voxel/npc/gnarling/male/main_hand.vox b/assets/voxygen/voxel/npc/gnarling/male/main_hand.vox new file mode 100644 index 0000000000..e588b21338 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/main_hand.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e24a90f1ac457addf71e77adb60a3917fdcd0f950a52c59b3d0b92bcd5c6e29f +size 1308 diff --git a/assets/voxygen/voxel/npc/gnarling/male/shorts.vox b/assets/voxygen/voxel/npc/gnarling/male/shorts.vox new file mode 100644 index 0000000000..3644927ab1 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/shorts.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2468a57f1e74849220e28c9734ac0413be829620e13a722e078181c707344b94 +size 1456 diff --git a/assets/voxygen/voxel/npc/gnarling/male/tail.vox b/assets/voxygen/voxel/npc/gnarling/male/tail.vox new file mode 100644 index 0000000000..231a776873 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57e6e15ff647b72c3a3420aae6978cd1006a7642c55e4bac94a1595fd64c6a65 +size 1308 diff --git a/assets/voxygen/voxel/npc/kappa/male/chest.vox b/assets/voxygen/voxel/npc/kappa/male/chest.vox new file mode 100644 index 0000000000..deb793ee3c --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:117ec5e77f0a5bdb2a13a942452c2797f12e3a745c255f592a15f8c81a37f7f4 +size 4356 diff --git a/assets/voxygen/voxel/npc/kappa/male/foot_l.vox b/assets/voxygen/voxel/npc/kappa/male/foot_l.vox new file mode 100644 index 0000000000..775285df0b --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20bd3dac180e1457c4c4a4605bd09c231d157a98b0d0e2e32cc072e8a0b10e2e +size 1380 diff --git a/assets/voxygen/voxel/npc/kappa/male/foot_r.vox b/assets/voxygen/voxel/npc/kappa/male/foot_r.vox new file mode 100644 index 0000000000..9f4fcba501 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6867b87be57f6fef7c940c9b04bd767684345b235f29125887dbe4c457842d96 +size 1380 diff --git a/assets/voxygen/voxel/npc/kappa/male/hand_l.vox b/assets/voxygen/voxel/npc/kappa/male/hand_l.vox new file mode 100644 index 0000000000..897502a675 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43b5d50fd9516ac4b9209a6246ce3f452ea327d8c1c439e373c87c5eddc25e7a +size 1448 diff --git a/assets/voxygen/voxel/npc/kappa/male/hand_r.vox b/assets/voxygen/voxel/npc/kappa/male/hand_r.vox new file mode 100644 index 0000000000..8778503bf6 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aff415942d5dfb82e5c4778b633e45b2d65489cb28716dd2752ec066407c786 +size 1448 diff --git a/assets/voxygen/voxel/npc/kappa/male/head.vox b/assets/voxygen/voxel/npc/kappa/male/head.vox new file mode 100644 index 0000000000..27e95a6b04 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:181c563704bedbdbfc41e4c349ff45e806bb39aa429a81551eb4544cef09be40 +size 2260 diff --git a/assets/voxygen/voxel/npc/kappa/male/shorts.vox b/assets/voxygen/voxel/npc/kappa/male/shorts.vox new file mode 100644 index 0000000000..bd68ecda21 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/shorts.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca1531db32117e639b0970c243af1a48114d7e54d8a8e57ca51c28d4f8afca10 +size 1388 diff --git a/assets/voxygen/voxel/npc/kappa/male/tail.vox b/assets/voxygen/voxel/npc/kappa/male/tail.vox new file mode 100644 index 0000000000..b102982ce9 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c54bc787f81103ee047c6421527bc819d4c37c2bd18da898d60e5dcda0ba8cb +size 1436 diff --git a/assets/voxygen/voxel/npc/mandragora/male/chest.vox b/assets/voxygen/voxel/npc/mandragora/male/chest.vox new file mode 100644 index 0000000000..b9c886f54d --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adc0cca7885391bd324c0939136bcc4e6d2e9c0f625d3e71aa6bc8f5daf541b0 +size 2916 diff --git a/assets/voxygen/voxel/npc/mandragora/male/foot_l.vox b/assets/voxygen/voxel/npc/mandragora/male/foot_l.vox new file mode 100644 index 0000000000..3c5b943c0c --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b802de1db55f26caad2cd4903e9e432e58986aece30cc7226060f8469c5d75dd +size 1140 diff --git a/assets/voxygen/voxel/npc/mandragora/male/foot_r.vox b/assets/voxygen/voxel/npc/mandragora/male/foot_r.vox new file mode 100644 index 0000000000..ed48339700 --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f2dfdb8aebde1599b112c74b2f933d7d22cdbdf5f6acc177e2d67fbcd2d1411 +size 1140 diff --git a/assets/voxygen/voxel/npc/mandragora/male/hand_l.vox b/assets/voxygen/voxel/npc/mandragora/male/hand_l.vox new file mode 100644 index 0000000000..6b22fdeb1c --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da48cb2417b90fb79744c5d417af13433138652e8d9fe4b7be2dc890b7729f9b +size 1204 diff --git a/assets/voxygen/voxel/npc/mandragora/male/hand_r.vox b/assets/voxygen/voxel/npc/mandragora/male/hand_r.vox new file mode 100644 index 0000000000..40b638780b --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c07e91da7e73c238d752d0dac970f615e7a467a2970e9046093289985a0d98a +size 1204 diff --git a/assets/voxygen/voxel/npc/mandragora/male/shorts.vox b/assets/voxygen/voxel/npc/mandragora/male/shorts.vox new file mode 100644 index 0000000000..5586767f11 --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/shorts.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e15ea1aa65576683e5a7410c606c5fc1c7e54179c509c39921fcb372ca93d9a5 +size 1232 diff --git a/assets/voxygen/voxel/npc/minotaur/male/axe.vox b/assets/voxygen/voxel/npc/minotaur/male/axe.vox new file mode 100644 index 0000000000..ba51b0efc3 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/axe.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c825d278f673f3b214dd9772faf5d3fab9f69a4dba2ec320a23369140dcd23 +size 3460 diff --git a/assets/voxygen/voxel/npc/minotaur/male/foot_l.vox b/assets/voxygen/voxel/npc/minotaur/male/foot_l.vox new file mode 100644 index 0000000000..47caa357a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4a26f677a27849702c5e5f343ccd94d3a152e2e64bed811c0c373920d22b86e +size 2396 diff --git a/assets/voxygen/voxel/npc/minotaur/male/foot_r.vox b/assets/voxygen/voxel/npc/minotaur/male/foot_r.vox new file mode 100644 index 0000000000..f39dde569f --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:200408f8cab051336d46af40e6a8d49e5dc7790eb9af9549c678b186f1e81109 +size 2396 diff --git a/assets/voxygen/voxel/npc/minotaur/male/hand_l.vox b/assets/voxygen/voxel/npc/minotaur/male/hand_l.vox new file mode 100644 index 0000000000..2cd23866d8 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a3ca0d466d913da7daeb3e8f446137a7bff50533dc91b8dd1df3428e624f976 +size 3516 diff --git a/assets/voxygen/voxel/npc/minotaur/male/hand_r.vox b/assets/voxygen/voxel/npc/minotaur/male/hand_r.vox new file mode 100644 index 0000000000..7acfdfc87d --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a495f547f429243bd0402b706805b8ee8c4e6e453c05f9d78b482c5e6f022a4 +size 3516 diff --git a/assets/voxygen/voxel/npc/minotaur/male/head.vox b/assets/voxygen/voxel/npc/minotaur/male/head.vox new file mode 100644 index 0000000000..a2fa5bf8f1 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dcdc59d4840c072fbdac6b2659612baaa42c0d9d692fe433287ccb8f7fb6d66 +size 3508 diff --git a/assets/voxygen/voxel/npc/minotaur/male/leg_l.vox b/assets/voxygen/voxel/npc/minotaur/male/leg_l.vox new file mode 100644 index 0000000000..38eab76312 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:449cd794ede2a08a5c676e116c03e914e994cf17763713aab8e10aafe683464b +size 1880 diff --git a/assets/voxygen/voxel/npc/minotaur/male/leg_r.vox b/assets/voxygen/voxel/npc/minotaur/male/leg_r.vox new file mode 100644 index 0000000000..8745b79b3d --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4ec77093db6b2824e9d3aabf38370fdc14c52fa7ef86ecbae5596e5e8fc3914 +size 1880 diff --git a/assets/voxygen/voxel/npc/minotaur/male/shoulder_l.vox b/assets/voxygen/voxel/npc/minotaur/male/shoulder_l.vox new file mode 100644 index 0000000000..cc4f4d1b09 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45d5c3765acce825ebbfdb4e2120425daadfb6db3d118a4367e204c22c850795 +size 2324 diff --git a/assets/voxygen/voxel/npc/minotaur/male/shoulder_r.vox b/assets/voxygen/voxel/npc/minotaur/male/shoulder_r.vox new file mode 100644 index 0000000000..1f06ee7d93 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:511cc22935546b3af18c1a66ba56ff78b3cb3ba026827ffc0d8ae94d4cb5ebcd +size 2324 diff --git a/assets/voxygen/voxel/npc/minotaur/male/tail.vox b/assets/voxygen/voxel/npc/minotaur/male/tail.vox new file mode 100644 index 0000000000..b0f953dee9 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc0f9bf26e14774b9446d748f63c10754624d2f2976431092e915a5b9f9dc4d2 +size 1576 diff --git a/assets/voxygen/voxel/npc/minotaur/male/torso_lower.vox b/assets/voxygen/voxel/npc/minotaur/male/torso_lower.vox new file mode 100644 index 0000000000..2205013816 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28f15a3c523f6a3fafb5fbef31787296cb0fe231a6a3f72d21062794e3f6e1ef +size 3036 diff --git a/assets/voxygen/voxel/npc/minotaur/male/torso_upper.vox b/assets/voxygen/voxel/npc/minotaur/male/torso_upper.vox new file mode 100644 index 0000000000..a9e4cff09a --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c61602fb7fc50e5392cebe37a66baf0bb21e1a5642cee3e61a6506ffc109e3fb +size 8356 diff --git a/assets/voxygen/voxel/npc/owl/female/head.vox b/assets/voxygen/voxel/npc/owl/female/head.vox new file mode 100644 index 0000000000..4cdb7bbfb0 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f2bff2796a1ffa725f745ce91d29610a316c420727d1782d408b382be9bf670 +size 2356 diff --git a/assets/voxygen/voxel/npc/owl/female/leg_l.vox b/assets/voxygen/voxel/npc/owl/female/leg_l.vox new file mode 100644 index 0000000000..819fdc1206 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7212dad002db2a10f2370b49d0ab07a5d6be884bd3136f9d4b0caa6af7dc3c76 +size 1196 diff --git a/assets/voxygen/voxel/npc/owl/female/leg_r.vox b/assets/voxygen/voxel/npc/owl/female/leg_r.vox new file mode 100644 index 0000000000..86934442fb --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37e15e29979a22df53d483514de19ee70a10c99f666b5ceca8f1b099369d4d34 +size 1196 diff --git a/assets/voxygen/voxel/npc/owl/female/tail.vox b/assets/voxygen/voxel/npc/owl/female/tail.vox new file mode 100644 index 0000000000..405243c791 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7f190a3e6a8c635f5234f510e1fe59a2471876d4658ef9a2c1dcb7e233e811c +size 1264 diff --git a/assets/voxygen/voxel/npc/owl/female/torso.vox b/assets/voxygen/voxel/npc/owl/female/torso.vox new file mode 100644 index 0000000000..f4c0a0c277 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/torso.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21e64dbdf9e61833c9babf6f9cc78cbbc60b38a6131f88bed8f374f8f632a12b +size 2244 diff --git a/assets/voxygen/voxel/npc/owl/female/wing_l.vox b/assets/voxygen/voxel/npc/owl/female/wing_l.vox new file mode 100644 index 0000000000..a57e7bcdd2 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/wing_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4da1b8df08ab2397b2689204cad3fc6137fcf0c2f830ef18323b0088859997c8 +size 1364 diff --git a/assets/voxygen/voxel/npc/owl/female/wing_r.vox b/assets/voxygen/voxel/npc/owl/female/wing_r.vox new file mode 100644 index 0000000000..ae2d4bb3d3 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/wing_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da50d172a4a9cbb96dbc43d5da0984bcd035351ce32401a13663a98f250c81ab +size 1364 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/head.vox b/assets/voxygen/voxel/npc/owl/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/head.vox rename to assets/voxygen/voxel/npc/owl/male/head.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox b/assets/voxygen/voxel/npc/owl/male/leg_l.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox rename to assets/voxygen/voxel/npc/owl/male/leg_l.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox b/assets/voxygen/voxel/npc/owl/male/leg_r.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox rename to assets/voxygen/voxel/npc/owl/male/leg_r.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/tail.vox b/assets/voxygen/voxel/npc/owl/male/tail.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/tail.vox rename to assets/voxygen/voxel/npc/owl/male/tail.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/torso.vox b/assets/voxygen/voxel/npc/owl/male/torso.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/torso.vox rename to assets/voxygen/voxel/npc/owl/male/torso.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox b/assets/voxygen/voxel/npc/owl/male/wing_l.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox rename to assets/voxygen/voxel/npc/owl/male/wing_l.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox b/assets/voxygen/voxel/npc/owl/male/wing_r.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox rename to assets/voxygen/voxel/npc/owl/male/wing_r.vox diff --git a/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox b/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox new file mode 100644 index 0000000000..6e9341a990 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe0b0c88fab94154e0652ff9ef40c38aee5d3be680d41d1a3721b407d4ed37d5 +size 2020 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/chest_front.vox b/assets/voxygen/voxel/npc/sunlizard/male/chest_front.vox new file mode 100644 index 0000000000..4f8ed6c34c --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/chest_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef55205dc956dabdfc66740c6c89f9390a8929184e44ba7a7765525663a28692 +size 1784 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/foot_l.vox b/assets/voxygen/voxel/npc/sunlizard/male/foot_l.vox new file mode 100644 index 0000000000..efb407e2a1 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bf1b2877e4325004e570bcfdc5bd6e82a96d38e05b003b7f650726893eb5cdc +size 1276 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/foot_r.vox b/assets/voxygen/voxel/npc/sunlizard/male/foot_r.vox new file mode 100644 index 0000000000..657df4c5ce --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a78b69dfca6492afbd5f30eb408c51567dfb14100b9cb63a9a47bb6717c98f7 +size 1276 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/hand_l.vox b/assets/voxygen/voxel/npc/sunlizard/male/hand_l.vox new file mode 100644 index 0000000000..2a6f892ef5 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a61452aa33dc9e2d7d072b7ca32591b64f0c0984ecedc963794843cf82050a5 +size 1228 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/hand_r.vox b/assets/voxygen/voxel/npc/sunlizard/male/hand_r.vox new file mode 100644 index 0000000000..5b6a22e735 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:574f1d1598b12780a16154d3b12b6b50f056cfbeeb51d4b4bcfe3a02c362f786 +size 1228 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/head.vox b/assets/voxygen/voxel/npc/sunlizard/male/head.vox new file mode 100644 index 0000000000..d47e33d01a --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90545e06e5d28f7edca9fac8b25378ca5628a1b0518510ce870b4695079095dd +size 2764 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/jaw.vox b/assets/voxygen/voxel/npc/sunlizard/male/jaw.vox new file mode 100644 index 0000000000..dd51d3b64c --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60ed220b4cf22cfab7cd3ab9577162a0921c4eac4f08a40d0aa7defd04de3b37 +size 1260 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/leg_l.vox b/assets/voxygen/voxel/npc/sunlizard/male/leg_l.vox new file mode 100644 index 0000000000..d3501ac447 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2c28aaa835fbbc4be60de200693512a6ab858313f2e911118b4605feb615e6a +size 1364 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/leg_r.vox b/assets/voxygen/voxel/npc/sunlizard/male/leg_r.vox new file mode 100644 index 0000000000..1b59ffe4d5 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dff4fde9b88060412c5d47b7fcb42480d17e68105c2846571b419566ea789aa9 +size 1364 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/neck.vox b/assets/voxygen/voxel/npc/sunlizard/male/neck.vox new file mode 100644 index 0000000000..a5599ab695 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc3fd83da4b47520c17f4f5a5a79314e71a8bd20d29f70049609b6aed0e47744 +size 1356 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/tail_back.vox b/assets/voxygen/voxel/npc/sunlizard/male/tail_back.vox new file mode 100644 index 0000000000..bf27de199d --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/tail_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9299380e75a045d15e9c4891544efe55b8b28e8e575a812fe3c42dbbe896c8f +size 1440 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/tail_front.vox b/assets/voxygen/voxel/npc/sunlizard/male/tail_front.vox new file mode 100644 index 0000000000..be8d0ca51e --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/tail_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59ce56366b74ffc521d022fe2ebbb5093eaf7c4dea293702ae92b8a7f9e8773f +size 1416 diff --git a/assets/voxygen/voxel/quadruped_low_central_manifest.ron b/assets/voxygen/voxel/quadruped_low_central_manifest.ron index b25366bac1..8ece2226a5 100644 --- a/assets/voxygen/voxel/quadruped_low_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_low_central_manifest.ron @@ -624,4 +624,56 @@ central: ("npc.lavadrake.male.tail_front"), ), ), + (Basilisk, Male): ( + upper: ( + offset: (-5.5, 0.0, -11.0), + central: ("npc.basilisk.male.head_upper"), + ), + lower: ( + offset: (-8.5, 0.0, -4.0), + central: ("npc.basilisk.male.head_lower"), + ), + jaw: ( + offset: (-2.5, 0.0, -15.0), + central: ("npc.basilisk.male.jaw"), + ), + chest: ( + offset: (-6.5, -13.0, -12.5), + central: ("npc.basilisk.male.chest"), + ), + tail_rear: ( + offset: (-3.5, -20.0, -4.0), + central: ("npc.basilisk.male.tail_rear"), + ), + tail_front: ( + offset: (-4.5, -24.0, -7.0), + central: ("npc.basilisk.male.tail_front"), + ), + ), + (Basilisk, Female): ( + upper: ( + offset: (-5.5, 0.0, -11.0), + central: ("npc.basilisk.male.head_upper"), + ), + lower: ( + offset: (-8.5, 0.0, -4.0), + central: ("npc.basilisk.male.head_lower"), + ), + jaw: ( + offset: (-2.5, 0.0, -15.0), + central: ("npc.basilisk.male.jaw"), + ), + chest: ( + offset: (-6.5, -13.0, -12.5), + central: ("npc.basilisk.male.chest"), + ), + tail_rear: ( + offset: (-3.5, -20.0, -4.0), + central: ("npc.basilisk.male.tail_rear"), + ), + tail_front: ( + offset: (-4.5, -24.0, -7.0), + central: ("npc.basilisk.male.tail_front"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron index 8201bdb88b..9ee5695317 100644 --- a/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron @@ -145,37 +145,37 @@ ), (Asp, Male): ( front_left: ( - offset: (-11.0, 0.0, -7.0), + offset: (-17.0, 0.0, -14.0), lateral: ("npc.asp.male.foot_fl"), ), front_right: ( - offset: (0.0, 0.0, -7.0), + offset: (0.0, 0.0, -14.0), lateral: ("npc.asp.male.foot_fr"), ), back_left: ( - offset: (-9.0, 0.0, -7.0), + offset: (-7.5, 0.0, -6.5), lateral: ("npc.asp.male.foot_bl"), ), back_right: ( - offset: (0.0, 0.0, -7.0), + offset: (0.0, 0.0, -6.5), lateral: ("npc.asp.male.foot_br"), ), ), (Asp, Female): ( front_left: ( - offset: (-11.0, 0.0, -7.0), + offset: (-17.0, 0.0, -14.0), lateral: ("npc.asp.male.foot_fl"), ), front_right: ( - offset: (0.0, 0.0, -7.0), + offset: (0.0, 0.0, -14.0), lateral: ("npc.asp.male.foot_fr"), ), back_left: ( - offset: (-9.0, 0.0, -7.0), + offset: (-7.5, 0.0, -6.5), lateral: ("npc.asp.male.foot_bl"), ), back_right: ( - offset: (0.0, 0.0, -7.0), + offset: (0.0, 0.0, -6.5), lateral: ("npc.asp.male.foot_br"), ), ), @@ -431,4 +431,40 @@ lateral: ("npc.lavadrake.male.foot_br"), ), ), + (Basilisk, Male): ( + front_left: ( + offset: (-17.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_fl"), + ), + front_right: ( + offset: (0.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_fr"), + ), + back_left: ( + offset: (-15.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_bl"), + ), + back_right: ( + offset: (0.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_br"), + ), + ), + (Basilisk, Female): ( + front_left: ( + offset: (-17.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_fl"), + ), + front_right: ( + offset: (0.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_fr"), + ), + back_left: ( + offset: (-15.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_bl"), + ), + back_right: ( + offset: (0.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_br"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_small_central_manifest.ron b/assets/voxygen/voxel/quadruped_small_central_manifest.ron index d1a30a5791..823d4eee11 100644 --- a/assets/voxygen/voxel/quadruped_small_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_central_manifest.ron @@ -714,4 +714,32 @@ central: ("npc.hare.female.tail"), ), ), + (Dog, Male):( + head: ( + offset: (-3.5, 0.0, -4.0), + central: ("npc.dog.male.head"), + ), + chest: ( + offset: (-2.5, -5.5, -3.5), + central: ("npc.dog.male.chest"), + ), + tail: ( + offset: (-1.5, -7.0, -1.0), + central: ("npc.dog.male.tail"), + ), + ), + (Dog, Female):( + head: ( + offset: (-3.5, 0.0, -4.0), + central: ("npc.dog.female.head"), + ), + chest: ( + offset: (-2.5, -5.5, -3.5), + central: ("npc.dog.female.chest"), + ), + tail: ( + offset: (-1.5, -7.0, -1.0), + central: ("npc.dog.female.tail"), + ), + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron index 9ba07314aa..f04f164dd4 100644 --- a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron @@ -917,4 +917,40 @@ lateral: ("npc.hare.female.foot_br"), ), ), + (Dog, Male): ( + left_front: ( + offset: (-1.0, -1.5, -6.0), + lateral: ("npc.dog.male.foot_fl"), + ), + right_front: ( + offset: (-1.0, -1.5, -6.0), + lateral: ("npc.dog.male.foot_fr"), + ), + left_back: ( + offset: (-1.5, -2.0, -6.0), + lateral: ("npc.dog.male.foot_bl"), + ), + right_back: ( + offset: (-1.5, -2.0, -6.0), + lateral: ("npc.dog.male.foot_br"), + ), + ), + (Dog, Female): ( + left_front: ( + offset: (-1.0, -1.5, -6.0), + lateral: ("npc.dog.female.foot_fl"), + ), + right_front: ( + offset: (-1.0, -1.5, -6.0), + lateral: ("npc.dog.female.foot_fr"), + ), + left_back: ( + offset: (-1.5, -2.0, -6.0), + lateral: ("npc.dog.female.foot_bl"), + ), + right_back: ( + offset: (-1.5, -2.0, -6.0), + lateral: ("npc.dog.female.foot_br"), + ), + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/theropod_central_manifest.ron b/assets/voxygen/voxel/theropod_central_manifest.ron index ec9e6b9c85..39f62e4832 100644 --- a/assets/voxygen/voxel/theropod_central_manifest.ron +++ b/assets/voxygen/voxel/theropod_central_manifest.ron @@ -299,4 +299,64 @@ central: ("npc.raptor_wood.male.tail_back"), ), ), + (Sunlizard, Male): ( + head: ( + offset: (-12.5, -1.0, -12.5), + central: ("npc.sunlizard.male.head"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.sunlizard.male.jaw"), + ), + neck: ( + offset: (-1.5, 0.0, -2.0), + central: ("npc.sunlizard.male.neck"), + ), + chest_front: ( + offset: (-3.5, -3.0, -3.5), + central: ("npc.sunlizard.male.chest_front"), + ), + chest_back: ( + offset: (-3.5, -10.0, -3.5), + central: ("npc.sunlizard.male.chest_back"), + ), + tail_front: ( + offset: (-1.5, -11.0, -2.5), + central: ("npc.sunlizard.male.tail_front"), + ), + tail_back: ( + offset: (-1.5, -30.0, -2.0), + central: ("npc.sunlizard.male.tail_back"), + ), + ), + (Sunlizard, Female): ( + head: ( + offset: (-12.5, -1.0, -12.5), + central: ("npc.sunlizard.male.head"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.sunlizard.male.jaw"), + ), + neck: ( + offset: (-1.5, 0.0, -2.0), + central: ("npc.sunlizard.male.neck"), + ), + chest_front: ( + offset: (-3.5, -3.0, -3.5), + central: ("npc.sunlizard.male.chest_front"), + ), + chest_back: ( + offset: (-3.5, -10.0, -3.5), + central: ("npc.sunlizard.male.chest_back"), + ), + tail_front: ( + offset: (-1.5, -11.0, -2.5), + central: ("npc.sunlizard.male.tail_front"), + ), + tail_back: ( + offset: (-1.5, -30.0, -2.0), + central: ("npc.sunlizard.male.tail_back"), + ), + ), }) diff --git a/assets/voxygen/voxel/theropod_lateral_manifest.ron b/assets/voxygen/voxel/theropod_lateral_manifest.ron index 3f33e5b0b5..9a0d0a8e26 100644 --- a/assets/voxygen/voxel/theropod_lateral_manifest.ron +++ b/assets/voxygen/voxel/theropod_lateral_manifest.ron @@ -259,4 +259,56 @@ lateral: ("npc.raptor_wood.male.foot_r"), ), ), + (Sunlizard, Male): ( + hand_l: ( + offset: (-4.0, -1.5, -7.0), + lateral: ("npc.sunlizard.male.hand_l"), + ), + hand_r: ( + offset: (0.0, -1.5, -7.0), + lateral: ("npc.sunlizard.male.hand_r"), + ), + leg_l: ( + offset: (-1.5, -2.5, -3.5), + lateral: ("npc.sunlizard.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -2.5, -3.5), + lateral: ("npc.sunlizard.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.sunlizard.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.sunlizard.male.foot_r"), + ), + ), + (Sunlizard, Female): ( + hand_l: ( + offset: (-4.0, -1.5, -7.0), + lateral: ("npc.sunlizard.male.hand_l"), + ), + hand_r: ( + offset: (0.0, -1.5, -7.0), + lateral: ("npc.sunlizard.male.hand_r"), + ), + leg_l: ( + offset: (-1.5, -2.5, -3.5), + lateral: ("npc.sunlizard.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -2.5, -3.5), + lateral: ("npc.sunlizard.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.sunlizard.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.sunlizard.male.foot_r"), + ), + ), }) diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 977de09376..37efb6f1da 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -257,6 +257,7 @@ impl Body { theropod::Species::Snowraptor => 2.6, theropod::Species::Sandraptor => 2.6, theropod::Species::Woodraptor => 2.6, + theropod::Species::Sunlizard => 2.5, _ => 8.0, }, Body::BirdMedium(body) => match body.species { diff --git a/common/src/comp/body/biped_large.rs b/common/src/comp/body/biped_large.rs index ab751e8cf9..737ef7bd62 100644 --- a/common/src/comp/body/biped_large.rs +++ b/common/src/comp/body/biped_large.rs @@ -44,6 +44,7 @@ make_case_elim!( Mightysaurok = 7, Slysaurok = 8, Mindflayer = 9, + Minotaur = 10, } ); @@ -62,6 +63,7 @@ pub struct AllSpecies { pub saurok_mighty: SpeciesMeta, pub saurok_sly: SpeciesMeta, pub mindflayer: SpeciesMeta, + pub minotaur: 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::Mightysaurok => &self.saurok_mighty, Species::Slysaurok => &self.saurok_sly, Species::Mindflayer => &self.mindflayer, + Species::Minotaur => &self.minotaur, } } } -pub const ALL_SPECIES: [Species; 10] = [ +pub const ALL_SPECIES: [Species; 11] = [ Species::Ogre, Species::Cyclops, Species::Wendigo, @@ -95,6 +98,7 @@ pub const ALL_SPECIES: [Species; 10] = [ Species::Mightysaurok, Species::Slysaurok, Species::Mindflayer, + Species::Minotaur, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/biped_small.rs b/common/src/comp/body/biped_small.rs index 7fd14af32d..f52d6d937e 100644 --- a/common/src/comp/body/biped_small.rs +++ b/common/src/comp/body/biped_small.rs @@ -37,6 +37,9 @@ make_case_elim!( Gnome = 0, Sahagin = 1, Adlet = 2, + Gnarling = 3, + Mandragora = 4, + Kappa = 5, } ); @@ -48,6 +51,9 @@ pub struct AllSpecies { pub gnome: SpeciesMeta, pub sahagin: SpeciesMeta, pub adlet: SpeciesMeta, + pub gnarling: SpeciesMeta, + pub mandragora: SpeciesMeta, + pub kappa: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -59,14 +65,20 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Gnome => &self.gnome, Species::Sahagin => &self.sahagin, Species::Adlet => &self.adlet, + Species::Gnarling => &self.gnarling, + Species::Mandragora => &self.mandragora, + Species::Kappa => &self.kappa, } } } -pub const ALL_SPECIES: [Species; 3] = [ +pub const ALL_SPECIES: [Species; 6] = [ Species::Gnome, Species::Sahagin, Species::Adlet, + Species::Gnarling, + Species::Mandragora, + Species::Kappa, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/bird_medium.rs b/common/src/comp/body/bird_medium.rs index 26e7e7fa5c..264e6abf05 100644 --- a/common/src/comp/body/bird_medium.rs +++ b/common/src/comp/body/bird_medium.rs @@ -39,7 +39,7 @@ make_case_elim!( Goose = 2, Peacock = 3, Eagle = 4, - Snowyowl = 5, + Owl = 5, Parrot = 6, Cockatrice = 7, } @@ -55,7 +55,7 @@ pub struct AllSpecies { pub goose: SpeciesMeta, pub peacock: SpeciesMeta, pub eagle: SpeciesMeta, - pub snowyowl: SpeciesMeta, + pub owl: SpeciesMeta, pub parrot: SpeciesMeta, pub cockatrice: SpeciesMeta, } @@ -71,7 +71,7 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Goose => &self.goose, Species::Peacock => &self.peacock, Species::Eagle => &self.eagle, - Species::Snowyowl => &self.snowyowl, + Species::Owl => &self.owl, Species::Parrot => &self.parrot, Species::Cockatrice => &self.cockatrice, } @@ -84,7 +84,7 @@ pub const ALL_SPECIES: [Species; 8] = [ Species::Goose, Species::Peacock, Species::Eagle, - Species::Snowyowl, + Species::Owl, Species::Parrot, Species::Cockatrice, ]; diff --git a/common/src/comp/body/quadruped_low.rs b/common/src/comp/body/quadruped_low.rs index 0ad0f137b4..1d2d62367a 100644 --- a/common/src/comp/body/quadruped_low.rs +++ b/common/src/comp/body/quadruped_low.rs @@ -46,6 +46,7 @@ make_case_elim!( Sandshark = 9, Hakulaq = 10, Lavadrake = 11, + Basilisk = 12, } ); @@ -66,6 +67,7 @@ pub struct AllSpecies { pub sandshark: SpeciesMeta, pub hakulaq: SpeciesMeta, pub lavadrake: SpeciesMeta, + pub basilisk: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -86,11 +88,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Sandshark => &self.sandshark, Species::Hakulaq => &self.hakulaq, Species::Lavadrake => &self.lavadrake, + Species::Basilisk => &self.basilisk, } } } -pub const ALL_SPECIES: [Species; 12] = [ +pub const ALL_SPECIES: [Species; 13] = [ Species::Crocodile, Species::Alligator, Species::Salamander, @@ -103,6 +106,7 @@ pub const ALL_SPECIES: [Species; 12] = [ Species::Sandshark, Species::Hakulaq, Species::Lavadrake, + Species::Basilisk, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/quadruped_small.rs b/common/src/comp/body/quadruped_small.rs index 90505a7d27..12288bd687 100644 --- a/common/src/comp/body/quadruped_small.rs +++ b/common/src/comp/body/quadruped_small.rs @@ -57,6 +57,7 @@ pub enum Species { Porcupine = 22, Beaver = 23, Hare = 24, + Dog = 25, } /// Data representing per-species generic data. @@ -89,6 +90,7 @@ pub struct AllSpecies { pub porcupine: SpeciesMeta, pub beaver: SpeciesMeta, pub hare: SpeciesMeta, + pub dog: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -122,11 +124,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Porcupine => &self.porcupine, Species::Beaver => &self.beaver, Species::Hare => &self.hare, + Species::Dog => &self.dog, } } } -pub const ALL_SPECIES: [Species; 25] = [ +pub const ALL_SPECIES: [Species; 26] = [ Species::Pig, Species::Fox, Species::Sheep, @@ -152,6 +155,7 @@ pub const ALL_SPECIES: [Species; 25] = [ Species::Porcupine, Species::Beaver, Species::Hare, + Species::Dog, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/theropod.rs b/common/src/comp/body/theropod.rs index c3d1c63e36..54633ec9df 100644 --- a/common/src/comp/body/theropod.rs +++ b/common/src/comp/body/theropod.rs @@ -33,6 +33,7 @@ pub enum Species { Sandraptor = 2, Snowraptor = 3, Woodraptor = 4, + Sunlizard = 5, } /// Data representing per-species generic data. @@ -43,6 +44,7 @@ pub struct AllSpecies { pub raptor_sand: SpeciesMeta, pub raptor_snow: SpeciesMeta, pub raptor_wood: SpeciesMeta, + pub sunlizard: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -56,16 +58,18 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Sandraptor => &self.raptor_sand, Species::Snowraptor => &self.raptor_snow, Species::Woodraptor => &self.raptor_wood, + Species::Sunlizard => &self.sunlizard, } } } -pub const ALL_SPECIES: [Species; 5] = [ +pub const ALL_SPECIES: [Species; 6] = [ Species::Archaeos, Species::Odonto, Species::Sandraptor, Species::Snowraptor, Species::Woodraptor, + Species::Sunlizard, ]; 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 5f6902da7d..5f1620709c 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -231,6 +231,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.staff.mindflayer_staff", )); }, + (biped_large::Species::Minotaur, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.sword.saurok_sword", + )); + }, }, Body::Object(object::Body::Crossbow) => { main_tool = Some(Item::new_from_asset_expect( diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 410d0abf44..e127309915 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -90,6 +90,7 @@ impl Body { quadruped_low::Species::Sandshark => 160.0, quadruped_low::Species::Hakulaq => 140.0, quadruped_low::Species::Lavadrake => 100.0, + quadruped_low::Species::Basilisk => 120.0, }, } } diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index bbe51978f0..eb65fc0d8a 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -194,6 +194,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (6.0, 3.5), (Slysaurok, _) => (6.0, 3.5), (Mindflayer, _) => (5.0, 5.5), + (Minotaur, _) => (6.0, 3.0), }, jaw: match (body.species, body.body_type) { (Ogre, _) => (0.0, 0.0), @@ -206,9 +207,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (1.0, -2.5), (Slysaurok, _) => (1.0, -2.5), (Mindflayer, _) => (0.0, 0.0), + (Minotaur, _) => (2.0, -4.0), }, upper_torso: match (body.species, body.body_type) { - (Ogre, Male) => (0.0, 28.0), + (Ogre, Male) => (0.0, 27.5), (Ogre, Female) => (0.0, 28.0), (Cyclops, _) => (-2.0, 27.0), (Wendigo, _) => (-1.0, 29.0), @@ -219,6 +221,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (3.0, 23.0), (Slysaurok, _) => (3.0, 23.0), (Mindflayer, _) => (0.0, 30.5), + (Minotaur, _) => (-1.0, 27.5), }, lower_torso: match (body.species, body.body_type) { (Ogre, Male) => (1.0, -7.0), @@ -232,12 +235,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (0.0, -6.0), (Slysaurok, _) => (0.0, -6.0), (Mindflayer, _) => (3.5, -19.5), + (Minotaur, _) => (1.5, -8.5), }, tail: match (body.species, body.body_type) { (Werewolf, _) => (-5.5, -2.0), (Occultsaurok, _) => (-4.5, -6.0), (Mightysaurok, _) => (-4.5, -6.0), (Slysaurok, _) => (-4.5, -6.0), + (Minotaur, _) => (-3.0, -6.0), _ => (0.0, 0.0), }, shoulder: match (body.species, body.body_type) { @@ -252,6 +257,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (7.5, 1.0, -1.5), (Slysaurok, _) => (7.5, 1.0, -1.5), (Mindflayer, _) => (8.0, 0.5, -1.0), + (Minotaur, _) => (10.0, 1.0, -4.0), }, hand: match (body.species, body.body_type) { (Ogre, Male) => (14.5, 0.0, -2.0), @@ -265,6 +271,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (8.0, 1.5, -5.5), (Slysaurok, _) => (8.0, 1.5, -5.5), (Mindflayer, _) => (9.0, 0.5, -4.5), + (Minotaur, _) => (12.5, 0.5, -7.0), }, leg: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 0.0, -4.0), @@ -278,9 +285,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (3.0, 0.5, -6.0), (Slysaurok, _) => (3.0, 0.5, -6.0), (Mindflayer, _) => (6.0, -2.0, 6.5), + (Minotaur, _) => (5.0, 0.0, -6.0), }, foot: match (body.species, body.body_type) { - (Ogre, Male) => (4.0, 1.0, -13.5), + (Ogre, Male) => (4.0, 1.0, -12.0), (Ogre, Female) => (4.0, 0.5, -13.5), (Cyclops, _) => (4.0, 0.5, -17.0), (Wendigo, _) => (5.0, 2.5, -17.0), @@ -291,6 +299,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (3.5, 2.0, -12.0), (Slysaurok, _) => (3.5, 2.0, -12.0), (Mindflayer, _) => (4.5, 1.5, -7.0), + (Minotaur, _) => (6.0, 4.5, -13.5), }, shl: match (body.species, body.body_type) { (Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0), diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index 2a23083043..f43aafdeca 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -95,31 +95,49 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnome, _) => (-1.0, 9.0), (Sahagin, _) => (7.0, -3.5), (Adlet, _) => (0.0, 7.0), + (Gnarling, _) => (0.0, 6.0), + (Mandragora, _) => (-1.0, 9.0), + (Kappa, _) => (8.0, 3.5), }, chest: match (body.species, body.body_type) { (Gnome, _) => (0.0, 9.0), (Sahagin, _) => (0.0, 15.0), (Adlet, _) => (0.0, 11.0), + (Gnarling, _) => (0.0, 7.5), + (Mandragora, _) => (0.0, 8.5), + (Kappa, _) => (0.0, 14.5), }, shorts: match (body.species, body.body_type) { (Gnome, _) => (0.0, -3.0), (Sahagin, _) => (0.5, -7.0), (Adlet, _) => (0.0, -3.0), + (Gnarling, _) => (0.0, -3.0), + (Mandragora, _) => (0.0, -3.0), + (Kappa, _) => (0.0, -3.0), }, tail: match (body.species, body.body_type) { (Gnome, _) => (0.0, 0.0), (Sahagin, _) => (-2.5, -2.0), (Adlet, _) => (-4.5, -2.0), + (Gnarling, _) => (-2.0, 1.5), + (Mandragora, _) => (0.0, 0.0), + (Kappa, _) => (0.0, -3.0), }, hand: match (body.species, body.body_type) { (Gnome, _) => (6.0, 0.5, -1.0), (Sahagin, _) => (9.5, 3.5, -2.0), (Adlet, _) => (6.0, -0.5, 0.0), + (Gnarling, _) => (5.0, 0.0, 1.5), + (Mandragora, _) => (6.0, -0.5, -2.5), + (Kappa, _) => (7.5, 3.5, -2.0), }, foot: match (body.species, body.body_type) { (Gnome, _) => (3.0, 0.0, 4.0), (Sahagin, _) => (3.0, 1.0, 8.0), (Adlet, _) => (3.0, 0.5, 7.0), + (Gnarling, _) => (2.5, 1.0, 5.0), + (Mandragora, _) => (3.0, 0.0, 4.0), + (Kappa, _) => (3.0, 3.0, 9.0), }, } } diff --git a/voxygen/anim/src/bird_medium/mod.rs b/voxygen/anim/src/bird_medium/mod.rs index d4ce88524d..1cc817ea53 100644 --- a/voxygen/anim/src/bird_medium/mod.rs +++ b/voxygen/anim/src/bird_medium/mod.rs @@ -87,7 +87,7 @@ impl Default for SkeletonAttr { impl<'a> From<&'a Body> for SkeletonAttr { fn from(body: &'a Body) -> Self { - use comp::bird_medium::Species::*; + use comp::bird_medium::{BodyType::*, Species::*}; Self { head: match (body.species, body.body_type) { (Duck, _) => (4.0, 3.0), @@ -95,7 +95,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (5.0, 2.5), (Peacock, _) => (1.0, 1.0), (Eagle, _) => (2.5, 5.0), - (Snowyowl, _) => (2.5, 5.0), + (Owl, Male) => (2.5, 5.0), + (Owl, Female) => (2.5, 7.0), (Parrot, _) => (0.5, 4.5), (Cockatrice, _) => (0.0, 4.0), }, @@ -105,7 +106,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (0.0, 8.0), (Peacock, _) => (0.0, 10.0), (Eagle, _) => (0.0, 8.0), - (Snowyowl, _) => (0.0, 4.5), + (Owl, Male) => (0.0, 4.5), + (Owl, Female) => (0.0, 4.5), (Parrot, _) => (0.0, 5.0), (Cockatrice, _) => (0.0, 12.5), }, @@ -115,7 +117,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (-5.0, 3.0), (Peacock, _) => (-5.5, 2.0), (Eagle, _) => (-8.0, -4.0), - (Snowyowl, _) => (-6.0, -2.0), + (Owl, Male) => (-6.0, -2.0), + (Owl, Female) => (-6.0, -2.5), (Parrot, _) => (-8.0, -2.0), (Cockatrice, _) => (-10.0, -2.5), }, @@ -125,7 +128,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (3.75, -1.0, 2.0), (Peacock, _) => (3.0, 0.0, 1.0), (Eagle, _) => (3.0, -8.0, 4.0), - (Snowyowl, _) => (3.5, -5.5, 4.0), + (Owl, Male) => (3.5, -5.5, 4.0), + (Owl, Female) => (3.5, -6.0, 3.5), (Parrot, _) => (2.0, -4.5, 3.0), (Cockatrice, _) => (4.5, -2.5, 1.5), }, @@ -135,7 +139,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (2.0, -1.5, 7.0), (Peacock, _) => (2.0, -2.5, 8.0), (Eagle, _) => (2.0, -2.0, 8.0), - (Snowyowl, _) => (1.5, -2.5, 7.0), + (Owl, Male) => (1.5, -2.5, 7.0), + (Owl, Female) => (1.5, -3.0, 6.5), (Parrot, _) => (1.5, -3.0, 3.0), (Cockatrice, _) => (4.0, -3.5, 12.0), }, diff --git a/voxygen/anim/src/quadruped_low/mod.rs b/voxygen/anim/src/quadruped_low/mod.rs index 4f09ceb0d0..11dc5becda 100644 --- a/voxygen/anim/src/quadruped_low/mod.rs +++ b/voxygen/anim/src/quadruped_low/mod.rs @@ -131,6 +131,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (8.5, 0.5), (Hakulaq, _) => (8.0, 10.0), (Lavadrake, _) => (7.0, 8.0), + (Basilisk, _) => (11.0, 13.5), }, head_lower: match (body.species, body.body_type) { (Crocodile, _) => (8.0, 0.0), @@ -146,6 +147,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (13.5, -10.5), (Hakulaq, _) => (10.5, 1.0), (Lavadrake, _) => (11.5, -6.0), + (Basilisk, _) => (8.5, -6.5), }, jaw: match (body.species, body.body_type) { (Crocodile, _) => (2.5, -3.0), @@ -161,6 +163,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (-8.0, -5.5), (Hakulaq, _) => (-6.5, -4.0), (Lavadrake, _) => (3.0, -5.0), + (Basilisk, _) => (1.5, 1.0), }, chest: match (body.species, body.body_type) { (Crocodile, _) => (0.0, 5.0), @@ -176,6 +179,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (0.0, 20.0), (Hakulaq, _) => (0.0, 13.5), (Lavadrake, _) => (0.0, 16.5), + (Basilisk, _) => (0.0, 16.5), }, tail_rear: match (body.species, body.body_type) { (Crocodile, _) => (-12.5, -1.0), @@ -191,6 +195,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (-10.0, 0.5), (Hakulaq, _) => (-9.0, -2.0), (Lavadrake, _) => (-12.0, -2.0), + (Basilisk, _) => (-10.0, -3.0), }, tail_front: match (body.species, body.body_type) { (Crocodile, _) => (-6.0, 0.0), @@ -206,6 +211,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (-13.0, -8.0), (Hakulaq, _) => (-6.0, -5.5), (Lavadrake, _) => (-7.0, -4.5), + (Basilisk, _) => (-2.5, -4.5), }, feet_f: match (body.species, body.body_type) { (Crocodile, _) => (3.5, 6.0, -1.0), @@ -221,6 +227,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (5.5, 2.0, -8.0), (Hakulaq, _) => (4.5, 2.0, -4.5), (Lavadrake, _) => (4.5, 4.0, -6.5), + (Basilisk, _) => (6.5, 4.0, -7.5), }, feet_b: match (body.species, body.body_type) { (Crocodile, _) => (3.5, -6.0, -1.0), @@ -236,6 +243,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (3.5, -15.0, -14.0), (Hakulaq, _) => (3.5, -8.0, -4.5), (Lavadrake, _) => (3.5, -8.0, -6.5), + (Basilisk, _) => (4.5, -13.0, -7.5), }, lean: match (body.species, body.body_type) { (Pangolin, _) => (0.4, 0.0), diff --git a/voxygen/anim/src/quadruped_medium/idle.rs b/voxygen/anim/src/quadruped_medium/idle.rs index 4e2c3b3c20..54cafabc67 100644 --- a/voxygen/anim/src/quadruped_medium/idle.rs +++ b/voxygen/anim/src/quadruped_medium/idle.rs @@ -113,14 +113,12 @@ impl Animation for IdleAnimation { next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); - next.foot_fr.position = - Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); + next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); next.foot_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2 + slower * -0.2); - next.foot_br.position = - Vec3::new(s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2 + slower * -0.2); + next.foot_br.position = Vec3::new(s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2 + slower * -0.2); next } diff --git a/voxygen/anim/src/quadruped_small/mod.rs b/voxygen/anim/src/quadruped_small/mod.rs index 64c7ddbf14..eb4bd967dc 100644 --- a/voxygen/anim/src/quadruped_small/mod.rs +++ b/voxygen/anim/src/quadruped_small/mod.rs @@ -129,6 +129,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (5.5, 0.0), (Hare, Male) => (3.0, 2.0), (Hare, Female) => (2.5, 3.0), + (Dog, _) => (3.0, 4.5), }, chest: match (body.species, body.body_type) { (Pig, _) => (0.0, 6.0), @@ -157,6 +158,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (2.0, 6.0), (Hare, Male) => (-2.0, 7.0), (Hare, Female) => (-2.0, 6.0), + (Dog, _) => (-2.0, 9.5), }, feet_f: match (body.species, body.body_type) { (Pig, _) => (4.5, 3.5, -1.0), @@ -185,6 +187,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (4.5, 4.5, -4.0), (Hare, Male) => (3.0, 1.0, -3.0), (Hare, Female) => (3.0, 0.5, -4.0), + (Dog, _) => (3.5, 3.0, -2.5), }, feet_b: match (body.species, body.body_type) { (Pig, _) => (3.5, -2.0, 0.0), @@ -213,6 +216,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (4.0, -2.5, -3.0), (Hare, Male) => (3.5, -1.0, -2.0), (Hare, Female) => (3.5, -3.0, -2.0), + (Dog, _) => (3.0, -3.5, -2.5), }, tail: match (body.species, body.body_type) { (Pig, _) => (-4.5, 2.5), @@ -241,6 +245,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (-6.5, -1.0), (Hare, Male) => (-4.0, -1.0), (Hare, Female) => (-4.0, 2.0), + (Dog, _) => (-5.0, 0.5), }, scaler: match (body.species, body.body_type) { (Pig, _) => (0.9), diff --git a/voxygen/anim/src/theropod/idle.rs b/voxygen/anim/src/theropod/idle.rs index bac0a997d0..bcb1622858 100644 --- a/voxygen/anim/src/theropod/idle.rs +++ b/voxygen/anim/src/theropod/idle.rs @@ -63,7 +63,7 @@ impl Animation for IdleAnimation { next.tail_front.position = Vec3::new(0.0, s_a.tail_front.0, s_a.tail_front.1); next.tail_front.orientation = Quaternion::rotation_x(0.1); - next.tail_back.position = Vec3::new(0.0, s_a.tail_back.0, s_a.tail_back.1 - 0.5); + next.tail_back.position = Vec3::new(0.0, s_a.tail_back.0, s_a.tail_back.1); next.tail_back.orientation = Quaternion::rotation_x(0.1); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); diff --git a/voxygen/anim/src/theropod/mod.rs b/voxygen/anim/src/theropod/mod.rs index 89b131f0f0..3760055e12 100644 --- a/voxygen/anim/src/theropod/mod.rs +++ b/voxygen/anim/src/theropod/mod.rs @@ -127,6 +127,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (8.0, 5.0), (Snowraptor, _) => (8.0, 5.0), (Woodraptor, _) => (8.0, 5.0), + (Sunlizard, _) => (6.5, 3.5), }, jaw: match (body.species, body.body_type) { (Archaeos, _) => (1.0, -7.0), @@ -134,6 +135,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (0.0, -4.0), (Snowraptor, _) => (0.0, -4.0), (Woodraptor, _) => (0.0, -4.0), + (Sunlizard, _) => (2.0, -2.5), }, neck: match (body.species, body.body_type) { (Archaeos, _) => (4.5, -2.0), @@ -141,6 +143,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (4.0, 2.5), (Snowraptor, _) => (4.0, 2.5), (Woodraptor, _) => (4.0, 2.5), + (Sunlizard, _) => (2.5, 1.5), }, chest_front: match (body.species, body.body_type) { (Archaeos, _) => (0.0, 20.0), @@ -148,6 +151,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (0.0, 15.5), (Snowraptor, _) => (0.0, 15.5), (Woodraptor, _) => (0.0, 15.5), + (Sunlizard, _) => (0.0, 14.0), }, chest_back: match (body.species, body.body_type) { (Archaeos, _) => (-5.5, -1.0), @@ -155,6 +159,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (-3.0, 0.5), (Snowraptor, _) => (-3.0, 0.5), (Woodraptor, _) => (-3.0, 0.5), + (Sunlizard, _) => (-2.0, 0.0), }, tail_front: match (body.species, body.body_type) { (Archaeos, _) => (-9.0, -1.5), @@ -162,6 +167,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (-9.5, -1.0), (Snowraptor, _) => (-9.5, -1.0), (Woodraptor, _) => (-9.5, -1.0), + (Sunlizard, _) => (-8.5, -2.0), }, tail_back: match (body.species, body.body_type) { (Archaeos, _) => (-8.0, -0.5), @@ -169,6 +175,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (-10.5, 0.5), (Snowraptor, _) => (-10.5, 1.0), (Woodraptor, _) => (-10.5, 0.5), + (Sunlizard, _) => (-10.0, -0.5), }, hand: match (body.species, body.body_type) { (Archaeos, _) => (3.0, 0.0, -4.0), @@ -176,6 +183,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (2.5, 3.0, 1.0), (Snowraptor, _) => (2.5, 3.0, 1.0), (Woodraptor, _) => (2.5, 3.0, 1.0), + (Sunlizard, _) => (2.5, 1.5, -0.5), }, leg: match (body.species, body.body_type) { (Archaeos, _) => (4.5, -3.0, -4.0), @@ -183,6 +191,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (1.5, -2.5, -3.0), (Snowraptor, _) => (1.5, -2.5, -3.0), (Woodraptor, _) => (1.5, -2.5, -3.0), + (Sunlizard, _) => (2.5, -2.5, -3.0), }, foot: match (body.species, body.body_type) { (Archaeos, _) => (1.0, -0.5, -7.0), @@ -190,6 +199,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (2.0, 0.0, -3.0), (Snowraptor, _) => (2.0, 0.0, -3.0), (Woodraptor, _) => (2.0, 0.0, -3.0), + (Sunlizard, _) => (1.0, -0.5, -2.5), }, scaler: match (body.species, body.body_type) { (Archaeos, _) => (3.0), @@ -197,6 +207,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (8.0), (Snowraptor, _) => (8.0), (Woodraptor, _) => (8.0), + (Sunlizard, _) => (8.0), }, } } diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 7e30244c84..9060506c1a 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -2240,7 +2240,7 @@ impl Hud { // Don't put NPC messages in chat box. self.new_messages - .retain(|m| !matches!(m.chat_type, comp::ChatType::Npc(_, _))); + .retain(|m| !matches!(m.chat_type, comp::ChatType::Npc(_, _))); // Chat box match Chat::new( diff --git a/world/src/layer/wildlife.rs b/world/src/layer/wildlife.rs index 1376a23a74..782a068284 100644 --- a/world/src/layer/wildlife.rs +++ b/world/src/layer/wildlife.rs @@ -134,12 +134,16 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( make_entity: |pos, rng| { EntityInfo::at(pos) .with_body(match rng.gen_range(0, 4) { - 0 => { - quadruped_medium::Body::random_with(rng, &quadruped_medium::Species::Mouflon).into() - }, - 1 => { - quadruped_medium::Body::random_with(rng, &quadruped_medium::Species::Yak).into() - }, + 0 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Mouflon, + ) + .into(), + 1 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Yak, + ) + .into(), _ => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Highland, @@ -160,8 +164,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( 0 => { bird_medium::Body::random_with(rng, &bird_medium::Species::Eagle).into() }, - 1 => bird_medium::Body::random_with(rng, &bird_medium::Species::Snowyowl) - .into(), + 1 => bird_medium::Body::random_with(rng, &bird_medium::Species::Owl).into(), 2 => quadruped_small::Body { species: quadruped_small::Species::Fox, body_type: quadruped_small::BodyType::Female, @@ -278,10 +281,11 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( &quadruped_medium::Species::Horse, ) .into(), - 10 => { - quadruped_medium::Body::random_with(rng, &quadruped_medium::Species::Cattle) - .into() - }, + 10 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Cattle, + ) + .into(), _ => bird_medium::Body::random_with(rng, &bird_medium::Species::Chicken) .into(), }) @@ -668,7 +672,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( ) .into(), 1 => quadruped_low::Body::random_with(rng, &quadruped_low::Species::Asp) - .into(), + .into(), 2 => { theropod::Body::random_with(rng, &theropod::Species::Sandraptor).into() }, From 31208e29ee73aaffb61b3def9fa234704118d472 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 16 Jan 2021 14:15:01 -0500 Subject: [PATCH 07/36] run anim tweaks --- .../voxel/biped_small_lateral_manifest.ron | 16 ++++++++-------- voxygen/anim/src/biped_small/run.rs | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/assets/voxygen/voxel/biped_small_lateral_manifest.ron b/assets/voxygen/voxel/biped_small_lateral_manifest.ron index d2fae5454e..ae965ffae0 100644 --- a/assets/voxygen/voxel/biped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_small_lateral_manifest.ron @@ -37,11 +37,11 @@ ), (Sahagin, Male): ( hand_l: ( - offset: (0.0, -2.5, -11.0), + offset: (0.0, -4.0, -11.0), lateral: ("npc.sahagin.male.hand_l"), ), hand_r: ( - offset: (-7.0, -2.5, -11.0), + offset: (0.0, -4.0, -11.0), lateral: ("npc.sahagin.male.hand_r"), ), foot_l: ( @@ -55,11 +55,11 @@ ), (Sahagin, Female): ( hand_l: ( - offset: (0.0, -2.5, -11.0), + offset: (0.0, -4.0, -11.0), lateral: ("npc.sahagin.male.hand_l"), ), hand_r: ( - offset: (-7.0, -2.5, -11.0), + offset: (-7.0, -4.0, -11.0), lateral: ("npc.sahagin.male.hand_r"), ), foot_l: ( @@ -181,11 +181,11 @@ ), (Kappa, Male): ( hand_l: ( - offset: (-3.0, -2.5, -10.0), + offset: (-3.0, -4.0, -10.0), lateral: ("npc.kappa.male.hand_l"), ), hand_r: ( - offset: (-3.0, -2.5, -10.0), + offset: (-3.0, -4.0, -10.0), lateral: ("npc.kappa.male.hand_r"), ), foot_l: ( @@ -199,11 +199,11 @@ ), (Kappa, Female): ( hand_l: ( - offset: (-3.0, -2.5, -10.0), + offset: (-3.0, -4.0, -10.0), lateral: ("npc.kappa.male.hand_l"), ), hand_r: ( - offset: (-3.0, -2.5, -10.0), + offset: (-3.0, -4.0, -10.0), lateral: ("npc.kappa.male.hand_r"), ), foot_l: ( diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index 20e4f88c0b..3426dcb806 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -116,8 +116,8 @@ impl Animation for RunAnimation { next.hand_l.position = Vec3::new( -s_a.hand.0 + footrotr * -1.3 * speednorm, - 1.0 * speednorm + s_a.hand.1 + footrotr * -3.5 * speednorm, - 1.5 * speednorm + s_a.hand.2 - footrotr * 2.5 * speednorm, + 1.0 * speednorm + s_a.hand.1 + footrotr * -2.5 * speednorm, + s_a.hand.2 - footrotr * 1.5 * speednorm, ); next.hand_l.orientation = Quaternion::rotation_x(0.4 * speednorm + (footrotr * -1.2) * speednorm) @@ -125,8 +125,8 @@ impl Animation for RunAnimation { next.hand_r.position = Vec3::new( s_a.hand.0 + footrotl * 1.3 * speednorm, - 1.0 * speednorm + s_a.hand.1 + footrotl * -3.5 * speednorm, - 1.5 * speednorm + s_a.hand.2 - footrotl * 2.5 * speednorm, + 1.0 * speednorm + s_a.hand.1 + footrotl * -2.5 * speednorm, + s_a.hand.2 - footrotl * 1.5 * speednorm, ); next.hand_r.orientation = Quaternion::rotation_x(0.4 * speednorm + (footrotl * -1.2) * speednorm) @@ -136,7 +136,7 @@ impl Animation for RunAnimation { next.foot_l.position = Vec3::new( -s_a.foot.0 + footstrafel * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.0 * speednorm + footrotl * -7.5 * speednorm) + + (1.0 - sideabs) * (-1.0 * speednorm + footrotl * -4.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -2.1 * speednorm).max(-1.0))) @@ -151,7 +151,7 @@ impl Animation for RunAnimation { next.foot_r.position = Vec3::new( s_a.foot.0 + footstrafer * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.0 * speednorm + footrotr * -7.5 * speednorm) + + (1.0 - sideabs) * (-1.0 * speednorm + footrotr * -4.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -2.1 * speednorm).max(-1.0))) From 6a57dd25d0880700330b501698b4fe6407d94ed5 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 17 Jan 2021 14:38:29 -0500 Subject: [PATCH 08/36] wielding --- .../voxel/biped_small_central_manifest.ron | 48 ----------- .../voxel/biped_small_lateral_manifest.ron | 48 +++++------ .../voxel/biped_small_weapon_manifest.ron | 74 ++++++++++++++++ .../voxygen/voxel/npc/basilisk/male/chest.vox | 2 +- .../voxel/npc/basilisk/male/head_lower.vox | 4 +- .../voxel/npc/basilisk/male/tail_front.vox | 4 +- .../voxel/npc/sunlizard/male/chest_back.vox | 4 +- voxygen/anim/src/biped_small/idle.rs | 1 - voxygen/anim/src/biped_small/mod.rs | 47 ++++++---- voxygen/anim/src/biped_small/run.rs | 15 ++-- voxygen/anim/src/biped_small/wield.rs | 85 +++++++++++++++++++ voxygen/src/scene/figure/load.rs | 50 +++++++---- voxygen/src/scene/figure/mod.rs | 34 +++++--- 13 files changed, 284 insertions(+), 132 deletions(-) create mode 100644 assets/voxygen/voxel/biped_small_weapon_manifest.ron create mode 100644 voxygen/anim/src/biped_small/wield.rs diff --git a/assets/voxygen/voxel/biped_small_central_manifest.ron b/assets/voxygen/voxel/biped_small_central_manifest.ron index 53bb7fdf2e..ee77358b9e 100644 --- a/assets/voxygen/voxel/biped_small_central_manifest.ron +++ b/assets/voxygen/voxel/biped_small_central_manifest.ron @@ -16,10 +16,6 @@ offset: (-0.5, -5.0, -2.5), central: ("armor.empty"), ), - main: ( - offset: (-1.5, -7.5, -5.0), - central: ("armor.empty"), - ), ), (Gnome, Female): ( head: ( @@ -38,10 +34,6 @@ offset: (-0.5, -5.0, -2.5), central: ("armor.empty"), ), - main: ( - offset: (-1.5, -7.5, -5.0), - central: ("armor.empty"), - ), ), (Sahagin, Male): ( head: ( @@ -60,10 +52,6 @@ offset: (-1.5, -13.0, -5.0), central: ("npc.sahagin.male.tail"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.sahagin"), - ), ), (Sahagin, Female): ( head: ( @@ -82,10 +70,6 @@ offset: (-1.5, -13.0, -5.0), central: ("npc.sahagin.male.tail"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.sahagin"), - ), ), (Adlet, Male): ( head: ( @@ -104,10 +88,6 @@ offset: (-1.0, -5.0, -1.0), central: ("npc.adlet.male.tail"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.adlet"), - ), ), (Adlet, Female): ( head: ( @@ -126,10 +106,6 @@ offset: (-1.0, -5.0, -1.0), central: ("npc.adlet.male.tail"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.adlet"), - ), ), (Gnarling, Male): ( head: ( @@ -148,10 +124,6 @@ offset: (-1.5, -13.0, -3.0), central: ("npc.gnarling.male.tail"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.adlet"), - ), ), (Gnarling, Female): ( head: ( @@ -170,10 +142,6 @@ offset: (-1.5, -13.0, -3.0), central: ("npc.gnarling.male.tail"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.adlet"), - ), ), (Mandragora, Male): ( head: ( @@ -192,10 +160,6 @@ offset: (0.0, 0.0, 0.0), central: ("armor.empty"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.adlet"), - ), ), (Mandragora, Female): ( head: ( @@ -214,10 +178,6 @@ offset: (0.0, 0.0, 0.0), central: ("armor.empty"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.adlet"), - ), ), (Kappa, Male): ( head: ( @@ -236,10 +196,6 @@ offset: (-2.5, -10.0, -5.0), central: ("npc.kappa.male.tail"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.adlet"), - ), ), (Kappa, Female): ( head: ( @@ -258,9 +214,5 @@ offset: (-2.5, -10.0, -5.0), central: ("npc.kappa.male.tail"), ), - main: ( - offset: (-0.5, -7.5, -5.0), - central: ("weapon.spear.adlet"), - ), ), }) diff --git a/assets/voxygen/voxel/biped_small_lateral_manifest.ron b/assets/voxygen/voxel/biped_small_lateral_manifest.ron index ae965ffae0..a891e4fdf2 100644 --- a/assets/voxygen/voxel/biped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_small_lateral_manifest.ron @@ -1,11 +1,11 @@ ({ (Gnome, Male): ( hand_l: ( - offset: (-2.0, -2.0, -5.0), + offset: (-4.0, -2.0, -5.0), lateral: ("npc.gnome.male.hand_l"), ), hand_r: ( - offset: (-2.0, -2.0, -5.0), + offset: (0.0, -2.0, -5.0), lateral: ("npc.gnome.male.hand_r"), ), foot_l: ( @@ -19,11 +19,11 @@ ), (Gnome, Female): ( hand_l: ( - offset: (-2.0, -2.0, -5.0), + offset: (-4.0, -2.0, -5.0), lateral: ("npc.gnome.male.hand_l"), ), hand_r: ( - offset: (-2.0, -2.0, -5.0), + offset: (0.0, -2.0, -5.0), lateral: ("npc.gnome.male.hand_r"), ), foot_l: ( @@ -37,11 +37,11 @@ ), (Sahagin, Male): ( hand_l: ( - offset: (0.0, -4.0, -11.0), + offset: (-7.0, -4.0, -13.0), lateral: ("npc.sahagin.male.hand_l"), ), hand_r: ( - offset: (0.0, -4.0, -11.0), + offset: (0.0, -4.0, -13.0), lateral: ("npc.sahagin.male.hand_r"), ), foot_l: ( @@ -55,11 +55,11 @@ ), (Sahagin, Female): ( hand_l: ( - offset: (0.0, -4.0, -11.0), + offset: (-7.0, -4.0, -13.0), lateral: ("npc.sahagin.male.hand_l"), ), hand_r: ( - offset: (-7.0, -4.0, -11.0), + offset: (0.0, -4.0, -13.0), lateral: ("npc.sahagin.male.hand_r"), ), foot_l: ( @@ -73,11 +73,11 @@ ), (Adlet, Male): ( hand_l: ( - offset: (-2.0, -2.0, -6.0), + offset: (-4.0, -2.0, -7.0), lateral: ("npc.adlet.male.hand_l"), ), hand_r: ( - offset: (-2.0, -2.0, -6.0), + offset: (0.0, -2.0, -7.0), lateral: ("npc.adlet.male.hand_r"), ), foot_l: ( @@ -91,11 +91,11 @@ ), (Adlet, Female): ( hand_l: ( - offset: (-2.0, -2.0, -6.0), + offset: (-4.0, -2.0, -7.0), lateral: ("npc.adlet.male.hand_l"), ), hand_r: ( - offset: (-2.0, -2.0, -6.0), + offset: (0.0, -2.0, -7.0), lateral: ("npc.adlet.male.hand_r"), ), foot_l: ( @@ -109,11 +109,11 @@ ), (Gnarling, Male): ( hand_l: ( - offset: (-1.5, -1.5, -7.0), + offset: (-3.0, -1.5, -7.0), lateral: ("npc.gnarling.male.hand_l"), ), hand_r: ( - offset: (-1.5, -1.5, -7.0), + offset: (0.0, -1.5, -7.0), lateral: ("npc.gnarling.male.hand_r"), ), foot_l: ( @@ -127,11 +127,11 @@ ), (Gnarling, Female): ( hand_l: ( - offset: (-1.5, -1.5, -7.0), + offset: (-3.0, -1.5, -7.0), lateral: ("npc.gnarling.male.hand_l"), ), hand_r: ( - offset: (-1.5, -1.5, -7.0), + offset: (0.0, -1.5, -7.0), lateral: ("npc.gnarling.male.hand_r"), ), foot_l: ( @@ -145,11 +145,11 @@ ), (Mandragora, Male): ( hand_l: ( - offset: (-2.0, -1.5, -7.0), + offset: (-4.0, -1.5, -7.0), lateral: ("npc.mandragora.male.hand_l"), ), hand_r: ( - offset: (-2.0, -1.5, -7.0), + offset: (0.0, -1.5, -7.0), lateral: ("npc.mandragora.male.hand_r"), ), foot_l: ( @@ -163,11 +163,11 @@ ), (Mandragora, Female): ( hand_l: ( - offset: (-2.0, -1.5, -7.0), + offset: (-4.0, -1.5, -7.0), lateral: ("npc.mandragora.male.hand_l"), ), hand_r: ( - offset: (-2.0, -1.5, -7.0), + offset: (0.0, -1.5, -7.0), lateral: ("npc.mandragora.male.hand_r"), ), foot_l: ( @@ -181,11 +181,11 @@ ), (Kappa, Male): ( hand_l: ( - offset: (-3.0, -4.0, -10.0), + offset: (-6.0, -4.0, -12.0), lateral: ("npc.kappa.male.hand_l"), ), hand_r: ( - offset: (-3.0, -4.0, -10.0), + offset: (0.0, -4.0, -12.0), lateral: ("npc.kappa.male.hand_r"), ), foot_l: ( @@ -199,11 +199,11 @@ ), (Kappa, Female): ( hand_l: ( - offset: (-3.0, -4.0, -10.0), + offset: (-6.0, -4.0, -12.0), lateral: ("npc.kappa.male.hand_l"), ), hand_r: ( - offset: (-3.0, -4.0, -10.0), + offset: (0.0, -4.0, -12.0), lateral: ("npc.kappa.male.hand_r"), ), foot_l: ( diff --git a/assets/voxygen/voxel/biped_small_weapon_manifest.ron b/assets/voxygen/voxel/biped_small_weapon_manifest.ron new file mode 100644 index 0000000000..06850173f8 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_weapon_manifest.ron @@ -0,0 +1,74 @@ +({ + (Gnome, Male): ( + main: ( + offset: (-1.5, -3.0, -5.0), + weapon: ("weapon.spear.sahagin"), + ), + ), + (Gnome, Female): ( + main: ( + offset: (-1.5, -3.0, -5.0), + weapon: ("weapon.spear.sahagin"), + ), + ), + (Sahagin, Male): ( + main: ( + offset: (-1.5, -3.0, -5.0), + weapon: ("weapon.spear.sahagin"), + ), + ), + (Sahagin, Female): ( + main: ( + offset: (-1.5, -3.0, -5.0), + weapon: ("weapon.spear.sahagin"), + ), + ), + (Adlet, Male): ( + main: ( + offset: (-0.5, -3.0, -5.0), + weapon: ("weapon.spear.adlet"), + ), + ), + (Adlet, Female): ( + main: ( + offset: (-0.5, -3.0, -5.0), + weapon: ("weapon.spear.adlet"), + ), + ), + (Gnarling, Male): ( + main: ( + offset: (-0.5, -3.0, -5.0), + weapon: ("weapon.spear.adlet"), + ), + ), + (Gnarling, Female): ( + main: ( + offset: (-0.5, -3.0, -5.0), + weapon: ("weapon.spear.adlet"), + ), + ), + (Mandragora, Male): ( + main: ( + offset: (-0.5, -3.0, -5.0), + weapon: ("weapon.spear.adlet"), + ), + ), + (Mandragora, Female): ( + main: ( + offset: (-0.5, -3.0, -5.0), + weapon: ("weapon.spear.adlet"), + ), + ), + (Kappa, Male): ( + main: ( + offset: (-0.5, -3.0, -5.0), + weapon: ("weapon.spear.adlet"), + ), + ), + (Kappa, Female): ( + main: ( + offset: (-0.5, -3.0, -5.0), + weapon: ("weapon.spear.adlet"), + ), + ), +}) diff --git a/assets/voxygen/voxel/npc/basilisk/male/chest.vox b/assets/voxygen/voxel/npc/basilisk/male/chest.vox index c4a395dbaa..bf9db901ec 100644 --- a/assets/voxygen/voxel/npc/basilisk/male/chest.vox +++ b/assets/voxygen/voxel/npc/basilisk/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:41dc59bb7c25502be8c91377a392da091e2eefc34a90f706fbe403279291352f +oid sha256:052e1f43f55fd46abe5d00d7f55edd0d1d3c16e6f593267a2f1e9e55084c1bee size 10876 diff --git a/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox b/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox index 29bcbca5d8..f030250eca 100644 --- a/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox +++ b/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82f16f69a291b05f3d6aab73aaa13a9addd13dc26d9ffc4beceb739a9933f3e7 -size 7428 +oid sha256:5dcbdb071a465648417cdb0a3bb7c332347f5a7803f96b6e74bce181cd53b807 +size 7576 diff --git a/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox b/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox index df5e608380..439e72d002 100644 --- a/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox +++ b/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b032da5cb40709480fe3850d78beb5c290caf84a2fc57a0559bb50ddceffb69 -size 4416 +oid sha256:cb65b35605d1eb968ec2f45bceeaee2e02d90c18304bbe99b383fff3633c72f4 +size 4564 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox b/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox index 6e9341a990..b2a620593d 100644 --- a/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox +++ b/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe0b0c88fab94154e0652ff9ef40c38aee5d3be680d41d1a3721b407d4ed37d5 -size 2020 +oid sha256:bb218b5541feddcd0943542995f8684298e25eab64efc27f47d6f89d55c10fe9 +size 2316 diff --git a/voxygen/anim/src/biped_small/idle.rs b/voxygen/anim/src/biped_small/idle.rs index 6dad997260..72348a531b 100644 --- a/voxygen/anim/src/biped_small/idle.rs +++ b/voxygen/anim/src/biped_small/idle.rs @@ -2,7 +2,6 @@ use super::{ super::{vek::*, Animation}, BipedSmallSkeleton, SkeletonAttr, }; -use std::{f32::consts::PI, ops::Mul}; pub struct IdleAnimation; diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index f43aafdeca..c8bf4bdd1a 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -1,8 +1,9 @@ pub mod idle; pub mod run; +pub mod wield; // Reexports -pub use self::{idle::IdleAnimation, run::RunAnimation}; +pub use self::{idle::IdleAnimation, run::RunAnimation, wield::WieldAnimation}; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; use common::comp::{self}; @@ -20,6 +21,10 @@ skeleton_impls!(struct BipedSmallSkeleton { + hand_r, + foot_l, + foot_r, + control, + control_l, + control_r, + }); impl Skeleton for BipedSmallSkeleton { @@ -38,15 +43,17 @@ impl Skeleton for BipedSmallSkeleton { ) -> Vec3 { let chest_mat = base_mat * Mat4::::from(self.chest); let shorts_mat = chest_mat * Mat4::::from(self.shorts); - + let control_mat = chest_mat * Mat4::::from(self.control); + let control_l_mat = Mat4::::from(self.control_l); + let control_r_mat = Mat4::::from(self.control_r); *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ make_bone(chest_mat * Mat4::::from(self.head)), make_bone(chest_mat), make_bone(shorts_mat), make_bone(shorts_mat * Mat4::::from(self.tail)), - make_bone(chest_mat * Mat4::::from(self.main)), - make_bone(chest_mat * Mat4::::from(self.hand_l)), - make_bone(chest_mat * Mat4::::from(self.hand_r)), + make_bone(control_mat * Mat4::::from(self.main)), + make_bone(control_mat * control_l_mat * Mat4::::from(self.hand_l)), + make_bone(control_mat * control_r_mat * Mat4::::from(self.hand_r)), make_bone(base_mat * Mat4::::from(self.foot_l)), make_bone(base_mat * Mat4::::from(self.foot_r)), ]; @@ -61,6 +68,7 @@ pub struct SkeletonAttr { tail: (f32, f32), hand: (f32, f32, f32), foot: (f32, f32, f32), + grip: (f32, f32, f32), } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -83,6 +91,7 @@ impl Default for SkeletonAttr { tail: (0.0, 0.0), hand: (0.0, 0.0, 0.0), foot: (0.0, 0.0, 0.0), + grip: (0.0, 0.0, 0.0), } } } @@ -104,7 +113,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sahagin, _) => (0.0, 15.0), (Adlet, _) => (0.0, 11.0), (Gnarling, _) => (0.0, 7.5), - (Mandragora, _) => (0.0, 8.5), + (Mandragora, _) => (0.0, 10.5), (Kappa, _) => (0.0, 14.5), }, shorts: match (body.species, body.body_type) { @@ -112,7 +121,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sahagin, _) => (0.5, -7.0), (Adlet, _) => (0.0, -3.0), (Gnarling, _) => (0.0, -3.0), - (Mandragora, _) => (0.0, -3.0), + (Mandragora, _) => (0.0, -6.5), (Kappa, _) => (0.0, -3.0), }, tail: match (body.species, body.body_type) { @@ -120,16 +129,16 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sahagin, _) => (-2.5, -2.0), (Adlet, _) => (-4.5, -2.0), (Gnarling, _) => (-2.0, 1.5), - (Mandragora, _) => (0.0, 0.0), - (Kappa, _) => (0.0, -3.0), + (Mandragora, _) => (0.0, -1.0), + (Kappa, _) => (0.0, -4.0), }, hand: match (body.species, body.body_type) { - (Gnome, _) => (6.0, 0.5, -1.0), - (Sahagin, _) => (9.5, 3.5, -2.0), - (Adlet, _) => (6.0, -0.5, 0.0), - (Gnarling, _) => (5.0, 0.0, 1.5), - (Mandragora, _) => (6.0, -0.5, -2.5), - (Kappa, _) => (7.5, 3.5, -2.0), + (Gnome, _) => (4.0, 0.5, -1.0), + (Sahagin, _) => (3.5, 3.5, -2.0), + (Adlet, _) => (4.5, -0.5, 2.0), + (Gnarling, _) => (4.0, 0.0, 1.5), + (Mandragora, _) => (4.0, -0.5, -2.5), + (Kappa, _) => (4.0, 3.5, -0.5), }, foot: match (body.species, body.body_type) { (Gnome, _) => (3.0, 0.0, 4.0), @@ -139,6 +148,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mandragora, _) => (3.0, 0.0, 4.0), (Kappa, _) => (3.0, 3.0, 9.0), }, + grip: match (body.species, body.body_type) { + (Gnome, _) => (0.0, 0.0, 5.0), + (Sahagin, _) => (1.0, 0.0, 13.0), + (Adlet, _) => (0.0, 0.0, 7.0), + (Gnarling, _) => (0.0, 0.0, 7.0), + (Mandragora, _) => (0.0, 0.0, 7.0), + (Kappa, _) => (0.75, 1.0, 12.0), + }, } } } diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index 3426dcb806..bf35df919e 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -19,7 +19,7 @@ impl Animation for RunAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (velocity, orientation, last_ori, global_time, avg_vel, acc_vel): Self::Dependency, + (velocity, orientation, last_ori, global_time, _avg_vel, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, @@ -27,7 +27,6 @@ impl Animation for RunAnimation { let mut next = (*skeleton).clone(); let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; - let impact = (avg_vel.z).max(-8.0); let speednorm = speed / 9.4; let lab = 1.0; @@ -105,9 +104,7 @@ impl Animation for RunAnimation { ) / 13.0; next.chest.orientation = Quaternion::rotation_z(short * 0.06 + tilt * -0.6) * Quaternion::rotation_y(tilt * 1.6) - * Quaternion::rotation_x( - impact * 0.06 + shortalter * 0.035 + speednorm * -0.4 + (tilt.abs()), - ); + * Quaternion::rotation_x(shortalter * 0.035 + speednorm * -0.4 + (tilt.abs())); next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); next.shorts.orientation = Quaternion::rotation_x(0.1 * speednorm) @@ -136,10 +133,10 @@ impl Animation for RunAnimation { next.foot_l.position = Vec3::new( -s_a.foot.0 + footstrafel * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.0 * speednorm + footrotl * -4.5 * speednorm) + + (1.0 - sideabs) * (-1.0 * speednorm + footrotl * -1.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 - + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -2.1 * speednorm).max(-1.0))) + + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -1.1 * speednorm).max(-1.0))) + side * ((footvertsl * 1.5).max(-1.0)), ) / 13.0; next.foot_l.orientation = Quaternion::rotation_x( @@ -151,10 +148,10 @@ impl Animation for RunAnimation { next.foot_r.position = Vec3::new( s_a.foot.0 + footstrafer * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.0 * speednorm + footrotr * -4.5 * speednorm) + + (1.0 - sideabs) * (-1.0 * speednorm + footrotr * -1.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 - + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -2.1 * speednorm).max(-1.0))) + + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -1.1 * speednorm).max(-1.0))) + side * ((footvertsr * -1.5).max(-1.0)), ) / 13.0; next.foot_r.orientation = Quaternion::rotation_x( diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs new file mode 100644 index 0000000000..eaeed43738 --- /dev/null +++ b/voxygen/anim/src/biped_small/wield.rs @@ -0,0 +1,85 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; +use std::f32::consts::PI; + +pub struct WieldAnimation; + +type WieldAnimationDependency = (Vec3, Vec3, Vec3, f64, Vec3, f32); + +impl Animation for WieldAnimation { + type Dependency = WieldAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_wield\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_wield")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (velocity, _orientation, _last_ori, _global_time, _avg_vel, acc_vel): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + + let fastacc = (acc_vel * 2.0).sin(); + let fast = (anim_time as f32 * 10.0).sin(); + let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); + let slow = (anim_time as f32 * 2.0).sin(); + + let speednorm = speed / 9.4; + let speednormcancel = 1.0 - speednorm; + + next.foot_l.scale = Vec3::one() / 13.0; + next.foot_r.scale = Vec3::one() / 13.0; + + next.chest.scale = Vec3::one() / 13.0; + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); + next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) + * Quaternion::rotation_y(fast * 0.15 * speednormcancel); + next.chest.position = Vec3::new( + 0.0, + s_a.chest.0, + s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, + ) / 13.0; + + next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); + //next.main.position = Vec3::new(0.0, s_a.hand.2*-1.0, 0.0); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + + next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0); + + next.control.position = Vec3::new( + -3.0, + s_a.grip.2, + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + fastacc * 1.5 + fastalt * 0.5 * speednormcancel, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 1.5 + slow * 0.1) * Quaternion::rotation_y(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 1.5 + slow * 0.1 + s_a.grip.0 * 0.2) + * Quaternion::rotation_y(0.5 + slow * 0.0 + s_a.grip.0 * 0.2); + + next.control.orientation = Quaternion::rotation_x(-1.35 + 0.5 * speednorm); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + + next + } +} diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 412d1475e8..8483653367 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -2478,7 +2478,6 @@ struct SidedBSCentralVoxSpec { chest: BipedSmallCentralSubSpec, shorts: BipedSmallCentralSubSpec, tail: BipedSmallCentralSubSpec, - main: BipedSmallCentralSubSpec, } #[derive(Deserialize)] struct BipedSmallCentralSubSpec { @@ -2500,11 +2499,24 @@ struct BipedSmallLateralSubSpec { lateral: VoxSimple, } +#[derive(Deserialize)] +struct BipedSmallWeaponSpec(HashMap<(BSSpecies, BSBodyType), SidedBSWeaponVoxSpec>); +#[derive(Deserialize)] +struct SidedBSWeaponVoxSpec { + main: BipedSmallWeaponSubSpec, +} +#[derive(Deserialize)] +struct BipedSmallWeaponSubSpec { + offset: [f32; 3], // Should be relative to initial origin + weapon: VoxSimple, +} + make_vox_spec!( biped_small::Body, struct BipedSmallSpec { central: BipedSmallCentralSpec = "voxygen.voxel.biped_small_central_manifest", lateral: BipedSmallLateralSpec = "voxygen.voxel.biped_small_lateral_manifest", + weapon: BipedSmallWeaponSpec = "voxygen.voxel.biped_small_weapon_manifest", }, |FigureKey { body, .. }, spec| { [ @@ -2524,7 +2536,7 @@ make_vox_spec!( body.species, body.body_type, )), - Some(spec.central.read().0.mesh_main( + Some(spec.weapon.read().0.mesh_main( body.species, body.body_type, )), @@ -2619,22 +2631,6 @@ impl BipedSmallCentralSpec { (central, Vec3::from(spec.tail.offset)) } - - fn mesh_main(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No main specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, - }; - let central = graceful_load_segment(&spec.main.central.0); - - (central, Vec3::from(spec.main.offset)) - } } impl BipedSmallLateralSpec { @@ -2702,6 +2698,24 @@ impl BipedSmallLateralSpec { (lateral, Vec3::from(spec.foot_r.offset)) } } +impl BipedSmallWeaponSpec { + fn mesh_main(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No main specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let weapon = graceful_load_segment(&spec.main.weapon.0); + + (weapon, Vec3::from(spec.main.offset)) + } +} + //// #[derive(Deserialize)] diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index a9d645ae5f..8669f3b3ac 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2624,23 +2624,37 @@ impl FigureMgr { &mut state_animation_rate, skeleton_attr, ), - _ => anim::biped_small::RunAnimation::update_skeleton( + _ => anim::biped_small::IdleAnimation::update_skeleton( &BipedSmallSkeleton::default(), - ( - vel.0, - ori, - state.last_ori, - time, - state.avg_vel, - state.acc_vel, - ), + (vel.0, ori, state.last_ori, time, state.avg_vel), state.state_time, &mut state_animation_rate, skeleton_attr, ), }; - state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt_lerp); + let target_bones = match &character { + CharacterState::Wielding { .. } => { + anim::biped_small::WieldAnimation::update_skeleton( + &target_base, + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + }, + // TODO! + _ => target_base, + }; + + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_bones, dt_lerp); state.update( renderer, pos.0, From 66664f3f894716a397277edb60ecefb0e9562c29 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Wed, 20 Jan 2021 20:57:03 -0500 Subject: [PATCH 09/36] the stabs --- .../common/abilities/spear/doublestrike.ron | 35 ++++++ .../abilities/weapon_ability_manifest.ron | 6 + .../items/npc_weapons/spear/wooden_spear.ron | 15 +++ .../voxel/biped_small_weapon_manifest.ron | 76 +----------- common/src/comp/inventory/item/tool.rs | 2 + common/src/comp/inventory/loadout_builder.rs | 15 ++- voxygen/anim/src/biped_small/alpha.rs | 109 ++++++++++++++++++ voxygen/anim/src/biped_small/idle.rs | 3 +- voxygen/anim/src/biped_small/mod.rs | 5 +- voxygen/anim/src/biped_small/run.rs | 2 + voxygen/anim/src/biped_small/wield.rs | 9 +- voxygen/src/hud/util.rs | 1 + voxygen/src/scene/figure/load.rs | 71 +++++++++--- voxygen/src/scene/figure/mod.rs | 59 ++++++++++ 14 files changed, 315 insertions(+), 93 deletions(-) create mode 100644 assets/common/abilities/spear/doublestrike.ron create mode 100644 assets/common/items/npc_weapons/spear/wooden_spear.ron create mode 100644 voxygen/anim/src/biped_small/alpha.rs diff --git a/assets/common/abilities/spear/doublestrike.ron b/assets/common/abilities/spear/doublestrike.ron new file mode 100644 index 0000000000..ce79b87260 --- /dev/null +++ b/assets/common/abilities/spear/doublestrike.ron @@ -0,0 +1,35 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 90, + damage_increase: 10, + knockback: 8.0, + range: 3.5, + angle: 50.0, + base_buildup_duration: 350, + base_swing_duration: 75, + base_recover_duration: 400, + forward_movement: 2.5, + ), + ( + stage: 2, + base_damage: 130, + damage_increase: 15, + knockback: 12.0, + range: 3.5, + angle: 30.0, + base_buildup_duration: 500, + base_swing_duration: 100, + base_recover_duration: 500, + forward_movement: 2.0, + ), + ], + initial_energy_gain: 25, + max_energy_gain: 175, + energy_increase: 30, + speed_increase: 0.075, + max_speed_increase: 1.6, + scales_from_combo: 2, + is_interruptible: false, +) \ No newline at end of file diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index bf5bb437ac..5f415d04e1 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -29,6 +29,12 @@ (Some(Bow(UnlockRepeater)), "common.abilities.bow.repeater"), ], ), + Spear: ( + primary: "common.abilities.spear.doublestrike", + secondary: "common.abilities.spear.doublestrike", + skills: [], + + ), Staff: ( primary: "common.abilities.staff.firebomb", secondary: "common.abilities.staff.flamethrower", diff --git a/assets/common/items/npc_weapons/spear/wooden_spear.ron b/assets/common/items/npc_weapons/spear/wooden_spear.ron new file mode 100644 index 0000000000..e24f70e1c7 --- /dev/null +++ b/assets/common/items/npc_weapons/spear/wooden_spear.ron @@ -0,0 +1,15 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool( + ( + kind: Spear, + stats: ( + equip_time_millis: 250, + power: 1.0, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/voxygen/voxel/biped_small_weapon_manifest.ron b/assets/voxygen/voxel/biped_small_weapon_manifest.ron index 06850173f8..82ad7e89c7 100644 --- a/assets/voxygen/voxel/biped_small_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_small_weapon_manifest.ron @@ -1,74 +1,10 @@ ({ - (Gnome, Male): ( - main: ( - offset: (-1.5, -3.0, -5.0), - weapon: ("weapon.spear.sahagin"), - ), + "common.items.npc_weapons.spear.wooden_spear": ( + vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + color: None ), - (Gnome, Female): ( - main: ( - offset: (-1.5, -3.0, -5.0), - weapon: ("weapon.spear.sahagin"), - ), - ), - (Sahagin, Male): ( - main: ( - offset: (-1.5, -3.0, -5.0), - weapon: ("weapon.spear.sahagin"), - ), - ), - (Sahagin, Female): ( - main: ( - offset: (-1.5, -3.0, -5.0), - weapon: ("weapon.spear.sahagin"), - ), - ), - (Adlet, Male): ( - main: ( - offset: (-0.5, -3.0, -5.0), - weapon: ("weapon.spear.adlet"), - ), - ), - (Adlet, Female): ( - main: ( - offset: (-0.5, -3.0, -5.0), - weapon: ("weapon.spear.adlet"), - ), - ), - (Gnarling, Male): ( - main: ( - offset: (-0.5, -3.0, -5.0), - weapon: ("weapon.spear.adlet"), - ), - ), - (Gnarling, Female): ( - main: ( - offset: (-0.5, -3.0, -5.0), - weapon: ("weapon.spear.adlet"), - ), - ), - (Mandragora, Male): ( - main: ( - offset: (-0.5, -3.0, -5.0), - weapon: ("weapon.spear.adlet"), - ), - ), - (Mandragora, Female): ( - main: ( - offset: (-0.5, -3.0, -5.0), - weapon: ("weapon.spear.adlet"), - ), - ), - (Kappa, Male): ( - main: ( - offset: (-0.5, -3.0, -5.0), - weapon: ("weapon.spear.adlet"), - ), - ), - (Kappa, Female): ( - main: ( - offset: (-0.5, -3.0, -5.0), - weapon: ("weapon.spear.adlet"), - ), + "common.items.weapon.spear.adlet": ( + vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)), + color: None ), }) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 11dad4f3a9..4dce7a4a0e 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -23,6 +23,7 @@ pub enum ToolKind { Staff, Sceptre, Shield, + Spear, Unique(UniqueKind), Debug, Farming, @@ -383,4 +384,5 @@ pub enum UniqueKind { TheropodBasic, TheropodBird, ObjectTurret, + WoodenSpear, } diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 5f1620709c..7184d94772 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -1,5 +1,5 @@ use crate::comp::{ - biped_large, golem, + biped_large, biped_small, golem, inventory::{ loadout::Loadout, slot::{ArmorSlot, EquipSlot}, @@ -242,6 +242,19 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.turret", )); }, + Body::BipedSmall(biped_small) => match (biped_small.species, biped_small.body_type) + { + (biped_small::Species::Gnome, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.spear.wooden_spear", + )); + }, + _ => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.spear.wooden_spear", + )); + }, + }, _ => {}, }; } diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs new file mode 100644 index 0000000000..fe42f0c368 --- /dev/null +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -0,0 +1,109 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; +use common::states::utils::StageSection; +use std::f32::consts::PI; + +pub struct AlphaAnimation; + +type AlphaAnimationDependency = ( + Vec3, + Vec3, + Vec3, + f64, + Vec3, + f32, + Option, + f64, +); + +impl Animation for AlphaAnimation { + type Dependency = AlphaAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_alpha\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_alpha")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (velocity, _orientation, _last_ori, global_time, _avg_vel, acc_vel, stage_section, timer): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + + let fastacc = (acc_vel * 2.0).sin(); + let fast = (anim_time as f32 * 10.0).sin(); + let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); + let slow = (anim_time as f32 * 2.0).sin(); + + let speednorm = speed / 9.4; + let speednormcancel = 1.0 - speednorm; + + let (movement1base, movement2base, movement3) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).sqrt(), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, (anim_time as f32).powi(4), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - movement3; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum() as f32; + let movement1 = mirror * movement1base * pullback; + let movement2 = mirror * movement2base * pullback; + let movement1abs = movement1base * pullback; + let movement2abs = movement2base * pullback; + + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.orientation = Quaternion::rotation_x(movement1abs * -0.1 + movement2abs * 0.5) + * Quaternion::rotation_z(movement1abs * -0.2 + movement2abs * 0.6) + * Quaternion::rotation_y(movement1abs * 0.3 + movement2abs * -0.5); + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) / 13.0; + next.chest.orientation = Quaternion::rotation_z(movement1abs * 0.5 + movement2abs * -0.6); + + next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); + next.shorts.orientation = Quaternion::rotation_z(movement1abs * -0.2 + movement2abs * 0.2); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0); + + next.control.position = Vec3::new( + -3.0 + movement1abs * -3.0 + movement2abs * 5.0, + s_a.grip.2 + movement1abs * -12.0 + movement2abs * 17.0, + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + movement2abs * 10.0, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 1.5 + movement1abs * -1.0 + movement2abs * 3.0) + * Quaternion::rotation_y(-0.3); + next.control_r.orientation = Quaternion::rotation_x( + PI / 1.5 + s_a.grip.0 * 0.2 + movement1abs * -1.0 + movement2abs * 3.0, + ) * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); + + next.control.orientation = + Quaternion::rotation_x(-1.35 + movement1abs * -0.3 + movement2abs * 1.0) + * Quaternion::rotation_z(movement1abs * 1.0 + movement2abs * -1.8) + * Quaternion::rotation_y(movement2abs * 0.5); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + + next + } +} diff --git a/voxygen/anim/src/biped_small/idle.rs b/voxygen/anim/src/biped_small/idle.rs index 72348a531b..840fc1214b 100644 --- a/voxygen/anim/src/biped_small/idle.rs +++ b/voxygen/anim/src/biped_small/idle.rs @@ -34,7 +34,8 @@ impl Animation for IdleAnimation { next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3) / 13.0; next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); - next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.position = Vec3::new(2.0, -3.0, -3.0); + next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index c8bf4bdd1a..bc48208357 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -1,9 +1,12 @@ +pub mod alpha; pub mod idle; pub mod run; pub mod wield; // Reexports -pub use self::{idle::IdleAnimation, run::RunAnimation, wield::WieldAnimation}; +pub use self::{ + alpha::AlphaAnimation, idle::IdleAnimation, run::RunAnimation, wield::WieldAnimation, +}; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; use common::comp::{self}; diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index bf35df919e..70330eb8b1 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -105,6 +105,8 @@ impl Animation for RunAnimation { next.chest.orientation = Quaternion::rotation_z(short * 0.06 + tilt * -0.6) * Quaternion::rotation_y(tilt * 1.6) * Quaternion::rotation_x(shortalter * 0.035 + speednorm * -0.4 + (tilt.abs())); + next.main.position = Vec3::new(2.0, -3.0, -3.0); + next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57); next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); next.shorts.orientation = Quaternion::rotation_x(0.1 * speednorm) diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs index eaeed43738..cbb1cc1bdc 100644 --- a/voxygen/anim/src/biped_small/wield.rs +++ b/voxygen/anim/src/biped_small/wield.rs @@ -41,7 +41,7 @@ impl Animation for WieldAnimation { next.chest.scale = Vec3::one() / 13.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) - * Quaternion::rotation_y(fast * 0.15 * speednormcancel); + * Quaternion::rotation_y(fast * 0.07 * speednormcancel); next.chest.position = Vec3::new( 0.0, s_a.chest.0, @@ -52,6 +52,7 @@ impl Animation for WieldAnimation { //next.main.position = Vec3::new(0.0, s_a.hand.2*-1.0, 0.0); next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); @@ -65,7 +66,11 @@ impl Animation for WieldAnimation { next.control.position = Vec3::new( -3.0, s_a.grip.2, - -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + fastacc * 1.5 + fastalt * 0.5 * speednormcancel, + -s_a.grip.2 / 2.5 + + s_a.grip.0 * -2.0 + + fastacc * 1.5 + + fastalt * 0.5 * speednormcancel + + speednorm * 2.0, ); next.control_l.orientation = diff --git a/voxygen/src/hud/util.rs b/voxygen/src/hud/util.rs index cde747dfe4..4295469fd2 100644 --- a/voxygen/src/hud/util.rs +++ b/voxygen/src/hud/util.rs @@ -153,6 +153,7 @@ fn tool_desc(tool: &Tool, components: &[Item], msm: &MaterialStatManifest, desc: ToolKind::Staff => "Staff", ToolKind::Sceptre => "Sceptre", ToolKind::Shield => "Shield", + ToolKind::Spear => "Spear", ToolKind::Unique(_) => "Unique", ToolKind::Debug => "Debug", ToolKind::Farming => "Farming Tool", diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 8483653367..34eb78c9c4 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -2500,16 +2500,7 @@ struct BipedSmallLateralSubSpec { } #[derive(Deserialize)] -struct BipedSmallWeaponSpec(HashMap<(BSSpecies, BSBodyType), SidedBSWeaponVoxSpec>); -#[derive(Deserialize)] -struct SidedBSWeaponVoxSpec { - main: BipedSmallWeaponSubSpec, -} -#[derive(Deserialize)] -struct BipedSmallWeaponSubSpec { - offset: [f32; 3], // Should be relative to initial origin - weapon: VoxSimple, -} +struct BipedSmallWeaponSpec(HashMap); make_vox_spec!( biped_small::Body, @@ -2518,8 +2509,20 @@ make_vox_spec!( lateral: BipedSmallLateralSpec = "voxygen.voxel.biped_small_lateral_manifest", weapon: BipedSmallWeaponSpec = "voxygen.voxel.biped_small_weapon_manifest", }, - |FigureKey { body, .. }, spec| { - [ + |FigureKey { body, extra }, spec| { + const DEFAULT_LOADOUT: super::cache::CharacterCacheKey = super::cache::CharacterCacheKey { + third_person: None, + tool: None, + lantern: None, + glider: None, + hand: None, + foot: None, + }; + + // TODO: This is bad code, maybe this method should return Option<_> + let loadout = extra.as_deref().unwrap_or(&DEFAULT_LOADOUT); + let tool = loadout.tool.as_ref(); +[ Some(spec.central.read().0.mesh_head( body.species, body.body_type, @@ -2536,10 +2539,12 @@ make_vox_spec!( body.species, body.body_type, )), - Some(spec.weapon.read().0.mesh_main( - body.species, - body.body_type, - )), + tool.and_then(|tool| tool.active.as_ref()).map(|tool| { + spec.weapon.read().0.mesh_main( + tool, + false, + ) + }), Some(spec.lateral.read().0.mesh_hand_l( body.species, body.body_type, @@ -2698,7 +2703,7 @@ impl BipedSmallLateralSpec { (lateral, Vec3::from(spec.foot_r.offset)) } } -impl BipedSmallWeaponSpec { +/*impl BipedSmallWeaponSpec { fn mesh_main(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, @@ -2714,8 +2719,38 @@ impl BipedSmallWeaponSpec { (weapon, Vec3::from(spec.main.offset)) } -} +*///} +impl BipedSmallWeaponSpec { + fn mesh_main(&self, item_definition_id: &str, flipped: bool) -> BoneMeshes { + let spec = match self.0.get(item_definition_id) { + Some(spec) => spec, + None => { + error!(?item_definition_id, "No tool/weapon specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + }; + let tool_kind_segment = if flipped { + graceful_load_segment_flipped(&spec.vox_spec.0) + } else { + graceful_load_segment(&spec.vox_spec.0) + }; + + let offset = Vec3::new( + if flipped { + //log::warn!("tool kind segment {:?}", ); + //tool_kind_segment.; + 0.0 - spec.vox_spec.1[0] - (tool_kind_segment.sz.x as f32) + } else { + spec.vox_spec.1[0] + }, + spec.vox_spec.1[1], + spec.vox_spec.1[2], + ); + + (tool_kind_segment, offset) + } +} //// #[derive(Deserialize)] diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 8669f3b3ac..2d38d801fe 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2430,6 +2430,65 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::ComboMelee(s) => { + let stage_index = (s.stage - 1) as usize; + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time + / s.static_data.stage_data[stage_index] + .base_buildup_duration + .as_secs_f64() + }, + StageSection::Swing => { + stage_time + / s.static_data.stage_data[stage_index] + .base_swing_duration + .as_secs_f64() + }, + StageSection::Recover => { + stage_time + / s.static_data.stage_data[stage_index] + .base_recover_duration + .as_secs_f64() + }, + _ => 0.0, + }; + match s.stage { + 1 => anim::biped_small::AlphaAnimation::update_skeleton( + &target_base, + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + _ => anim::biped_small::AlphaAnimation::update_skeleton( + &target_base, + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + } + }, // TODO! _ => target_base, }; From ac16a8900d93958f78746e65ed7449f0ddca64bd Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 21 Jan 2021 01:50:46 -0500 Subject: [PATCH 10/36] bow --- assets/common/items/npc_weapons/bow/adlet.ron | 15 ++ assets/common/npc_names.ron | 2 +- .../voxel/biped_small_weapon_manifest.ron | 4 + assets/voxygen/voxel/weapon/bow/adlet.vox | 3 + common/src/comp/inventory/loadout_builder.rs | 19 ++- server/src/persistence/json_models.rs | 2 + voxygen/anim/src/biped_small/alpha.rs | 2 +- voxygen/anim/src/biped_small/mod.rs | 4 +- voxygen/anim/src/biped_small/shoot.rs | 129 ++++++++++++++++++ voxygen/anim/src/biped_small/wield.rs | 82 +++++++---- voxygen/src/scene/figure/mod.rs | 91 ++++++++++++ 11 files changed, 326 insertions(+), 27 deletions(-) create mode 100644 assets/common/items/npc_weapons/bow/adlet.ron create mode 100644 assets/voxygen/voxel/weapon/bow/adlet.vox create mode 100644 voxygen/anim/src/biped_small/shoot.rs diff --git a/assets/common/items/npc_weapons/bow/adlet.ron b/assets/common/items/npc_weapons/bow/adlet.ron new file mode 100644 index 0000000000..3ac5f32607 --- /dev/null +++ b/assets/common/items/npc_weapons/bow/adlet.ron @@ -0,0 +1,15 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool( + ( + kind: Bow, + stats: ( + equip_time_millis: 200, + power: 0.8, + speed: 1.0 + ), + ) + ), + quality: Moderate, +) diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index be28efa0fd..07c265b068 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -924,7 +924,7 @@ biped_small: ( body: ( keyword: "biped_small", - names: [ + names_0: [ "Harvey" ] ), diff --git a/assets/voxygen/voxel/biped_small_weapon_manifest.ron b/assets/voxygen/voxel/biped_small_weapon_manifest.ron index 82ad7e89c7..6bc9a6737f 100644 --- a/assets/voxygen/voxel/biped_small_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_small_weapon_manifest.ron @@ -7,4 +7,8 @@ vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)), color: None ), + "common.items.npc_weapons.bow.adlet": ( + vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + color: None + ), }) diff --git a/assets/voxygen/voxel/weapon/bow/adlet.vox b/assets/voxygen/voxel/weapon/bow/adlet.vox new file mode 100644 index 0000000000..208e52cf49 --- /dev/null +++ b/assets/voxygen/voxel/weapon/bow/adlet.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef2809ad85372e7662cb5bf787d6054e49b6b749eaf5c2157e12a15649dc3242 +size 1344 diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 7184d94772..eccb4df106 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -32,6 +32,8 @@ pub struct LoadoutBuilder(Loadout); #[derive(Copy, Clone)] pub enum LoadoutConfig { + AdletArcher, + AdletWarrior, Guard, Villager, Outcast, @@ -249,9 +251,14 @@ impl LoadoutBuilder { "common.items.npc_weapons.spear.wooden_spear", )); }, + (biped_small::Species::Adlet, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.bow.adlet", + )); + }, _ => { main_tool = Some(Item::new_from_asset_expect( - "common.items.npc_weapons.spear.wooden_spear", + "common.items.npc_weapons.bow.adlet", )); }, }, @@ -270,6 +277,16 @@ impl LoadoutBuilder { let loadout = if let Some(config) = config { use LoadoutConfig::*; match config { + AdletArcher => LoadoutBuilder::new() + .active_item(Some(Item::new_from_asset_expect( + "common.items.npc_weapons.bow.adlet", + ))) + .build(), + AdletWarrior => LoadoutBuilder::new() + .active_item(Some(Item::new_from_asset_expect( + "common.items.npc_weapons.spear.wooden_spear", + ))) + .build(), Guard => LoadoutBuilder::new() .active_item(active_item) .shoulder(Some(Item::new_from_asset_expect( diff --git a/server/src/persistence/json_models.rs b/server/src/persistence/json_models.rs index 99bddbe5ed..a067901148 100644 --- a/server/src/persistence/json_models.rs +++ b/server/src/persistence/json_models.rs @@ -141,6 +141,7 @@ pub fn skill_to_db_string(skill: comp::skills::Skill) -> String { UnlockGroup(SkillGroupKind::Weapon(ToolKind::Sceptre)) => "Unlock Weapon Sceptre", UnlockGroup(SkillGroupKind::Weapon(ToolKind::Dagger)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Shield)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Spear)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Debug)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Farming)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Empty)) @@ -276,6 +277,7 @@ pub fn skill_group_to_db_string(skill_group: comp::skills::SkillGroupKind) -> St Weapon(ToolKind::Sceptre) => "Weapon Sceptre", Weapon(ToolKind::Dagger) | Weapon(ToolKind::Shield) + | Weapon(ToolKind::Spear) | Weapon(ToolKind::Debug) | Weapon(ToolKind::Farming) | Weapon(ToolKind::Empty) diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs index fe42f0c368..12541dde64 100644 --- a/voxygen/anim/src/biped_small/alpha.rs +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -2,7 +2,7 @@ use super::{ super::{vek::*, Animation}, BipedSmallSkeleton, SkeletonAttr, }; -use common::states::utils::StageSection; +use common::{comp::item::ToolKind, states::utils::StageSection}; use std::f32::consts::PI; pub struct AlphaAnimation; diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index bc48208357..08e069604c 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -1,11 +1,13 @@ pub mod alpha; pub mod idle; pub mod run; +pub mod shoot; pub mod wield; // Reexports pub use self::{ - alpha::AlphaAnimation, idle::IdleAnimation, run::RunAnimation, wield::WieldAnimation, + alpha::AlphaAnimation, idle::IdleAnimation, run::RunAnimation, shoot::ShootAnimation, + wield::WieldAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs new file mode 100644 index 0000000000..974f6d2f14 --- /dev/null +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -0,0 +1,129 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; +use common::{comp::item::ToolKind, states::utils::StageSection}; +use std::f32::consts::PI; + +pub struct ShootAnimation; + +type ShootAnimationDependency = ( + Option, + Vec3, + Vec3, + Vec3, + f64, + Vec3, + f32, + Option, + f64, +); + +impl Animation for ShootAnimation { + type Dependency = ShootAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_shoot\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_shoot")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + ( + active_tool_kind, + velocity, + _orientation, + _last_ori, + global_time, + _avg_vel, + acc_vel, + stage_section, + timer, + ): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + + let fastacc = (acc_vel * 2.0).sin(); + let fast = (anim_time as f32 * 10.0).sin(); + let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); + let slow = (anim_time as f32 * 2.0).sin(); + + let speednorm = speed / 9.4; + let speednormcancel = 1.0 - speednorm; + + next.foot_l.scale = Vec3::one() / 13.0; + next.foot_r.scale = Vec3::one() / 13.0; + + next.chest.scale = Vec3::one() / 13.0; + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); + next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) + * Quaternion::rotation_y(fast * 0.07 * speednormcancel); + next.chest.position = Vec3::new( + 0.0, + s_a.chest.0, + s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, + ) / 13.0; + + next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + match active_tool_kind { + Some(ToolKind::Bow) => { + let (movement1base, movement2base, movement3) = match stage_section { + Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), + Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - movement3; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum() as f32; + let movement1 = mirror * movement1base * pullback; + let movement2 = mirror * movement2base * pullback; + let movement1abs = movement1base * pullback; + let movement2abs = movement2base * pullback; + next.control_l.position = Vec3::new( + 1.0 - s_a.grip.0 * 2.0 + movement2abs * -4.0, + movement2abs * -8.0, + 0.0, + ); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 6.0, -2.0); + + next.control.position = Vec3::new( + -1.0, + 2.0 + movement1abs * 4.0 + s_a.grip.2, + 3.0 + movement1abs * 8.0 - s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.3); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + s_a.grip.0 * 0.2) + * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); + + next.control.orientation = Quaternion::rotation_x(-0.3 + movement1abs * 0.7) + * Quaternion::rotation_y(0.5 * speednorm); + }, + _ => {}, + } + + next + } +} diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs index cbb1cc1bdc..0b7affbdeb 100644 --- a/voxygen/anim/src/biped_small/wield.rs +++ b/voxygen/anim/src/biped_small/wield.rs @@ -2,11 +2,20 @@ use super::{ super::{vek::*, Animation}, BipedSmallSkeleton, SkeletonAttr, }; +use common::comp::item::ToolKind; use std::f32::consts::PI; pub struct WieldAnimation; -type WieldAnimationDependency = (Vec3, Vec3, Vec3, f64, Vec3, f32); +type WieldAnimationDependency = ( + Option, + Vec3, + Vec3, + Vec3, + f64, + Vec3, + f32, +); impl Animation for WieldAnimation { type Dependency = WieldAnimationDependency; @@ -19,7 +28,7 @@ impl Animation for WieldAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (velocity, _orientation, _last_ori, _global_time, _avg_vel, acc_vel): Self::Dependency, + (active_tool_kind, velocity, _orientation, _last_ori, _global_time, _avg_vel, acc_vel): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, @@ -49,7 +58,10 @@ impl Animation for WieldAnimation { ) / 13.0; next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); - //next.main.position = Vec3::new(0.0, s_a.hand.2*-1.0, 0.0); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); @@ -60,30 +72,54 @@ impl Animation for WieldAnimation { next.hand_l.orientation = Quaternion::rotation_x(0.0); next.hand_r.orientation = Quaternion::rotation_x(0.0); - next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0); - next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0); + match active_tool_kind { + Some(ToolKind::Spear) => { + next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0); - next.control.position = Vec3::new( - -3.0, - s_a.grip.2, - -s_a.grip.2 / 2.5 - + s_a.grip.0 * -2.0 - + fastacc * 1.5 - + fastalt * 0.5 * speednormcancel - + speednorm * 2.0, - ); + next.control.position = Vec3::new( + -3.0, + s_a.grip.2, + -s_a.grip.2 / 2.5 + + s_a.grip.0 * -2.0 + + fastacc * 1.5 + + fastalt * 0.5 * speednormcancel + + speednorm * 2.0, + ); - next.control_l.orientation = - Quaternion::rotation_x(PI / 1.5 + slow * 0.1) * Quaternion::rotation_y(-0.3); - next.control_r.orientation = - Quaternion::rotation_x(PI / 1.5 + slow * 0.1 + s_a.grip.0 * 0.2) - * Quaternion::rotation_y(0.5 + slow * 0.0 + s_a.grip.0 * 0.2); + next.control_l.orientation = + Quaternion::rotation_x(PI / 1.5 + slow * 0.1) * Quaternion::rotation_y(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 1.5 + slow * 0.1 + s_a.grip.0 * 0.2) + * Quaternion::rotation_y(0.5 + slow * 0.0 + s_a.grip.0 * 0.2); - next.control.orientation = Quaternion::rotation_x(-1.35 + 0.5 * speednorm); + next.control.orientation = Quaternion::rotation_x(-1.35 + 0.5 * speednorm); + }, + Some(ToolKind::Bow) => { + next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 0.0, 0.0); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 6.0, -2.0); - next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) - * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + next.control.position = Vec3::new( + -1.0, + 2.0 + s_a.grip.2, + 3.0 + -s_a.grip.2 / 2.5 + + s_a.grip.0 * -2.0 + + fastacc * 1.5 + + fastalt * 0.5 * speednormcancel + + speednorm * 2.0, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + slow * 0.1) * Quaternion::rotation_y(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.0 + slow * 0.1 + s_a.grip.0 * 0.2) + * Quaternion::rotation_y(0.5 + slow * 0.0 + s_a.grip.0 * 0.2); + + next.control.orientation = Quaternion::rotation_x(-0.3 + 0.5 * speednorm) + * Quaternion::rotation_y(0.5 * speednorm); + }, + _ => {}, + } next } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 2d38d801fe..274178fe02 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2697,6 +2697,7 @@ impl FigureMgr { anim::biped_small::WieldAnimation::update_skeleton( &target_base, ( + active_tool_kind, vel.0, ori, state.last_ori, @@ -2709,6 +2710,96 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::BasicRanged(s) => { + let stage_time = s.timer.as_secs_f64(); + + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + + _ => 0.0, + }; + anim::biped_small::ShootAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + }, + CharacterState::ComboMelee(s) => { + let stage_index = (s.stage - 1) as usize; + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time + / s.static_data.stage_data[stage_index] + .base_buildup_duration + .as_secs_f64() + }, + StageSection::Swing => { + stage_time + / s.static_data.stage_data[stage_index] + .base_swing_duration + .as_secs_f64() + }, + StageSection::Recover => { + stage_time + / s.static_data.stage_data[stage_index] + .base_recover_duration + .as_secs_f64() + }, + _ => 0.0, + }; + match s.stage { + 1 => anim::biped_small::AlphaAnimation::update_skeleton( + &target_base, + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + _ => anim::biped_small::AlphaAnimation::update_skeleton( + &target_base, + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + } + }, // TODO! _ => target_base, }; From ca3248cc93dded3262f981e7c310005b8af1af4f Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 23 Jan 2021 17:37:38 -0500 Subject: [PATCH 11/36] new dungeon setups, new npcs, weapon specific loadouts, anims --- assets/common/items/npc_armor/chest/adlet.ron | 12 + .../common/items/npc_armor/chest/gnarling.ron | 12 + .../common/items/npc_armor/chest/haniwa.ron | 12 + assets/common/items/npc_armor/chest/kappa.ron | 12 + .../common/items/npc_armor/chest/myrmidon.ron | 12 + .../common/items/npc_armor/chest/sahagin.ron | 12 + assets/common/items/npc_armor/foot/adlet.ron | 12 + .../common/items/npc_armor/foot/gnarling.ron | 12 + assets/common/items/npc_armor/foot/haniwa.ron | 12 + assets/common/items/npc_armor/foot/kappa.ron | 12 + .../common/items/npc_armor/foot/myrmidon.ron | 12 + .../common/items/npc_armor/foot/sahagin.ron | 12 + assets/common/items/npc_armor/hand/adlet.ron | 12 + .../common/items/npc_armor/hand/gnarling.ron | 12 + assets/common/items/npc_armor/hand/haniwa.ron | 12 + assets/common/items/npc_armor/hand/kappa.ron | 12 + .../common/items/npc_armor/hand/myrmidon.ron | 12 + .../common/items/npc_armor/hand/sahagin.ron | 12 + assets/common/items/npc_armor/pants/adlet.ron | 12 + .../common/items/npc_armor/pants/gnarling.ron | 12 + .../common/items/npc_armor/pants/haniwa.ron | 12 + assets/common/items/npc_armor/pants/kappa.ron | 12 + .../common/items/npc_armor/pants/myrmidon.ron | 12 + .../common/items/npc_armor/pants/sahagin.ron | 12 + .../common/items/npc_weapons/staff/gnoll.ron | 15 + assets/common/npc_names.ron | 16 + .../biped_small_armor_chest_manifest.ron | 37 +++ .../voxel/biped_small_armor_foot_manifest.ron | 92 ++++++ .../voxel/biped_small_armor_hand_manifest.ron | 92 ++++++ .../biped_small_armor_pants_manifest.ron | 37 +++ .../voxel/biped_small_central_manifest.ron | 144 +++++++++ .../voxel/biped_small_lateral_manifest.ron | 176 +++++----- .../voxel/biped_small_weapon_manifest.ron | 4 + .../voxygen/voxel/npc/adlet/male/foot_l.vox | 3 - .../voxygen/voxel/npc/adlet/male/hand_l.vox | 3 - .../npc/adlet/male/{shorts.vox => pants.vox} | 0 .../voxygen/voxel/npc/cactid/male/chest.vox | 3 + .../voxygen/voxel/npc/cactid/male/foot_r.vox | 3 + .../voxygen/voxel/npc/cactid/male/hand_r.vox | 3 + assets/voxygen/voxel/npc/cactid/male/head.vox | 3 + .../voxygen/voxel/npc/cactid/male/pants.vox | 3 + .../voxel/npc/gnarling/male/foot_l.vox | 3 - .../voxel/npc/gnarling/male/hand_l.vox | 3 - .../gnarling/male/{shorts.vox => pants.vox} | 0 assets/voxygen/voxel/npc/gnoll/male/chest.vox | 3 + .../voxygen/voxel/npc/gnoll/male/foot_r.vox | 3 + .../voxygen/voxel/npc/gnoll/male/hand_r.vox | 3 + assets/voxygen/voxel/npc/gnoll/male/head.vox | 3 + assets/voxygen/voxel/npc/gnoll/male/pants.vox | 3 + assets/voxygen/voxel/npc/gnoll/male/tail.vox | 3 + .../voxygen/voxel/npc/gnome/male/foot_l.vox | 3 - .../voxygen/voxel/npc/gnome/male/hand_l.vox | 3 - .../voxel/npc/haniwa/male/HaniwaSoldier-7.vox | 3 + .../voxygen/voxel/npc/haniwa/male/chest.vox | 3 + .../voxygen/voxel/npc/haniwa/male/foot_r.vox | 3 + .../voxygen/voxel/npc/haniwa/male/hand_r.vox | 3 + assets/voxygen/voxel/npc/haniwa/male/head.vox | 3 + .../voxygen/voxel/npc/haniwa/male/pants.vox | 3 + .../voxygen/voxel/npc/kappa/male/foot_l.vox | 3 - .../voxygen/voxel/npc/kappa/male/hand_l.vox | 3 - .../npc/kappa/male/{shorts.vox => pants.vox} | 0 .../voxel/npc/mandragora/male/foot_l.vox | 3 - .../voxel/npc/mandragora/male/hand_l.vox | 3 - .../mandragora/male/{shorts.vox => pants.vox} | 0 .../npc/myrmidon/male/MyrmidonHoplite-5.vox | 3 + .../voxygen/voxel/npc/myrmidon/male/chest.vox | 3 + .../voxel/npc/myrmidon/male/foot_r.vox | 3 + .../voxel/npc/myrmidon/male/hand_r.vox | 3 + .../voxygen/voxel/npc/myrmidon/male/head.vox | 3 + .../voxygen/voxel/npc/myrmidon/male/pants.vox | 3 + .../voxygen/voxel/npc/myrmidon/male/tail.vox | 3 + .../voxygen/voxel/npc/sahagin/male/foot_l.vox | 3 - .../voxygen/voxel/npc/sahagin/male/hand_l.vox | 3 - .../sahagin/male/{shorts.vox => pants.vox} | 0 assets/voxygen/voxel/weapon/staff/gnoll.vox | 3 + common/src/comp/body/biped_small.rs | 18 +- common/src/comp/inventory/loadout_builder.rs | 104 +++++- common/src/skillset_builder.rs | 80 +++++ common/src/states/utils.rs | 2 +- voxygen/anim/src/biped_small/alpha.rs | 4 +- voxygen/anim/src/biped_small/idle.rs | 2 +- voxygen/anim/src/biped_small/mod.rs | 42 ++- voxygen/anim/src/biped_small/run.rs | 4 +- voxygen/anim/src/biped_small/shoot.rs | 6 +- voxygen/anim/src/biped_small/wield.rs | 29 +- voxygen/src/scene/figure/load.rs | 301 +++++++++--------- voxygen/src/scene/figure/mod.rs | 6 +- world/src/site/dungeon/mod.rs | 116 ++++--- 88 files changed, 1369 insertions(+), 357 deletions(-) create mode 100644 assets/common/items/npc_armor/chest/adlet.ron create mode 100644 assets/common/items/npc_armor/chest/gnarling.ron create mode 100644 assets/common/items/npc_armor/chest/haniwa.ron create mode 100644 assets/common/items/npc_armor/chest/kappa.ron create mode 100644 assets/common/items/npc_armor/chest/myrmidon.ron create mode 100644 assets/common/items/npc_armor/chest/sahagin.ron create mode 100644 assets/common/items/npc_armor/foot/adlet.ron create mode 100644 assets/common/items/npc_armor/foot/gnarling.ron create mode 100644 assets/common/items/npc_armor/foot/haniwa.ron create mode 100644 assets/common/items/npc_armor/foot/kappa.ron create mode 100644 assets/common/items/npc_armor/foot/myrmidon.ron create mode 100644 assets/common/items/npc_armor/foot/sahagin.ron create mode 100644 assets/common/items/npc_armor/hand/adlet.ron create mode 100644 assets/common/items/npc_armor/hand/gnarling.ron create mode 100644 assets/common/items/npc_armor/hand/haniwa.ron create mode 100644 assets/common/items/npc_armor/hand/kappa.ron create mode 100644 assets/common/items/npc_armor/hand/myrmidon.ron create mode 100644 assets/common/items/npc_armor/hand/sahagin.ron create mode 100644 assets/common/items/npc_armor/pants/adlet.ron create mode 100644 assets/common/items/npc_armor/pants/gnarling.ron create mode 100644 assets/common/items/npc_armor/pants/haniwa.ron create mode 100644 assets/common/items/npc_armor/pants/kappa.ron create mode 100644 assets/common/items/npc_armor/pants/myrmidon.ron create mode 100644 assets/common/items/npc_armor/pants/sahagin.ron create mode 100644 assets/common/items/npc_weapons/staff/gnoll.ron create mode 100644 assets/voxygen/voxel/biped_small_armor_chest_manifest.ron create mode 100644 assets/voxygen/voxel/biped_small_armor_foot_manifest.ron create mode 100644 assets/voxygen/voxel/biped_small_armor_hand_manifest.ron create mode 100644 assets/voxygen/voxel/biped_small_armor_pants_manifest.ron delete mode 100644 assets/voxygen/voxel/npc/adlet/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/adlet/male/hand_l.vox rename assets/voxygen/voxel/npc/adlet/male/{shorts.vox => pants.vox} (100%) create mode 100644 assets/voxygen/voxel/npc/cactid/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/cactid/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/cactid/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/cactid/male/head.vox create mode 100644 assets/voxygen/voxel/npc/cactid/male/pants.vox delete mode 100644 assets/voxygen/voxel/npc/gnarling/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/gnarling/male/hand_l.vox rename assets/voxygen/voxel/npc/gnarling/male/{shorts.vox => pants.vox} (100%) create mode 100644 assets/voxygen/voxel/npc/gnoll/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/gnoll/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/gnoll/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/gnoll/male/head.vox create mode 100644 assets/voxygen/voxel/npc/gnoll/male/pants.vox create mode 100644 assets/voxygen/voxel/npc/gnoll/male/tail.vox delete mode 100644 assets/voxygen/voxel/npc/gnome/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/gnome/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/haniwa/male/HaniwaSoldier-7.vox create mode 100644 assets/voxygen/voxel/npc/haniwa/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/haniwa/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/haniwa/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/haniwa/male/head.vox create mode 100644 assets/voxygen/voxel/npc/haniwa/male/pants.vox delete mode 100644 assets/voxygen/voxel/npc/kappa/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/kappa/male/hand_l.vox rename assets/voxygen/voxel/npc/kappa/male/{shorts.vox => pants.vox} (100%) delete mode 100644 assets/voxygen/voxel/npc/mandragora/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/mandragora/male/hand_l.vox rename assets/voxygen/voxel/npc/mandragora/male/{shorts.vox => pants.vox} (100%) create mode 100644 assets/voxygen/voxel/npc/myrmidon/male/MyrmidonHoplite-5.vox create mode 100644 assets/voxygen/voxel/npc/myrmidon/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/myrmidon/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/myrmidon/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/myrmidon/male/head.vox create mode 100644 assets/voxygen/voxel/npc/myrmidon/male/pants.vox create mode 100644 assets/voxygen/voxel/npc/myrmidon/male/tail.vox delete mode 100644 assets/voxygen/voxel/npc/sahagin/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/sahagin/male/hand_l.vox rename assets/voxygen/voxel/npc/sahagin/male/{shorts.vox => pants.vox} (100%) create mode 100644 assets/voxygen/voxel/weapon/staff/gnoll.vox diff --git a/assets/common/items/npc_armor/chest/adlet.ron b/assets/common/items/npc_armor/chest/adlet.ron new file mode 100644 index 0000000000..be662aa218 --- /dev/null +++ b/assets/common/items/npc_armor/chest/adlet.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Chest("Adlet"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/chest/gnarling.ron b/assets/common/items/npc_armor/chest/gnarling.ron new file mode 100644 index 0000000000..81c91445a8 --- /dev/null +++ b/assets/common/items/npc_armor/chest/gnarling.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Chest("Gnarling"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/chest/haniwa.ron b/assets/common/items/npc_armor/chest/haniwa.ron new file mode 100644 index 0000000000..3c420f6494 --- /dev/null +++ b/assets/common/items/npc_armor/chest/haniwa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Chest("Haniwa"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/chest/kappa.ron b/assets/common/items/npc_armor/chest/kappa.ron new file mode 100644 index 0000000000..a7189f1b03 --- /dev/null +++ b/assets/common/items/npc_armor/chest/kappa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Chest("Kappa"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/chest/myrmidon.ron b/assets/common/items/npc_armor/chest/myrmidon.ron new file mode 100644 index 0000000000..782f539a0c --- /dev/null +++ b/assets/common/items/npc_armor/chest/myrmidon.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Chest("Myrmidon"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/chest/sahagin.ron b/assets/common/items/npc_armor/chest/sahagin.ron new file mode 100644 index 0000000000..1c911c6c90 --- /dev/null +++ b/assets/common/items/npc_armor/chest/sahagin.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Chest("Sahagin"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/foot/adlet.ron b/assets/common/items/npc_armor/foot/adlet.ron new file mode 100644 index 0000000000..24794cdd30 --- /dev/null +++ b/assets/common/items/npc_armor/foot/adlet.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Foot("Adlet"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/foot/gnarling.ron b/assets/common/items/npc_armor/foot/gnarling.ron new file mode 100644 index 0000000000..553aeadbab --- /dev/null +++ b/assets/common/items/npc_armor/foot/gnarling.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Foot("Gnarling"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/foot/haniwa.ron b/assets/common/items/npc_armor/foot/haniwa.ron new file mode 100644 index 0000000000..c393e2728e --- /dev/null +++ b/assets/common/items/npc_armor/foot/haniwa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Foot("Haniwa"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/foot/kappa.ron b/assets/common/items/npc_armor/foot/kappa.ron new file mode 100644 index 0000000000..4406509875 --- /dev/null +++ b/assets/common/items/npc_armor/foot/kappa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Foot("Kappa"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/foot/myrmidon.ron b/assets/common/items/npc_armor/foot/myrmidon.ron new file mode 100644 index 0000000000..be94273279 --- /dev/null +++ b/assets/common/items/npc_armor/foot/myrmidon.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Foot("Myrmidon"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/foot/sahagin.ron b/assets/common/items/npc_armor/foot/sahagin.ron new file mode 100644 index 0000000000..21f97b1a69 --- /dev/null +++ b/assets/common/items/npc_armor/foot/sahagin.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Foot("Sahagin"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/hand/adlet.ron b/assets/common/items/npc_armor/hand/adlet.ron new file mode 100644 index 0000000000..69b21cca80 --- /dev/null +++ b/assets/common/items/npc_armor/hand/adlet.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Hand("Adlet"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/hand/gnarling.ron b/assets/common/items/npc_armor/hand/gnarling.ron new file mode 100644 index 0000000000..8f027ac373 --- /dev/null +++ b/assets/common/items/npc_armor/hand/gnarling.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Hand("Gnarling"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/hand/haniwa.ron b/assets/common/items/npc_armor/hand/haniwa.ron new file mode 100644 index 0000000000..fe2788e644 --- /dev/null +++ b/assets/common/items/npc_armor/hand/haniwa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Hand("Haniwa"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/hand/kappa.ron b/assets/common/items/npc_armor/hand/kappa.ron new file mode 100644 index 0000000000..4e35a8ac3e --- /dev/null +++ b/assets/common/items/npc_armor/hand/kappa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Hand("Kappa"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/hand/myrmidon.ron b/assets/common/items/npc_armor/hand/myrmidon.ron new file mode 100644 index 0000000000..913343266c --- /dev/null +++ b/assets/common/items/npc_armor/hand/myrmidon.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Hand("Myrmidon"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/hand/sahagin.ron b/assets/common/items/npc_armor/hand/sahagin.ron new file mode 100644 index 0000000000..3cf17b0154 --- /dev/null +++ b/assets/common/items/npc_armor/hand/sahagin.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Hand("Sahagin"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/pants/adlet.ron b/assets/common/items/npc_armor/pants/adlet.ron new file mode 100644 index 0000000000..e48f453558 --- /dev/null +++ b/assets/common/items/npc_armor/pants/adlet.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Pants("Adlet"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/pants/gnarling.ron b/assets/common/items/npc_armor/pants/gnarling.ron new file mode 100644 index 0000000000..7b9efe4fad --- /dev/null +++ b/assets/common/items/npc_armor/pants/gnarling.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Pants("Gnarling"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/pants/haniwa.ron b/assets/common/items/npc_armor/pants/haniwa.ron new file mode 100644 index 0000000000..58bbea28ca --- /dev/null +++ b/assets/common/items/npc_armor/pants/haniwa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Pants("Haniwa"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/pants/kappa.ron b/assets/common/items/npc_armor/pants/kappa.ron new file mode 100644 index 0000000000..6e6e144b2d --- /dev/null +++ b/assets/common/items/npc_armor/pants/kappa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Pants("Kappa"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/pants/myrmidon.ron b/assets/common/items/npc_armor/pants/myrmidon.ron new file mode 100644 index 0000000000..0a423b006b --- /dev/null +++ b/assets/common/items/npc_armor/pants/myrmidon.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Pants("Myrmidon"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_armor/pants/sahagin.ron b/assets/common/items/npc_armor/pants/sahagin.ron new file mode 100644 index 0000000000..12c94da1df --- /dev/null +++ b/assets/common/items/npc_armor/pants/sahagin.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Pants("Sahagin"), + stats: ( + protection: Normal(2.0)), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_weapons/staff/gnoll.ron b/assets/common/items/npc_weapons/staff/gnoll.ron new file mode 100644 index 0000000000..520bb83cc2 --- /dev/null +++ b/assets/common/items/npc_weapons/staff/gnoll.ron @@ -0,0 +1,15 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool( + ( + kind: Staff, + stats: ( + equip_time_millis: 200, + power: 0.8, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 07c265b068..86fc867bd4 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -952,6 +952,22 @@ kappa: ( keyword: "kappa", generic: "Kappa" + ), + cactid: ( + keyword: "cactid", + generic: "Cactid" + ), + gnoll: ( + keyword: "gnoll", + generic: "Gnoll" + ), + haniwa: ( + keyword: "haniwa", + generic: "Haniwa" + ), + myrmidon: ( + keyword: "myrmidon", + generic: "Myrmidon" ) ) ), diff --git a/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron b/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron new file mode 100644 index 0000000000..aa13561ac0 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron @@ -0,0 +1,37 @@ +(( + default: ( + vox_spec: ("armor_none", (-5.0, -3.5, 1.0)), + ), + map: { + "Gnome": ( + vox_spec: ("npc.gnome.male.chest", (-5.0, -3.0, -2.5)), + ), + "Sahagin": ( + vox_spec: ("npc.sahagin.male.chest", (-4.5, -8.0, -8.0)), + ), + "Adlet": ( + vox_spec: ("npc.adlet.male.chest", (-5.0, -3.5, -2.0)), + ), + "Gnarling": ( + vox_spec: ("npc.gnarling.male.chest", (-4.5, -3.5, -2.5)), + ), + "Mandragora": ( + vox_spec: ("npc.mandragora.male.chest", (-11.0, -11.0, -6.5)), + ), + "Kappa": ( + vox_spec: ("npc.kappa.male.chest", (-6.5, -8.0, -7.0)), + ), + "Cactid": ( + vox_spec: ("npc.cactid.male.chest", (-3.0, -3.0, -2.5)), + ), + "Gnoll": ( + vox_spec: ("npc.gnoll.male.chest", (-5.0, -4.5, -6.0)), + ), + "Haniwa": ( + vox_spec: ("npc.haniwa.male.chest", (-6.5, -4.0, -3.0)), + ), + "Myrmidon": ( + vox_spec: ("npc.myrmidon.male.chest", (-5.5, -4.0, -3.0)), + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron b/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron new file mode 100644 index 0000000000..fbea5cbe0c --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron @@ -0,0 +1,92 @@ +(( + default: ( + left: ( + vox_spec: ("armor.foot.foot_right_none", (-1.5, -2.0, -4.0)), + ), + right: ( + vox_spec: ("armor.foot.foot_right_none", (-1.5, -2.0, -4.0)), + ) + ), + map: { + "Gnome": ( + left: ( + vox_spec: ("npc.gnome.male.foot_r", (-1.5, -2.0, -4.0)), + ), + right: ( + vox_spec: ("npc.gnome.male.foot_r", (-1.5, -2.0, -4.0)), + ) + ), + "Sahagin": ( + left: ( + vox_spec: ("npc.sahagin.male.foot_r", (-2.5, -2.0, -8.0)), + ), + right: ( + vox_spec: ("npc.sahagin.male.foot_r", (-2.5, -2.0, -8.0)), + ) + ), + "Adlet": ( + left: ( + vox_spec: ("npc.adlet.male.foot_r", (-1.5, -3.0, -7.0)), + ), + right: ( + vox_spec: ("npc.adlet.male.foot_r", (-1.5, -3.0, -7.0)), + ) + ), + "Gnarling": ( + left: ( + vox_spec: ("npc.gnarling.male.foot_r", (-1.0, -2.0, -5.0)), + ), + right: ( + vox_spec: ("npc.gnarling.male.foot_r", (-1.0, -2.0, -5.0)), + ) + ), + "Mandragora": ( + left: ( + vox_spec: ("npc.mandragora.male.foot_r", (-1.0, -1.5, -4.0)), + ), + right: ( + vox_spec: ("npc.mandragora.male.foot_r", (-1.0, -1.5, -4.0)), + ) + ), + "Kappa": ( + left: ( + vox_spec: ("npc.kappa.male.foot_r", (-2.5, -3.0, -9.0)), + ), + right: ( + vox_spec: ("npc.kappa.male.foot_r", (-2.5, -3.0, -9.0)), + ) + ), + "Cactid": ( + left: ( + vox_spec: ("npc.cactid.male.foot_r", (-1.5, -2.0, -5.0)), + ), + right: ( + vox_spec: ("npc.cactid.male.foot_r", (-1.5, -2.0, -5.0)), + ) + ), + "Gnoll": ( + left: ( + vox_spec: ("npc.gnoll.male.foot_r", (-1.5, -3.0, -7.0)), + ), + right: ( + vox_spec: ("npc.gnoll.male.foot_r", (-1.5, -3.0, -7.0)), + ) + ), + "Haniwa": ( + left: ( + vox_spec: ("npc.haniwa.male.foot_r", (-2.0, -2.5, -8.0)), + ), + right: ( + vox_spec: ("npc.haniwa.male.foot_r", (-2.0, -2.5, -8.0)), + ) + ), + "Myrmidon": ( + left: ( + vox_spec: ("npc.myrmidon.male.foot_r", (-1.5, -2.5, -7.0)), + ), + right: ( + vox_spec: ("npc.myrmidon.male.foot_r", (-1.5, -2.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 new file mode 100644 index 0000000000..9cd86cae28 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron @@ -0,0 +1,92 @@ +(( + default: ( + left: ( + vox_spec: ("armor.hand.hand_reft_none", (-3.0, -2.0, -5.0)), + ), + right: ( + vox_spec: ("armor.hand.hand_right_none", (-3.0, -2.0, -5.0)), + ) + ), + map: { + "Gnome": ( + left: ( + vox_spec: ("npc.gnome.male.hand_r", (-4.0, -2.0, -5.0)), + ), + right: ( + vox_spec: ("npc.gnome.male.hand_r", (0.0, -2.0, -5.0)), + ) + ), + "Sahagin": ( + left: ( + vox_spec: ("npc.sahagin.male.hand_r", (-7.0, -4.0, -13.0)), + ), + right: ( + vox_spec: ("npc.sahagin.male.hand_r", (0.0, -4.0, -13.0)), + ) + ), + "Adlet": ( + left: ( + vox_spec: ("npc.adlet.male.hand_r", (-4.0, -2.0, -7.0)), + ), + right: ( + vox_spec: ("npc.adlet.male.hand_r", (0.0, -2.0, -7.0)), + ) + ), + "Gnarling": ( + left: ( + vox_spec: ("npc.gnarling.male.hand_r", (-3.0, -1.5, -7.0)), + ), + right: ( + vox_spec: ("npc.gnarling.male.hand_r", (0.0, -1.5, -7.0)), + ) + ), + "Mandragora": ( + left: ( + vox_spec: ("npc.mandragora.male.hand_r", (-4.0, -1.5, -7.0)), + ), + right: ( + vox_spec: ("npc.mandragora.male.hand_r", (0.0, -1.5, -7.0)), + ) + ), + "Kappa": ( + left: ( + vox_spec: ("npc.kappa.male.hand_r", (-6.0, -4.0, -12.0)), + ), + right: ( + vox_spec: ("npc.kappa.male.hand_r", (0.0, -4.0, -12.0)), + ) + ), + "Cactid": ( + left: ( + vox_spec: ("npc.cactid.male.hand_r", (-5.0, -1.5, -8.0)), + ), + right: ( + vox_spec: ("npc.cactid.male.hand_r", (0.0, -1.5, -2.5)), + ) + ), + "Gnoll": ( + left: ( + vox_spec: ("npc.gnoll.male.hand_r", (-6.0, -2.0, -9.0)), + ), + right: ( + vox_spec: ("npc.gnoll.male.hand_r", (0.0, -2.0, -9.0)), + ) + ), + "Haniwa": ( + left: ( + vox_spec: ("npc.haniwa.male.hand_r", (-4.0, -2.0, -8.0)), + ), + right: ( + vox_spec: ("npc.haniwa.male.hand_r", (0.0, -2.0, -8.0)), + ) + ), + "Myrmidon": ( + left: ( + vox_spec: ("npc.myrmidon.male.hand_r", (-5.0, -2.0, -9.0)), + ), + right: ( + vox_spec: ("npc.myrmidon.male.hand_r", (0.0, -2.0, -9.0)), + ) + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron new file mode 100644 index 0000000000..ea643d8405 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron @@ -0,0 +1,37 @@ +(( + default: ( + vox_spec: ("armor.pants.pants_none", (-5.0, -3.5, 1.0)), + ), + map: { + "Gnome": ( + vox_spec: ("npc.gnome.male.pants", (-4.0, -3.5, -2.5)), + ), + "Sahagin": ( + vox_spec: ("npc.sahagin.male.pants", (-2.5, -3.5, -2.0)), + ), + "Adlet": ( + vox_spec: ("npc.adlet.male.pants", (-5.0, -4.5, -3.0)), + ), + "Gnarling": ( + vox_spec: ("npc.gnarling.male.pants", (-3.5, -3.0, -2.5)), + ), + "Mandragora": ( + vox_spec: ("npc.mandragora.male.pants", (-3.0, -3.0, -1.0)), + ), + "Kappa": ( + vox_spec: ("npc.kappa.male.pants", (-3.5, -4.0, -1.5)), + ), + "Cactid": ( + vox_spec: ("npc.cactid.male.pants", (-3.0, -2.0, -1.0)), + ), + "Gnoll": ( + vox_spec: ("npc.gnoll.male.pants", (-5.0, -4.0, -3.0)), + ), + "Haniwa": ( + vox_spec: ("npc.haniwa.male.pants", (-4.5, -4.5, -1.5)), + ), + "Myrmidon": ( + vox_spec: ("npc.myrmidon.male.pants", (-4.5, -4.5, -1.5)), + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_central_manifest.ron b/assets/voxygen/voxel/biped_small_central_manifest.ron index ee77358b9e..7760739b99 100644 --- a/assets/voxygen/voxel/biped_small_central_manifest.ron +++ b/assets/voxygen/voxel/biped_small_central_manifest.ron @@ -215,4 +215,148 @@ central: ("npc.kappa.male.tail"), ), ), + (Cactid, Male): ( + head: ( + offset: (-8.0, -4.0, -7.5), + central: ("npc.cactid.male.head"), + ), + chest: ( + offset: (-3.0, -3.0, -2.5), + central: ("npc.cactid.male.chest"), + ), + shorts: ( + offset: (-3.0, -2.0, -1.0), + central: ("npc.cactid.male.shorts"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Cactid, Female): ( + head: ( + offset: (-8.0, -4.0, -7.5), + central: ("npc.cactid.male.head"), + ), + chest: ( + offset: (-3.0, -3.0, -2.5), + central: ("npc.cactid.male.chest"), + ), + shorts: ( + offset: (-3.0, -2.0, -1.0), + central: ("npc.cactid.male.shorts"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Gnoll, Male): ( + head: ( + offset: (-4.0, -1.5, -3.0), + central: ("npc.gnoll.male.head"), + ), + chest: ( + offset: (-5.0, -4.5, -6.0), + central: ("npc.gnoll.male.chest"), + ), + shorts: ( + offset: (-5.0, -4.0, -3.0), + central: ("npc.gnoll.male.shorts"), + ), + tail: ( + offset: (-1.0, -11.0, -1.0), + central: ("npc.gnoll.male.tail"), + ), + ), + (Gnoll, Female): ( + head: ( + offset: (-4.0, -1.5, -3.0), + central: ("npc.gnoll.male.head"), + ), + chest: ( + offset: (-5.0, -4.5, -6.0), + central: ("npc.gnoll.male.chest"), + ), + shorts: ( + offset: (-5.0, -4.0, -3.0), + central: ("npc.gnoll.male.shorts"), + ), + tail: ( + offset: (-1.0, -11.0, -1.0), + central: ("npc.gnoll.male.tail"), + ), + ), + (Haniwa, Male): ( + head: ( + offset: (-5.5, -5.5, -5.5), + central: ("npc.haniwa.male.head"), + ), + chest: ( + offset: (-6.5, -4.0, -3.0), + central: ("npc.haniwa.male.chest"), + ), + shorts: ( + offset: (-4.5, -4.5, -1.5), + central: ("npc.haniwa.male.shorts"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Haniwa, Female): ( + head: ( + offset: (-5.5, -5.5, -5.5), + central: ("npc.haniwa.male.head"), + ), + chest: ( + offset: (-6.5, -4.0, -3.0), + central: ("npc.haniwa.male.chest"), + ), + shorts: ( + offset: (-4.5, -4.5, -1.5), + central: ("npc.haniwa.male.shorts"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Myrmidon, Male): ( + head: ( + offset: (-4.5, -7.0, -6.5), + central: ("npc.myrmidon.male.head"), + ), + chest: ( + offset: (-5.5, -4.0, -3.0), + central: ("npc.myrmidon.male.chest"), + ), + shorts: ( + offset: (-2.5, -3.5, -2.0), + central: ("npc.myrmidon.male.shorts"), + ), + tail: ( + offset: (-2.5, -7.0, -2.5), + central: ("npc.myrmidon.male.tail"), + ), + ), + (Myrmidon, Female): ( + head: ( + offset: (-4.5, -7.0, -6.5), + central: ("npc.myrmidon.male.head"), + ), + chest: ( + offset: (-5.5, -4.0, -3.0), + central: ("npc.myrmidon.male.chest"), + ), + shorts: ( + offset: (-2.5, -3.5, -2.0), + central: ("npc.myrmidon.male.shorts"), + ), + tail: ( + offset: (-2.5, -7.0, -2.5), + central: ("npc.myrmidon.male.tail"), + ), + ), }) diff --git a/assets/voxygen/voxel/biped_small_lateral_manifest.ron b/assets/voxygen/voxel/biped_small_lateral_manifest.ron index a891e4fdf2..81763b9a6b 100644 --- a/assets/voxygen/voxel/biped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_small_lateral_manifest.ron @@ -1,13 +1,5 @@ ({ (Gnome, Male): ( - hand_l: ( - offset: (-4.0, -2.0, -5.0), - lateral: ("npc.gnome.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -2.0, -5.0), - lateral: ("npc.gnome.male.hand_r"), - ), foot_l: ( offset: (-1.5, -2.0, -4.0), lateral: ("npc.gnome.male.foot_l"), @@ -18,14 +10,6 @@ ), ), (Gnome, Female): ( - hand_l: ( - offset: (-4.0, -2.0, -5.0), - lateral: ("npc.gnome.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -2.0, -5.0), - lateral: ("npc.gnome.male.hand_r"), - ), foot_l: ( offset: (-1.5, -2.0, -4.0), lateral: ("npc.gnome.male.foot_l"), @@ -36,14 +20,6 @@ ), ), (Sahagin, Male): ( - hand_l: ( - offset: (-7.0, -4.0, -13.0), - lateral: ("npc.sahagin.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -4.0, -13.0), - lateral: ("npc.sahagin.male.hand_r"), - ), foot_l: ( offset: (-2.5, -2.0, -8.0), lateral: ("npc.sahagin.male.foot_l"), @@ -54,14 +30,6 @@ ), ), (Sahagin, Female): ( - hand_l: ( - offset: (-7.0, -4.0, -13.0), - lateral: ("npc.sahagin.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -4.0, -13.0), - lateral: ("npc.sahagin.male.hand_r"), - ), foot_l: ( offset: (-2.5, -2.0, -8.0), lateral: ("npc.sahagin.male.foot_l"), @@ -72,14 +40,6 @@ ), ), (Adlet, Male): ( - hand_l: ( - offset: (-4.0, -2.0, -7.0), - lateral: ("npc.adlet.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -2.0, -7.0), - lateral: ("npc.adlet.male.hand_r"), - ), foot_l: ( offset: (-1.5, -3.0, -7.0), lateral: ("npc.adlet.male.foot_l"), @@ -90,14 +50,6 @@ ), ), (Adlet, Female): ( - hand_l: ( - offset: (-4.0, -2.0, -7.0), - lateral: ("npc.adlet.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -2.0, -7.0), - lateral: ("npc.adlet.male.hand_r"), - ), foot_l: ( offset: (-1.5, -3.0, -7.0), lateral: ("npc.adlet.male.foot_l"), @@ -108,14 +60,6 @@ ), ), (Gnarling, Male): ( - hand_l: ( - offset: (-3.0, -1.5, -7.0), - lateral: ("npc.gnarling.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -1.5, -7.0), - lateral: ("npc.gnarling.male.hand_r"), - ), foot_l: ( offset: (-1.0, -2.0, -5.0), lateral: ("npc.gnarling.male.foot_l"), @@ -126,14 +70,6 @@ ), ), (Gnarling, Female): ( - hand_l: ( - offset: (-3.0, -1.5, -7.0), - lateral: ("npc.gnarling.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -1.5, -7.0), - lateral: ("npc.gnarling.male.hand_r"), - ), foot_l: ( offset: (-1.0, -2.0, -5.0), lateral: ("npc.gnarling.male.foot_l"), @@ -144,14 +80,6 @@ ), ), (Mandragora, Male): ( - hand_l: ( - offset: (-4.0, -1.5, -7.0), - lateral: ("npc.mandragora.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -1.5, -7.0), - lateral: ("npc.mandragora.male.hand_r"), - ), foot_l: ( offset: (-1.0, -1.5, -4.0), lateral: ("npc.mandragora.male.foot_l"), @@ -162,14 +90,6 @@ ), ), (Mandragora, Female): ( - hand_l: ( - offset: (-4.0, -1.5, -7.0), - lateral: ("npc.mandragora.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -1.5, -7.0), - lateral: ("npc.mandragora.male.hand_r"), - ), foot_l: ( offset: (-1.0, -1.5, -4.0), lateral: ("npc.mandragora.male.foot_l"), @@ -180,14 +100,6 @@ ), ), (Kappa, Male): ( - hand_l: ( - offset: (-6.0, -4.0, -12.0), - lateral: ("npc.kappa.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -4.0, -12.0), - lateral: ("npc.kappa.male.hand_r"), - ), foot_l: ( offset: (-2.5, -3.0, -9.0), lateral: ("npc.kappa.male.foot_l"), @@ -198,14 +110,6 @@ ), ), (Kappa, Female): ( - hand_l: ( - offset: (-6.0, -4.0, -12.0), - lateral: ("npc.kappa.male.hand_l"), - ), - hand_r: ( - offset: (0.0, -4.0, -12.0), - lateral: ("npc.kappa.male.hand_r"), - ), foot_l: ( offset: (-2.5, -3.0, -9.0), lateral: ("npc.kappa.male.foot_l"), @@ -215,4 +119,84 @@ lateral: ("npc.kappa.male.foot_r"), ), ), + (Cactid, Male): ( + foot_l: ( + offset: (-1.5, -2.0, -5.0), + lateral: ("npc.cactid.male.foot_l"), + ), + foot_r: ( + offset: (-1.5, -2.0, -5.0), + lateral: ("npc.cactid.male.foot_r"), + ), + ), + (Cactid, Female): ( + foot_l: ( + offset: (-1.5, -2.0, -5.0), + lateral: ("npc.cactid.male.foot_l"), + ), + foot_r: ( + offset: (-1.5, -2.0, -5.0), + lateral: ("npc.cactid.male.foot_r"), + ), + ), + (Gnoll, Male): ( + foot_l: ( + offset: (-1.5, -3.0, -7.0), + lateral: ("npc.gnoll.male.foot_l"), + ), + foot_r: ( + offset: (-1.5, -3.0, -7.0), + lateral: ("npc.gnoll.male.foot_r"), + ), + ), + (Gnoll, Female): ( + foot_l: ( + offset: (-1.5, -3.0, -7.0), + lateral: ("npc.gnoll.male.foot_l"), + ), + foot_r: ( + offset: (-1.5, -3.0, -7.0), + lateral: ("npc.gnoll.male.foot_r"), + ), + ), + (Haniwa, Male): ( + foot_l: ( + offset: (-2.0, -2.5, -8.0), + lateral: ("npc.haniwa.male.foot_l"), + ), + foot_r: ( + offset: (-2.0, -2.5, -8.0), + lateral: ("npc.haniwa.male.foot_r"), + ), + ), + (Haniwa, Female): ( + foot_l: ( + offset: (-2.0, -2.5, -8.0), + lateral: ("npc.haniwa.male.foot_l"), + ), + foot_r: ( + offset: (-2.0, -2.5, -8.0), + lateral: ("npc.haniwa.male.foot_r"), + ), + ), + (Myrmidon, Male): ( + foot_l: ( + offset: (-1.5, -2.5, -7.0), + lateral: ("npc.myrmidon.male.foot_l"), + ), + foot_r: ( + offset: (-1.5, -2.5, -7.0), + lateral: ("npc.myrmidon.male.foot_r"), + ), + ), + (Myrmidon, Female): ( + foot_l: ( + offset: (-1.5, -2.5, -7.0), + lateral: ("npc.myrmidon.male.foot_l"), + ), + foot_r: ( + offset: (-1.5, -2.5, -7.0), + lateral: ("npc.myrmidon.male.foot_r"), + ), + ), }) diff --git a/assets/voxygen/voxel/biped_small_weapon_manifest.ron b/assets/voxygen/voxel/biped_small_weapon_manifest.ron index 6bc9a6737f..6343b4d50f 100644 --- a/assets/voxygen/voxel/biped_small_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_small_weapon_manifest.ron @@ -11,4 +11,8 @@ vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), color: None ), + "common.items.npc_weapons.staff.gnoll": ( + vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + color: None + ), }) diff --git a/assets/voxygen/voxel/npc/adlet/male/foot_l.vox b/assets/voxygen/voxel/npc/adlet/male/foot_l.vox deleted file mode 100644 index 02dda8f8f3..0000000000 --- a/assets/voxygen/voxel/npc/adlet/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fff771288bd843ba433f8f9c7eb855452480b8710d5021d2ee022a471f4def20 -size 1304 diff --git a/assets/voxygen/voxel/npc/adlet/male/hand_l.vox b/assets/voxygen/voxel/npc/adlet/male/hand_l.vox deleted file mode 100644 index 4752784440..0000000000 --- a/assets/voxygen/voxel/npc/adlet/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6107b1f4789e6479d1340aa45713be40d705a7a6e8f93a2081336d72197021a9 -size 1420 diff --git a/assets/voxygen/voxel/npc/adlet/male/shorts.vox b/assets/voxygen/voxel/npc/adlet/male/pants.vox similarity index 100% rename from assets/voxygen/voxel/npc/adlet/male/shorts.vox rename to assets/voxygen/voxel/npc/adlet/male/pants.vox diff --git a/assets/voxygen/voxel/npc/cactid/male/chest.vox b/assets/voxygen/voxel/npc/cactid/male/chest.vox new file mode 100644 index 0000000000..e68038c7b0 --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ede66a1190bb990c584821b6abb2f3add61434ac4c81ca5396db55e7511b041e +size 1496 diff --git a/assets/voxygen/voxel/npc/cactid/male/foot_r.vox b/assets/voxygen/voxel/npc/cactid/male/foot_r.vox new file mode 100644 index 0000000000..29ef7e7757 --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ba46b4dac6a6e0b811a2238400c21ed0a8fde4a4e1777e60ec9117bc4ce3e43 +size 1184 diff --git a/assets/voxygen/voxel/npc/cactid/male/hand_r.vox b/assets/voxygen/voxel/npc/cactid/male/hand_r.vox new file mode 100644 index 0000000000..e15a9327f7 --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da62f0ff4d8b95da55c23b882dff950356287c8ec2761a08210e2c9bcf5847f5 +size 1268 diff --git a/assets/voxygen/voxel/npc/cactid/male/head.vox b/assets/voxygen/voxel/npc/cactid/male/head.vox new file mode 100644 index 0000000000..c59acac9a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f55e5b8641f7c1da0a0703654972fadb9894bab6e798b72a3667ccae11d3953 +size 2804 diff --git a/assets/voxygen/voxel/npc/cactid/male/pants.vox b/assets/voxygen/voxel/npc/cactid/male/pants.vox new file mode 100644 index 0000000000..29a58e68ec --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e73b8a9d4365ef7f129924ff92d46ac0203530c955971e862fdaf4c827f1325 +size 1192 diff --git a/assets/voxygen/voxel/npc/gnarling/male/foot_l.vox b/assets/voxygen/voxel/npc/gnarling/male/foot_l.vox deleted file mode 100644 index 360a342b98..0000000000 --- a/assets/voxygen/voxel/npc/gnarling/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fc85e3a2fbf52bf69230c123ee07ed647af9383e1b099984f4822dc2e4c0daef -size 1188 diff --git a/assets/voxygen/voxel/npc/gnarling/male/hand_l.vox b/assets/voxygen/voxel/npc/gnarling/male/hand_l.vox deleted file mode 100644 index 7ba41aa539..0000000000 --- a/assets/voxygen/voxel/npc/gnarling/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:576881ca227ca535284e13cb707604c1f8a9e79113633943f901cc544300828b -size 1264 diff --git a/assets/voxygen/voxel/npc/gnarling/male/shorts.vox b/assets/voxygen/voxel/npc/gnarling/male/pants.vox similarity index 100% rename from assets/voxygen/voxel/npc/gnarling/male/shorts.vox rename to assets/voxygen/voxel/npc/gnarling/male/pants.vox diff --git a/assets/voxygen/voxel/npc/gnoll/male/chest.vox b/assets/voxygen/voxel/npc/gnoll/male/chest.vox new file mode 100644 index 0000000000..011328d74c --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7163208413705957344f4233b56aa72510fa662160e258e09083c01e8949cde +size 2772 diff --git a/assets/voxygen/voxel/npc/gnoll/male/foot_r.vox b/assets/voxygen/voxel/npc/gnoll/male/foot_r.vox new file mode 100644 index 0000000000..6f1f04309f --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6b59ea0ed69c57135779c21540fece451b126870925449fc4630f6071a3af65 +size 1304 diff --git a/assets/voxygen/voxel/npc/gnoll/male/hand_r.vox b/assets/voxygen/voxel/npc/gnoll/male/hand_r.vox new file mode 100644 index 0000000000..dddd207c52 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:630ea50105b1ecbd46a5b6ae1bd4d727469378cd109e239c9e768be6e1d2740c +size 1628 diff --git a/assets/voxygen/voxel/npc/gnoll/male/head.vox b/assets/voxygen/voxel/npc/gnoll/male/head.vox new file mode 100644 index 0000000000..0a013fc6f6 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4af702f3b87606c966e366228feddd69a026eb1b08edbb9766ff4b51f0b58c0f +size 2048 diff --git a/assets/voxygen/voxel/npc/gnoll/male/pants.vox b/assets/voxygen/voxel/npc/gnoll/male/pants.vox new file mode 100644 index 0000000000..8c4ec9ffb8 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b409340dd18336240d3dc63b2032bb8af55bcb2771c4923ca87d8bdda4a5a5be +size 1776 diff --git a/assets/voxygen/voxel/npc/gnoll/male/tail.vox b/assets/voxygen/voxel/npc/gnoll/male/tail.vox new file mode 100644 index 0000000000..4a4c46f62f --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7aa4826e7eedf264769fb28631a166ce826e150e2c21114bd011d8c4c55a843c +size 1308 diff --git a/assets/voxygen/voxel/npc/gnome/male/foot_l.vox b/assets/voxygen/voxel/npc/gnome/male/foot_l.vox deleted file mode 100644 index 245f2e5c04..0000000000 --- a/assets/voxygen/voxel/npc/gnome/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e1df3ebd080235330d78d44113bc16e5dd8fb9d515afee112cb86b27dc22c3e3 -size 1264 diff --git a/assets/voxygen/voxel/npc/gnome/male/hand_l.vox b/assets/voxygen/voxel/npc/gnome/male/hand_l.vox deleted file mode 100644 index cf25e21c4b..0000000000 --- a/assets/voxygen/voxel/npc/gnome/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7b7ab3b14b7850bd213ad400712ad88189fcf8574b075e0c9941b4752bf766d3 -size 1380 diff --git a/assets/voxygen/voxel/npc/haniwa/male/HaniwaSoldier-7.vox b/assets/voxygen/voxel/npc/haniwa/male/HaniwaSoldier-7.vox new file mode 100644 index 0000000000..5a304c7947 --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/HaniwaSoldier-7.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6dbd0b99fee569fd7d8226db102143fa3e6477a2144741540435d0ac74db974 +size 1352 diff --git a/assets/voxygen/voxel/npc/haniwa/male/chest.vox b/assets/voxygen/voxel/npc/haniwa/male/chest.vox new file mode 100644 index 0000000000..536c899da9 --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1b434661180cc6cd400db64bc7537e4fcb08c25f40dbaa08040389a078d65d3 +size 2276 diff --git a/assets/voxygen/voxel/npc/haniwa/male/foot_r.vox b/assets/voxygen/voxel/npc/haniwa/male/foot_r.vox new file mode 100644 index 0000000000..fa8fecdf90 --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e9ca4fc385d5b1e2cc2b2d5bda16a0b18547c9ac72e5ccc94eca7aaa64c8e2a +size 1384 diff --git a/assets/voxygen/voxel/npc/haniwa/male/hand_r.vox b/assets/voxygen/voxel/npc/haniwa/male/hand_r.vox new file mode 100644 index 0000000000..b85deb405f --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1316646c3f84bc05b9ed616bd285ea2c95a0c2d5e4fa60bfa2c0d99a845ea98 +size 1368 diff --git a/assets/voxygen/voxel/npc/haniwa/male/head.vox b/assets/voxygen/voxel/npc/haniwa/male/head.vox new file mode 100644 index 0000000000..9d9a377624 --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b92b013a7f9d5224793dd6c2c10baccb6e383701878d7594cd55d1386771b96 +size 3156 diff --git a/assets/voxygen/voxel/npc/haniwa/male/pants.vox b/assets/voxygen/voxel/npc/haniwa/male/pants.vox new file mode 100644 index 0000000000..7dee4665ab --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d4192ce647fdfe801a5352569dbd40fd5a6a7230cd870e84dfe8c9ba055b91c +size 1628 diff --git a/assets/voxygen/voxel/npc/kappa/male/foot_l.vox b/assets/voxygen/voxel/npc/kappa/male/foot_l.vox deleted file mode 100644 index 775285df0b..0000000000 --- a/assets/voxygen/voxel/npc/kappa/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20bd3dac180e1457c4c4a4605bd09c231d157a98b0d0e2e32cc072e8a0b10e2e -size 1380 diff --git a/assets/voxygen/voxel/npc/kappa/male/hand_l.vox b/assets/voxygen/voxel/npc/kappa/male/hand_l.vox deleted file mode 100644 index 897502a675..0000000000 --- a/assets/voxygen/voxel/npc/kappa/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:43b5d50fd9516ac4b9209a6246ce3f452ea327d8c1c439e373c87c5eddc25e7a -size 1448 diff --git a/assets/voxygen/voxel/npc/kappa/male/shorts.vox b/assets/voxygen/voxel/npc/kappa/male/pants.vox similarity index 100% rename from assets/voxygen/voxel/npc/kappa/male/shorts.vox rename to assets/voxygen/voxel/npc/kappa/male/pants.vox diff --git a/assets/voxygen/voxel/npc/mandragora/male/foot_l.vox b/assets/voxygen/voxel/npc/mandragora/male/foot_l.vox deleted file mode 100644 index 3c5b943c0c..0000000000 --- a/assets/voxygen/voxel/npc/mandragora/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b802de1db55f26caad2cd4903e9e432e58986aece30cc7226060f8469c5d75dd -size 1140 diff --git a/assets/voxygen/voxel/npc/mandragora/male/hand_l.vox b/assets/voxygen/voxel/npc/mandragora/male/hand_l.vox deleted file mode 100644 index 6b22fdeb1c..0000000000 --- a/assets/voxygen/voxel/npc/mandragora/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da48cb2417b90fb79744c5d417af13433138652e8d9fe4b7be2dc890b7729f9b -size 1204 diff --git a/assets/voxygen/voxel/npc/mandragora/male/shorts.vox b/assets/voxygen/voxel/npc/mandragora/male/pants.vox similarity index 100% rename from assets/voxygen/voxel/npc/mandragora/male/shorts.vox rename to assets/voxygen/voxel/npc/mandragora/male/pants.vox diff --git a/assets/voxygen/voxel/npc/myrmidon/male/MyrmidonHoplite-5.vox b/assets/voxygen/voxel/npc/myrmidon/male/MyrmidonHoplite-5.vox new file mode 100644 index 0000000000..f33aa0ef48 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/MyrmidonHoplite-5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3c906a2c6240593003108d6594ec6c3c564bb198009954a840b168518eb5380 +size 1340 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/chest.vox b/assets/voxygen/voxel/npc/myrmidon/male/chest.vox new file mode 100644 index 0000000000..b3a55d706b --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:586350398255e5e3d7a987b89f583dade64592bacecaea0cd4b21b4255219c30 +size 1900 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/foot_r.vox b/assets/voxygen/voxel/npc/myrmidon/male/foot_r.vox new file mode 100644 index 0000000000..a22d381b03 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40feed9186513be13e5c26346636c68468690f62630d71982cc8d65f3762a126 +size 1236 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/hand_r.vox b/assets/voxygen/voxel/npc/myrmidon/male/hand_r.vox new file mode 100644 index 0000000000..bf25ad8fe8 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aba210266ebb33197ed4657417124b5a1908e5dad6bade7cd3d67e7276cdb6ec +size 1316 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/head.vox b/assets/voxygen/voxel/npc/myrmidon/male/head.vox new file mode 100644 index 0000000000..1ab83b7662 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b86f09f66caacb3c39b7ef876cea97a260e77e34137207b93a36afb412a48333 +size 2312 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/pants.vox b/assets/voxygen/voxel/npc/myrmidon/male/pants.vox new file mode 100644 index 0000000000..720d2e92f8 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68acd47455295149faba0562705a70323e75425ffd3c007c5041595409f8815c +size 1356 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/tail.vox b/assets/voxygen/voxel/npc/myrmidon/male/tail.vox new file mode 100644 index 0000000000..2c09eae063 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4283f17d89cc17bce78a261f79ead38232bdb2e81fbe9cb7059dc8967119df1c +size 1408 diff --git a/assets/voxygen/voxel/npc/sahagin/male/foot_l.vox b/assets/voxygen/voxel/npc/sahagin/male/foot_l.vox deleted file mode 100644 index c006778a48..0000000000 --- a/assets/voxygen/voxel/npc/sahagin/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d6d6e8aa6875db50d7c60899704d28dcdf8a4cfd23ce5fb1786029c84b9be86f -size 1308 diff --git a/assets/voxygen/voxel/npc/sahagin/male/hand_l.vox b/assets/voxygen/voxel/npc/sahagin/male/hand_l.vox deleted file mode 100644 index 7a47b5201e..0000000000 --- a/assets/voxygen/voxel/npc/sahagin/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8b04d6c515c659c5aecd2c58ee5ca1611a4f5f185a9c9eecd5bb668de756e09b -size 1476 diff --git a/assets/voxygen/voxel/npc/sahagin/male/shorts.vox b/assets/voxygen/voxel/npc/sahagin/male/pants.vox similarity index 100% rename from assets/voxygen/voxel/npc/sahagin/male/shorts.vox rename to assets/voxygen/voxel/npc/sahagin/male/pants.vox diff --git a/assets/voxygen/voxel/weapon/staff/gnoll.vox b/assets/voxygen/voxel/weapon/staff/gnoll.vox new file mode 100644 index 0000000000..6118e955a1 --- /dev/null +++ b/assets/voxygen/voxel/weapon/staff/gnoll.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0959c5477808297e0cf6ba57c79e17bc13e53e0f39794a447e30829044d25a51 +size 1652 diff --git a/common/src/comp/body/biped_small.rs b/common/src/comp/body/biped_small.rs index f52d6d937e..9746589373 100644 --- a/common/src/comp/body/biped_small.rs +++ b/common/src/comp/body/biped_small.rs @@ -40,6 +40,10 @@ make_case_elim!( Gnarling = 3, Mandragora = 4, Kappa = 5, + Cactid = 6, + Gnoll = 7, + Haniwa = 8, + Myrmidon = 9, } ); @@ -54,6 +58,10 @@ pub struct AllSpecies { pub gnarling: SpeciesMeta, pub mandragora: SpeciesMeta, pub kappa: SpeciesMeta, + pub cactid: SpeciesMeta, + pub gnoll: SpeciesMeta, + pub haniwa: SpeciesMeta, + pub myrmidon: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -68,17 +76,25 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Gnarling => &self.gnarling, Species::Mandragora => &self.mandragora, Species::Kappa => &self.kappa, + Species::Cactid => &self.cactid, + Species::Gnoll => &self.gnoll, + Species::Haniwa => &self.haniwa, + Species::Myrmidon => &self.myrmidon, } } } -pub const ALL_SPECIES: [Species; 6] = [ +pub const ALL_SPECIES: [Species; 10] = [ Species::Gnome, Species::Sahagin, Species::Adlet, Species::Gnarling, Species::Mandragora, Species::Kappa, + Species::Cactid, + Species::Gnoll, + Species::Haniwa, + Species::Myrmidon, ]; 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 eccb4df106..0b5de96f61 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -4,7 +4,7 @@ use crate::comp::{ loadout::Loadout, slot::{ArmorSlot, EquipSlot}, }, - item::{Item, ItemKind}, + item::{tool::ToolKind, Item, ItemKind}, object, quadruped_low, quadruped_medium, theropod, Body, }; use rand::Rng; @@ -32,8 +32,11 @@ pub struct LoadoutBuilder(Loadout); #[derive(Copy, Clone)] pub enum LoadoutConfig { - AdletArcher, - AdletWarrior, + Adlet, + Gnarling, + Sahagin, + Haniwa, + Myrmidon, Guard, Villager, Outcast, @@ -248,7 +251,7 @@ impl LoadoutBuilder { { (biped_small::Species::Gnome, _) => { main_tool = Some(Item::new_from_asset_expect( - "common.items.npc_weapons.spear.wooden_spear", + "common.items.npc_weapons.staff.gnoll", )); }, (biped_small::Species::Adlet, _) => { @@ -258,7 +261,7 @@ impl LoadoutBuilder { }, _ => { main_tool = Some(Item::new_from_asset_expect( - "common.items.npc_weapons.bow.adlet", + "common.items.npc_weapons.spear.wooden_spear", )); }, }, @@ -272,19 +275,96 @@ impl LoadoutBuilder { } else { Some(Item::empty()) }; - + let active_tool_kind = active_item.as_ref().and_then(|i| { + if let ItemKind::Tool(tool) = &i.kind() { + Some(tool.kind) + } else { + None + } + }); // Creates rest of loadout let loadout = if let Some(config) = config { use LoadoutConfig::*; match config { - AdletArcher => LoadoutBuilder::new() - .active_item(Some(Item::new_from_asset_expect( - "common.items.npc_weapons.bow.adlet", + Adlet => match active_tool_kind { + Some(ToolKind::Bow) => LoadoutBuilder::new() + .active_item(active_item) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.hand.adlet", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.foot.adlet", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.chest.adlet", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.pants.adlet", + ))) + .build(), + _ => LoadoutBuilder::new().active_item(active_item).build(), + }, + Gnarling => match active_tool_kind { + Some(ToolKind::Bow) => LoadoutBuilder::new() + .active_item(active_item) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.foot.gnarling", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.hand.gnarling", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.chest.gnarling", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.pants.gnarling", + ))) + .build(), + _ => LoadoutBuilder::new().active_item(active_item).build(), + }, + Sahagin => LoadoutBuilder::new() + .active_item(active_item) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.hand.sahagin", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.foot.sahagin", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.chest.sahagin", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.pants.sahagin", ))) .build(), - AdletWarrior => LoadoutBuilder::new() - .active_item(Some(Item::new_from_asset_expect( - "common.items.npc_weapons.spear.wooden_spear", + Haniwa => LoadoutBuilder::new() + .active_item(active_item) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.hand.haniwa", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.foot.haniwa", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.chest.haniwa", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.pants.haniwa", + ))) + .build(), + Myrmidon => LoadoutBuilder::new() + .active_item(active_item) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.hand.myrmidon", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.foot.myrmidon", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.chest.myrmidon", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.pants.myrmidon", ))) .build(), Guard => LoadoutBuilder::new() diff --git a/common/src/skillset_builder.rs b/common/src/skillset_builder.rs index 59f44c569b..5392efce1b 100644 --- a/common/src/skillset_builder.rs +++ b/common/src/skillset_builder.rs @@ -8,6 +8,11 @@ use tracing::warn; #[derive(Copy, Clone)] pub enum SkillSetConfig { + Adlet, + Gnarling, + Sahagin, + Haniwa, + Myrmidon, Guard, Villager, Outcast, @@ -38,6 +43,81 @@ impl SkillSetBuilder { use SkillSetConfig::*; match config { + Some(Adlet) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage)) + .with_skill(Skill::Bow(BowSkill::CDamage)) + .with_skill(Skill::Bow(BowSkill::CKnockback)) + .with_skill(Skill::Bow(BowSkill::CSpeed)) + .with_skill(Skill::Bow(BowSkill::CMove)) + }, + _ => Self::default(), + } + }, + Some(Gnarling) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage)) + .with_skill(Skill::Bow(BowSkill::CDamage)) + .with_skill(Skill::Bow(BowSkill::CKnockback)) + .with_skill(Skill::Bow(BowSkill::CSpeed)) + .with_skill(Skill::Bow(BowSkill::CMove)) + }, + _ => Self::default(), + } + }, + Some(Sahagin) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage)) + .with_skill(Skill::Bow(BowSkill::CDamage)) + .with_skill(Skill::Bow(BowSkill::CKnockback)) + .with_skill(Skill::Bow(BowSkill::CSpeed)) + .with_skill(Skill::Bow(BowSkill::CMove)) + }, + _ => Self::default(), + } + }, + Some(Haniwa) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage)) + .with_skill(Skill::Bow(BowSkill::CDamage)) + .with_skill(Skill::Bow(BowSkill::CKnockback)) + .with_skill(Skill::Bow(BowSkill::CSpeed)) + .with_skill(Skill::Bow(BowSkill::CMove)) + }, + _ => Self::default(), + } + }, + Some(Myrmidon) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage)) + .with_skill(Skill::Bow(BowSkill::CDamage)) + .with_skill(Skill::Bow(BowSkill::CKnockback)) + .with_skill(Skill::Bow(BowSkill::CSpeed)) + .with_skill(Skill::Bow(BowSkill::CMove)) + }, + _ => Self::default(), + } + }, Some(Guard) => { if let Some(ToolKind::Sword) = active_item { // Sword diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index e127309915..5c65194742 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -67,7 +67,7 @@ impl Body { quadruped_medium::Species::Panda => 180.0, quadruped_medium::Species::Bear => 180.0, }, - Body::BipedSmall(_) => 100.0, + Body::BipedSmall(_) => 80.0, Body::BirdMedium(_) => 80.0, Body::FishMedium(_) => 80.0, Body::Dragon(_) => 250.0, diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs index 12541dde64..b6ab1d4bfd 100644 --- a/voxygen/anim/src/biped_small/alpha.rs +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -67,8 +67,8 @@ impl Animation for AlphaAnimation { next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) / 13.0; next.chest.orientation = Quaternion::rotation_z(movement1abs * 0.5 + movement2abs * -0.6); - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); - next.shorts.orientation = Quaternion::rotation_z(movement1abs * -0.2 + movement2abs * 0.2); + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); + next.pants.orientation = Quaternion::rotation_z(movement1abs * -0.2 + movement2abs * 0.2); next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); diff --git a/voxygen/anim/src/biped_small/idle.rs b/voxygen/anim/src/biped_small/idle.rs index 840fc1214b..2adc278af3 100644 --- a/voxygen/anim/src/biped_small/idle.rs +++ b/voxygen/anim/src/biped_small/idle.rs @@ -33,7 +33,7 @@ impl Animation for IdleAnimation { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slow * -0.1); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3) / 13.0; - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); next.main.position = Vec3::new(2.0, -3.0, -3.0); next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57); diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index 08e069604c..e406cae23b 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -19,7 +19,7 @@ pub type Body = comp::biped_small::Body; skeleton_impls!(struct BipedSmallSkeleton { + head, + chest, - + shorts, + + pants, + tail, + main, + hand_l, @@ -47,15 +47,15 @@ impl Skeleton for BipedSmallSkeleton { buf: &mut [FigureBoneData; super::MAX_BONE_COUNT], ) -> Vec3 { let chest_mat = base_mat * Mat4::::from(self.chest); - let shorts_mat = chest_mat * Mat4::::from(self.shorts); + let pants_mat = chest_mat * Mat4::::from(self.pants); let control_mat = chest_mat * Mat4::::from(self.control); let control_l_mat = Mat4::::from(self.control_l); let control_r_mat = Mat4::::from(self.control_r); *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ make_bone(chest_mat * Mat4::::from(self.head)), make_bone(chest_mat), - make_bone(shorts_mat), - make_bone(shorts_mat * Mat4::::from(self.tail)), + make_bone(pants_mat), + make_bone(pants_mat * Mat4::::from(self.tail)), make_bone(control_mat * Mat4::::from(self.main)), make_bone(control_mat * control_l_mat * Mat4::::from(self.hand_l)), make_bone(control_mat * control_r_mat * Mat4::::from(self.hand_r)), @@ -69,7 +69,7 @@ impl Skeleton for BipedSmallSkeleton { pub struct SkeletonAttr { head: (f32, f32), chest: (f32, f32), - shorts: (f32, f32), + pants: (f32, f32), tail: (f32, f32), hand: (f32, f32, f32), foot: (f32, f32, f32), @@ -92,7 +92,7 @@ impl Default for SkeletonAttr { Self { head: (0.0, 0.0), chest: (0.0, 0.0), - shorts: (0.0, 0.0), + pants: (0.0, 0.0), tail: (0.0, 0.0), hand: (0.0, 0.0, 0.0), foot: (0.0, 0.0, 0.0), @@ -112,6 +112,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnarling, _) => (0.0, 6.0), (Mandragora, _) => (-1.0, 9.0), (Kappa, _) => (8.0, 3.5), + (Cactid, _) => (0.0, 7.0), + (Gnoll, _) => (5.5, -1.0), + (Haniwa, _) => (0.0, 7.0), + (Myrmidon, _) => (0.0, 8.0), }, chest: match (body.species, body.body_type) { (Gnome, _) => (0.0, 9.0), @@ -120,14 +124,22 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnarling, _) => (0.0, 7.5), (Mandragora, _) => (0.0, 10.5), (Kappa, _) => (0.0, 14.5), + (Cactid, _) => (0.0, 7.0), + (Gnoll, _) => (0.0, 15.5), + (Haniwa, _) => (0.0, 11.0), + (Myrmidon, _) => (0.0, 11.0), }, - shorts: match (body.species, body.body_type) { + pants: match (body.species, body.body_type) { (Gnome, _) => (0.0, -3.0), (Sahagin, _) => (0.5, -7.0), (Adlet, _) => (0.0, -3.0), (Gnarling, _) => (0.0, -3.0), (Mandragora, _) => (0.0, -6.5), (Kappa, _) => (0.0, -3.0), + (Cactid, _) => (0.0, -3.0), + (Gnoll, _) => (0.5, -7.5), + (Haniwa, _) => (0.0, -3.5), + (Myrmidon, _) => (0.0, -3.0), }, tail: match (body.species, body.body_type) { (Gnome, _) => (0.0, 0.0), @@ -136,6 +148,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnarling, _) => (-2.0, 1.5), (Mandragora, _) => (0.0, -1.0), (Kappa, _) => (0.0, -4.0), + (Cactid, _) => (0.0, 0.0), + (Gnoll, _) => (-2.5, -2.0), + (Haniwa, _) => (-4.5, -2.0), + (Myrmidon, _) => (-2.5, -1.0), }, hand: match (body.species, body.body_type) { (Gnome, _) => (4.0, 0.5, -1.0), @@ -144,6 +160,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnarling, _) => (4.0, 0.0, 1.5), (Mandragora, _) => (4.0, -0.5, -2.5), (Kappa, _) => (4.0, 3.5, -0.5), + (Cactid, _) => (4.0, 0.5, -1.0), + (Gnoll, _) => (3.5, 0.5, -1.0), + (Haniwa, _) => (4.25, -1.0, 1.5), + (Myrmidon, _) => (3.5, 1.5, 2.0), }, foot: match (body.species, body.body_type) { (Gnome, _) => (3.0, 0.0, 4.0), @@ -152,6 +172,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnarling, _) => (2.5, 1.0, 5.0), (Mandragora, _) => (3.0, 0.0, 4.0), (Kappa, _) => (3.0, 3.0, 9.0), + (Cactid, _) => (3.0, 0.0, 5.0), + (Gnoll, _) => (3.0, 1.0, 7.0), + (Haniwa, _) => (3.0, 0.5, 8.0), + (Myrmidon, _) => (3.0, 0.5, 7.0), }, grip: match (body.species, body.body_type) { (Gnome, _) => (0.0, 0.0, 5.0), @@ -160,6 +184,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Gnarling, _) => (0.0, 0.0, 7.0), (Mandragora, _) => (0.0, 0.0, 7.0), (Kappa, _) => (0.75, 1.0, 12.0), + (Cactid, _) => (0.0, 0.0, 8.0), + (Gnoll, _) => (1.0, 0.0, 9.0), + (Haniwa, _) => (0.0, 0.5, 8.0), + (Myrmidon, _) => (0.0, 0.0, 8.0), }, } } diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index 70330eb8b1..e68bed822a 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -108,8 +108,8 @@ impl Animation for RunAnimation { next.main.position = Vec3::new(2.0, -3.0, -3.0); next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57); - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); - next.shorts.orientation = Quaternion::rotation_x(0.1 * speednorm) + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); + next.pants.orientation = Quaternion::rotation_x(0.1 * speednorm) * Quaternion::rotation_z(short * 0.25 + tilt * -1.5) * Quaternion::rotation_y(tilt * 0.7); diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs index 974f6d2f14..a5363c626c 100644 --- a/voxygen/anim/src/biped_small/shoot.rs +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -48,10 +48,8 @@ impl Animation for ShootAnimation { let mut next = (*skeleton).clone(); let speed = Vec2::::from(velocity).magnitude(); - let fastacc = (acc_vel * 2.0).sin(); let fast = (anim_time as f32 * 10.0).sin(); let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); - let slow = (anim_time as f32 * 2.0).sin(); let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; @@ -69,7 +67,7 @@ impl Animation for ShootAnimation { s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, ) / 13.0; - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) @@ -96,8 +94,6 @@ impl Animation for ShootAnimation { let subtract = global_time - timer; let check = subtract - subtract.trunc(); let mirror = (check - 0.5).signum() as f32; - let movement1 = mirror * movement1base * pullback; - let movement2 = mirror * movement2base * pullback; let movement1abs = movement1base * pullback; let movement2abs = movement2base * pullback; next.control_l.position = Vec3::new( diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs index 0b7affbdeb..40c190deb1 100644 --- a/voxygen/anim/src/biped_small/wield.rs +++ b/voxygen/anim/src/biped_small/wield.rs @@ -57,7 +57,7 @@ impl Animation for WieldAnimation { s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, ) / 13.0; - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) @@ -118,6 +118,33 @@ impl Animation for WieldAnimation { next.control.orientation = Quaternion::rotation_x(-0.3 + 0.5 * speednorm) * Quaternion::rotation_y(0.5 * speednorm); }, + Some(ToolKind::Staff) => { + next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0); + next.control_r.position = + Vec3::new(7.0 + s_a.grip.0 * 2.0, -4.0, 3.0 + speednorm * -3.0); + + next.control.position = Vec3::new( + -5.0, + -1.0 + s_a.grip.2, + -2.0 + -s_a.grip.2 / 2.5 + + s_a.grip.0 * -2.0 + + fastacc * 1.5 + + fastalt * 0.5 * speednormcancel + + speednorm * 2.0, + ); + + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + slow * 0.1) + * Quaternion::rotation_y(-0.3) + * Quaternion::rotation_z(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.0 + slow * 0.1 + s_a.grip.0 * 0.2) + * Quaternion::rotation_y(-0.4 + slow * 0.0 + s_a.grip.0 * 0.2) + * Quaternion::rotation_z(-0.0); + + next.control.orientation = Quaternion::rotation_x(-0.3 + 0.2 * speednorm) + * Quaternion::rotation_y(-0.2 * speednorm) + * Quaternion::rotation_z(0.5); + }, _ => {}, } diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 34eb78c9c4..60cb948242 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -2475,8 +2475,6 @@ struct BipedSmallCentralSpec(HashMap<(BSSpecies, BSBodyType), SidedBSCentralVoxS #[derive(Deserialize)] struct SidedBSCentralVoxSpec { head: BipedSmallCentralSubSpec, - chest: BipedSmallCentralSubSpec, - shorts: BipedSmallCentralSubSpec, tail: BipedSmallCentralSubSpec, } #[derive(Deserialize)] @@ -2484,30 +2482,27 @@ struct BipedSmallCentralSubSpec { offset: [f32; 3], // Should be relative to initial origin central: VoxSimple, } -#[derive(Deserialize)] -struct BipedSmallLateralSpec(HashMap<(BSSpecies, BSBodyType), SidedBSLateralVoxSpec>); -#[derive(Deserialize)] -struct SidedBSLateralVoxSpec { - hand_l: BipedSmallLateralSubSpec, - hand_r: BipedSmallLateralSubSpec, - foot_l: BipedSmallLateralSubSpec, - foot_r: BipedSmallLateralSubSpec, -} -#[derive(Deserialize)] -struct BipedSmallLateralSubSpec { - offset: [f32; 3], // Should be relative to initial origin - lateral: VoxSimple, -} #[derive(Deserialize)] struct BipedSmallWeaponSpec(HashMap); - +#[derive(Deserialize)] +struct BipedSmallArmorHandSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] +struct BipedSmallArmorFootSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] +struct BipedSmallArmorChestSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] +struct BipedSmallArmorPantsSpec(ArmorVoxSpecMap); make_vox_spec!( biped_small::Body, struct BipedSmallSpec { central: BipedSmallCentralSpec = "voxygen.voxel.biped_small_central_manifest", - lateral: BipedSmallLateralSpec = "voxygen.voxel.biped_small_lateral_manifest", + armor_foot: BipedSmallArmorFootSpec = "voxygen.voxel.biped_small_armor_foot_manifest", weapon: BipedSmallWeaponSpec = "voxygen.voxel.biped_small_weapon_manifest", + armor_hand: BipedSmallArmorHandSpec = "voxygen.voxel.biped_small_armor_hand_manifest", + armor_chest: BipedSmallArmorChestSpec = "voxygen.voxel.biped_small_armor_chest_manifest", + armor_pants: BipedSmallArmorPantsSpec = "voxygen.voxel.biped_small_armor_pants_manifest", + }, |FigureKey { body, extra }, spec| { const DEFAULT_LOADOUT: super::cache::CharacterCacheKey = super::cache::CharacterCacheKey { @@ -2521,20 +2516,29 @@ make_vox_spec!( // TODO: This is bad code, maybe this method should return Option<_> let loadout = extra.as_deref().unwrap_or(&DEFAULT_LOADOUT); + let third_person = loadout.third_person.as_ref(); let tool = loadout.tool.as_ref(); + let hand = loadout.hand.as_deref(); + let foot = loadout.foot.as_deref(); + + [ Some(spec.central.read().0.mesh_head( body.species, body.body_type, )), - Some(spec.central.read().0.mesh_chest( - body.species, - body.body_type, - )), - Some(spec.central.read().0.mesh_shorts( - body.species, - body.body_type, - )), + third_person.map(|loadout| { + spec.armor_chest.read().0.mesh_chest( + loadout.chest.as_deref(), + false, + ) + }), + third_person.map(|loadout| { + spec.armor_pants.read().0.mesh_pants( + loadout.pants.as_deref(), + false, + ) + }), Some(spec.central.read().0.mesh_tail( body.species, body.body_type, @@ -2545,21 +2549,17 @@ make_vox_spec!( false, ) }), - Some(spec.lateral.read().0.mesh_hand_l( - body.species, - body.body_type, + Some(spec.armor_hand.read().0.mesh_left_hand( + hand, )), - Some(spec.lateral.read().0.mesh_hand_r( - body.species, - body.body_type, + Some(spec.armor_hand.read().0.mesh_right_hand( + hand, )), - Some(spec.lateral.read().0.mesh_foot_l( - body.species, - body.body_type, + Some(spec.armor_foot.read().0.mesh_left_foot( + foot, )), - Some(spec.lateral.read().0.mesh_foot_r( - body.species, - body.body_type, + Some(spec.armor_foot.read().0.mesh_right_foot( + foot, )), None, None, @@ -2589,38 +2589,6 @@ impl BipedSmallCentralSpec { (central, Vec3::from(spec.head.offset)) } - fn mesh_chest(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No chest specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, - }; - let central = graceful_load_segment(&spec.chest.central.0); - - (central, Vec3::from(spec.chest.offset)) - } - - fn mesh_shorts(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No shorts specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, - }; - let central = graceful_load_segment(&spec.shorts.central.0); - - (central, Vec3::from(spec.shorts.offset)) - } - fn mesh_tail(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, @@ -2638,88 +2606,137 @@ impl BipedSmallCentralSpec { } } -impl BipedSmallLateralSpec { - fn mesh_hand_l(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No hand specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, +impl BipedSmallArmorChestSpec { + fn mesh_chest(&self, chest: Option<&str>, flipped: bool) -> BoneMeshes { + let spec = if let Some(chest) = chest { + match self.0.map.get(chest) { + Some(spec) => spec, + None => { + error!(?chest, "No chest specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default }; - let lateral = graceful_load_segment(&spec.hand_l.lateral.0); - (lateral, Vec3::from(spec.hand_l.offset)) - } - - fn mesh_hand_r(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No hand specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, + let chest_segment = if flipped { + graceful_load_segment_flipped(&spec.vox_spec.0) + } else { + graceful_load_segment(&spec.vox_spec.0) }; - let lateral = graceful_load_segment(&spec.hand_r.lateral.0); - (lateral, Vec3::from(spec.hand_r.offset)) - } - - fn mesh_foot_l(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No foot specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + let offset = Vec3::new( + if flipped { + 0.0 - spec.vox_spec.1[0] - (chest_segment.sz.x as f32) + } else { + spec.vox_spec.1[0] }, - }; - let lateral = graceful_load_segment(&spec.foot_l.lateral.0); + spec.vox_spec.1[1], + spec.vox_spec.1[2], + ); - (lateral, Vec3::from(spec.foot_l.offset)) - } - - fn mesh_foot_r(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No foot specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, - }; - let lateral = graceful_load_segment(&spec.foot_r.lateral.0); - - (lateral, Vec3::from(spec.foot_r.offset)) + (chest_segment, offset) } } -/*impl BipedSmallWeaponSpec { - fn mesh_main(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No main specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, +impl BipedSmallArmorPantsSpec { + fn mesh_pants(&self, pants: Option<&str>, flipped: bool) -> BoneMeshes { + let spec = if let Some(pants) = pants { + match self.0.map.get(pants) { + Some(spec) => spec, + None => { + error!(?pants, "No pants specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default }; - let weapon = graceful_load_segment(&spec.main.weapon.0); - (weapon, Vec3::from(spec.main.offset)) + let pants_segment = if flipped { + graceful_load_segment_flipped(&spec.vox_spec.0) + } else { + graceful_load_segment(&spec.vox_spec.0) + }; + + let offset = Vec3::new( + if flipped { + 0.0 - spec.vox_spec.1[0] - (pants_segment.sz.x as f32) + } else { + spec.vox_spec.1[0] + }, + spec.vox_spec.1[1], + spec.vox_spec.1[2], + ); + + (pants_segment, offset) } -*///} +} +impl BipedSmallArmorHandSpec { + fn mesh_hand(&self, hand: Option<&str>, flipped: bool) -> BoneMeshes { + let spec = if let Some(hand) = hand { + match self.0.map.get(hand) { + Some(spec) => spec, + None => { + error!(?hand, "No hand specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default + }; + + let hand_segment = if flipped { + graceful_load_segment_flipped(&spec.left.vox_spec.0) + } else { + graceful_load_segment(&spec.right.vox_spec.0) + }; + let offset = if flipped { + spec.left.vox_spec.1 + } else { + spec.right.vox_spec.1 + }; + + (hand_segment, Vec3::from(offset)) + } + + fn mesh_left_hand(&self, hand: Option<&str>) -> BoneMeshes { self.mesh_hand(hand, true) } + + fn mesh_right_hand(&self, hand: Option<&str>) -> BoneMeshes { self.mesh_hand(hand, false) } +} +impl BipedSmallArmorFootSpec { + fn mesh_foot(&self, foot: Option<&str>, flipped: bool) -> BoneMeshes { + let spec = if let Some(foot) = foot { + match self.0.map.get(foot) { + Some(spec) => spec, + None => { + error!(?foot, "No foot specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default + }; + + let foot_segment = if flipped { + graceful_load_segment_flipped(&spec.left.vox_spec.0) + } else { + graceful_load_segment(&spec.right.vox_spec.0) + }; + let offset = if flipped { + spec.left.vox_spec.1 + } else { + spec.right.vox_spec.1 + }; + + (foot_segment, Vec3::from(offset)) + } + + fn mesh_left_foot(&self, foot: Option<&str>) -> BoneMeshes { self.mesh_foot(foot, true) } + + fn mesh_right_foot(&self, foot: Option<&str>) -> BoneMeshes { self.mesh_foot(foot, false) } +} + impl BipedSmallWeaponSpec { fn mesh_main(&self, item_definition_id: &str, flipped: bool) -> BoneMeshes { let spec = match self.0.get(item_definition_id) { @@ -2738,8 +2755,6 @@ impl BipedSmallWeaponSpec { let offset = Vec3::new( if flipped { - //log::warn!("tool kind segment {:?}", ); - //tool_kind_segment.; 0.0 - spec.vox_spec.1[0] - (tool_kind_segment.sz.x as f32) } else { spec.vox_spec.1[0] diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 274178fe02..84242911ff 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2736,7 +2736,7 @@ impl FigureMgr { Some(s.stage_section), state.state_time, ), - state.state_time, + stage_progress, &mut state_animation_rate, skeleton_attr, ) @@ -2778,7 +2778,7 @@ impl FigureMgr { Some(s.stage_section), state.state_time, ), - state.state_time, + stage_progress, &mut state_animation_rate, skeleton_attr, ), @@ -2794,7 +2794,7 @@ impl FigureMgr { Some(s.stage_section), state.state_time, ), - state.state_time, + stage_progress, &mut state_animation_rate, skeleton_attr, ), diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index 431d66ecc9..cc6e0d5cad 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -7,6 +7,7 @@ use crate::{ util::{attempt, Grid, RandomField, Sampler, CARDINALS, DIRS}, IndexRef, }; + use common::{ assets::{AssetExt, AssetHandle}, astar::Astar, @@ -598,7 +599,6 @@ impl Floor { .map(|e| e as f32 / 16.0), ) //.do_if(is_giant, |e| e.into_giant()) - .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_alignment(comp::Alignment::Enemy) .with_loadout_config(loadout_builder::LoadoutConfig::CultistAcolyte) .with_skillset_config(common::skillset_builder::SkillSetConfig::CultistAcolyte) @@ -606,88 +606,110 @@ impl Floor { .with_level(dynamic_rng.gen_range((room.difficulty as f32).powf(1.25) + 3.0..(room.difficulty as f32).powf(1.5) + 4.0).round() as u16); let entity = match room.difficulty { 0 => entity - .with_name("Outcast") - .with_loadout_config(loadout_builder::LoadoutConfig::Outcast) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Gnarling, + ), + )) + .with_name("Gnarling") + .with_loadout_config(loadout_builder::LoadoutConfig::Gnarling) .with_skillset_config( - common::skillset_builder::SkillSetConfig::Outcast, + common::skillset_builder::SkillSetConfig::Gnarling, ) .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.weapons.axe.starter_axe", - 1..=2 => "common.items.weapons.sword.starter", - 3 => "common.items.weapons.hammer.starter_hammer", - 4 => "common.items.weapons.staff.starter_staff", - _ => "common.items.weapons.bow.starter", + match dynamic_rng.gen_range(0, 3) { + 0 => "common.items.npc_weapons.spear.wooden_spear", + 1 => "common.items.npc_weapons.staff.gnoll", + _ => "common.items.npc_weapons.bow.adlet", }, )), 1 => entity - .with_name("Highwayman") - .with_loadout_config(loadout_builder::LoadoutConfig::Highwayman) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Adlet, + ), + )) + .with_name("Adlet") + .with_loadout_config(loadout_builder::LoadoutConfig::Adlet) .with_skillset_config( - common::skillset_builder::SkillSetConfig::Highwayman, + common::skillset_builder::SkillSetConfig::Adlet, ) .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.weapons.axe.worn_iron_axe-0", - 1..=2 => "common.items.weapons.sword.steel-8", - 3 => "common.items.weapons.hammer.worn_iron_hammer-0", - 4 => "common.items.weapons.staff.bone_staff", - _ => "common.items.weapons.bow.hardwood-3", + match dynamic_rng.gen_range(0, 3) { + 0 => "common.items.npc_weapons.spear.wooden_spear", + 1 => "common.items.npc_weapons.staff.gnoll", + _ => "common.items.npc_weapons.bow.adlet", }, )), 2 => entity - .with_name("Bandit") - .with_loadout_config(loadout_builder::LoadoutConfig::Bandit) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Sahagin, + ), + )) + .with_name("Sahagin") + .with_loadout_config(loadout_builder::LoadoutConfig::Sahagin) .with_skillset_config( - common::skillset_builder::SkillSetConfig::Bandit, + common::skillset_builder::SkillSetConfig::Sahagin, ) .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.weapons.axe.bronze_axe-0", - 1 => "common.items.weapons.sword.iron-4", - 2 => "common.items.weapons.sword.cultist", - 3 => "common.items.weapons.hammer.bronze_hammer-0", - 4 => "common.items.weapons.staff.bone_staff", - _ => "common.items.weapons.bow.wood-3", + match dynamic_rng.gen_range(0, 3) { + 0 => "common.items.npc_weapons.spear.wooden_spear", + 1 => "common.items.npc_weapons.staff.gnoll", + _ => "common.items.npc_weapons.bow.adlet", }, )), 3 => entity - .with_name("Cultist Novice") - .with_loadout_config(loadout_builder::LoadoutConfig::CultistNovice) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Haniwa, + ), + )) + .with_name("Haniwa") + .with_loadout_config(loadout_builder::LoadoutConfig::Haniwa) .with_skillset_config( - common::skillset_builder::SkillSetConfig::CultistNovice, + common::skillset_builder::SkillSetConfig::Haniwa, ) .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.weapons.axe.steel_axe-0", - 1..=2 => "common.items.weapons.sword.steel-2", - 3 => "common.items.weapons.hammer.cobalt_hammer-0", - 4 => "common.items.weapons.staff.amethyst_staff", - _ => "common.items.weapons.bow.bone-1", + match dynamic_rng.gen_range(0, 3) { + 0 => "common.items.npc_weapons.spear.wooden_spear", + 1 => "common.items.npc_weapons.staff.gnoll", + _ => "common.items.npc_weapons.bow.adlet", }, )), 4 => entity - .with_name("Cultist Acolyte") - .with_loadout_config(loadout_builder::LoadoutConfig::CultistAcolyte) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Myrmidon, + ), + )) + .with_name("Myrmidon") + .with_loadout_config(loadout_builder::LoadoutConfig::Myrmidon) .with_skillset_config( - common::skillset_builder::SkillSetConfig::CultistAcolyte, + common::skillset_builder::SkillSetConfig::Myrmidon, ) .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.weapons.axe.malachite_axe-0", - 1..=2 => "common.items.weapons.sword.cultist", - 3 => "common.items.weapons.hammer.cultist_purp_2h-0", - 4 => "common.items.weapons.staff.cultist_staff", - _ => "common.items.weapons.bow.bone-1", + match dynamic_rng.gen_range(0, 3) { + 0 => "common.items.npc_weapons.spear.wooden_spear", + 1 => "common.items.npc_weapons.staff.gnoll", + _ => "common.items.npc_weapons.bow.adlet", }, )), 5 => match dynamic_rng.gen_range(0..6) { 0 => entity + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random(), + )) .with_name("Cultist Warlock") .with_loadout_config(loadout_builder::LoadoutConfig::Warlock) .with_skillset_config( From 0dc8b2e482ed78a42a67387de6d787c785339fa2 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 23 Jan 2021 19:52:18 -0500 Subject: [PATCH 12/36] rendering --- .../voxel/npc/antelope/male/foot_bl.vox | 3 - .../voxel/npc/antelope/male/foot_fl.vox | 3 - .../voxel/npc/antelope/male/leg_bl.vox | 3 - .../voxel/npc/antelope/male/leg_fl.vox | 3 - .../voxel/npc/barghest/male/foot_bl.vox | 3 - .../voxel/npc/barghest/male/foot_fl.vox | 3 - .../voxel/npc/barghest/male/leg_bl.vox | 3 - .../voxel/npc/barghest/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/bear/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/bear/male/foot_fl.vox | 3 - assets/voxygen/voxel/npc/bear/male/leg_bl.vox | 3 - assets/voxygen/voxel/npc/bear/male/leg_fl.vox | 3 - .../voxel/npc/bonerattler/male/foot_bl.vox | 3 - .../voxel/npc/bonerattler/male/foot_fl.vox | 3 - .../voxel/npc/bonerattler/male/leg_bl.vox | 3 - .../voxel/npc/bonerattler/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/camel/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/camel/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/camel/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/camel/male/leg_fl.vox | 3 - .../voxel/npc/catoblepas/male/foot_bl.vox | 3 - .../voxel/npc/catoblepas/male/foot_fl.vox | 3 - .../voxel/npc/catoblepas/male/leg_bl.vox | 3 - .../voxel/npc/catoblepas/male/leg_fl.vox | 3 - .../voxel/npc/cattle/female/foot_bl.vox | 3 - .../voxel/npc/cattle/female/foot_fl.vox | 3 - .../voxel/npc/cattle/female/leg_bl.vox | 3 - .../voxel/npc/cattle/female/leg_fl.vox | 3 - .../voxygen/voxel/npc/cattle/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/cattle/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/cattle/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/cattle/male/leg_fl.vox | 3 - .../voxel/npc/darkhound/male/foot_bl.vox | 3 - .../voxel/npc/darkhound/male/foot_fl.vox | 3 - .../voxel/npc/darkhound/male/leg_bl.vox | 3 - .../voxel/npc/darkhound/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/deer/female/foot_bl.vox | 3 - .../voxygen/voxel/npc/deer/female/foot_fl.vox | 3 - .../voxygen/voxel/npc/deer/female/leg_bl.vox | 3 - .../voxygen/voxel/npc/deer/female/leg_fl.vox | 3 - .../voxygen/voxel/npc/deer/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/deer/male/foot_fl.vox | 3 - assets/voxygen/voxel/npc/deer/male/leg_bl.vox | 3 - assets/voxygen/voxel/npc/deer/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/donkey/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/donkey/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/donkey/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/donkey/male/leg_fl.vox | 3 - .../voxel/npc/frostfang/male/foot_bl.vox | 3 - .../voxel/npc/frostfang/male/foot_fl.vox | 3 - .../voxel/npc/frostfang/male/leg_bl.vox | 3 - .../voxel/npc/frostfang/male/leg_fl.vox | 3 - .../voxel/npc/grolgar/male/foot_bl.vox | 3 - .../voxel/npc/grolgar/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/grolgar/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/grolgar/male/leg_fl.vox | 3 - .../voxel/npc/highland/male/foot_bl.vox | 3 - .../voxel/npc/highland/male/foot_fl.vox | 3 - .../voxel/npc/highland/male/leg_bl.vox | 3 - .../voxel/npc/highland/male/leg_fl.vox | 3 - .../voxel/npc/hirdrasil/male/foot_bl.vox | 3 - .../voxel/npc/hirdrasil/male/foot_fl.vox | 3 - .../voxel/npc/hirdrasil/male/leg_bl.vox | 3 - .../voxel/npc/hirdrasil/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/horse/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/horse/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/horse/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/horse/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/kelpie/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/kelpie/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/kelpie/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/kelpie/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/lion/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/lion/male/foot_fl.vox | 3 - assets/voxygen/voxel/npc/lion/male/leg_bl.vox | 3 - assets/voxygen/voxel/npc/lion/male/leg_fl.vox | 3 - .../voxel/npc/mouflon/male/foot_bl.vox | 3 - .../voxel/npc/mouflon/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/mouflon/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/mouflon/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/panda/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/panda/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/panda/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/panda/male/leg_fl.vox | 3 - .../voxel/npc/roshwalr/male/foot_bl.vox | 3 - .../voxel/npc/roshwalr/male/foot_fl.vox | 3 - .../voxel/npc/roshwalr/male/leg_bl.vox | 3 - .../voxel/npc/roshwalr/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/saber/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/saber/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/saber/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/saber/male/leg_fl.vox | 3 - .../voxel/npc/tarasque/male/foot_bl.vox | 3 - .../voxel/npc/tarasque/male/foot_fl.vox | 3 - .../voxel/npc/tarasque/male/leg_bl.vox | 3 - .../voxel/npc/tarasque/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/tiger/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/tiger/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/tiger/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/tiger/male/leg_fl.vox | 3 - .../voxel/npc/tuskram/male/foot_bl.vox | 3 - .../voxel/npc/tuskram/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/tuskram/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/tuskram/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/wolf/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/wolf/male/foot_fl.vox | 3 - assets/voxygen/voxel/npc/wolf/male/leg_bl.vox | 3 - assets/voxygen/voxel/npc/wolf/male/leg_fl.vox | 3 - assets/voxygen/voxel/npc/yak/male/foot_bl.vox | 3 - assets/voxygen/voxel/npc/yak/male/foot_fl.vox | 3 - assets/voxygen/voxel/npc/yak/male/leg_bl.vox | 3 - assets/voxygen/voxel/npc/yak/male/leg_fl.vox | 3 - .../voxygen/voxel/npc/zebra/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/zebra/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/zebra/male/leg_bl.vox | 3 - .../voxygen/voxel/npc/zebra/male/leg_fl.vox | 3 - .../quadruped_medium_lateral_manifest.ron | 432 +++++++++--------- voxygen/anim/src/biped_small/wield.rs | 5 + voxygen/src/scene/figure/load.rs | 46 +- 119 files changed, 231 insertions(+), 600 deletions(-) delete mode 100644 assets/voxygen/voxel/npc/antelope/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/antelope/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/antelope/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/antelope/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/barghest/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/barghest/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/barghest/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/barghest/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/bear/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/bear/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/bear/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/bear/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/bonerattler/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/bonerattler/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/bonerattler/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/bonerattler/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/camel/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/camel/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/camel/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/camel/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/catoblepas/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/catoblepas/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/cattle/female/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/cattle/female/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/cattle/female/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/cattle/female/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/cattle/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/cattle/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/cattle/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/cattle/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/darkhound/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/darkhound/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/darkhound/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/darkhound/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/deer/female/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/deer/female/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/deer/female/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/deer/female/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/deer/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/deer/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/deer/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/deer/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/donkey/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/donkey/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/donkey/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/donkey/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/frostfang/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/frostfang/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/frostfang/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/frostfang/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/highland/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/highland/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/highland/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/highland/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/hirdrasil/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/hirdrasil/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/hirdrasil/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/hirdrasil/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/horse/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/horse/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/horse/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/horse/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/kelpie/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/kelpie/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/kelpie/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/kelpie/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/lion/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/lion/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/lion/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/lion/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/mouflon/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/mouflon/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/mouflon/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/mouflon/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/panda/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/panda/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/panda/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/panda/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/roshwalr/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/roshwalr/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/roshwalr/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/roshwalr/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/saber/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/saber/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/saber/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/saber/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/tarasque/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/tarasque/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/tarasque/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/tarasque/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/tiger/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/tiger/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/tiger/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/tiger/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/wolf/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/wolf/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/wolf/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/wolf/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/yak/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/yak/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/yak/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/yak/male/leg_fl.vox delete mode 100644 assets/voxygen/voxel/npc/zebra/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/zebra/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/zebra/male/leg_bl.vox delete mode 100644 assets/voxygen/voxel/npc/zebra/male/leg_fl.vox diff --git a/assets/voxygen/voxel/npc/antelope/male/foot_bl.vox b/assets/voxygen/voxel/npc/antelope/male/foot_bl.vox deleted file mode 100644 index 9afedc25e9..0000000000 --- a/assets/voxygen/voxel/npc/antelope/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38b152453d10f295128470bb061555bfec310ad2c9e9d5c81fc3ff730fa54d13 -size 1224 diff --git a/assets/voxygen/voxel/npc/antelope/male/foot_fl.vox b/assets/voxygen/voxel/npc/antelope/male/foot_fl.vox deleted file mode 100644 index b1095c4307..0000000000 --- a/assets/voxygen/voxel/npc/antelope/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3eb8fa5ac6ce816784a0eed66ac5487a561d60460af3deeeb998824864d01bb1 -size 1240 diff --git a/assets/voxygen/voxel/npc/antelope/male/leg_bl.vox b/assets/voxygen/voxel/npc/antelope/male/leg_bl.vox deleted file mode 100644 index 7c2a01e18b..0000000000 --- a/assets/voxygen/voxel/npc/antelope/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce303274bbef4d8017def9f4523892610f0c0bfb551dc49e0bebba263c1a0ae9 -size 1564 diff --git a/assets/voxygen/voxel/npc/antelope/male/leg_fl.vox b/assets/voxygen/voxel/npc/antelope/male/leg_fl.vox deleted file mode 100644 index 3ea98d3cd9..0000000000 --- a/assets/voxygen/voxel/npc/antelope/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f15803ca7d9c7e1d7498c248f8aa5b6a47bf8e6250ff2e439d37126eb45bba09 -size 1444 diff --git a/assets/voxygen/voxel/npc/barghest/male/foot_bl.vox b/assets/voxygen/voxel/npc/barghest/male/foot_bl.vox deleted file mode 100644 index c1b8628d8c..0000000000 --- a/assets/voxygen/voxel/npc/barghest/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:330158ac59154e8cdd07ba60ee1b9981c40cf1f2db333eadbf4ce71bb850600f -size 1352 diff --git a/assets/voxygen/voxel/npc/barghest/male/foot_fl.vox b/assets/voxygen/voxel/npc/barghest/male/foot_fl.vox deleted file mode 100644 index 7a2afb273c..0000000000 --- a/assets/voxygen/voxel/npc/barghest/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0818eb5708de531bb6a643e286c5dcbd558601a4290df7bdce07ab253a2b62d4 -size 2040 diff --git a/assets/voxygen/voxel/npc/barghest/male/leg_bl.vox b/assets/voxygen/voxel/npc/barghest/male/leg_bl.vox deleted file mode 100644 index 8690264067..0000000000 --- a/assets/voxygen/voxel/npc/barghest/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:408481796f6185af03aa173530a535ee049428914fa9fa5e4ed520da1d85b472 -size 1636 diff --git a/assets/voxygen/voxel/npc/barghest/male/leg_fl.vox b/assets/voxygen/voxel/npc/barghest/male/leg_fl.vox deleted file mode 100644 index affc602c3d..0000000000 --- a/assets/voxygen/voxel/npc/barghest/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:560f3c9beac1c9687c59a2fb1d8a086c2c82506ebdc3c000f6021d07bf828b3d -size 2592 diff --git a/assets/voxygen/voxel/npc/bear/male/foot_bl.vox b/assets/voxygen/voxel/npc/bear/male/foot_bl.vox deleted file mode 100644 index 6aee207029..0000000000 --- a/assets/voxygen/voxel/npc/bear/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0bf323ff6820ca512e7f30aac0c6a3c10684e13dfbacb204802bf5372087b7fa -size 1644 diff --git a/assets/voxygen/voxel/npc/bear/male/foot_fl.vox b/assets/voxygen/voxel/npc/bear/male/foot_fl.vox deleted file mode 100644 index ed05709a46..0000000000 --- a/assets/voxygen/voxel/npc/bear/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:815d0c01fd543070bb592224ad7304c6c8ec6f5006684127de9bcf530f77fe0d -size 1792 diff --git a/assets/voxygen/voxel/npc/bear/male/leg_bl.vox b/assets/voxygen/voxel/npc/bear/male/leg_bl.vox deleted file mode 100644 index dff638b54e..0000000000 --- a/assets/voxygen/voxel/npc/bear/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ec01423928a2fb630ce718f28ace9a3da4b686ac292ad20a46b0a9fbefc3a5d9 -size 1852 diff --git a/assets/voxygen/voxel/npc/bear/male/leg_fl.vox b/assets/voxygen/voxel/npc/bear/male/leg_fl.vox deleted file mode 100644 index 24c561ea4f..0000000000 --- a/assets/voxygen/voxel/npc/bear/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d009912a423e387437d686e736e199e7c58819439c5aa9c2e3ddf80f281f43e3 -size 1792 diff --git a/assets/voxygen/voxel/npc/bonerattler/male/foot_bl.vox b/assets/voxygen/voxel/npc/bonerattler/male/foot_bl.vox deleted file mode 100644 index b0bb504145..0000000000 --- a/assets/voxygen/voxel/npc/bonerattler/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e1622ffa38acfb820ccc9eb103b7f64eb772de3d59cc006e98ee7cb3bf0d12ae -size 1444 diff --git a/assets/voxygen/voxel/npc/bonerattler/male/foot_fl.vox b/assets/voxygen/voxel/npc/bonerattler/male/foot_fl.vox deleted file mode 100644 index 4bf1ef1587..0000000000 --- a/assets/voxygen/voxel/npc/bonerattler/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bfbfd577f6fa485c60db1821f0e12dce816e7c61e81bbb765c541af28b383ec1 -size 1520 diff --git a/assets/voxygen/voxel/npc/bonerattler/male/leg_bl.vox b/assets/voxygen/voxel/npc/bonerattler/male/leg_bl.vox deleted file mode 100644 index f7b13031f4..0000000000 --- a/assets/voxygen/voxel/npc/bonerattler/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2e114bd3371dd6ebd668ae25caf495803443084cda576c6ebf1dd1f46d19846 -size 1360 diff --git a/assets/voxygen/voxel/npc/bonerattler/male/leg_fl.vox b/assets/voxygen/voxel/npc/bonerattler/male/leg_fl.vox deleted file mode 100644 index 3e6b39d8f9..0000000000 --- a/assets/voxygen/voxel/npc/bonerattler/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eff214991064df1052f9329331197983a9d370287a7d6fc8e381052c334d2b1f -size 1360 diff --git a/assets/voxygen/voxel/npc/camel/male/foot_bl.vox b/assets/voxygen/voxel/npc/camel/male/foot_bl.vox deleted file mode 100644 index 9e0fff1c65..0000000000 --- a/assets/voxygen/voxel/npc/camel/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d5f018aa6b6b95d51890900074696b9232c7d0cc75363242d1678498fa9eb80 -size 1332 diff --git a/assets/voxygen/voxel/npc/camel/male/foot_fl.vox b/assets/voxygen/voxel/npc/camel/male/foot_fl.vox deleted file mode 100644 index 8472cab5df..0000000000 --- a/assets/voxygen/voxel/npc/camel/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eb7fa0b9d5cad68dab0afbc8f6372bac88ada4cae24d40e5fc007d87637155b5 -size 1376 diff --git a/assets/voxygen/voxel/npc/camel/male/leg_bl.vox b/assets/voxygen/voxel/npc/camel/male/leg_bl.vox deleted file mode 100644 index 5af3ab1f3e..0000000000 --- a/assets/voxygen/voxel/npc/camel/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:94d6d3cec317950575effc92caf16617448702b702bda82c0ae9e000b7d2f20e -size 2084 diff --git a/assets/voxygen/voxel/npc/camel/male/leg_fl.vox b/assets/voxygen/voxel/npc/camel/male/leg_fl.vox deleted file mode 100644 index 652c869349..0000000000 --- a/assets/voxygen/voxel/npc/camel/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f251d1a4b4fb3013ffc4c397c96b13d4dbc8eb76a2b5dc7e2897b076b46d605a -size 2096 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/foot_bl.vox b/assets/voxygen/voxel/npc/catoblepas/male/foot_bl.vox deleted file mode 100644 index bacff6706a..0000000000 --- a/assets/voxygen/voxel/npc/catoblepas/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3c0f1f9806038e8f2044eb8c7ad779352613493e4f4e76c80d5cb07b9fab41f9 -size 1584 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox b/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox deleted file mode 100644 index 2378aa6d83..0000000000 --- a/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f852128a1b1dda0f6c0f0b3574070360366dcc121f758c8dd57428a7bd14a8b0 -size 1968 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/leg_bl.vox b/assets/voxygen/voxel/npc/catoblepas/male/leg_bl.vox deleted file mode 100644 index 7da0477bf4..0000000000 --- a/assets/voxygen/voxel/npc/catoblepas/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df65aa79a2af8e9420536f1fad888576e53d9ec5897c7d8f299d0380cccd77f8 -size 1612 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox b/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox deleted file mode 100644 index e0a298a2cd..0000000000 --- a/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:42c2918702fe0bfb5a999f0e32a88324e4f6fe6182498567ad29c75769da0a76 -size 2280 diff --git a/assets/voxygen/voxel/npc/cattle/female/foot_bl.vox b/assets/voxygen/voxel/npc/cattle/female/foot_bl.vox deleted file mode 100644 index 0e68e83277..0000000000 --- a/assets/voxygen/voxel/npc/cattle/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a83019f09ec8b365d240b8958910fb03d588d46b3769c01f804a48815e01d9c9 -size 1356 diff --git a/assets/voxygen/voxel/npc/cattle/female/foot_fl.vox b/assets/voxygen/voxel/npc/cattle/female/foot_fl.vox deleted file mode 100644 index b8ff8df974..0000000000 --- a/assets/voxygen/voxel/npc/cattle/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:37b3eb7438b03dd38a5894315aee3141d2b3a1af01e5033e54b4c95b9ffbbfce -size 1384 diff --git a/assets/voxygen/voxel/npc/cattle/female/leg_bl.vox b/assets/voxygen/voxel/npc/cattle/female/leg_bl.vox deleted file mode 100644 index 69e43996ce..0000000000 --- a/assets/voxygen/voxel/npc/cattle/female/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a1227487605288610f234b24e9750c0f2aef12a2854b7b66e1a9342f13c0262 -size 1680 diff --git a/assets/voxygen/voxel/npc/cattle/female/leg_fl.vox b/assets/voxygen/voxel/npc/cattle/female/leg_fl.vox deleted file mode 100644 index 86bb23ec71..0000000000 --- a/assets/voxygen/voxel/npc/cattle/female/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7062a0a3697243800e75177c669bf9f96bca8b95331887f5e952ed6f6b32d1ae -size 1584 diff --git a/assets/voxygen/voxel/npc/cattle/male/foot_bl.vox b/assets/voxygen/voxel/npc/cattle/male/foot_bl.vox deleted file mode 100644 index 11f4d4588f..0000000000 --- a/assets/voxygen/voxel/npc/cattle/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b5b93c6673ecf6f3b7106bc206b019074939493e569ed9454e45dfc100d11ad8 -size 1356 diff --git a/assets/voxygen/voxel/npc/cattle/male/foot_fl.vox b/assets/voxygen/voxel/npc/cattle/male/foot_fl.vox deleted file mode 100644 index 8a513b5e74..0000000000 --- a/assets/voxygen/voxel/npc/cattle/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4af263bc9b225d9f78cfaf50c8ac55cf021dfc24dd537a9c3f3ad233b9916c0d -size 1384 diff --git a/assets/voxygen/voxel/npc/cattle/male/leg_bl.vox b/assets/voxygen/voxel/npc/cattle/male/leg_bl.vox deleted file mode 100644 index 0a885bc090..0000000000 --- a/assets/voxygen/voxel/npc/cattle/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:94faba53344cdec7fd8a672278c3bd2cb0a28bb340981c87d6b0df210879d80a -size 1680 diff --git a/assets/voxygen/voxel/npc/cattle/male/leg_fl.vox b/assets/voxygen/voxel/npc/cattle/male/leg_fl.vox deleted file mode 100644 index ccd8b92ffa..0000000000 --- a/assets/voxygen/voxel/npc/cattle/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7d6be622d45ad945948713a1ae4fc84adfb248a39515036e3c8f6fe31410f40a -size 1952 diff --git a/assets/voxygen/voxel/npc/darkhound/male/foot_bl.vox b/assets/voxygen/voxel/npc/darkhound/male/foot_bl.vox deleted file mode 100644 index 72a861d55a..0000000000 --- a/assets/voxygen/voxel/npc/darkhound/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cd383a80ad883ba3ecb8a7352b786beb0590b03d84368391c18ea554694fb599 -size 1396 diff --git a/assets/voxygen/voxel/npc/darkhound/male/foot_fl.vox b/assets/voxygen/voxel/npc/darkhound/male/foot_fl.vox deleted file mode 100644 index e8d95c34bb..0000000000 --- a/assets/voxygen/voxel/npc/darkhound/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f49cd636fab9a09dc4c98832c12be5dd720d6f1f87771396ac309a1a39b5365 -size 1336 diff --git a/assets/voxygen/voxel/npc/darkhound/male/leg_bl.vox b/assets/voxygen/voxel/npc/darkhound/male/leg_bl.vox deleted file mode 100644 index 2a2b2264e6..0000000000 --- a/assets/voxygen/voxel/npc/darkhound/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6fec22d5427c0d42da4171befd9fe858933127c8e4df0430f6c807710b42e8cf -size 1464 diff --git a/assets/voxygen/voxel/npc/darkhound/male/leg_fl.vox b/assets/voxygen/voxel/npc/darkhound/male/leg_fl.vox deleted file mode 100644 index b98fe8c1d2..0000000000 --- a/assets/voxygen/voxel/npc/darkhound/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:88ea2f92adcb532a0dbe8097bb0d67141ce373752e34733c48062a696bf2a357 -size 1448 diff --git a/assets/voxygen/voxel/npc/deer/female/foot_bl.vox b/assets/voxygen/voxel/npc/deer/female/foot_bl.vox deleted file mode 100644 index 5d0acc172d..0000000000 --- a/assets/voxygen/voxel/npc/deer/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8a6343692a3b0b307d210ddaa32810d51f8577723a49fb8821ba212fd420d54 -size 1284 diff --git a/assets/voxygen/voxel/npc/deer/female/foot_fl.vox b/assets/voxygen/voxel/npc/deer/female/foot_fl.vox deleted file mode 100644 index 9ef54c93e1..0000000000 --- a/assets/voxygen/voxel/npc/deer/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:11b9589b90fa7e122eaaa2cb8af330c99001d334866f2fbe4ee1e9ff322f9b8d -size 1224 diff --git a/assets/voxygen/voxel/npc/deer/female/leg_bl.vox b/assets/voxygen/voxel/npc/deer/female/leg_bl.vox deleted file mode 100644 index b388daeb23..0000000000 --- a/assets/voxygen/voxel/npc/deer/female/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9c85f159166e7a57ebbdfdca4d42cdfbc4d581f45f88b48ea3617d8f2df6d9b7 -size 1528 diff --git a/assets/voxygen/voxel/npc/deer/female/leg_fl.vox b/assets/voxygen/voxel/npc/deer/female/leg_fl.vox deleted file mode 100644 index bd52c4ece4..0000000000 --- a/assets/voxygen/voxel/npc/deer/female/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2ad57a269866bb8c39357886a88fa6de0199045dfda70ae17604308116d036c -size 1444 diff --git a/assets/voxygen/voxel/npc/deer/male/foot_bl.vox b/assets/voxygen/voxel/npc/deer/male/foot_bl.vox deleted file mode 100644 index 3d5c156854..0000000000 --- a/assets/voxygen/voxel/npc/deer/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a6923910d5875a533bca256a88e906b819d1902bee8093f4580e6003e256525 -size 1284 diff --git a/assets/voxygen/voxel/npc/deer/male/foot_fl.vox b/assets/voxygen/voxel/npc/deer/male/foot_fl.vox deleted file mode 100644 index 2b539b930d..0000000000 --- a/assets/voxygen/voxel/npc/deer/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7ece09099cabfb54a3057106ca9665909f16bce545b50f094a3130d6b336f8bd -size 1224 diff --git a/assets/voxygen/voxel/npc/deer/male/leg_bl.vox b/assets/voxygen/voxel/npc/deer/male/leg_bl.vox deleted file mode 100644 index 902bbce745..0000000000 --- a/assets/voxygen/voxel/npc/deer/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d46e63796b7c93cced2649f77e50980c012b1189e6e4418e6741a3f692cd6365 -size 1528 diff --git a/assets/voxygen/voxel/npc/deer/male/leg_fl.vox b/assets/voxygen/voxel/npc/deer/male/leg_fl.vox deleted file mode 100644 index bd05cf9582..0000000000 --- a/assets/voxygen/voxel/npc/deer/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da910f17abc20f6063ad155ee6f848ea42cf2206b7a28604083266555873cddb -size 1444 diff --git a/assets/voxygen/voxel/npc/donkey/male/foot_bl.vox b/assets/voxygen/voxel/npc/donkey/male/foot_bl.vox deleted file mode 100644 index 1a977abc38..0000000000 --- a/assets/voxygen/voxel/npc/donkey/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ebf252ce3239ebeb744aea3c2c62c198b3ed156df5ecc96df2789a569fd3c716 -size 1420 diff --git a/assets/voxygen/voxel/npc/donkey/male/foot_fl.vox b/assets/voxygen/voxel/npc/donkey/male/foot_fl.vox deleted file mode 100644 index 66a34d2e78..0000000000 --- a/assets/voxygen/voxel/npc/donkey/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72f43edb3e048503490fa63080cd0e59d287ad450c08487579d29f19838bfa3e -size 1440 diff --git a/assets/voxygen/voxel/npc/donkey/male/leg_bl.vox b/assets/voxygen/voxel/npc/donkey/male/leg_bl.vox deleted file mode 100644 index 46c2e1ff45..0000000000 --- a/assets/voxygen/voxel/npc/donkey/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:16a08031aeb88d01dac15f60a2a35e71ecd248c478c6959f768f89fdc62510bc -size 1880 diff --git a/assets/voxygen/voxel/npc/donkey/male/leg_fl.vox b/assets/voxygen/voxel/npc/donkey/male/leg_fl.vox deleted file mode 100644 index 68e72aab66..0000000000 --- a/assets/voxygen/voxel/npc/donkey/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8020cfa04c114f343e72036ba17cfd301cd0900e006216032c1b0bac82a973a0 -size 1828 diff --git a/assets/voxygen/voxel/npc/frostfang/male/foot_bl.vox b/assets/voxygen/voxel/npc/frostfang/male/foot_bl.vox deleted file mode 100644 index 37cbe924fa..0000000000 --- a/assets/voxygen/voxel/npc/frostfang/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4dba43273f566d26ebb1658290f8eed69d1f5a95958b61206789277954ece5d8 -size 1328 diff --git a/assets/voxygen/voxel/npc/frostfang/male/foot_fl.vox b/assets/voxygen/voxel/npc/frostfang/male/foot_fl.vox deleted file mode 100644 index 126d9a8966..0000000000 --- a/assets/voxygen/voxel/npc/frostfang/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3717b5cabc9a7eb63342011a5db65afc4eb99149aa3e535c575f071531d89c68 -size 1328 diff --git a/assets/voxygen/voxel/npc/frostfang/male/leg_bl.vox b/assets/voxygen/voxel/npc/frostfang/male/leg_bl.vox deleted file mode 100644 index 8a688db5a5..0000000000 --- a/assets/voxygen/voxel/npc/frostfang/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eb1ebbe15797681c9c111a9c6b33068255fd85aa158197922cf2b86886c34533 -size 1384 diff --git a/assets/voxygen/voxel/npc/frostfang/male/leg_fl.vox b/assets/voxygen/voxel/npc/frostfang/male/leg_fl.vox deleted file mode 100644 index a62de7ca54..0000000000 --- a/assets/voxygen/voxel/npc/frostfang/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a81e47b846030a6f40b391c9efecbd1fd3934883f9a80c5a69c5d33cccf670cb -size 1404 diff --git a/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox b/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox deleted file mode 100644 index 8cd108d0ef..0000000000 --- a/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c47ae981b9ca75752b3abf681710dd73e129382848e2bce98a2f949132bdbc35 -size 1496 diff --git a/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox b/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox deleted file mode 100644 index cd907abb47..0000000000 --- a/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:caf9d5bc5a4ea243c404b0ee6a586b8f4db803b9986eea8aaa148746b923482e -size 1912 diff --git a/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox b/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox deleted file mode 100644 index 57f9f93b73..0000000000 --- a/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8d6399c3a8fa21357d18f540d8fea0b30d720efa1506afed7da7af51438e15d2 -size 1588 diff --git a/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox b/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox deleted file mode 100644 index a43052bb31..0000000000 --- a/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0afaa656dc9db27231d7aa323c43cf80f097de1ba82d01c1298a20cce0429e99 -size 1872 diff --git a/assets/voxygen/voxel/npc/highland/male/foot_bl.vox b/assets/voxygen/voxel/npc/highland/male/foot_bl.vox deleted file mode 100644 index 6890e2f784..0000000000 --- a/assets/voxygen/voxel/npc/highland/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:44b440bb6bc8367ea0627e404cbfaacfcab42d6793bb2ce2c4433aae8b935c9d -size 1356 diff --git a/assets/voxygen/voxel/npc/highland/male/foot_fl.vox b/assets/voxygen/voxel/npc/highland/male/foot_fl.vox deleted file mode 100644 index 848e014dd2..0000000000 --- a/assets/voxygen/voxel/npc/highland/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1425e769724c9f93ef3a302125caf7f11755196d34bb16b4b89d0036c8b6f1d0 -size 1384 diff --git a/assets/voxygen/voxel/npc/highland/male/leg_bl.vox b/assets/voxygen/voxel/npc/highland/male/leg_bl.vox deleted file mode 100644 index 7e83dbd008..0000000000 --- a/assets/voxygen/voxel/npc/highland/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b6ce56d522db5e322d6101c3d601197fe57a052eb3858ffafdba6a92ea879b1 -size 1680 diff --git a/assets/voxygen/voxel/npc/highland/male/leg_fl.vox b/assets/voxygen/voxel/npc/highland/male/leg_fl.vox deleted file mode 100644 index df7d6bdc7a..0000000000 --- a/assets/voxygen/voxel/npc/highland/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:afa3f530cf4d9d28f1326c0a8e95575f52fe05d7db0ed639d35cc321300a302e -size 1584 diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/foot_bl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/foot_bl.vox deleted file mode 100644 index 8f3f184635..0000000000 --- a/assets/voxygen/voxel/npc/hirdrasil/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96b1a32f3449c5ccf0c6774ab7007406d1b151ee049b4358bef4a108c22071e2 -size 1304 diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/foot_fl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/foot_fl.vox deleted file mode 100644 index 2c4aa49d4f..0000000000 --- a/assets/voxygen/voxel/npc/hirdrasil/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8f9cf762310517e7b0198bb4a103b38b535439840e8cddaf594958e2fca3167 -size 1428 diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/leg_bl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/leg_bl.vox deleted file mode 100644 index 6b6940a91c..0000000000 --- a/assets/voxygen/voxel/npc/hirdrasil/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:34f887f932dcdf72d3634683a707d28d63509dd5ce9be38bef8a1f701c57fe09 -size 1580 diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/leg_fl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/leg_fl.vox deleted file mode 100644 index b99ebfcf7b..0000000000 --- a/assets/voxygen/voxel/npc/hirdrasil/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:24c6e497990ef4c2e235e521b5b310b309617184bb6935ff936c289fb2b6e35c -size 1564 diff --git a/assets/voxygen/voxel/npc/horse/male/foot_bl.vox b/assets/voxygen/voxel/npc/horse/male/foot_bl.vox deleted file mode 100644 index d78daf00ab..0000000000 --- a/assets/voxygen/voxel/npc/horse/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:588888523fdba982bda734dd6b1c3120e2810b501cd47a27f668c4347c0a5e27 -size 1360 diff --git a/assets/voxygen/voxel/npc/horse/male/foot_fl.vox b/assets/voxygen/voxel/npc/horse/male/foot_fl.vox deleted file mode 100644 index f6a9153724..0000000000 --- a/assets/voxygen/voxel/npc/horse/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:74078c7d5b039e2f7a856908ddd295af35bf643a676df236d789028986326c2d -size 1376 diff --git a/assets/voxygen/voxel/npc/horse/male/leg_bl.vox b/assets/voxygen/voxel/npc/horse/male/leg_bl.vox deleted file mode 100644 index 4ec3cedf89..0000000000 --- a/assets/voxygen/voxel/npc/horse/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a3ee17c50e19a94beb194cfdf3bcbcc551edc5640e47787804160fb34d7b895 -size 1684 diff --git a/assets/voxygen/voxel/npc/horse/male/leg_fl.vox b/assets/voxygen/voxel/npc/horse/male/leg_fl.vox deleted file mode 100644 index e4706cd7d5..0000000000 --- a/assets/voxygen/voxel/npc/horse/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2c9b017b800204dcac085a4dd53984c01fa15f03a2573c14b0aa5319651bf15f -size 1568 diff --git a/assets/voxygen/voxel/npc/kelpie/male/foot_bl.vox b/assets/voxygen/voxel/npc/kelpie/male/foot_bl.vox deleted file mode 100644 index fe2584dff0..0000000000 --- a/assets/voxygen/voxel/npc/kelpie/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2aca1289dc3d297add93a799a800cc408b7833eb9ded253ca3a9387d10c35dbf -size 1360 diff --git a/assets/voxygen/voxel/npc/kelpie/male/foot_fl.vox b/assets/voxygen/voxel/npc/kelpie/male/foot_fl.vox deleted file mode 100644 index 33c38fa578..0000000000 --- a/assets/voxygen/voxel/npc/kelpie/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b103652193a178446b6dc37c0d400b13d9df8f85dda232ea652fce1de75dcc9c -size 1376 diff --git a/assets/voxygen/voxel/npc/kelpie/male/leg_bl.vox b/assets/voxygen/voxel/npc/kelpie/male/leg_bl.vox deleted file mode 100644 index 7260807b5e..0000000000 --- a/assets/voxygen/voxel/npc/kelpie/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72d3c27a89e29929b21153067bfc3975dd75ce187ff3246d18c6b34fa48d0e9d -size 1684 diff --git a/assets/voxygen/voxel/npc/kelpie/male/leg_fl.vox b/assets/voxygen/voxel/npc/kelpie/male/leg_fl.vox deleted file mode 100644 index fe1da55649..0000000000 --- a/assets/voxygen/voxel/npc/kelpie/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:26d41b1fd0a2756b0a9c935f7bda38d6f20d7aebfc56294191e66628abfa6488 -size 1564 diff --git a/assets/voxygen/voxel/npc/lion/male/foot_bl.vox b/assets/voxygen/voxel/npc/lion/male/foot_bl.vox deleted file mode 100644 index a5befd56c3..0000000000 --- a/assets/voxygen/voxel/npc/lion/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:957d4b22454283b4e99c2280119776556680b6a79dc408d432c003b6226286d9 -size 1476 diff --git a/assets/voxygen/voxel/npc/lion/male/foot_fl.vox b/assets/voxygen/voxel/npc/lion/male/foot_fl.vox deleted file mode 100644 index efc590cfac..0000000000 --- a/assets/voxygen/voxel/npc/lion/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:64105ef321498314896ee0a0a0c2c36ee33ee3f5078f642f626dc02dbd8023a1 -size 1428 diff --git a/assets/voxygen/voxel/npc/lion/male/leg_bl.vox b/assets/voxygen/voxel/npc/lion/male/leg_bl.vox deleted file mode 100644 index 3f2ffc03db..0000000000 --- a/assets/voxygen/voxel/npc/lion/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dea3c84abed1ea8aab9c9b396b3be97bdf103aa74633302eeb671980b6d75728 -size 1544 diff --git a/assets/voxygen/voxel/npc/lion/male/leg_fl.vox b/assets/voxygen/voxel/npc/lion/male/leg_fl.vox deleted file mode 100644 index 4d43fa8b0f..0000000000 --- a/assets/voxygen/voxel/npc/lion/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0795d8d3e25c5380dcbc03d13cc6a15dbc11cc2063fd6f6c60185e4a469f68c4 -size 1440 diff --git a/assets/voxygen/voxel/npc/mouflon/male/foot_bl.vox b/assets/voxygen/voxel/npc/mouflon/male/foot_bl.vox deleted file mode 100644 index df99eb6c8a..0000000000 --- a/assets/voxygen/voxel/npc/mouflon/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:532d66824032e5fe111f5f0b74028c8fe62aef7d290946833a333ab3e6a53344 -size 1292 diff --git a/assets/voxygen/voxel/npc/mouflon/male/foot_fl.vox b/assets/voxygen/voxel/npc/mouflon/male/foot_fl.vox deleted file mode 100644 index 16883afb4a..0000000000 --- a/assets/voxygen/voxel/npc/mouflon/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:348e1b34d39ac70c5e8e6653fb76c6e387c81d8b603fbf259c0baa4b85780291 -size 1224 diff --git a/assets/voxygen/voxel/npc/mouflon/male/leg_bl.vox b/assets/voxygen/voxel/npc/mouflon/male/leg_bl.vox deleted file mode 100644 index 7ec161c2f0..0000000000 --- a/assets/voxygen/voxel/npc/mouflon/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03313370888dcfb1f7b6e0f9adcd73f5c4650428215dca5014cc852e76fbe7d4 -size 1532 diff --git a/assets/voxygen/voxel/npc/mouflon/male/leg_fl.vox b/assets/voxygen/voxel/npc/mouflon/male/leg_fl.vox deleted file mode 100644 index a892a7c9a7..0000000000 --- a/assets/voxygen/voxel/npc/mouflon/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a86d4a798a4e0e498633f27cfc07553b1193f10e1c6a97cfa69bedf7512a54bc -size 1460 diff --git a/assets/voxygen/voxel/npc/panda/male/foot_bl.vox b/assets/voxygen/voxel/npc/panda/male/foot_bl.vox deleted file mode 100644 index 0148da1e50..0000000000 --- a/assets/voxygen/voxel/npc/panda/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cbf7c4621ea3e1bcbf666f0e539459538d2be02ef0d693914922d5178a7f9487 -size 1600 diff --git a/assets/voxygen/voxel/npc/panda/male/foot_fl.vox b/assets/voxygen/voxel/npc/panda/male/foot_fl.vox deleted file mode 100644 index 6d6798bb4e..0000000000 --- a/assets/voxygen/voxel/npc/panda/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5aab186c10645c2adbaeff73ed519f101f95f7400dcb38cdbfe9dfe972d3d410 -size 1704 diff --git a/assets/voxygen/voxel/npc/panda/male/leg_bl.vox b/assets/voxygen/voxel/npc/panda/male/leg_bl.vox deleted file mode 100644 index 085665ba54..0000000000 --- a/assets/voxygen/voxel/npc/panda/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:82dad7112a43e0c3512c46066607cbc356e52ad2a00525e174a86957e8e7f4d4 -size 1852 diff --git a/assets/voxygen/voxel/npc/panda/male/leg_fl.vox b/assets/voxygen/voxel/npc/panda/male/leg_fl.vox deleted file mode 100644 index 8a3d23f3ac..0000000000 --- a/assets/voxygen/voxel/npc/panda/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:53d67acdc1c06fa648f9d809b6096d38d186ef620e23ede7bb6b3a0ce0bc9709 -size 1760 diff --git a/assets/voxygen/voxel/npc/roshwalr/male/foot_bl.vox b/assets/voxygen/voxel/npc/roshwalr/male/foot_bl.vox deleted file mode 100644 index dad2923541..0000000000 --- a/assets/voxygen/voxel/npc/roshwalr/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b6ec025d3fe5b356d4b1244e2e11bdce0d28598423e19c199359235be320715 -size 1352 diff --git a/assets/voxygen/voxel/npc/roshwalr/male/foot_fl.vox b/assets/voxygen/voxel/npc/roshwalr/male/foot_fl.vox deleted file mode 100644 index 5576d15cb1..0000000000 --- a/assets/voxygen/voxel/npc/roshwalr/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0debc71fb3781b4416a66d90ef50e035679ed3da7bdf8853c2dd1aec593e41e1 -size 1976 diff --git a/assets/voxygen/voxel/npc/roshwalr/male/leg_bl.vox b/assets/voxygen/voxel/npc/roshwalr/male/leg_bl.vox deleted file mode 100644 index b802e56845..0000000000 --- a/assets/voxygen/voxel/npc/roshwalr/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8da6fccc0a8c6aca170e15cdab4373718190dc0042bc4e1a7a78ee5733146cc2 -size 1544 diff --git a/assets/voxygen/voxel/npc/roshwalr/male/leg_fl.vox b/assets/voxygen/voxel/npc/roshwalr/male/leg_fl.vox deleted file mode 100644 index 32b7c6e927..0000000000 --- a/assets/voxygen/voxel/npc/roshwalr/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8d09f92335fe7bf28610fff496a5f8efff23e511709dffb8edef2f1d92023e86 -size 2452 diff --git a/assets/voxygen/voxel/npc/saber/male/foot_bl.vox b/assets/voxygen/voxel/npc/saber/male/foot_bl.vox deleted file mode 100644 index 7841a6a211..0000000000 --- a/assets/voxygen/voxel/npc/saber/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03ea4bdb9b2acf701f00a8ac82c8ba0ca62d4008a50e8cac1866545dff9059fa -size 1452 diff --git a/assets/voxygen/voxel/npc/saber/male/foot_fl.vox b/assets/voxygen/voxel/npc/saber/male/foot_fl.vox deleted file mode 100644 index 7b01313b86..0000000000 --- a/assets/voxygen/voxel/npc/saber/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3015d3902be6a98c1e5944e48458a501606be91d01bad290d77c2db3fd4586e6 -size 1528 diff --git a/assets/voxygen/voxel/npc/saber/male/leg_bl.vox b/assets/voxygen/voxel/npc/saber/male/leg_bl.vox deleted file mode 100644 index 2cc2d22c82..0000000000 --- a/assets/voxygen/voxel/npc/saber/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a1de9b89344e94ae4f297f0eaea3782ca7f16dd92b3f44d3658b4bf0645c74b -size 1480 diff --git a/assets/voxygen/voxel/npc/saber/male/leg_fl.vox b/assets/voxygen/voxel/npc/saber/male/leg_fl.vox deleted file mode 100644 index ccea774556..0000000000 --- a/assets/voxygen/voxel/npc/saber/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5e8719eed21c2cf8b6e6160a1a7321300c45c74ef9118c6d3a4165929a18818 -size 1616 diff --git a/assets/voxygen/voxel/npc/tarasque/male/foot_bl.vox b/assets/voxygen/voxel/npc/tarasque/male/foot_bl.vox deleted file mode 100644 index 41d336a4fd..0000000000 --- a/assets/voxygen/voxel/npc/tarasque/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e32a63994772887e04fcec4b2a5a740f6e693a0a839db6d8fe965a084b01bae -size 1508 diff --git a/assets/voxygen/voxel/npc/tarasque/male/foot_fl.vox b/assets/voxygen/voxel/npc/tarasque/male/foot_fl.vox deleted file mode 100644 index b2b398b65f..0000000000 --- a/assets/voxygen/voxel/npc/tarasque/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3743dc2d66d4e16e38b221367828e72fc1ac76374bff22dbf99efd2e1744e1ca -size 2180 diff --git a/assets/voxygen/voxel/npc/tarasque/male/leg_bl.vox b/assets/voxygen/voxel/npc/tarasque/male/leg_bl.vox deleted file mode 100644 index eea8945035..0000000000 --- a/assets/voxygen/voxel/npc/tarasque/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b90c1b66254e58a2998cc44ba649f84d739804fb0a845793f5552d6b21f1a7c -size 1620 diff --git a/assets/voxygen/voxel/npc/tarasque/male/leg_fl.vox b/assets/voxygen/voxel/npc/tarasque/male/leg_fl.vox deleted file mode 100644 index a7921f77c1..0000000000 --- a/assets/voxygen/voxel/npc/tarasque/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:04a2e59e1c6aed3bcbbba47c054fa8ec5087457c7a71c3980ed1668932a8b620 -size 2068 diff --git a/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox b/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox deleted file mode 100644 index 4fbeb4ea4a..0000000000 --- a/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5fc36f1582e07d01ab581cecd7f4d2f72313f9b49e3a7f772ac93f1e2a3dae8e -size 1512 diff --git a/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox b/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox deleted file mode 100644 index 1f5fd1500d..0000000000 --- a/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a277796105f0ce2dae26ce7ae5f620609316c3ecdb66ae1b63200453b1752099 -size 1464 diff --git a/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox b/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox deleted file mode 100644 index 2ac0c5494f..0000000000 --- a/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:afee004920aa78cb665e10710a92cd3133741ea648687bbf2c0f69dad17c664b -size 1512 diff --git a/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox b/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox deleted file mode 100644 index b7f35b0181..0000000000 --- a/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:56987d55e8988bd14133ba78a1f7686a0e40f921c995900fa49d27f526ad9d42 -size 1580 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox deleted file mode 100644 index cff8a41e09..0000000000 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2e456782a34461d944feed285c31558fa4b0232b4152c90f02bcda0ad28edf73 -size 1412 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox deleted file mode 100644 index f0d059013b..0000000000 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f9ba5463684946e1a13270e079b87bd51071e20506622307c28f5f182cc88e0d -size 1500 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox deleted file mode 100644 index 530a5cd6a5..0000000000 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d327bf97ccd7bbe82f4d8415466b70007d4c88ec7b32fc633c2c9de10af0917 -size 1460 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox deleted file mode 100644 index b4aacb93a5..0000000000 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db5d9e78e9c0d2e3af48c5961a4f0f82857cb044a109ddb9e07ffa6b81b0b7c5 -size 1432 diff --git a/assets/voxygen/voxel/npc/wolf/male/foot_bl.vox b/assets/voxygen/voxel/npc/wolf/male/foot_bl.vox deleted file mode 100644 index 785e2f42c2..0000000000 --- a/assets/voxygen/voxel/npc/wolf/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e314a0e315f6e1d8fdfbf244e9c7b3e7601a2e0c30969a27fb5b6f00c21c6cc -size 1500 diff --git a/assets/voxygen/voxel/npc/wolf/male/foot_fl.vox b/assets/voxygen/voxel/npc/wolf/male/foot_fl.vox deleted file mode 100644 index e53b5a99fe..0000000000 --- a/assets/voxygen/voxel/npc/wolf/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2543b558138ea221f00e30b76ef293e9e7dd963996da12c09d5c73b40f75cf23 -size 1500 diff --git a/assets/voxygen/voxel/npc/wolf/male/leg_bl.vox b/assets/voxygen/voxel/npc/wolf/male/leg_bl.vox deleted file mode 100644 index 76dc9b7d0e..0000000000 --- a/assets/voxygen/voxel/npc/wolf/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b44d41cac6fa3d277a8eae2838fb52715557ed552b3b5ac5a5c0ce3aa9317b1b -size 1512 diff --git a/assets/voxygen/voxel/npc/wolf/male/leg_fl.vox b/assets/voxygen/voxel/npc/wolf/male/leg_fl.vox deleted file mode 100644 index 6fe3887518..0000000000 --- a/assets/voxygen/voxel/npc/wolf/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0aa4e51b2928747bbf85d6a85fbccb3e5e223cb9eefee669f3a4ae6fc6045267 -size 1652 diff --git a/assets/voxygen/voxel/npc/yak/male/foot_bl.vox b/assets/voxygen/voxel/npc/yak/male/foot_bl.vox deleted file mode 100644 index a04cc94cd5..0000000000 --- a/assets/voxygen/voxel/npc/yak/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da8808f71b0872113987b4288deaafe8fbce84a821894a8f728d1964002c1a7d -size 1356 diff --git a/assets/voxygen/voxel/npc/yak/male/foot_fl.vox b/assets/voxygen/voxel/npc/yak/male/foot_fl.vox deleted file mode 100644 index 951344d5a9..0000000000 --- a/assets/voxygen/voxel/npc/yak/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c9c8143642cd15c1e0263429980b70c8762647caadeb1323eae533c89e59ddc2 -size 1420 diff --git a/assets/voxygen/voxel/npc/yak/male/leg_bl.vox b/assets/voxygen/voxel/npc/yak/male/leg_bl.vox deleted file mode 100644 index 2edfc7a704..0000000000 --- a/assets/voxygen/voxel/npc/yak/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ca3d9e44682f388f084ed5294a2e0157bfc9645fda5ccb39eeebd7aba42f4d06 -size 1880 diff --git a/assets/voxygen/voxel/npc/yak/male/leg_fl.vox b/assets/voxygen/voxel/npc/yak/male/leg_fl.vox deleted file mode 100644 index 9095df9bd2..0000000000 --- a/assets/voxygen/voxel/npc/yak/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f07a322bbf33a76f761c16c94f09626586bc86eecdac777029f0f9d4793e216e -size 1908 diff --git a/assets/voxygen/voxel/npc/zebra/male/foot_bl.vox b/assets/voxygen/voxel/npc/zebra/male/foot_bl.vox deleted file mode 100644 index f67bbc88b9..0000000000 --- a/assets/voxygen/voxel/npc/zebra/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:35e487340fcb1b83f855a0a81969a7de1153b91551f8bc964b947965bfc500ef -size 1360 diff --git a/assets/voxygen/voxel/npc/zebra/male/foot_fl.vox b/assets/voxygen/voxel/npc/zebra/male/foot_fl.vox deleted file mode 100644 index 7a463da532..0000000000 --- a/assets/voxygen/voxel/npc/zebra/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f5fd062d2c48464bf1a048258257fac372ee35a977c582c57d14c04005632082 -size 1376 diff --git a/assets/voxygen/voxel/npc/zebra/male/leg_bl.vox b/assets/voxygen/voxel/npc/zebra/male/leg_bl.vox deleted file mode 100644 index e7114cc032..0000000000 --- a/assets/voxygen/voxel/npc/zebra/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f76fd38cf5a7916b8cd2afe76c3bd9d4f9341476b7eadd9a99f40aaa56af3d38 -size 1648 diff --git a/assets/voxygen/voxel/npc/zebra/male/leg_fl.vox b/assets/voxygen/voxel/npc/zebra/male/leg_fl.vox deleted file mode 100644 index 13f1503013..0000000000 --- a/assets/voxygen/voxel/npc/zebra/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ada3be5b68ae1629fc27c732714be52460af82c09141488b7ad6adefcd002ab4 -size 1528 diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index 640eb06690..267c99e886 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -2,7 +2,7 @@ (Grolgar, Male): ( leg_fl: ( offset: (-2.5, -4.5, -4.0),//these are done very case by case - lateral: ("npc.grolgar.male.leg_fl"), + lateral: ("npc.grolgar.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -4.5, -4.0), @@ -10,7 +10,7 @@ ), leg_bl: ( offset: (-2.5, -3.5, -3.5), - lateral: ("npc.grolgar.male.leg_bl"), + lateral: ("npc.grolgar.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -18,7 +18,7 @@ ), foot_fl: ( offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model - lateral: ("npc.grolgar.male.foot_fl"), + lateral: ("npc.grolgar.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model @@ -26,7 +26,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model - lateral: ("npc.grolgar.male.foot_bl"), + lateral: ("npc.grolgar.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model @@ -36,7 +36,7 @@ (Grolgar, Female): ( leg_fl: ( offset: (-2.5, -4.5, -4.0),//these are done very case by case - lateral: ("npc.grolgar.male.leg_fl"), + lateral: ("npc.grolgar.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -4.5, -4.0), @@ -44,7 +44,7 @@ ), leg_bl: ( offset: (-2.5, -3.5, -3.5), - lateral: ("npc.grolgar.male.leg_bl"), + lateral: ("npc.grolgar.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -52,7 +52,7 @@ ), foot_fl: ( offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model - lateral: ("npc.grolgar.male.foot_fl"), + lateral: ("npc.grolgar.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model @@ -60,7 +60,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model - lateral: ("npc.grolgar.male.foot_bl"), + lateral: ("npc.grolgar.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model @@ -70,7 +70,7 @@ (Saber, Male): ( leg_fl: ( offset: (-2.0, -6.0, -4.5), - lateral: ("npc.saber.male.leg_fl"), + lateral: ("npc.saber.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -6.0, -4.5), @@ -78,7 +78,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.saber.male.leg_bl"), + lateral: ("npc.saber.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -86,7 +86,7 @@ ), foot_fl: ( offset: (-2.5, -2.5, -8.0), - lateral: ("npc.saber.male.foot_fl"), + lateral: ("npc.saber.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.5, -8.0), @@ -94,7 +94,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -9.0), - lateral: ("npc.saber.male.foot_bl"), + lateral: ("npc.saber.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -9.0), @@ -104,7 +104,7 @@ (Saber, Female): ( leg_fl: ( offset: (-2.0, -6.0, -4.5), - lateral: ("npc.saber.male.leg_fl"), + lateral: ("npc.saber.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -6.0, -4.5), @@ -112,7 +112,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.saber.male.leg_bl"), + lateral: ("npc.saber.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -120,7 +120,7 @@ ), foot_fl: ( offset: (-2.5, -2.5, -8.0), - lateral: ("npc.saber.male.foot_fl"), + lateral: ("npc.saber.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.5, -8.0), @@ -128,7 +128,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -9.0), - lateral: ("npc.saber.male.foot_bl"), + lateral: ("npc.saber.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -9.0), @@ -138,7 +138,7 @@ (Tuskram, Male): ( leg_fl: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.tuskram.male.leg_fl"), + lateral: ("npc.tuskram.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -3.0), @@ -146,7 +146,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.tuskram.male.leg_bl"), + lateral: ("npc.tuskram.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -3.0), @@ -154,7 +154,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tuskram.male.foot_fl"), + lateral: ("npc.tuskram.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -8.0), @@ -162,7 +162,7 @@ ), foot_bl: ( offset: (-1.5, -1.5, -8.0), - lateral: ("npc.tuskram.male.foot_bl"), + lateral: ("npc.tuskram.male.foot_br"), ), foot_br: ( offset: (-1.5, -1.5, -8.0), @@ -172,7 +172,7 @@ (Tuskram, Female): ( leg_fl: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.tuskram.male.leg_fl"), + lateral: ("npc.tuskram.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -3.0), @@ -180,7 +180,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.tuskram.male.leg_bl"), + lateral: ("npc.tuskram.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -3.0), @@ -188,7 +188,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tuskram.male.foot_fl"), + lateral: ("npc.tuskram.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -8.0), @@ -196,7 +196,7 @@ ), foot_bl: ( offset: (-1.5, -1.5, -8.0), - lateral: ("npc.tuskram.male.foot_bl"), + lateral: ("npc.tuskram.male.foot_br"), ), foot_br: ( offset: (-1.5, -1.5, -8.0), @@ -206,7 +206,7 @@ (Lion, Male): ( leg_fl: ( offset: (-2.0, -2.5, -3.5), - lateral: ("npc.lion.male.leg_fl"), + lateral: ("npc.lion.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -3.5), @@ -214,7 +214,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -3.5), - lateral: ("npc.lion.male.leg_bl"), + lateral: ("npc.lion.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -3.5), @@ -222,7 +222,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.lion.male.foot_fl"), + lateral: ("npc.lion.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -8.0), @@ -230,7 +230,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.lion.male.foot_bl"), + lateral: ("npc.lion.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -240,7 +240,7 @@ (Lion, Female): ( leg_fl: ( offset: (-2.0, -2.5, -3.5), - lateral: ("npc.lion.male.leg_fl"), + lateral: ("npc.lion.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -3.5), @@ -248,7 +248,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -3.5), - lateral: ("npc.lion.male.leg_bl"), + lateral: ("npc.lion.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -3.5), @@ -256,7 +256,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.lion.male.foot_fl"), + lateral: ("npc.lion.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -8.0), @@ -264,7 +264,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.lion.male.foot_bl"), + lateral: ("npc.lion.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -274,7 +274,7 @@ (Tarasque, Male): ( leg_fl: ( offset: (-3.0, -5.0, -4.0), - lateral: ("npc.tarasque.male.leg_fl"), + lateral: ("npc.tarasque.male.leg_fr"), ), leg_fr: ( offset: (-3.0, -5.0, -4.0), @@ -282,7 +282,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -3.5), - lateral: ("npc.tarasque.male.leg_bl"), + lateral: ("npc.tarasque.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -290,7 +290,7 @@ ), foot_fl: ( offset: (-4.0, -3.0, -9.0), - lateral: ("npc.tarasque.male.foot_fl"), + lateral: ("npc.tarasque.male.foot_fr"), ), foot_fr: ( offset: (-4.0, -3.0, -9.0), @@ -298,7 +298,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tarasque.male.foot_bl"), + lateral: ("npc.tarasque.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -308,7 +308,7 @@ (Tarasque, Female): ( leg_fl: ( offset: (-3.0, -5.0, -4.0), - lateral: ("npc.tarasque.male.leg_fl"), + lateral: ("npc.tarasque.male.leg_fr"), ), leg_fr: ( offset: (-3.0, -5.0, -4.0), @@ -316,7 +316,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -3.5), - lateral: ("npc.tarasque.male.leg_bl"), + lateral: ("npc.tarasque.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -324,7 +324,7 @@ ), foot_fl: ( offset: (-4.0, -3.0, -9.0), //(1/4) Y dimension, (1/1) Z dimension - lateral: ("npc.tarasque.male.foot_fl"), + lateral: ("npc.tarasque.male.foot_fr"), ), foot_fr: ( offset: (-4.0, -3.0, -9.0), //(1/4) Y dimension, (1/1) Z dimension @@ -332,7 +332,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tarasque.male.foot_bl"), + lateral: ("npc.tarasque.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -342,7 +342,7 @@ (Tiger, Male): ( leg_fl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.tiger.male.leg_fl"), + lateral: ("npc.tiger.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.0, -4.0), @@ -350,7 +350,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -3.0), - lateral: ("npc.tiger.male.leg_bl"), + lateral: ("npc.tiger.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -3.0), @@ -358,7 +358,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -7.0), - lateral: ("npc.tiger.male.foot_fl"), + lateral: ("npc.tiger.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -7.0), @@ -366,7 +366,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tiger.male.foot_bl"), + lateral: ("npc.tiger.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -376,7 +376,7 @@ (Tiger, Female): ( leg_fl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.tiger.male.leg_fl"), + lateral: ("npc.tiger.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.0, -4.0), @@ -384,7 +384,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -3.0), - lateral: ("npc.tiger.male.leg_bl"), + lateral: ("npc.tiger.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -3.0), @@ -392,7 +392,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -7.0), - lateral: ("npc.tiger.male.foot_fl"), + lateral: ("npc.tiger.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -7.0), @@ -400,7 +400,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tiger.male.foot_bl"), + lateral: ("npc.tiger.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -410,7 +410,7 @@ (Wolf, Male): ( leg_fl: ( offset: (-2.0, -3.5, -4.0), - lateral: ("npc.wolf.male.leg_fl"), + lateral: ("npc.wolf.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.5, -4.0), @@ -418,7 +418,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.wolf.male.leg_bl"), + lateral: ("npc.wolf.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -426,7 +426,7 @@ ), foot_fl: ( offset: (-1.5, -2.5, -10.0), - lateral: ("npc.wolf.male.foot_fl"), + lateral: ("npc.wolf.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.5, -10.0), @@ -434,7 +434,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -10.0), - lateral: ("npc.wolf.male.foot_bl"), + lateral: ("npc.wolf.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -10.0), @@ -444,7 +444,7 @@ (Wolf, Female): ( leg_fl: ( offset: (-2.0, -3.5, -4.0), - lateral: ("npc.wolf.male.leg_fl"), + lateral: ("npc.wolf.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.5, -4.0), @@ -452,7 +452,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.wolf.male.leg_bl"), + lateral: ("npc.wolf.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -460,7 +460,7 @@ ), foot_fl: ( offset: (-1.5, -2.5, -10.0), - lateral: ("npc.wolf.male.foot_fl"), + lateral: ("npc.wolf.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.5, -10.0), @@ -468,7 +468,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -10.0), - lateral: ("npc.wolf.male.foot_bl"), + lateral: ("npc.wolf.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -10.0), @@ -478,7 +478,7 @@ (Frostfang, Male): ( leg_fl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.frostfang.male.leg_fl"), + lateral: ("npc.frostfang.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.5, -3.5), @@ -486,7 +486,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.frostfang.male.leg_bl"), + lateral: ("npc.frostfang.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -494,7 +494,7 @@ ), foot_fl: ( offset: (-2.5, -1.5, -6.0), - lateral: ("npc.frostfang.male.foot_fl"), + lateral: ("npc.frostfang.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -1.5, -6.0), @@ -502,7 +502,7 @@ ), foot_bl: ( offset: (-2.5, -1.5, -6.0), - lateral: ("npc.frostfang.male.foot_bl"), + lateral: ("npc.frostfang.male.foot_br"), ), foot_br: ( offset: (-2.5, -1.5, -6.0), @@ -512,7 +512,7 @@ (Frostfang, Female): ( leg_fl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.frostfang.male.leg_fl"), + lateral: ("npc.frostfang.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.5, -3.5), @@ -520,7 +520,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.frostfang.male.leg_bl"), + lateral: ("npc.frostfang.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -528,7 +528,7 @@ ), foot_fl: ( offset: (-2.5, -1.5, -6.0), - lateral: ("npc.frostfang.male.foot_fl"), + lateral: ("npc.frostfang.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -1.5, -6.0), @@ -536,7 +536,7 @@ ), foot_bl: ( offset: (-2.5, -1.5, -6.0), - lateral: ("npc.frostfang.male.foot_bl"), + lateral: ("npc.frostfang.male.foot_br"), ), foot_br: ( offset: (-2.5, -1.5, -6.0), @@ -546,7 +546,7 @@ (Mouflon, Male): ( leg_fl: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.mouflon.male.leg_fl"), + lateral: ("npc.mouflon.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -4.0), @@ -554,7 +554,7 @@ ), leg_bl: ( offset: (-2.0, -1.0, -2.5), - lateral: ("npc.mouflon.male.leg_bl"), + lateral: ("npc.mouflon.male.leg_br"), ), leg_br: ( offset: (-2.0, -1.0, -2.5), @@ -562,7 +562,7 @@ ), foot_fl: ( offset: (-1.0, -1.0, -7.0), - lateral: ("npc.mouflon.male.foot_fl"), + lateral: ("npc.mouflon.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.0, -7.0), @@ -570,7 +570,7 @@ ), foot_bl: ( offset: (-1.0, -2.0, -10.0), - lateral: ("npc.mouflon.male.foot_bl"), + lateral: ("npc.mouflon.male.foot_br"), ), foot_br: ( offset: (-1.0, -2.0, -10.0), @@ -580,7 +580,7 @@ (Mouflon, Female): ( leg_fl: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.mouflon.male.leg_fl"), + lateral: ("npc.mouflon.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -4.0), @@ -588,7 +588,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.mouflon.male.leg_bl"), + lateral: ("npc.mouflon.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -4.0), @@ -596,7 +596,7 @@ ), foot_fl: ( offset: (-1.0, -1.0, -7.0), - lateral: ("npc.mouflon.male.foot_fl"), + lateral: ("npc.mouflon.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.0, -7.0), @@ -604,7 +604,7 @@ ), foot_bl: ( offset: (-1.0, -2.0, -10.0), - lateral: ("npc.mouflon.male.foot_bl"), + lateral: ("npc.mouflon.male.foot_br"), ), foot_br: ( offset: (-1.0, -2.0, -10.0), @@ -614,7 +614,7 @@ (Catoblepas, Male): ( leg_fl: ( offset: (-2.5, -4.0, -5.0), - lateral: ("npc.catoblepas.male.leg_fl"), + lateral: ("npc.catoblepas.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -4.0, -5.0), @@ -622,7 +622,7 @@ ), leg_bl: ( offset: (-2.0, -3.0 , -4.0), - lateral: ("npc.catoblepas.male.leg_bl"), + lateral: ("npc.catoblepas.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -630,7 +630,7 @@ ), foot_fl: ( offset: (-3.0, -3.0, -9.0), - lateral: ("npc.catoblepas.male.foot_fl"), + lateral: ("npc.catoblepas.male.foot_fr"), ), foot_fr: ( offset: (-3.0, -3.0, -9.0), @@ -638,7 +638,7 @@ ), foot_bl: ( offset: (-2.5, -3.5, -9.0), - lateral: ("npc.catoblepas.male.foot_bl"), + lateral: ("npc.catoblepas.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.5, -9.0), @@ -648,7 +648,7 @@ (Catoblepas, Female): ( leg_fl: ( offset: (-2.5, -4.0, -5.0), - lateral: ("npc.catoblepas.male.leg_fl"), + lateral: ("npc.catoblepas.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -4.0, -5.0), @@ -656,7 +656,7 @@ ), leg_bl: ( offset: (-2.0, -3.0 , -4.0), - lateral: ("npc.catoblepas.male.leg_bl"), + lateral: ("npc.catoblepas.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -664,7 +664,7 @@ ), foot_fl: ( offset: (-3.0, -3.0, -9.0), - lateral: ("npc.catoblepas.male.foot_fl"), + lateral: ("npc.catoblepas.male.foot_fr"), ), foot_fr: ( offset: (-3.0, -3.0, -9.0), @@ -672,7 +672,7 @@ ), foot_bl: ( offset: (-2.5, -3.5, -9.0), - lateral: ("npc.catoblepas.male.foot_bl"), + lateral: ("npc.catoblepas.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.5, -9.0), @@ -682,7 +682,7 @@ (Bonerattler, Male): ( leg_fl: ( offset: (-1.5, -6.0, -3.0), - lateral: ("npc.bonerattler.male.leg_fl"), + lateral: ("npc.bonerattler.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -6.0, -3.0), @@ -690,7 +690,7 @@ ), leg_bl: ( offset: (-1.5, -1.0, -3.0), - lateral: ("npc.bonerattler.male.leg_bl"), + lateral: ("npc.bonerattler.male.leg_br"), ), leg_br: ( offset: (-1.5, -1.0, -3.0), @@ -698,7 +698,7 @@ ), foot_fl: ( offset: (-2.5, -3.0, -6.0), - lateral: ("npc.bonerattler.male.foot_fl"), + lateral: ("npc.bonerattler.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -3.0, -6.0), @@ -706,7 +706,7 @@ ), foot_bl: ( offset: (-2.5, -4.0, -6.0), - lateral: ("npc.bonerattler.male.foot_bl"), + lateral: ("npc.bonerattler.male.foot_br"), ), foot_br: ( offset: (-2.5, -4.0, -6.0), @@ -716,7 +716,7 @@ (Bonerattler, Female): ( leg_fl: ( offset: (-1.5, -6.0, -3.0), - lateral: ("npc.bonerattler.male.leg_fl"), + lateral: ("npc.bonerattler.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -6.0, -3.0), @@ -724,7 +724,7 @@ ), leg_bl: ( offset: (-1.5, -1.0, -3.0), - lateral: ("npc.bonerattler.male.leg_bl"), + lateral: ("npc.bonerattler.male.leg_br"), ), leg_br: ( offset: (-1.5, -1.0, -3.0), @@ -732,7 +732,7 @@ ), foot_fl: ( offset: (-2.5, -3.0, -6.0), - lateral: ("npc.bonerattler.male.foot_fl"), + lateral: ("npc.bonerattler.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -3.0, -6.0), @@ -740,7 +740,7 @@ ), foot_bl: ( offset: (-2.5, -4.0, -6.0), - lateral: ("npc.bonerattler.male.foot_bl"), + lateral: ("npc.bonerattler.male.foot_br"), ), foot_br: ( offset: (-2.5, -4.0, -6.0), @@ -750,7 +750,7 @@ (Deer, Male): ( leg_fl: ( offset: (-1.5, -2.5, -3.5), - lateral: ("npc.deer.male.leg_fl"), + lateral: ("npc.deer.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -3.5), @@ -758,7 +758,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.deer.male.leg_bl"), + lateral: ("npc.deer.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -4.0), @@ -766,7 +766,7 @@ ), foot_fl: ( offset: (-1.0, -1.0, -8.0), - lateral: ("npc.deer.male.foot_fl"), + lateral: ("npc.deer.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.0, -8.0), @@ -774,7 +774,7 @@ ), foot_bl: ( offset: (-1.0, -2.0, -9.0), - lateral: ("npc.deer.male.foot_bl"), + lateral: ("npc.deer.male.foot_br"), ), foot_br: ( offset: (-1.0, -2.0, -9.0), @@ -784,7 +784,7 @@ (Deer, Female): ( leg_fl: ( offset: (-1.5, -2.5, -3.5), - lateral: ("npc.deer.female.leg_fl"), + lateral: ("npc.deer.female.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -3.5), @@ -792,7 +792,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.deer.female.leg_bl"), + lateral: ("npc.deer.female.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -4.0), @@ -800,7 +800,7 @@ ), foot_fl: ( offset: (-1.0, -1.0, -8.0), - lateral: ("npc.deer.female.foot_fl"), + lateral: ("npc.deer.female.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.0, -8.0), @@ -808,7 +808,7 @@ ), foot_bl: ( offset: (-1.0, -2.0, -9.0), - lateral: ("npc.deer.female.foot_bl"), + lateral: ("npc.deer.female.foot_br"), ), foot_br: ( offset: (-1.0, -2.0, -9.0), @@ -818,7 +818,7 @@ (Hirdrasil, Male): ( leg_fl: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.hirdrasil.male.leg_fl"), + lateral: ("npc.hirdrasil.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.0, -4.0), @@ -826,7 +826,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.hirdrasil.male.leg_bl"), + lateral: ("npc.hirdrasil.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), @@ -834,7 +834,7 @@ ), foot_fl: ( offset: (-2.0, -1.0, -9.0), - lateral: ("npc.hirdrasil.male.foot_fl"), + lateral: ("npc.hirdrasil.male.foot_fr"), ), foot_fr: ( offset: (-2.0, -1.0, -9.0), @@ -842,7 +842,7 @@ ), foot_bl: ( offset: (-2.0, -2.5, -7.0), - lateral: ("npc.hirdrasil.male.foot_bl"), + lateral: ("npc.hirdrasil.male.foot_br"), ), foot_br: ( offset: (-2.0, -2.5, -7.0), @@ -852,7 +852,7 @@ (Hirdrasil, Female): ( leg_fl: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.hirdrasil.male.leg_fl"), + lateral: ("npc.hirdrasil.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.0, -4.0), @@ -860,7 +860,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.hirdrasil.male.leg_bl"), + lateral: ("npc.hirdrasil.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), @@ -868,7 +868,7 @@ ), foot_fl: ( offset: (-2.0, -1.0, -9.0), - lateral: ("npc.hirdrasil.male.foot_fl"), + lateral: ("npc.hirdrasil.male.foot_fr"), ), foot_fr: ( offset: (-2.0, -1.0, -9.0), @@ -876,7 +876,7 @@ ), foot_bl: ( offset: (-2.0, -2.5, -7.0), - lateral: ("npc.hirdrasil.male.foot_bl"), + lateral: ("npc.hirdrasil.male.foot_br"), ), foot_br: ( offset: (-2.0, -2.5, -7.0), @@ -886,7 +886,7 @@ (Roshwalr, Male): ( leg_fl: ( offset: (-4.0, -2.5, -4.0), - lateral: ("npc.roshwalr.male.leg_fl"), + lateral: ("npc.roshwalr.male.leg_fr"), ), leg_fr: ( offset: (-4.0, -2.5, -4.0), @@ -894,7 +894,7 @@ ), leg_bl: ( offset: (-2.0, -4.0, -2.5), - lateral: ("npc.roshwalr.male.leg_bl"), + lateral: ("npc.roshwalr.male.leg_br"), ), leg_br: ( offset: (-2.0, -4.0, -2.5), @@ -902,7 +902,7 @@ ), foot_fl: ( offset: (-4.5, -1.0, -7.0), - lateral: ("npc.roshwalr.male.foot_fl"), + lateral: ("npc.roshwalr.male.foot_fr"), ), foot_fr: ( offset: (-4.5, -1.0, -7.0), @@ -910,7 +910,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -3.0), - lateral: ("npc.roshwalr.male.foot_bl"), + lateral: ("npc.roshwalr.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -3.0), @@ -920,7 +920,7 @@ (Roshwalr, Female): ( leg_fl: ( offset: (-4.0, -2.5, -4.0), - lateral: ("npc.roshwalr.male.leg_fl"), + lateral: ("npc.roshwalr.male.leg_fr"), ), leg_fr: ( offset: (-4.0, -2.5, -4.0), @@ -928,7 +928,7 @@ ), leg_bl: ( offset: (-2.0, -4.0, -2.5), - lateral: ("npc.roshwalr.male.leg_bl"), + lateral: ("npc.roshwalr.male.leg_br"), ), leg_br: ( offset: (-2.0, -4.0, -2.5), @@ -936,7 +936,7 @@ ), foot_fl: ( offset: (-4.5, -1.0, -7.0), - lateral: ("npc.roshwalr.male.foot_fl"), + lateral: ("npc.roshwalr.male.foot_fr"), ), foot_fr: ( offset: (-4.5, -1.0, -7.0), @@ -944,7 +944,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -3.0), - lateral: ("npc.roshwalr.male.foot_bl"), + lateral: ("npc.roshwalr.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -3.0), @@ -954,7 +954,7 @@ (Donkey, Male): ( leg_fl: ( offset: (-2.5, -2.5, -4.5), - lateral: ("npc.donkey.male.leg_fl"), + lateral: ("npc.donkey.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -2.5, -4.5), @@ -962,7 +962,7 @@ ), leg_bl: ( offset: (-2.5, -3.0, -4.5), - lateral: ("npc.donkey.male.leg_bl"), + lateral: ("npc.donkey.male.leg_br"), ), leg_br: ( offset: (-2.5, -3.0, -4.5), @@ -970,7 +970,7 @@ ), foot_fl: ( offset: (-2.0, -2.5, -8.0), - lateral: ("npc.donkey.male.foot_fl"), + lateral: ("npc.donkey.male.foot_fr"), ), foot_fr: ( offset: (-2.0, -2.5, -8.0), @@ -978,7 +978,7 @@ ), foot_bl: ( offset: (-2.0, -3.0, -8.0), - lateral: ("npc.donkey.male.foot_bl"), + lateral: ("npc.donkey.male.foot_br"), ), foot_br: ( offset: (-2.0, -3.0, -8.0), @@ -988,7 +988,7 @@ (Donkey, Female): ( leg_fl: ( offset: (-2.5, -2.5, -4.5), - lateral: ("npc.donkey.male.leg_fl"), + lateral: ("npc.donkey.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -2.5, -4.5), @@ -996,7 +996,7 @@ ), leg_bl: ( offset: (-2.5, -3.0, -4.5), - lateral: ("npc.donkey.male.leg_bl"), + lateral: ("npc.donkey.male.leg_br"), ), leg_br: ( offset: (-2.5, -3.0, -4.5), @@ -1004,7 +1004,7 @@ ), foot_fl: ( offset: (-2.0, -2.5, -8.0), - lateral: ("npc.donkey.male.foot_fl"), + lateral: ("npc.donkey.male.foot_fr"), ), foot_fr: ( offset: (-2.0, -2.5, -8.0), @@ -1012,7 +1012,7 @@ ), foot_bl: ( offset: (-2.0, -3.0, -8.0), - lateral: ("npc.donkey.male.foot_bl"), + lateral: ("npc.donkey.male.foot_br"), ), foot_br: ( offset: (-2.0, -3.0, -8.0), @@ -1022,7 +1022,7 @@ (Camel, Male): ( leg_fl: ( offset: (-2.5, -3.5, -7.0), - lateral: ("npc.camel.male.leg_fl"), + lateral: ("npc.camel.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -3.5, -7.0), @@ -1030,7 +1030,7 @@ ), leg_bl: ( offset: (-2.5, -3.5, -8.0), - lateral: ("npc.camel.male.leg_bl"), + lateral: ("npc.camel.male.leg_br"), ), leg_br: ( offset: (-2.5, -3.5, -8.0), @@ -1038,7 +1038,7 @@ ), foot_fl: ( offset: (-2.5, -2.5, -9.0), - lateral: ("npc.camel.male.foot_fl"), + lateral: ("npc.camel.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.5, -9.0), @@ -1046,7 +1046,7 @@ ), foot_bl: ( offset: (-2.5, -3.0, -8.0), - lateral: ("npc.camel.male.foot_bl"), + lateral: ("npc.camel.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.0, -8.0), @@ -1056,7 +1056,7 @@ (Camel, Female): ( leg_fl: ( offset: (-2.5, -3.5, -7.0), - lateral: ("npc.camel.male.leg_fl"), + lateral: ("npc.camel.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -3.5, -7.0), @@ -1064,7 +1064,7 @@ ), leg_bl: ( offset: (-2.5, -3.5, -8.0), - lateral: ("npc.camel.male.leg_bl"), + lateral: ("npc.camel.male.leg_br"), ), leg_br: ( offset: (-2.5, -3.5, -8.0), @@ -1072,7 +1072,7 @@ ), foot_fl: ( offset: (-2.5, -2.5, -9.0), - lateral: ("npc.camel.male.foot_fl"), + lateral: ("npc.camel.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.5, -9.0), @@ -1080,7 +1080,7 @@ ), foot_bl: ( offset: (-2.5, -3.0, -8.0), - lateral: ("npc.camel.male.foot_bl"), + lateral: ("npc.camel.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.0, -8.0), @@ -1090,7 +1090,7 @@ (Zebra, Male): ( leg_fl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.zebra.male.leg_fl"), + lateral: ("npc.zebra.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -4.0), @@ -1098,7 +1098,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.zebra.male.leg_bl"), + lateral: ("npc.zebra.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -1106,7 +1106,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.zebra.male.foot_fl"), + lateral: ("npc.zebra.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1114,7 +1114,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.zebra.male.foot_bl"), + lateral: ("npc.zebra.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1124,7 +1124,7 @@ (Zebra, Female): ( leg_fl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.zebra.male.leg_fl"), + lateral: ("npc.zebra.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -4.0), @@ -1132,7 +1132,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.zebra.male.leg_bl"), + lateral: ("npc.zebra.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -1140,7 +1140,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.zebra.male.foot_fl"), + lateral: ("npc.zebra.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1148,7 +1148,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.zebra.male.foot_bl"), + lateral: ("npc.zebra.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1158,7 +1158,7 @@ (Antelope, Male): ( leg_fl: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.antelope.male.leg_fl"), + lateral: ("npc.antelope.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -4.0), @@ -1166,7 +1166,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.antelope.male.leg_bl"), + lateral: ("npc.antelope.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), @@ -1174,7 +1174,7 @@ ), foot_fl: ( offset: (-1.0, -1.5, -8.0), - lateral: ("npc.antelope.male.foot_fl"), + lateral: ("npc.antelope.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.5, -8.0), @@ -1182,7 +1182,7 @@ ), foot_bl: ( offset: (-1.0, -1.0, -7.0), - lateral: ("npc.antelope.male.foot_bl"), + lateral: ("npc.antelope.male.foot_br"), ), foot_br: ( offset: (-1.0, -1.0, -7.0), @@ -1192,7 +1192,7 @@ (Antelope, Female): ( leg_fl: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.antelope.male.leg_fl"), + lateral: ("npc.antelope.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -4.0), @@ -1200,7 +1200,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.antelope.male.leg_bl"), + lateral: ("npc.antelope.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), @@ -1208,7 +1208,7 @@ ), foot_fl: ( offset: (-1.0, -1.5, -8.0), - lateral: ("npc.antelope.male.foot_fl"), + lateral: ("npc.antelope.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.5, -8.0), @@ -1216,7 +1216,7 @@ ), foot_bl: ( offset: (-1.0, -1.0, -7.0), - lateral: ("npc.antelope.male.foot_bl"), + lateral: ("npc.antelope.male.foot_br"), ), foot_br: ( offset: (-1.0, -1.0, -7.0), @@ -1226,7 +1226,7 @@ (Kelpie, Male): ( leg_fl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.kelpie.male.leg_fl"), + lateral: ("npc.kelpie.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -5.0), @@ -1234,7 +1234,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.kelpie.male.leg_bl"), + lateral: ("npc.kelpie.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1242,7 +1242,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.kelpie.male.foot_fl"), + lateral: ("npc.kelpie.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1250,7 +1250,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.kelpie.male.foot_bl"), + lateral: ("npc.kelpie.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1260,7 +1260,7 @@ (Kelpie, Female): ( leg_fl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.kelpie.male.leg_fl"), + lateral: ("npc.kelpie.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -5.0), @@ -1268,7 +1268,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.kelpie.male.leg_bl"), + lateral: ("npc.kelpie.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1276,7 +1276,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.kelpie.male.foot_fl"), + lateral: ("npc.kelpie.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1284,7 +1284,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.kelpie.male.foot_bl"), + lateral: ("npc.kelpie.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1294,7 +1294,7 @@ (Horse, Male): ( leg_fl: ( offset: (-2.0, -2.5, -6.0), - lateral: ("npc.horse.male.leg_fl"), + lateral: ("npc.horse.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -6.0), @@ -1302,7 +1302,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.horse.male.leg_bl"), + lateral: ("npc.horse.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1310,7 +1310,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.horse.male.foot_fl"), + lateral: ("npc.horse.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1318,7 +1318,7 @@ ), foot_bl: ( offset: (-1.5, -1.5, -9.0), - lateral: ("npc.horse.male.foot_bl"), + lateral: ("npc.horse.male.foot_br"), ), foot_br: ( offset: (-1.5, -1.5, -9.0), @@ -1328,7 +1328,7 @@ (Horse, Female): ( leg_fl: ( offset: (-2.0, -2.5, -6.0), - lateral: ("npc.horse.male.leg_fl"), + lateral: ("npc.horse.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -6.0), @@ -1336,7 +1336,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.horse.male.leg_bl"), + lateral: ("npc.horse.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1344,7 +1344,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.horse.male.foot_fl"), + lateral: ("npc.horse.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1352,7 +1352,7 @@ ), foot_bl: ( offset: (-1.5, -1.5, -9.0), - lateral: ("npc.horse.male.foot_bl"), + lateral: ("npc.horse.male.foot_br"), ), foot_br: ( offset: (-1.5, -1.5, -9.0), @@ -1362,7 +1362,7 @@ (Barghest, Male): ( leg_fl: ( offset: (-3.5, -4.0, -5.0), - lateral: ("npc.barghest.male.leg_fl"), + lateral: ("npc.barghest.male.leg_fr"), ), leg_fr: ( offset: (-3.5, -4.0, -5.0), @@ -1370,7 +1370,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -3.5), - lateral: ("npc.barghest.male.leg_bl"), + lateral: ("npc.barghest.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -1378,7 +1378,7 @@ ), foot_fl: ( offset: (-4.5, -5.5, -7.0), - lateral: ("npc.barghest.male.foot_fl"), + lateral: ("npc.barghest.male.foot_fr"), ), foot_fr: ( offset: (-4.5, -5.5, -7.0), @@ -1386,7 +1386,7 @@ ), foot_bl: ( offset: (-2.5, -3.5, -4.0), - lateral: ("npc.barghest.male.foot_bl"), + lateral: ("npc.barghest.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.5, -4.0), @@ -1396,7 +1396,7 @@ (Barghest, Female): ( leg_fl: ( offset: (-3.5, -4.0, -5.0), - lateral: ("npc.barghest.male.leg_fl"), + lateral: ("npc.barghest.male.leg_fr"), ), leg_fr: ( offset: (-3.5, -4.0, -5.0), @@ -1404,7 +1404,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -3.5), - lateral: ("npc.barghest.male.leg_bl"), + lateral: ("npc.barghest.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -1412,7 +1412,7 @@ ), foot_fl: ( offset: (-4.5, -5.5, -7.0), - lateral: ("npc.barghest.male.foot_fl"), + lateral: ("npc.barghest.male.foot_fr"), ), foot_fr: ( offset: (-4.5, -5.5, -7.0), @@ -1420,7 +1420,7 @@ ), foot_bl: ( offset: (-2.5, -3.5, -4.0), - lateral: ("npc.barghest.male.foot_bl"), + lateral: ("npc.barghest.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.5, -4.0), @@ -1430,7 +1430,7 @@ (Cattle, Male): ( leg_fl: ( offset: (-2.5, -3.0, -6.5), - lateral: ("npc.cattle.male.leg_fl"), + lateral: ("npc.cattle.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -3.0, -6.5), @@ -1438,7 +1438,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -5.0), - lateral: ("npc.cattle.male.leg_bl"), + lateral: ("npc.cattle.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -5.0), @@ -1446,7 +1446,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.cattle.male.foot_fl"), + lateral: ("npc.cattle.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1454,7 +1454,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.cattle.male.foot_bl"), + lateral: ("npc.cattle.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1464,7 +1464,7 @@ (Cattle, Female): ( leg_fl: ( offset: (-2.0, -2.5, -5.5), - lateral: ("npc.cattle.female.leg_fl"), + lateral: ("npc.cattle.female.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -5.5), @@ -1472,7 +1472,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.cattle.female.leg_bl"), + lateral: ("npc.cattle.female.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -4.5), @@ -1480,7 +1480,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.cattle.female.foot_fl"), + lateral: ("npc.cattle.female.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1488,7 +1488,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.cattle.female.foot_bl"), + lateral: ("npc.cattle.female.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1498,7 +1498,7 @@ (Darkhound, Male): ( leg_fl: ( offset: (-1.5, -3.5, -4.0), - lateral: ("npc.darkhound.male.leg_fl"), + lateral: ("npc.darkhound.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.5, -4.0), @@ -1506,7 +1506,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.darkhound.male.leg_bl"), + lateral: ("npc.darkhound.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -1514,7 +1514,7 @@ ), foot_fl: ( offset: (-1.5, -4.0, -8.0), - lateral: ("npc.darkhound.male.foot_fl"), + lateral: ("npc.darkhound.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -4.0, -8.0), @@ -1522,7 +1522,7 @@ ), foot_bl: ( offset: (-1.5, -3.5, -8.0), - lateral: ("npc.darkhound.male.foot_bl"), + lateral: ("npc.darkhound.male.foot_br"), ), foot_br: ( offset: (-1.5, -3.5, -8.0), @@ -1532,7 +1532,7 @@ (Darkhound, Female): ( leg_fl: ( offset: (-1.5, -3.5, -4.0), - lateral: ("npc.darkhound.male.leg_fl"), + lateral: ("npc.darkhound.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.5, -4.0), @@ -1540,7 +1540,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.darkhound.male.leg_bl"), + lateral: ("npc.darkhound.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -1548,7 +1548,7 @@ ), foot_fl: ( offset: (-1.5, -4.0, -8.0), - lateral: ("npc.darkhound.male.foot_fl"), + lateral: ("npc.darkhound.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -4.0, -8.0), @@ -1556,7 +1556,7 @@ ), foot_bl: ( offset: (-1.5, -3.5, -8.0), - lateral: ("npc.darkhound.male.foot_bl"), + lateral: ("npc.darkhound.male.foot_br"), ), foot_br: ( offset: (-1.5, -3.5, -8.0), @@ -1566,7 +1566,7 @@ (Highland, Male): ( leg_fl: ( offset: (-2.0, -2.5, -4.5), - lateral: ("npc.highland.male.leg_fl"), + lateral: ("npc.highland.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -4.5), @@ -1574,7 +1574,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.highland.male.leg_bl"), + lateral: ("npc.highland.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1582,7 +1582,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.highland.male.foot_fl"), + lateral: ("npc.highland.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1590,7 +1590,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.highland.male.foot_bl"), + lateral: ("npc.highland.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1600,7 +1600,7 @@ (Highland, Female): ( leg_fl: ( offset: (-2.0, -2.5, -4.5), - lateral: ("npc.highland.male.leg_fl"), + lateral: ("npc.highland.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -4.5), @@ -1608,7 +1608,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.highland.male.leg_bl"), + lateral: ("npc.highland.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1616,7 +1616,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.highland.male.foot_fl"), + lateral: ("npc.highland.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1624,7 +1624,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.highland.male.foot_bl"), + lateral: ("npc.highland.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1634,7 +1634,7 @@ (Yak, Male): ( leg_fl: ( offset: (-2.0, -3.0, -10.5), - lateral: ("npc.yak.male.leg_fl"), + lateral: ("npc.yak.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.0, -10.5), @@ -1642,7 +1642,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -10.5), - lateral: ("npc.yak.male.leg_bl"), + lateral: ("npc.yak.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -10.5), @@ -1650,7 +1650,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -9.0), - lateral: ("npc.yak.male.foot_fl"), + lateral: ("npc.yak.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -9.0), @@ -1658,7 +1658,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.yak.male.foot_bl"), + lateral: ("npc.yak.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1668,7 +1668,7 @@ (Yak, Female): ( leg_fl: ( offset: (-2.0, -3.0, -10.5), - lateral: ("npc.yak.male.leg_fl"), + lateral: ("npc.yak.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.0, -10.5), @@ -1676,7 +1676,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -10.5), - lateral: ("npc.yak.male.leg_bl"), + lateral: ("npc.yak.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -10.5), @@ -1684,7 +1684,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -9.0), - lateral: ("npc.yak.male.foot_fl"), + lateral: ("npc.yak.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -9.0), @@ -1692,7 +1692,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.yak.male.foot_bl"), + lateral: ("npc.yak.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1702,7 +1702,7 @@ (Bear, Male): ( leg_fl: ( offset: (-2.0, -3.5, -4.5), - lateral: ("npc.bear.male.leg_fl"), + lateral: ("npc.bear.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.5, -4.5), @@ -1710,7 +1710,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -5.0), - lateral: ("npc.bear.male.leg_bl"), + lateral: ("npc.bear.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -5.0), @@ -1718,7 +1718,7 @@ ), foot_fl: ( offset: (-3.0, -4.5, -7.0), - lateral: ("npc.bear.male.foot_fl"), + lateral: ("npc.bear.male.foot_fr"), ), foot_fr: ( offset: (-3.0, -4.5, -7.0), @@ -1726,7 +1726,7 @@ ), foot_bl: ( offset: (-2.5, -4.0, -6.0), - lateral: ("npc.bear.male.foot_bl"), + lateral: ("npc.bear.male.foot_br"), ), foot_br: ( offset: (-2.5, -4.0, -6.0), @@ -1736,7 +1736,7 @@ (Panda, Female): ( leg_fl: ( offset: (-2.0, -3.5, -4.5), - lateral: ("npc.panda.male.leg_fl"), + lateral: ("npc.panda.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.5, -4.5), @@ -1744,7 +1744,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -5.0), - lateral: ("npc.panda.male.leg_bl"), + lateral: ("npc.panda.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -5.0), @@ -1752,7 +1752,7 @@ ), foot_fl: ( offset: (-3.0, -4.5, -7.0), - lateral: ("npc.panda.male.foot_fl"), + lateral: ("npc.panda.male.foot_fr"), ), foot_fr: ( offset: (-3.0, -4.5, -7.0), @@ -1760,7 +1760,7 @@ ), foot_bl: ( offset: (-2.5, -4.0, -6.0), - lateral: ("npc.panda.male.foot_bl"), + lateral: ("npc.panda.male.foot_br"), ), foot_br: ( offset: (-2.5, -4.0, -6.0), @@ -1770,7 +1770,7 @@ (Panda, Male): ( leg_fl: ( offset: (-2.0, -3.5, -4.5), - lateral: ("npc.panda.male.leg_fl"), + lateral: ("npc.panda.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.5, -4.5), @@ -1778,7 +1778,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -5.0), - lateral: ("npc.panda.male.leg_bl"), + lateral: ("npc.panda.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -5.0), @@ -1786,7 +1786,7 @@ ), foot_fl: ( offset: (-3.0, -4.5, -7.0), - lateral: ("npc.panda.male.foot_fl"), + lateral: ("npc.panda.male.foot_fr"), ), foot_fr: ( offset: (-3.0, -4.5, -7.0), @@ -1794,7 +1794,7 @@ ), foot_bl: ( offset: (-2.5, -4.0, -6.0), - lateral: ("npc.panda.male.foot_bl"), + lateral: ("npc.panda.male.foot_br"), ), foot_br: ( offset: (-2.5, -4.0, -6.0), @@ -1804,7 +1804,7 @@ (Bear, Female): ( leg_fl: ( offset: (-2.0, -3.5, -4.5), - lateral: ("npc.bear.male.leg_fl"), + lateral: ("npc.bear.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.5, -4.5), @@ -1812,7 +1812,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -5.0), - lateral: ("npc.bear.male.leg_bl"), + lateral: ("npc.bear.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -5.0), @@ -1820,7 +1820,7 @@ ), foot_fl: ( offset: (-3.0, -4.5, -7.0), - lateral: ("npc.bear.male.foot_fl"), + lateral: ("npc.bear.male.foot_fr"), ), foot_fr: ( offset: (-3.0, -4.5, -7.0), @@ -1828,7 +1828,7 @@ ), foot_bl: ( offset: (-2.5, -4.0, -6.0), - lateral: ("npc.bear.male.foot_bl"), + lateral: ("npc.bear.male.foot_br"), ), foot_br: ( offset: (-2.5, -4.0, -6.0), diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs index 40c190deb1..661e604fca 100644 --- a/voxygen/anim/src/biped_small/wield.rs +++ b/voxygen/anim/src/biped_small/wield.rs @@ -72,6 +72,10 @@ impl Animation for WieldAnimation { next.hand_l.orientation = Quaternion::rotation_x(0.0); next.hand_r.orientation = Quaternion::rotation_x(0.0); + //IMPORTANT: avoid touching any value attached to grip. grip uses the size of + // the hand bones to correct any irrgularities beween species. Changing + // coefficients to grip will have different effects across species + match active_tool_kind { Some(ToolKind::Spear) => { next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0); @@ -95,6 +99,7 @@ impl Animation for WieldAnimation { next.control.orientation = Quaternion::rotation_x(-1.35 + 0.5 * speednorm); }, + Some(ToolKind::Bow) => { next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 0.0, 0.0); next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 6.0, -2.0); diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 60cb948242..84dd8001ad 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -1511,7 +1511,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.leg_fl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.leg_fl.lateral.0); (lateral, Vec3::from(spec.leg_fl.offset)) } @@ -1543,7 +1543,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.leg_bl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.leg_bl.lateral.0); (lateral, Vec3::from(spec.leg_bl.offset)) } @@ -1575,7 +1575,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.foot_fl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_fl.lateral.0); (lateral, Vec3::from(spec.foot_fl.offset)) } @@ -1607,7 +1607,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.foot_bl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_bl.lateral.0); (lateral, Vec3::from(spec.foot_bl.offset)) } @@ -2530,13 +2530,11 @@ make_vox_spec!( third_person.map(|loadout| { spec.armor_chest.read().0.mesh_chest( loadout.chest.as_deref(), - false, ) }), third_person.map(|loadout| { spec.armor_pants.read().0.mesh_pants( loadout.pants.as_deref(), - false, ) }), Some(spec.central.read().0.mesh_tail( @@ -2607,7 +2605,7 @@ impl BipedSmallCentralSpec { } impl BipedSmallArmorChestSpec { - fn mesh_chest(&self, chest: Option<&str>, flipped: bool) -> BoneMeshes { + fn mesh_chest(&self, chest: Option<&str>) -> BoneMeshes { let spec = if let Some(chest) = chest { match self.0.map.get(chest) { Some(spec) => spec, @@ -2620,27 +2618,15 @@ impl BipedSmallArmorChestSpec { &self.0.default }; - let chest_segment = if flipped { - graceful_load_segment_flipped(&spec.vox_spec.0) - } else { - graceful_load_segment(&spec.vox_spec.0) - }; + let chest_segment = graceful_load_segment(&spec.vox_spec.0); - let offset = Vec3::new( - if flipped { - 0.0 - spec.vox_spec.1[0] - (chest_segment.sz.x as f32) - } else { - spec.vox_spec.1[0] - }, - spec.vox_spec.1[1], - spec.vox_spec.1[2], - ); + let offset = Vec3::new(spec.vox_spec.1[0], spec.vox_spec.1[1], spec.vox_spec.1[2]); (chest_segment, offset) } } impl BipedSmallArmorPantsSpec { - fn mesh_pants(&self, pants: Option<&str>, flipped: bool) -> BoneMeshes { + fn mesh_pants(&self, pants: Option<&str>) -> BoneMeshes { let spec = if let Some(pants) = pants { match self.0.map.get(pants) { Some(spec) => spec, @@ -2653,21 +2639,9 @@ impl BipedSmallArmorPantsSpec { &self.0.default }; - let pants_segment = if flipped { - graceful_load_segment_flipped(&spec.vox_spec.0) - } else { - graceful_load_segment(&spec.vox_spec.0) - }; + let pants_segment = graceful_load_segment(&spec.vox_spec.0); - let offset = Vec3::new( - if flipped { - 0.0 - spec.vox_spec.1[0] - (pants_segment.sz.x as f32) - } else { - spec.vox_spec.1[0] - }, - spec.vox_spec.1[1], - spec.vox_spec.1[2], - ); + let offset = Vec3::new(spec.vox_spec.1[0], spec.vox_spec.1[1], spec.vox_spec.1[2]); (pants_segment, offset) } From e4e25e20c9ce76b37df07e51847a583738793a0e Mon Sep 17 00:00:00 2001 From: jshipsey Date: Mon, 1 Feb 2021 21:56:17 -0500 Subject: [PATCH 13/36] rebase --- .../common/abilities/spear/doublestrike.ron | 8 ++- assets/common/items/npc_armor/chest/adlet.ron | 16 ++--- .../common/items/npc_armor/chest/gnarling.ron | 16 ++--- .../common/items/npc_armor/chest/haniwa.ron | 16 ++--- assets/common/items/npc_armor/chest/kappa.ron | 16 ++--- .../common/items/npc_armor/chest/myrmidon.ron | 16 ++--- .../common/items/npc_armor/chest/sahagin.ron | 16 ++--- assets/common/items/npc_armor/foot/adlet.ron | 16 ++--- .../common/items/npc_armor/foot/gnarling.ron | 16 ++--- assets/common/items/npc_armor/foot/haniwa.ron | 18 +++--- assets/common/items/npc_armor/foot/kappa.ron | 16 ++--- .../common/items/npc_armor/foot/myrmidon.ron | 18 +++--- .../common/items/npc_armor/foot/sahagin.ron | 3 +- assets/common/items/npc_armor/hand/adlet.ron | 18 +++--- .../common/items/npc_armor/hand/gnarling.ron | 18 +++--- assets/common/items/npc_armor/hand/haniwa.ron | 18 +++--- assets/common/items/npc_armor/hand/kappa.ron | 18 +++--- .../common/items/npc_armor/hand/myrmidon.ron | 18 +++--- .../common/items/npc_armor/hand/sahagin.ron | 18 +++--- assets/common/items/npc_armor/pants/adlet.ron | 20 +++---- .../common/items/npc_armor/pants/gnarling.ron | 18 +++--- .../common/items/npc_armor/pants/haniwa.ron | 18 +++--- assets/common/items/npc_armor/pants/kappa.ron | 18 +++--- .../common/items/npc_armor/pants/myrmidon.ron | 18 +++--- .../common/items/npc_armor/pants/sahagin.ron | 3 +- assets/common/items/npc_weapons/bow/adlet.ron | 1 + .../items/npc_weapons/spear/wooden_spear.ron | 1 + .../common/items/npc_weapons/staff/gnoll.ron | 1 + common/src/comp/body.rs | 2 +- common/src/skillset_builder.rs | 50 ++++++++-------- voxygen/anim/src/biped_small/alpha.rs | 12 +--- voxygen/anim/src/biped_small/shoot.rs | 9 +-- voxygen/src/scene/figure/mod.rs | 59 ------------------- world/src/layer/wildlife.rs | 4 +- world/src/site/dungeon/mod.rs | 10 ++-- 35 files changed, 242 insertions(+), 301 deletions(-) diff --git a/assets/common/abilities/spear/doublestrike.ron b/assets/common/abilities/spear/doublestrike.ron index ce79b87260..22a03999c8 100644 --- a/assets/common/abilities/spear/doublestrike.ron +++ b/assets/common/abilities/spear/doublestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 90, damage_increase: 10, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 8.0, range: 3.5, angle: 50.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 130, damage_increase: 15, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 12.0, range: 3.5, angle: 30.0, @@ -28,8 +32,8 @@ ComboMelee( initial_energy_gain: 25, max_energy_gain: 175, energy_increase: 30, - speed_increase: 0.075, - max_speed_increase: 1.6, + speed_increase: 0.0, + max_speed_increase: 0.0, scales_from_combo: 2, is_interruptible: false, ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/adlet.ron b/assets/common/items/npc_armor/chest/adlet.ron index be662aa218..5b09bab368 100644 --- a/assets/common/items/npc_armor/chest/adlet.ron +++ b/assets/common/items/npc_armor/chest/adlet.ron @@ -1,12 +1,12 @@ ItemDef( name: "Adlet", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Chest("Adlet"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Chest("Adlet"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/gnarling.ron b/assets/common/items/npc_armor/chest/gnarling.ron index 81c91445a8..425108bbdd 100644 --- a/assets/common/items/npc_armor/chest/gnarling.ron +++ b/assets/common/items/npc_armor/chest/gnarling.ron @@ -1,12 +1,12 @@ ItemDef( name: "Gnarling", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Chest("Gnarling"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Chest("Gnarling"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/haniwa.ron b/assets/common/items/npc_armor/chest/haniwa.ron index 3c420f6494..f2e0b62719 100644 --- a/assets/common/items/npc_armor/chest/haniwa.ron +++ b/assets/common/items/npc_armor/chest/haniwa.ron @@ -1,12 +1,12 @@ ItemDef( name: "Haniwa", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Chest("Haniwa"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Chest("Haniwa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/kappa.ron b/assets/common/items/npc_armor/chest/kappa.ron index a7189f1b03..bce32a19f0 100644 --- a/assets/common/items/npc_armor/chest/kappa.ron +++ b/assets/common/items/npc_armor/chest/kappa.ron @@ -1,12 +1,12 @@ ItemDef( name: "Kappa", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Chest("Kappa"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Chest("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/myrmidon.ron b/assets/common/items/npc_armor/chest/myrmidon.ron index 782f539a0c..fb38ce7267 100644 --- a/assets/common/items/npc_armor/chest/myrmidon.ron +++ b/assets/common/items/npc_armor/chest/myrmidon.ron @@ -1,12 +1,12 @@ ItemDef( name: "Myrmidon", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Chest("Myrmidon"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Chest("Myrmidon"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/sahagin.ron b/assets/common/items/npc_armor/chest/sahagin.ron index 1c911c6c90..f0757449e6 100644 --- a/assets/common/items/npc_armor/chest/sahagin.ron +++ b/assets/common/items/npc_armor/chest/sahagin.ron @@ -1,12 +1,12 @@ ItemDef( name: "Sahagin", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Chest("Sahagin"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Chest("Sahagin"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/foot/adlet.ron b/assets/common/items/npc_armor/foot/adlet.ron index 24794cdd30..b3813e1672 100644 --- a/assets/common/items/npc_armor/foot/adlet.ron +++ b/assets/common/items/npc_armor/foot/adlet.ron @@ -1,12 +1,12 @@ ItemDef( name: "Adlet", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Foot("Adlet"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Foot("Adlet"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/foot/gnarling.ron b/assets/common/items/npc_armor/foot/gnarling.ron index 553aeadbab..d0e846be89 100644 --- a/assets/common/items/npc_armor/foot/gnarling.ron +++ b/assets/common/items/npc_armor/foot/gnarling.ron @@ -1,12 +1,12 @@ ItemDef( name: "Gnarling", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Foot("Gnarling"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Foot("Gnarling"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/foot/haniwa.ron b/assets/common/items/npc_armor/foot/haniwa.ron index c393e2728e..522f785fcb 100644 --- a/assets/common/items/npc_armor/foot/haniwa.ron +++ b/assets/common/items/npc_armor/foot/haniwa.ron @@ -1,12 +1,12 @@ ItemDef( name: "Haniwa", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Foot("Haniwa"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Foot("Haniwa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/foot/kappa.ron b/assets/common/items/npc_armor/foot/kappa.ron index 4406509875..cf364f12eb 100644 --- a/assets/common/items/npc_armor/foot/kappa.ron +++ b/assets/common/items/npc_armor/foot/kappa.ron @@ -1,12 +1,12 @@ ItemDef( name: "Kappa", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Foot("Kappa"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Foot("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/foot/myrmidon.ron b/assets/common/items/npc_armor/foot/myrmidon.ron index be94273279..061a8b8174 100644 --- a/assets/common/items/npc_armor/foot/myrmidon.ron +++ b/assets/common/items/npc_armor/foot/myrmidon.ron @@ -1,12 +1,12 @@ ItemDef( name: "Myrmidon", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Foot("Myrmidon"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Foot("Myrmidon"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/foot/sahagin.ron b/assets/common/items/npc_armor/foot/sahagin.ron index 21f97b1a69..4b65043e12 100644 --- a/assets/common/items/npc_armor/foot/sahagin.ron +++ b/assets/common/items/npc_armor/foot/sahagin.ron @@ -5,7 +5,8 @@ ItemDef( ( kind: Foot("Sahagin"), stats: ( - protection: Normal(2.0)), + protection: Normal(2.0)), + poise_resilience: Normal(0.3), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/hand/adlet.ron b/assets/common/items/npc_armor/hand/adlet.ron index 69b21cca80..cd1e73e030 100644 --- a/assets/common/items/npc_armor/hand/adlet.ron +++ b/assets/common/items/npc_armor/hand/adlet.ron @@ -1,12 +1,12 @@ ItemDef( name: "Adlet", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Hand("Adlet"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Adlet"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/hand/gnarling.ron b/assets/common/items/npc_armor/hand/gnarling.ron index 8f027ac373..e5a67f897c 100644 --- a/assets/common/items/npc_armor/hand/gnarling.ron +++ b/assets/common/items/npc_armor/hand/gnarling.ron @@ -1,12 +1,12 @@ ItemDef( name: "Gnarling", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Hand("Gnarling"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Gnarling"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/hand/haniwa.ron b/assets/common/items/npc_armor/hand/haniwa.ron index fe2788e644..2922172faa 100644 --- a/assets/common/items/npc_armor/hand/haniwa.ron +++ b/assets/common/items/npc_armor/hand/haniwa.ron @@ -1,12 +1,12 @@ ItemDef( name: "Haniwa", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Hand("Haniwa"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Haniwa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/hand/kappa.ron b/assets/common/items/npc_armor/hand/kappa.ron index 4e35a8ac3e..d0c56560d4 100644 --- a/assets/common/items/npc_armor/hand/kappa.ron +++ b/assets/common/items/npc_armor/hand/kappa.ron @@ -1,12 +1,12 @@ ItemDef( name: "Kappa", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Hand("Kappa"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/hand/myrmidon.ron b/assets/common/items/npc_armor/hand/myrmidon.ron index 913343266c..c04ffd8a42 100644 --- a/assets/common/items/npc_armor/hand/myrmidon.ron +++ b/assets/common/items/npc_armor/hand/myrmidon.ron @@ -1,12 +1,12 @@ ItemDef( name: "Myrmidon", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Hand("Myrmidon"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Myrmidon"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/hand/sahagin.ron b/assets/common/items/npc_armor/hand/sahagin.ron index 3cf17b0154..b71a6b8c28 100644 --- a/assets/common/items/npc_armor/hand/sahagin.ron +++ b/assets/common/items/npc_armor/hand/sahagin.ron @@ -1,12 +1,12 @@ ItemDef( name: "Sahagin", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Hand("Sahagin"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Sahagin"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/adlet.ron b/assets/common/items/npc_armor/pants/adlet.ron index e48f453558..b0c1066eed 100644 --- a/assets/common/items/npc_armor/pants/adlet.ron +++ b/assets/common/items/npc_armor/pants/adlet.ron @@ -1,12 +1,12 @@ ItemDef( - name: "Adlet", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Pants("Adlet"), - stats: ( - protection: Normal(2.0)), - ) - ), + name: "Haniwa", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Adlet"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/gnarling.ron b/assets/common/items/npc_armor/pants/gnarling.ron index 7b9efe4fad..aa007ee9f1 100644 --- a/assets/common/items/npc_armor/pants/gnarling.ron +++ b/assets/common/items/npc_armor/pants/gnarling.ron @@ -1,12 +1,12 @@ ItemDef( name: "Gnarling", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Pants("Gnarling"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Gnarling"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/haniwa.ron b/assets/common/items/npc_armor/pants/haniwa.ron index 58bbea28ca..9797217e6e 100644 --- a/assets/common/items/npc_armor/pants/haniwa.ron +++ b/assets/common/items/npc_armor/pants/haniwa.ron @@ -1,12 +1,12 @@ ItemDef( name: "Haniwa", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Pants("Haniwa"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Haniwa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/kappa.ron b/assets/common/items/npc_armor/pants/kappa.ron index 6e6e144b2d..9a9ffc2846 100644 --- a/assets/common/items/npc_armor/pants/kappa.ron +++ b/assets/common/items/npc_armor/pants/kappa.ron @@ -1,12 +1,12 @@ ItemDef( name: "Kappa", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Pants("Kappa"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/myrmidon.ron b/assets/common/items/npc_armor/pants/myrmidon.ron index 0a423b006b..cc36f30204 100644 --- a/assets/common/items/npc_armor/pants/myrmidon.ron +++ b/assets/common/items/npc_armor/pants/myrmidon.ron @@ -1,12 +1,12 @@ ItemDef( name: "Myrmidon", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Pants("Myrmidon"), - stats: ( - protection: Normal(2.0)), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Myrmidon"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/sahagin.ron b/assets/common/items/npc_armor/pants/sahagin.ron index 12c94da1df..c7a4dad627 100644 --- a/assets/common/items/npc_armor/pants/sahagin.ron +++ b/assets/common/items/npc_armor/pants/sahagin.ron @@ -5,7 +5,8 @@ ItemDef( ( kind: Pants("Sahagin"), stats: ( - protection: Normal(2.0)), + protection: Normal(2.0)), + poise_resilience: Normal(3.0), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/bow/adlet.ron b/assets/common/items/npc_weapons/bow/adlet.ron index 3ac5f32607..3513db8ae2 100644 --- a/assets/common/items/npc_weapons/bow/adlet.ron +++ b/assets/common/items/npc_weapons/bow/adlet.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 200, power: 0.8, + poise_strength: 0.8, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/spear/wooden_spear.ron b/assets/common/items/npc_weapons/spear/wooden_spear.ron index e24f70e1c7..736a72b82f 100644 --- a/assets/common/items/npc_weapons/spear/wooden_spear.ron +++ b/assets/common/items/npc_weapons/spear/wooden_spear.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 250, power: 1.0, + poise_strength: 0.8, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/staff/gnoll.ron b/assets/common/items/npc_weapons/staff/gnoll.ron index 520bb83cc2..3bc37ffebe 100644 --- a/assets/common/items/npc_weapons/staff/gnoll.ron +++ b/assets/common/items/npc_weapons/staff/gnoll.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 200, power: 0.8, + poise_strength: 0.8, speed: 1.0 ), ) diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 37efb6f1da..5f688399ff 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -94,7 +94,7 @@ impl core::ops::Index for AllBodies &self.fish_medium.body, NpcKind::Clownfish => &self.fish_small.body, NpcKind::Ogre => &self.biped_large.body, - NpcKind::Gremlin => &self.biped_small.body, + NpcKind::Gnome => &self.biped_small.body, NpcKind::StoneGolem => &self.golem.body, NpcKind::Archaeos => &self.theropod.body, NpcKind::Reddragon => &self.dragon.body, diff --git a/common/src/skillset_builder.rs b/common/src/skillset_builder.rs index 5392efce1b..81b039d882 100644 --- a/common/src/skillset_builder.rs +++ b/common/src/skillset_builder.rs @@ -49,11 +49,11 @@ impl SkillSetBuilder { // Bow Self::default() .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) - .with_skill(Skill::Bow(BowSkill::BDamage)) - .with_skill(Skill::Bow(BowSkill::CDamage)) - .with_skill(Skill::Bow(BowSkill::CKnockback)) - .with_skill(Skill::Bow(BowSkill::CSpeed)) - .with_skill(Skill::Bow(BowSkill::CMove)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) }, _ => Self::default(), } @@ -64,11 +64,11 @@ impl SkillSetBuilder { // Bow Self::default() .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) - .with_skill(Skill::Bow(BowSkill::BDamage)) - .with_skill(Skill::Bow(BowSkill::CDamage)) - .with_skill(Skill::Bow(BowSkill::CKnockback)) - .with_skill(Skill::Bow(BowSkill::CSpeed)) - .with_skill(Skill::Bow(BowSkill::CMove)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) }, _ => Self::default(), } @@ -79,11 +79,11 @@ impl SkillSetBuilder { // Bow Self::default() .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) - .with_skill(Skill::Bow(BowSkill::BDamage)) - .with_skill(Skill::Bow(BowSkill::CDamage)) - .with_skill(Skill::Bow(BowSkill::CKnockback)) - .with_skill(Skill::Bow(BowSkill::CSpeed)) - .with_skill(Skill::Bow(BowSkill::CMove)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) }, _ => Self::default(), } @@ -94,11 +94,11 @@ impl SkillSetBuilder { // Bow Self::default() .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) - .with_skill(Skill::Bow(BowSkill::BDamage)) - .with_skill(Skill::Bow(BowSkill::CDamage)) - .with_skill(Skill::Bow(BowSkill::CKnockback)) - .with_skill(Skill::Bow(BowSkill::CSpeed)) - .with_skill(Skill::Bow(BowSkill::CMove)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) }, _ => Self::default(), } @@ -109,11 +109,11 @@ impl SkillSetBuilder { // Bow Self::default() .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) - .with_skill(Skill::Bow(BowSkill::BDamage)) - .with_skill(Skill::Bow(BowSkill::CDamage)) - .with_skill(Skill::Bow(BowSkill::CKnockback)) - .with_skill(Skill::Bow(BowSkill::CSpeed)) - .with_skill(Skill::Bow(BowSkill::CMove)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) }, _ => Self::default(), } diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs index b6ab1d4bfd..46b9713af3 100644 --- a/voxygen/anim/src/biped_small/alpha.rs +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -2,7 +2,7 @@ use super::{ super::{vek::*, Animation}, BipedSmallSkeleton, SkeletonAttr, }; -use common::{comp::item::ToolKind, states::utils::StageSection}; +use common::states::utils::StageSection; use std::f32::consts::PI; pub struct AlphaAnimation; @@ -29,7 +29,7 @@ impl Animation for AlphaAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (velocity, _orientation, _last_ori, global_time, _avg_vel, acc_vel, stage_section, timer): Self::Dependency, + (velocity, _orientation, _last_ori, _global_time, _avg_vel, _acc_vel, stage_section, _timer): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, @@ -37,10 +37,9 @@ impl Animation for AlphaAnimation { let mut next = (*skeleton).clone(); let speed = Vec2::::from(velocity).magnitude(); - let fastacc = (acc_vel * 2.0).sin(); + //let fastacc = (acc_vel * 2.0).sin(); let fast = (anim_time as f32 * 10.0).sin(); let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); - let slow = (anim_time as f32 * 2.0).sin(); let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; @@ -52,11 +51,6 @@ impl Animation for AlphaAnimation { _ => (0.0, 0.0, 0.0), }; let pullback = 1.0 - movement3; - let subtract = global_time - timer; - let check = subtract - subtract.trunc(); - let mirror = (check - 0.5).signum() as f32; - let movement1 = mirror * movement1base * pullback; - let movement2 = mirror * movement2base * pullback; let movement1abs = movement1base * pullback; let movement2abs = movement2base * pullback; diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs index a5363c626c..94ab39f3b6 100644 --- a/voxygen/anim/src/biped_small/shoot.rs +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -35,11 +35,11 @@ impl Animation for ShootAnimation { velocity, _orientation, _last_ori, - global_time, + _global_time, _avg_vel, - acc_vel, + _acc_vel, stage_section, - timer, + _timer, ): Self::Dependency, anim_time: f64, _rate: &mut f32, @@ -91,9 +91,6 @@ impl Animation for ShootAnimation { _ => (0.0, 0.0, 0.0), }; let pullback = 1.0 - movement3; - let subtract = global_time - timer; - let check = subtract - subtract.trunc(); - let mirror = (check - 0.5).signum() as f32; let movement1abs = movement1base * pullback; let movement2abs = movement2base * pullback; next.control_l.position = Vec3::new( diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 84242911ff..0f723bcd5c 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2430,65 +2430,6 @@ impl FigureMgr { skeleton_attr, ) }, - CharacterState::ComboMelee(s) => { - let stage_index = (s.stage - 1) as usize; - let stage_time = s.timer.as_secs_f64(); - let stage_progress = match s.stage_section { - StageSection::Buildup => { - stage_time - / s.static_data.stage_data[stage_index] - .base_buildup_duration - .as_secs_f64() - }, - StageSection::Swing => { - stage_time - / s.static_data.stage_data[stage_index] - .base_swing_duration - .as_secs_f64() - }, - StageSection::Recover => { - stage_time - / s.static_data.stage_data[stage_index] - .base_recover_duration - .as_secs_f64() - }, - _ => 0.0, - }; - match s.stage { - 1 => anim::biped_small::AlphaAnimation::update_skeleton( - &target_base, - ( - vel.0, - ori, - state.last_ori, - time, - state.avg_vel, - state.acc_vel, - Some(s.stage_section), - state.state_time, - ), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ), - _ => anim::biped_small::AlphaAnimation::update_skeleton( - &target_base, - ( - vel.0, - ori, - state.last_ori, - time, - state.avg_vel, - state.acc_vel, - Some(s.stage_section), - state.state_time, - ), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ), - } - }, // TODO! _ => target_base, }; diff --git a/world/src/layer/wildlife.rs b/world/src/layer/wildlife.rs index 782a068284..2a81604fed 100644 --- a/world/src/layer/wildlife.rs +++ b/world/src/layer/wildlife.rs @@ -133,7 +133,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0, 4) { + .with_body(match rng.gen_range(0..3) { 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Mouflon, @@ -234,7 +234,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0, 12) { + .with_body(match rng.gen_range(0..12) { 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Deer, diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index cc6e0d5cad..42bba0caf5 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -619,7 +619,7 @@ impl Floor { ) .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, 3) { + match dynamic_rng.gen_range(0..3) { 0 => "common.items.npc_weapons.spear.wooden_spear", 1 => "common.items.npc_weapons.staff.gnoll", _ => "common.items.npc_weapons.bow.adlet", @@ -639,7 +639,7 @@ impl Floor { ) .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, 3) { + match dynamic_rng.gen_range(0..3) { 0 => "common.items.npc_weapons.spear.wooden_spear", 1 => "common.items.npc_weapons.staff.gnoll", _ => "common.items.npc_weapons.bow.adlet", @@ -659,7 +659,7 @@ impl Floor { ) .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, 3) { + match dynamic_rng.gen_range(0..3) { 0 => "common.items.npc_weapons.spear.wooden_spear", 1 => "common.items.npc_weapons.staff.gnoll", _ => "common.items.npc_weapons.bow.adlet", @@ -679,7 +679,7 @@ impl Floor { ) .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, 3) { + match dynamic_rng.gen_range(0..3) { 0 => "common.items.npc_weapons.spear.wooden_spear", 1 => "common.items.npc_weapons.staff.gnoll", _ => "common.items.npc_weapons.bow.adlet", @@ -699,7 +699,7 @@ impl Floor { ) .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, 3) { + match dynamic_rng.gen_range(0..3) { 0 => "common.items.npc_weapons.spear.wooden_spear", 1 => "common.items.npc_weapons.staff.gnoll", _ => "common.items.npc_weapons.bow.adlet", From aa4237b019ce12ff2beadb9ca074b99126952f24 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Wed, 10 Feb 2021 23:04:03 -0500 Subject: [PATCH 14/36] BL improvements, various fixes --- assets/common/abilities/bowsimple/basic.ron | 15 ++ .../common/abilities/hammer/singlestrike.ron | 6 +- .../abilities/hammersimple/doublestrike.ron | 39 +++ .../common/abilities/spear/doublestrike.ron | 12 +- .../common/abilities/staffsimple/firebomb.ron | 18 ++ .../abilities/swordsimple/doublestrike.ron | 39 +++ .../abilities/weapon_ability_manifest.ron | 23 ++ .../items/armor/belt/plate_leather_0.ron | 12 + .../items/armor/chest/plate_leather_0.ron | 12 + .../items/armor/foot/plate_leather_0.ron | 12 + .../items/armor/hand/plate_leather_0.ron | 12 + .../items/armor/pants/plate_leather_0.ron | 12 + .../items/armor/shoulder/plate_leather_0.ron | 12 + .../items/npc_weapons/bow/saurok_bow.ron | 2 +- .../npc_weapons/hammer/cyclops_hammer.ron | 2 +- .../items/npc_weapons/hammer/ogre_hammer.ron | 2 +- .../items/npc_weapons/hammer/troll_hammer.ron | 2 +- .../npc_weapons/staff/mindflayer_staff.ron | 2 +- .../items/npc_weapons/staff/ogre_staff.ron | 2 +- .../items/npc_weapons/staff/saurok_staff.ron | 2 +- .../npc_weapons/sword/dullahan_sword.ron | 2 +- .../items/npc_weapons/sword/saurok_sword.ron | 2 +- .../voxel/armor/belt/plate_leather-0.vox | 3 + .../voxel/armor/chest/plate_leather.vox | 3 + assets/voxygen/voxel/armor/chest/steel-0.vox | 4 +- .../voxel/armor/foot/plate_leather.vox | 3 + .../voxel/armor/hand/plate_leather_left-0.vox | 3 + .../armor/hand/plate_leather_right-0.vox | 3 + .../voxel/armor/pants/plate_leather-0.vox | 3 + .../armor/shoulder/plate_leather_left-0.vox | 3 + .../armor/shoulder/plate_leather_right-0.vox | 3 + .../voxel/biped_large_central_manifest.ron | 89 +------ .../voxel/biped_large_lateral_manifest.ron | 140 +++++----- .../voxel/biped_large_weapon_manifest.ron | 42 +++ .../voxel/bird_medium_lateral_manifest.ron | 48 ++-- .../voxel/fish_medium_lateral_manifest.ron | 4 +- .../voxel/fish_small_lateral_manifest.ron | 4 +- .../voxel/humanoid_armor_belt_manifest.ron | 4 + .../voxel/humanoid_armor_chest_manifest.ron | 6 +- .../voxel/humanoid_armor_foot_manifest.ron | 4 + .../voxel/humanoid_armor_hand_manifest.ron | 10 + .../voxel/humanoid_armor_pants_manifest.ron | 4 + .../humanoid_armor_shoulder_manifest.ron | 10 + .../voxel/npc/alligator/male/foot_bl.vox | 3 - .../voxel/npc/alligator/male/foot_fl.vox | 3 - .../voxel/npc/archaeos/male/foot_l.vox | 3 - .../voxel/npc/archaeos/male/hand_l.vox | 3 - .../voxygen/voxel/npc/archaeos/male/leg_l.vox | 3 - assets/voxygen/voxel/npc/asp/male/foot_bl.vox | 3 - assets/voxygen/voxel/npc/asp/male/foot_fl.vox | 3 - .../voxel/npc/axolotl/male/foot_bl.vox | 3 - .../voxel/npc/axolotl/male/foot_fl.vox | 3 - .../voxel/npc/basilisk/male/foot_bl.vox | 3 - .../voxel/npc/basilisk/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/batfox/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/batfox/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/beaver/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/beaver/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/boar/female/foot_bl.vox | 3 - .../voxygen/voxel/npc/boar/female/foot_fl.vox | 3 - .../voxygen/voxel/npc/boar/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/boar/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/cat/female/foot_bl.vox | 3 - .../voxygen/voxel/npc/cat/female/foot_fl.vox | 3 - assets/voxygen/voxel/npc/cat/male/foot_bl.vox | 3 - assets/voxygen/voxel/npc/cat/male/foot_fl.vox | 3 - .../voxel/npc/chicken/female/leg_l.vox | 3 - .../voxygen/voxel/npc/chicken/male/leg_l.vox | 3 - .../voxel/npc/clownfish/male/fin_l.vox | 3 - .../voxel/npc/cockatrice/male/leg_l.vox | 3 - .../voxel/npc/cockatrice/male/wing_l.vox | 3 - .../voxel/npc/crocodile/male/foot_bl.vox | 3 - .../voxel/npc/crocodile/male/foot_fl.vox | 3 - assets/voxygen/voxel/npc/crow/wing_l.vox | 3 - .../voxel/npc/dodarock/male/foot_bl.vox | 3 - .../voxel/npc/dodarock/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/dog/female/foot_bl.vox | 3 - .../voxygen/voxel/npc/dog/female/foot_fl.vox | 3 - assets/voxygen/voxel/npc/dog/male/foot_bl.vox | 3 - assets/voxygen/voxel/npc/dog/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/duck/female/leg_l.vox | 3 - assets/voxygen/voxel/npc/duck/male/leg_l.vox | 3 - assets/voxygen/voxel/npc/eagle/male/leg_l.vox | 3 - .../voxygen/voxel/npc/eagle/male/wing_l.vox | 3 - .../voxygen/voxel/npc/fox/female/foot_bl.vox | 3 - .../voxygen/voxel/npc/fox/female/foot_fl.vox | 3 - assets/voxygen/voxel/npc/fox/male/foot_bl.vox | 3 - assets/voxygen/voxel/npc/fox/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/frog/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/frog/male/foot_fl.vox | 3 - .../voxel/npc/fungome/male/foot_bl.vox | 3 - .../voxel/npc/fungome/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/gecko/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/gecko/male/foot_fl.vox | 3 - assets/voxygen/voxel/npc/goose/male/leg_l.vox | 3 - .../voxel/npc/hakulaq/male/foot_bl.vox | 3 - .../voxel/npc/hakulaq/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/hare/female/foot_bl.vox | 3 - .../voxygen/voxel/npc/hare/female/foot_fl.vox | 3 - .../voxygen/voxel/npc/hare/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/hare/male/foot_fl.vox | 3 - .../voxel/npc/holladon/male/foot_bl.vox | 3 - .../voxel/npc/holladon/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/hyena/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/hyena/male/foot_fl.vox | 3 - .../voxel/npc/jackalope/male/foot_bl.vox | 3 - .../voxel/npc/jackalope/male/foot_fl.vox | 3 - .../voxel/npc/lavadrake/male/foot_bl.vox | 3 - .../voxel/npc/lavadrake/male/foot_fl.vox | 3 - .../voxel/npc/maneater/male/foot_bl.vox | 3 - .../voxel/npc/maneater/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/marlin/male/fin_l.vox | 3 - .../voxel/npc/monitor/male/foot_bl.vox | 3 - .../voxel/npc/monitor/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/odonto/male/foot_l.vox | 3 - .../voxygen/voxel/npc/odonto/male/hand_l.vox | 3 - .../voxygen/voxel/npc/odonto/male/leg_l.vox | 3 - assets/voxygen/voxel/npc/owl/female/leg_l.vox | 3 - .../voxygen/voxel/npc/owl/female/wing_l.vox | 3 - assets/voxygen/voxel/npc/owl/male/leg_l.vox | 3 - assets/voxygen/voxel/npc/owl/male/wing_l.vox | 3 - .../voxel/npc/pangolin/male/foot_bl.vox | 3 - .../voxel/npc/pangolin/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/parrot/male/leg_l.vox | 3 - .../voxel/npc/peacock/female/leg_l.vox | 3 - .../voxel/npc/peacock/female/wing_l.vox | 3 - .../voxygen/voxel/npc/peacock/male/leg_l.vox | 3 - .../voxygen/voxel/npc/peacock/male/wing_l.vox | 3 - assets/voxygen/voxel/npc/pig/male/foot_bl.vox | 3 - assets/voxygen/voxel/npc/pig/male/foot_fl.vox | 3 - .../voxel/npc/porcupine/male/foot_bl.vox | 3 - .../voxel/npc/porcupine/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/quokka/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/quokka/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/rabbit/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/rabbit/male/foot_fl.vox | 3 - .../voxel/npc/raccoon/male/foot_bl.vox | 3 - .../voxel/npc/raccoon/male/foot_fl.vox | 3 - .../voxel/npc/raptor_sand/male/foot_l.vox | 3 - .../voxel/npc/raptor_sand/male/hand_l.vox | 3 - .../voxel/npc/raptor_sand/male/leg_l.vox | 3 - .../voxel/npc/raptor_snow/male/foot_l.vox | 3 - .../voxel/npc/raptor_snow/male/hand_l.vox | 3 - .../voxel/npc/raptor_snow/male/leg_l.vox | 3 - .../voxel/npc/raptor_wood/male/foot_l.vox | 3 - .../voxel/npc/raptor_wood/male/hand_l.vox | 3 - .../voxel/npc/raptor_wood/male/leg_l.vox | 3 - assets/voxygen/voxel/npc/rat/male/foot_bl.vox | 3 - assets/voxygen/voxel/npc/rat/male/foot_fl.vox | 3 - .../voxel/npc/rocksnapper/male/foot_bl.vox | 3 - .../voxel/npc/rocksnapper/male/foot_fl.vox | 3 - .../voxel/npc/salamander/female/foot_bl.vox | 3 - .../voxel/npc/salamander/female/foot_fl.vox | 3 - .../voxel/npc/salamander/male/foot_bl.vox | 3 - .../voxel/npc/salamander/male/foot_fl.vox | 3 - .../voxel/npc/sandshark/male/foot_bl.vox | 3 - .../voxel/npc/sandshark/male/foot_fl.vox | 3 - .../voxel/npc/sheep/female/foot_bl.vox | 3 - .../voxel/npc/sheep/female/foot_fl.vox | 3 - .../voxygen/voxel/npc/sheep/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/sheep/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/skunk/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/skunk/male/foot_fl.vox | 3 - .../voxel/npc/squirrel/male/foot_bl.vox | 3 - .../voxel/npc/squirrel/male/foot_fl.vox | 3 - .../voxel/npc/sunlizard/male/foot_l.vox | 3 - .../voxel/npc/sunlizard/male/hand_l.vox | 3 - .../voxel/npc/sunlizard/male/leg_l.vox | 3 - .../voxel/npc/tortoise/male/foot_bl.vox | 3 - .../voxel/npc/tortoise/male/foot_fl.vox | 3 - .../voxel/npc/truffler/male/foot_bl.vox | 3 - .../voxel/npc/truffler/male/foot_fl.vox | 3 - .../voxygen/voxel/npc/turtle/male/foot_bl.vox | 3 - .../voxygen/voxel/npc/turtle/male/foot_fl.vox | 3 - .../voxel/quadruped_low_lateral_manifest.ron | 112 ++++---- .../quadruped_small_lateral_manifest.ron | 208 +++++++-------- .../voxel/theropod_lateral_manifest.ron | 72 +++--- common/src/comp/body.rs | 7 +- common/src/comp/inventory/item/tool.rs | 4 + common/src/comp/inventory/loadout_builder.rs | 14 +- server/src/persistence/json_models.rs | 8 + voxygen/anim/src/biped_large/alpha.rs | 179 +++++++------ voxygen/anim/src/biped_large/idle.rs | 6 +- voxygen/anim/src/biped_large/jump.rs | 4 +- voxygen/anim/src/biped_large/mod.rs | 114 +++++--- voxygen/anim/src/biped_large/run.rs | 239 +++++++++-------- voxygen/anim/src/biped_large/shoot.rs | 243 +++++++++--------- voxygen/anim/src/biped_large/wield.rs | 232 +++++++---------- voxygen/anim/src/biped_small/alpha.rs | 11 +- voxygen/anim/src/character/alpha.rs | 22 +- voxygen/anim/src/character/mod.rs | 3 +- voxygen/anim/src/character/talk.rs | 54 ++++ voxygen/anim/src/quadruped_low/mod.rs | 2 + voxygen/anim/src/quadruped_low/run.rs | 91 +++---- voxygen/anim/src/quadruped_medium/mod.rs | 8 + voxygen/anim/src/quadruped_medium/run.rs | 2 +- voxygen/anim/src/quadruped_small/run.rs | 54 ++-- voxygen/src/hud/util.rs | 4 + voxygen/src/scene/figure/load.rs | 97 ++++--- voxygen/src/scene/figure/mod.rs | 40 ++- 200 files changed, 1451 insertions(+), 1407 deletions(-) create mode 100644 assets/common/abilities/bowsimple/basic.ron create mode 100644 assets/common/abilities/hammersimple/doublestrike.ron create mode 100644 assets/common/abilities/staffsimple/firebomb.ron create mode 100644 assets/common/abilities/swordsimple/doublestrike.ron create mode 100644 assets/common/items/armor/belt/plate_leather_0.ron create mode 100644 assets/common/items/armor/chest/plate_leather_0.ron create mode 100644 assets/common/items/armor/foot/plate_leather_0.ron create mode 100644 assets/common/items/armor/hand/plate_leather_0.ron create mode 100644 assets/common/items/armor/pants/plate_leather_0.ron create mode 100644 assets/common/items/armor/shoulder/plate_leather_0.ron create mode 100644 assets/voxygen/voxel/armor/belt/plate_leather-0.vox create mode 100644 assets/voxygen/voxel/armor/chest/plate_leather.vox create mode 100644 assets/voxygen/voxel/armor/foot/plate_leather.vox create mode 100644 assets/voxygen/voxel/armor/hand/plate_leather_left-0.vox create mode 100644 assets/voxygen/voxel/armor/hand/plate_leather_right-0.vox create mode 100644 assets/voxygen/voxel/armor/pants/plate_leather-0.vox create mode 100644 assets/voxygen/voxel/armor/shoulder/plate_leather_left-0.vox create mode 100644 assets/voxygen/voxel/armor/shoulder/plate_leather_right-0.vox create mode 100644 assets/voxygen/voxel/biped_large_weapon_manifest.ron delete mode 100644 assets/voxygen/voxel/npc/alligator/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/alligator/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/archaeos/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/archaeos/male/hand_l.vox delete mode 100644 assets/voxygen/voxel/npc/archaeos/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/asp/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/asp/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/basilisk/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/basilisk/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/batfox/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/batfox/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/beaver/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/beaver/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/boar/female/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/boar/female/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/boar/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/boar/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/cat/female/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/cat/female/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/cat/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/cat/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/chicken/female/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/chicken/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/clownfish/male/fin_l.vox delete mode 100644 assets/voxygen/voxel/npc/cockatrice/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/cockatrice/male/wing_l.vox delete mode 100644 assets/voxygen/voxel/npc/crocodile/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/crocodile/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/crow/wing_l.vox delete mode 100644 assets/voxygen/voxel/npc/dodarock/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/dodarock/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/dog/female/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/dog/female/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/dog/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/dog/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/duck/female/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/duck/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/eagle/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/eagle/male/wing_l.vox delete mode 100644 assets/voxygen/voxel/npc/fox/female/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/fox/female/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/fox/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/fox/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/frog/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/frog/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/fungome/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/fungome/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/gecko/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/gecko/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/goose/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/hakulaq/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/hakulaq/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/hare/female/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/hare/female/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/hare/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/hare/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/holladon/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/holladon/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/hyena/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/hyena/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/jackalope/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/jackalope/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/lavadrake/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/lavadrake/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/maneater/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/maneater/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/marlin/male/fin_l.vox delete mode 100644 assets/voxygen/voxel/npc/monitor/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/monitor/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/odonto/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/odonto/male/hand_l.vox delete mode 100644 assets/voxygen/voxel/npc/odonto/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/owl/female/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/owl/female/wing_l.vox delete mode 100644 assets/voxygen/voxel/npc/owl/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/owl/male/wing_l.vox delete mode 100644 assets/voxygen/voxel/npc/pangolin/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/pangolin/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/parrot/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/peacock/female/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/peacock/female/wing_l.vox delete mode 100644 assets/voxygen/voxel/npc/peacock/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/peacock/male/wing_l.vox delete mode 100644 assets/voxygen/voxel/npc/pig/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/pig/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/quokka/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/quokka/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/rabbit/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/rabbit/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/raccoon/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/raccoon/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/raptor_sand/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/raptor_sand/male/hand_l.vox delete mode 100644 assets/voxygen/voxel/npc/raptor_sand/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/raptor_snow/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/raptor_snow/male/hand_l.vox delete mode 100644 assets/voxygen/voxel/npc/raptor_snow/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/raptor_wood/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/raptor_wood/male/hand_l.vox delete mode 100644 assets/voxygen/voxel/npc/raptor_wood/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/rat/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/rat/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/rocksnapper/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/rocksnapper/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/salamander/female/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/salamander/female/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/salamander/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/salamander/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/sandshark/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/sandshark/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/sheep/female/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/sheep/female/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/sheep/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/sheep/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/skunk/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/skunk/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/sunlizard/male/foot_l.vox delete mode 100644 assets/voxygen/voxel/npc/sunlizard/male/hand_l.vox delete mode 100644 assets/voxygen/voxel/npc/sunlizard/male/leg_l.vox delete mode 100644 assets/voxygen/voxel/npc/tortoise/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/tortoise/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/truffler/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/truffler/male/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/turtle/male/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/turtle/male/foot_fl.vox create mode 100644 voxygen/anim/src/character/talk.rs diff --git a/assets/common/abilities/bowsimple/basic.ron b/assets/common/abilities/bowsimple/basic.ron new file mode 100644 index 0000000000..cbc6e28040 --- /dev/null +++ b/assets/common/abilities/bowsimple/basic.ron @@ -0,0 +1,15 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.5, + recover_duration: 0.3, + projectile: Arrow( + damage: 70.0, + knockback: 5.0, + energy_regen: 40, + ), + projectile_body: Object(Arrow), + projectile_light: None, + projectile_gravity: Some(Gravity(0.2)), + projectile_speed: 100.0, + can_continue: true, +) diff --git a/assets/common/abilities/hammer/singlestrike.ron b/assets/common/abilities/hammer/singlestrike.ron index 1332b94e67..22848b8746 100644 --- a/assets/common/abilities/hammer/singlestrike.ron +++ b/assets/common/abilities/hammer/singlestrike.ron @@ -8,9 +8,9 @@ ComboMelee( knockback: 10.0, range: 4.5, angle: 50.0, - base_buildup_duration: 0.6, - base_swing_duration: 0.15, - base_recover_duration: 0.3, + base_buildup_duration: 0.5, + base_swing_duration: 0.1, + base_recover_duration: 0.2, forward_movement: 0.0, )], initial_energy_gain: 50, diff --git a/assets/common/abilities/hammersimple/doublestrike.ron b/assets/common/abilities/hammersimple/doublestrike.ron new file mode 100644 index 0000000000..0feb79deaa --- /dev/null +++ b/assets/common/abilities/hammersimple/doublestrike.ron @@ -0,0 +1,39 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 90, + damage_increase: 10, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 8.0, + range: 3.5, + angle: 50.0, + base_buildup_duration: 0.6, + base_swing_duration: 0.08, + base_recover_duration: 0.6, + forward_movement: 2.5, + ), + ( + stage: 2, + base_damage: 130, + damage_increase: 15, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 12.0, + range: 3.5, + angle: 30.0, + base_buildup_duration: 0.5, + base_swing_duration: 0.1, + base_recover_duration: 0.5, + forward_movement: 2.0, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) \ No newline at end of file diff --git a/assets/common/abilities/spear/doublestrike.ron b/assets/common/abilities/spear/doublestrike.ron index 22a03999c8..b7035b1dc0 100644 --- a/assets/common/abilities/spear/doublestrike.ron +++ b/assets/common/abilities/spear/doublestrike.ron @@ -9,9 +9,9 @@ ComboMelee( knockback: 8.0, range: 3.5, angle: 50.0, - base_buildup_duration: 350, - base_swing_duration: 75, - base_recover_duration: 400, + base_buildup_duration: 0.35, + base_swing_duration: 0.075, + base_recover_duration: 0.4, forward_movement: 2.5, ), ( @@ -23,9 +23,9 @@ ComboMelee( knockback: 12.0, range: 3.5, angle: 30.0, - base_buildup_duration: 500, - base_swing_duration: 100, - base_recover_duration: 500, + base_buildup_duration: 0.5, + base_swing_duration: 0.1, + base_recover_duration: 0.5, forward_movement: 2.0, ), ], diff --git a/assets/common/abilities/staffsimple/firebomb.ron b/assets/common/abilities/staffsimple/firebomb.ron new file mode 100644 index 0000000000..16444d31a3 --- /dev/null +++ b/assets/common/abilities/staffsimple/firebomb.ron @@ -0,0 +1,18 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.5, + recover_duration: 0.35, + projectile: Fireball( + damage: 100.0, + radius: 5.0, + energy_regen: 50, + ), + projectile_body: Object(BoltFire), + /*projectile_light: Some(LightEmitter { + col: (1.0, 0.75, 0.11).into(), + ..Default::default() + }),*/ + projectile_gravity: Some(Gravity(0.3)), + projectile_speed: 60.0, + can_continue: true, +) diff --git a/assets/common/abilities/swordsimple/doublestrike.ron b/assets/common/abilities/swordsimple/doublestrike.ron new file mode 100644 index 0000000000..e7523eb2fd --- /dev/null +++ b/assets/common/abilities/swordsimple/doublestrike.ron @@ -0,0 +1,39 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 90, + damage_increase: 10, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 8.0, + range: 3.5, + angle: 50.0, + base_buildup_duration: 0.4, + base_swing_duration: 0.1, + base_recover_duration: 0.5, + forward_movement: 2.5, + ), + ( + stage: 2, + base_damage: 130, + damage_increase: 15, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 12.0, + range: 3.5, + angle: 30.0, + base_buildup_duration: 0.5, + base_swing_duration: 0.1, + base_recover_duration: 0.5, + forward_movement: 2.0, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) \ No newline at end of file diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index 5f415d04e1..5b54bfeb16 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -35,6 +35,29 @@ skills: [], ), + HammerSimple: ( + primary: "common.abilities.hammersimple.doublestrike", + secondary: "common.abilities.hammersimple.doublestrike", + skills: [], + + ), + SwordSimple: ( + primary: "common.abilities.swordsimple.doublestrike", + secondary: "common.abilities.swordsimple.doublestrike", + skills: [ + ], + ), + StaffSimple: ( + primary: "common.abilities.staffsimple.firebomb", + secondary: "common.abilities.staffsimple.firebomb", + skills: [], + ), + BowSimple: ( + primary: "common.abilities.bowsimple.basic", + secondary: "common.abilities.bowsimple.basic", + skills: [ + ], + ), Staff: ( primary: "common.abilities.staff.firebomb", secondary: "common.abilities.staff.flamethrower", diff --git a/assets/common/items/armor/belt/plate_leather_0.ron b/assets/common/items/armor/belt/plate_leather_0.ron new file mode 100644 index 0000000000..f4cd29068b --- /dev/null +++ b/assets/common/items/armor/belt/plate_leather_0.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Leather Plate Belt", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Belt("PlateLeather"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(8.0), + ), + )), + quality: Moderate, +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/plate_leather_0.ron b/assets/common/items/armor/chest/plate_leather_0.ron new file mode 100644 index 0000000000..95319d2496 --- /dev/null +++ b/assets/common/items/armor/chest/plate_leather_0.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Leather Plate Chest", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Chest("PlateLeather"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(40.0), + ), + )), + quality: High, +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/plate_leather_0.ron b/assets/common/items/armor/foot/plate_leather_0.ron new file mode 100644 index 0000000000..8cc46f984f --- /dev/null +++ b/assets/common/items/armor/foot/plate_leather_0.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Leather Plate Boots", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Foot("PlateLeather"), + stats: ( + protection: Normal(5.0), + poise_resilience: Normal(10.0), + ), + )), + quality: High, +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/plate_leather_0.ron b/assets/common/items/armor/hand/plate_leather_0.ron new file mode 100644 index 0000000000..175ea986bc --- /dev/null +++ b/assets/common/items/armor/hand/plate_leather_0.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Leather Plate Gloves", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Hand("PlateLeather"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(15.0), + ), + )), + quality: Moderate, +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/plate_leather_0.ron b/assets/common/items/armor/pants/plate_leather_0.ron new file mode 100644 index 0000000000..b18198aee1 --- /dev/null +++ b/assets/common/items/armor/pants/plate_leather_0.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Leather Plate Chausses", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Pants("PlateLeather"), + stats: ( + protection: Normal(20.0), + poise_resilience: Normal(26.0), + ), + )), + quality: Moderate, +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/plate_leather_0.ron b/assets/common/items/armor/shoulder/plate_leather_0.ron new file mode 100644 index 0000000000..0a52263a84 --- /dev/null +++ b/assets/common/items/armor/shoulder/plate_leather_0.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Leather Plate Shoulder Pad", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Shoulder("PlateLeather"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(20.0), + ), + )), + quality: Moderate, +) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/bow/saurok_bow.ron b/assets/common/items/npc_weapons/bow/saurok_bow.ron index 8b52c2891c..37e3f8bea8 100644 --- a/assets/common/items/npc_weapons/bow/saurok_bow.ron +++ b/assets/common/items/npc_weapons/bow/saurok_bow.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Bow, + kind: BowSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron b/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron index b128b795a7..7c10458ed1 100644 --- a/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Hammer, + kind: HammerSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/hammer/ogre_hammer.ron b/assets/common/items/npc_weapons/hammer/ogre_hammer.ron index e6ff3fbc50..0ab8068dff 100644 --- a/assets/common/items/npc_weapons/hammer/ogre_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/ogre_hammer.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Hammer, + kind: HammerSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/hammer/troll_hammer.ron b/assets/common/items/npc_weapons/hammer/troll_hammer.ron index bd0cdc0598..1f04179292 100644 --- a/assets/common/items/npc_weapons/hammer/troll_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/troll_hammer.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Hammer, + kind: HammerSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/staff/mindflayer_staff.ron b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron index 24c5ff3980..257e19af95 100644 --- a/assets/common/items/npc_weapons/staff/mindflayer_staff.ron +++ b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: Direct(( equip_time_millis: 300, diff --git a/assets/common/items/npc_weapons/staff/ogre_staff.ron b/assets/common/items/npc_weapons/staff/ogre_staff.ron index e4fa9b5e55..c4cca908ff 100644 --- a/assets/common/items/npc_weapons/staff/ogre_staff.ron +++ b/assets/common/items/npc_weapons/staff/ogre_staff.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/staff/saurok_staff.ron b/assets/common/items/npc_weapons/staff/saurok_staff.ron index be87572e33..8ee0b015e4 100644 --- a/assets/common/items/npc_weapons/staff/saurok_staff.ron +++ b/assets/common/items/npc_weapons/staff/saurok_staff.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/sword/dullahan_sword.ron b/assets/common/items/npc_weapons/sword/dullahan_sword.ron index a879869db7..d3b3ba1b8e 100644 --- a/assets/common/items/npc_weapons/sword/dullahan_sword.ron +++ b/assets/common/items/npc_weapons/sword/dullahan_sword.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placehoder", kind: Tool( ( - kind: Sword, + kind: SwordSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/sword/saurok_sword.ron b/assets/common/items/npc_weapons/sword/saurok_sword.ron index 3d22dd8f9b..722280e1c3 100644 --- a/assets/common/items/npc_weapons/sword/saurok_sword.ron +++ b/assets/common/items/npc_weapons/sword/saurok_sword.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placehoder", kind: Tool( ( - kind: Sword, + kind: SwordSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/voxygen/voxel/armor/belt/plate_leather-0.vox b/assets/voxygen/voxel/armor/belt/plate_leather-0.vox new file mode 100644 index 0000000000..e3cba85dea --- /dev/null +++ b/assets/voxygen/voxel/armor/belt/plate_leather-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4d071794475d22a501307198b7fdfd3ecb66b9ee5f81e8b6159342de1a277d5 +size 1512 diff --git a/assets/voxygen/voxel/armor/chest/plate_leather.vox b/assets/voxygen/voxel/armor/chest/plate_leather.vox new file mode 100644 index 0000000000..9e22269162 --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/plate_leather.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ad7ded2bca4669dbf7d75dc0c83980ba39a8983128506a8b889e175c3300bb8 +size 2960 diff --git a/assets/voxygen/voxel/armor/chest/steel-0.vox b/assets/voxygen/voxel/armor/chest/steel-0.vox index 583da4e421..caaf374154 100644 --- a/assets/voxygen/voxel/armor/chest/steel-0.vox +++ b/assets/voxygen/voxel/armor/chest/steel-0.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f5b962ee21300a5af938dacd05db71ed56e13b23ad7fe260948b6c70cfca4f3 -size 3072 +oid sha256:c82339673d8c325662f000e9ee7d192ba4f897cd20a79ebe458307ea78f30d53 +size 46139 diff --git a/assets/voxygen/voxel/armor/foot/plate_leather.vox b/assets/voxygen/voxel/armor/foot/plate_leather.vox new file mode 100644 index 0000000000..7c172d26c3 --- /dev/null +++ b/assets/voxygen/voxel/armor/foot/plate_leather.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa8613a586df0d85fa4dca1d6ea85c30b0172f98a1dd2fe00b5f509793ae2c7c +size 1520 diff --git a/assets/voxygen/voxel/armor/hand/plate_leather_left-0.vox b/assets/voxygen/voxel/armor/hand/plate_leather_left-0.vox new file mode 100644 index 0000000000..f232fbfffb --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/plate_leather_left-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dea43ecec9fff1e25e6476349f2cc645ab6e72455fd2dad51b976817a437ee85 +size 1240 diff --git a/assets/voxygen/voxel/armor/hand/plate_leather_right-0.vox b/assets/voxygen/voxel/armor/hand/plate_leather_right-0.vox new file mode 100644 index 0000000000..f232fbfffb --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/plate_leather_right-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dea43ecec9fff1e25e6476349f2cc645ab6e72455fd2dad51b976817a437ee85 +size 1240 diff --git a/assets/voxygen/voxel/armor/pants/plate_leather-0.vox b/assets/voxygen/voxel/armor/pants/plate_leather-0.vox new file mode 100644 index 0000000000..0d4faf35d7 --- /dev/null +++ b/assets/voxygen/voxel/armor/pants/plate_leather-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7eeb0069de98836f04e1949bc0abbe0b6de0c3a64b77dacbf5f82fc18a6ca6db +size 1944 diff --git a/assets/voxygen/voxel/armor/shoulder/plate_leather_left-0.vox b/assets/voxygen/voxel/armor/shoulder/plate_leather_left-0.vox new file mode 100644 index 0000000000..f06c631a9f --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/plate_leather_left-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11064d9361345d4920bd88074d6c037bb82a891c982fb8be4dfd8608cc63ea2a +size 1392 diff --git a/assets/voxygen/voxel/armor/shoulder/plate_leather_right-0.vox b/assets/voxygen/voxel/armor/shoulder/plate_leather_right-0.vox new file mode 100644 index 0000000000..f06c631a9f --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/plate_leather_right-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11064d9361345d4920bd88074d6c037bb82a891c982fb8be4dfd8608cc63ea2a +size 1392 diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index e3415df554..73b13c66b0 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -23,11 +23,8 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.0, -5.5, -4.0), - central: ("weapon.hammer.2hhammer_ogre"), ) + ), (Ogre, Female): ( head: ( @@ -53,10 +50,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-2.5, -5.5, -4.0), - central: ("weapon.staff.firestaff_ogre"), ) ), (Cyclops, Male): ( @@ -83,10 +76,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.0, -6.5, -4.0), - central: ("weapon.hammer.2hhammer_cyclops-0"), ) ), (Cyclops, Female): ( @@ -113,10 +102,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.0, -6.5, -4.0), - central: ("weapon.hammer.2hhammer_cyclops-0"), ) ), (Wendigo, Male): ( @@ -143,10 +128,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), ) ), (Wendigo, Female): ( @@ -173,10 +154,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), ) ), (Troll, Male): ( @@ -203,10 +180,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-4.0, -6.0, -4.0), - central: ("weapon.hammer.2hhammer_troll"), ) ), (Troll, Female): ( @@ -233,10 +206,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-4.0, -6.0, -4.0), - central: ("weapon.hammer.2hhammer_troll"), ) ), (Dullahan, Male): ( @@ -263,10 +232,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -9.0, -4.0), - central: ("weapon.sword.greatsword_2h_dullahan"), ) ), (Dullahan, Female): ( @@ -293,10 +258,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -9.0, -4.0), - central: ("weapon.sword.greatsword_2h_dullahan"), ) ), (Werewolf, Male): ( @@ -323,10 +284,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), ) ), (Werewolf, Female): ( @@ -353,10 +310,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), ) ), (Occultsaurok, Male): ( @@ -383,10 +336,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-3.0, -3.0, -4.0), - central: ("weapon.staff.firestaff_saurok"), ) ), (Occultsaurok, Female): ( @@ -413,10 +362,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-3.0, -3.0, -4.0), - central: ("weapon.staff.firestaff_saurok"), ) ), (Mightysaurok, Male): ( @@ -443,10 +388,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -4.0, -4.0), - central: ("weapon.sword.long_2h_saurok"), ) ), (Mightysaurok, Female): ( @@ -473,10 +414,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -4.0, -4.0), - central: ("weapon.sword.long_2h_saurok"), ) ), (Slysaurok, Male): ( @@ -503,10 +440,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -4.0, -16.5), - central: ("weapon.bow.longbow_saurok"), ) ), (Slysaurok, Female): ( @@ -533,10 +466,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -4.0, -16.5), - central: ("weapon.bow.longbow_saurok"), ) ), (Mindflayer, Male): ( @@ -563,10 +492,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.5, -3.5, -4.0), - central: ("weapon.staff.firestaff_mindflayer"), ) ), (Mindflayer, Female): ( @@ -593,10 +518,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.5, -3.5, -4.0), - central: ("weapon.staff.firestaff_mindflayer"), ) ), (Minotaur, Male): ( @@ -623,10 +544,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.5, -3.5, -4.0), - central: ("weapon.staff.firestaff_mindflayer"), ) ), (Minotaur, Female): ( @@ -653,10 +570,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.5, -3.5, -4.0), - central: ("weapon.staff.firestaff_mindflayer"), ) ), }) \ 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 51d7b8bc17..cf2759fb4c 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -1,19 +1,19 @@ ({ (Ogre, Male): ( shoulder_l: ( - offset: (-6.0, -3.5, -4.0), + offset: (-6.0, -3.5, -6.5), lateral: ("npc.ogre.male.shoulder_l"), ), shoulder_r: ( - offset: (-6.0, -4.5, -4.0), + offset: (-6.0, -4.5, -6.5), lateral: ("npc.ogre.male.shoulder_r"), ), hand_l: ( - offset: (-5.5, -3.5, -15.0), + offset: (-5.5, -3.5, -13.0), lateral: ("npc.ogre.male.hand_l"), ), hand_r: ( - offset: (-5.5, -3.5, -15.0), + offset: (-5.5, -3.5, -13.0), lateral: ("npc.ogre.male.hand_r"), ), leg_l: ( @@ -35,11 +35,11 @@ ), (Ogre, Female): ( shoulder_l: ( - offset: (-3.0, -3.0, -3.5), + offset: (-3.0, -3.0, -5.5), lateral: ("npc.ogre.female.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -3.0, -3.5), + offset: (-3.0, -3.0, -5.5), lateral: ("npc.ogre.female.shoulder_r"), ), hand_l: ( @@ -69,19 +69,19 @@ ), (Cyclops, Male): ( shoulder_l: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -7.0), lateral: ("npc.cyclops.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -7.0), lateral: ("npc.cyclops.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -3.5, -14.0), + offset: (-3.5, -3.5, -12.0), lateral: ("npc.cyclops.male.hand_l"), ), hand_r: ( - offset: (-3.5, -3.5, -14.0), + offset: (-3.5, -3.5, -12.0), lateral: ("npc.cyclops.male.hand_r"), ), leg_l: ( @@ -103,19 +103,19 @@ ), (Cyclops, Female): ( shoulder_l: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -7.0), lateral: ("npc.cyclops.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -7.0), lateral: ("npc.cyclops.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -3.5, -14.0), + offset: (-3.5, -3.5, -12.0), lateral: ("npc.cyclops.male.hand_l"), ), hand_r: ( - offset: (-3.5, -3.5, -14.0), + offset: (-3.5, -3.5, -12.0), lateral: ("npc.cyclops.male.hand_r"), ), leg_l: ( @@ -137,19 +137,19 @@ ), (Wendigo, Male): ( shoulder_l: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -8.5), lateral: ("npc.wendigo.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -8.5), lateral: ("npc.wendigo.male.shoulder_r"), ), hand_l: ( - offset: (-4.0, -3.5, -18.0), + offset: (-4.0, -3.5, -15.0), lateral: ("npc.wendigo.male.hand_l"), ), hand_r: ( - offset: (-4.0, -3.5, -18.0), + offset: (-4.0, -3.5, -15.0), lateral: ("npc.wendigo.male.hand_r"), ), leg_l: ( @@ -171,19 +171,19 @@ ), (Wendigo, Female): ( shoulder_l: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -8.5), lateral: ("npc.wendigo.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -8.5), lateral: ("npc.wendigo.male.shoulder_r"), ), hand_l: ( - offset: (-4.0, -3.5, -18.0), + offset: (-4.0, -3.5, -15.0), lateral: ("npc.wendigo.male.hand_l"), ), hand_r: ( - offset: (-4.0, -3.5, -18.0), + offset: (-4.0, -3.5, -15.0), lateral: ("npc.wendigo.male.hand_r"), ), leg_l: ( @@ -205,19 +205,19 @@ ), (Troll, Male): ( shoulder_l: ( - offset: (-5.0, -4.5, -7.0), + offset: (-5.0, -4.5, -11.0), lateral: ("npc.troll.male.shoulder_l"), ), shoulder_r: ( - offset: (-5.0, -4.5, -7.0), + offset: (-5.0, -4.5, -11.0), lateral: ("npc.troll.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -4.0, -15.0), + offset: (-3.5, -4.0, -12.0), lateral: ("npc.troll.male.hand_l"), ), hand_r: ( - offset: (-3.5, -4.0, -15.0), + offset: (-3.5, -4.0, -12.0), lateral: ("npc.troll.male.hand_r"), ), leg_l: ( @@ -239,19 +239,19 @@ ), (Troll, Female): ( shoulder_l: ( - offset: (-5.0, -4.5, -7.0), + offset: (-5.0, -4.5, -11.0), lateral: ("npc.troll.male.shoulder_l"), ), shoulder_r: ( - offset: (-5.0, -4.5, -7.0), + offset: (-5.0, -4.5, -11.0), lateral: ("npc.troll.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -4.0, -15.0), + offset: (-3.5, -4.0, -12.0), lateral: ("npc.troll.male.hand_l"), ), hand_r: ( - offset: (-3.5, -4.0, -15.0), + offset: (-3.5, -4.0, -12.0), lateral: ("npc.troll.male.hand_r"), ), leg_l: ( @@ -409,11 +409,11 @@ ), (Occultsaurok, Male): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_occult.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_occult.male.shoulder_r"), ), hand_l: ( @@ -425,29 +425,29 @@ lateral: ("npc.saurok_occult.male.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_occult.male.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_occult.male.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_occult.male.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_occult.male.foot_r"), ), ), (Occultsaurok, Female): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_occult.female.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_occult.female.shoulder_r"), ), hand_l: ( @@ -459,29 +459,29 @@ lateral: ("npc.saurok_occult.female.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_occult.female.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_occult.female.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_occult.female.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_occult.female.foot_r"), ), ), (Mightysaurok, Male): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_mighty.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_mighty.male.shoulder_r"), ), hand_l: ( @@ -493,29 +493,29 @@ lateral: ("npc.saurok_mighty.male.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_mighty.male.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_mighty.male.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_mighty.male.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_mighty.male.foot_r"), ), ), (Mightysaurok, Female): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_mighty.female.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_mighty.female.shoulder_r"), ), hand_l: ( @@ -527,29 +527,29 @@ lateral: ("npc.saurok_mighty.female.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_mighty.female.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_mighty.female.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_mighty.female.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_mighty.female.foot_r"), ), ), (Slysaurok, Male): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_sly.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_sly.male.shoulder_r"), ), hand_l: ( @@ -561,29 +561,29 @@ lateral: ("npc.saurok_sly.male.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_sly.male.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_sly.male.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_sly.male.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_sly.male.foot_r"), ), ), (Slysaurok, Female): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_sly.female.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_sly.female.shoulder_r"), ), hand_l: ( @@ -595,19 +595,19 @@ lateral: ("npc.saurok_sly.female.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_sly.female.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_sly.female.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_sly.female.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_sly.female.foot_r"), ), ), @@ -681,11 +681,11 @@ ), (Minotaur, Male): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -7.5), lateral: ("npc.minotaur.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -7.5), lateral: ("npc.minotaur.male.shoulder_r"), ), hand_l: ( @@ -715,11 +715,11 @@ ), (Minotaur, Female): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -7.5), lateral: ("npc.minotaur.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -7.5), lateral: ("npc.minotaur.male.shoulder_r"), ), hand_l: ( diff --git a/assets/voxygen/voxel/biped_large_weapon_manifest.ron b/assets/voxygen/voxel/biped_large_weapon_manifest.ron new file mode 100644 index 0000000000..8f1c4bf46a --- /dev/null +++ b/assets/voxygen/voxel/biped_large_weapon_manifest.ron @@ -0,0 +1,42 @@ +({ + "common.items.npc_weapons.hammer.ogre_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_ogre", (-5.0, -5.5, -7.0)), + color: None + ), + "common.items.npc_weapons.staff.ogre_staff": ( + vox_spec: ("weapon.staff.firestaff_ogre", (-2.5, -5.5, -6.0)), + color: None + ), + "common.items.npc_weapons.hammer.cyclops_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_cyclops-0", (-5.0, -6.5, -7.0)), + color: None + ), + "common.items.npc_weapons.hammer.troll_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_troll", (-4.0, -6.0, -7.0)), + color: None + ), + "common.items.npc_weapons.sword.dullahan_sword": ( + vox_spec: ("weapon.sword.greatsword_2h_dullahan", (-1.5, -9.0, -10.0)), + color: None + ), + "common.items.npc_weapons.staff.saurok_staff": ( + vox_spec: ("weapon.staff.firestaff_saurok", (-3.0, -3.0, -6.0)), + color: None + ), + "common.items.npc_weapons.sword.saurok_sword": ( + vox_spec: ("weapon.sword.long_2h_saurok", (-1.5, -4.0, -5.0)), + color: None + ), + "common.items.npc_weapons.bow.saurok_bow": ( + vox_spec: ("weapon.bow.longbow_saurok", (-1.5, -4.0, -16.5)), + color: None + ), + "common.items.npc_weapons.staff.mindflayer_staff": ( + vox_spec: ("weapon.staff.firestaff_mindflayer", (-5.5, -3.5, -8.0)), + color: None + ), + "common.items.npc_weapons.unique.beast_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), +}) diff --git a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron index 2147d9d4e4..dc2287da5f 100644 --- a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron @@ -10,7 +10,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -4.0), - lateral: ("npc.duck.male.leg_l"), + lateral: ("npc.duck.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -4.0), @@ -28,7 +28,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -4.0), - lateral: ("npc.duck.female.leg_l"), + lateral: ("npc.duck.female.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -4.0), @@ -46,7 +46,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -4.0), - lateral: ("npc.chicken.male.leg_l"), + lateral: ("npc.chicken.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -4.0), @@ -64,7 +64,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -4.0), - lateral: ("npc.chicken.female.leg_l"), + lateral: ("npc.chicken.female.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -4.0), @@ -82,7 +82,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.goose.male.leg_l"), + lateral: ("npc.goose.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), @@ -100,7 +100,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.goose.male.leg_l"), + lateral: ("npc.goose.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), @@ -110,7 +110,7 @@ (Peacock, Male): ( wing_l: ( offset: (-1.0, -3.5, -5.0), - lateral: ("npc.peacock.male.wing_l"), + lateral: ("npc.peacock.male.wing_r"), ), wing_r: ( offset: (-1.0, -3.5, -5.0), @@ -118,7 +118,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -8.0), - lateral: ("npc.peacock.male.leg_l"), + lateral: ("npc.peacock.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -8.0), @@ -128,7 +128,7 @@ (Peacock, Female): ( wing_l: ( offset: (-1.0, -3.5, -5.0), - lateral: ("npc.peacock.female.wing_l"), + lateral: ("npc.peacock.female.wing_r"), ), wing_r: ( offset: (-1.0, -3.5, -5.0), @@ -136,7 +136,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -8.0), - lateral: ("npc.peacock.female.leg_l"), + lateral: ("npc.peacock.female.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -8.0), @@ -146,7 +146,7 @@ (Eagle, Male): ( wing_l: ( offset: (-1.0, -3.5, -12.0), - lateral: ("npc.eagle.male.wing_l"), + lateral: ("npc.eagle.male.wing_r"), ), wing_r: ( offset: (-1.0, -3.5, -12.0), @@ -154,7 +154,7 @@ ), foot_l: ( offset: (-1.5, 0.0, -8.0), - lateral: ("npc.eagle.male.leg_l"), + lateral: ("npc.eagle.male.leg_r"), ), foot_r: ( offset: (-1.5, 0.0, -8.0), @@ -164,7 +164,7 @@ (Eagle, Female): ( wing_l: ( offset: (-1.0, -3.5, -12.0), - lateral: ("npc.eagle.male.wing_l"), + lateral: ("npc.eagle.male.wing_r"), ), wing_r: ( offset: (-1.0, -3.5, -12.0), @@ -172,7 +172,7 @@ ), foot_l: ( offset: (-1.5, 0.0, -8.0), - lateral: ("npc.eagle.male.leg_l"), + lateral: ("npc.eagle.male.leg_r"), ), foot_r: ( offset: (-1.5, 0.0, -8.0), @@ -182,7 +182,7 @@ (Owl, Male): ( wing_l: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.owl.male.wing_l"), + lateral: ("npc.owl.male.wing_r"), ), wing_r: ( offset: (-1.0, -2.5, -8.0), @@ -190,7 +190,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.owl.male.leg_l"), + lateral: ("npc.owl.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), @@ -200,7 +200,7 @@ (Owl, Female): ( wing_l: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.owl.female.wing_l"), + lateral: ("npc.owl.female.wing_r"), ), wing_r: ( offset: (-1.0, -2.5, -8.0), @@ -208,7 +208,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.owl.female.leg_l"), + lateral: ("npc.owl.female.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), @@ -226,7 +226,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -3.0), - lateral: ("npc.parrot.male.leg_l"), + lateral: ("npc.parrot.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -3.0), @@ -244,7 +244,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -3.0), - lateral: ("npc.parrot.male.leg_l"), + lateral: ("npc.parrot.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -3.0), @@ -254,7 +254,7 @@ (Cockatrice, Male): ( wing_l: ( offset: (-2.0, -3.0, -9.0), - lateral: ("npc.cockatrice.male.wing_l"), + lateral: ("npc.cockatrice.male.wing_r"), ), wing_r: ( offset: (-2.0, -3.0, -9.0), @@ -262,7 +262,7 @@ ), foot_l: ( offset: (-2.5, 0.0, -12.0), - lateral: ("npc.cockatrice.male.leg_l"), + lateral: ("npc.cockatrice.male.leg_r"), ), foot_r: ( offset: (-2.5, 0.0, -12.0), @@ -272,7 +272,7 @@ (Cockatrice, Female): ( wing_l: ( offset: (-2.0, -3.0, -9.0), - lateral: ("npc.cockatrice.male.wing_l"), + lateral: ("npc.cockatrice.male.wing_r"), ), wing_r: ( offset: (-2.0, -3.0, -9.0), @@ -280,7 +280,7 @@ ), foot_l: ( offset: (-2.5, 0.0, -12.0), - lateral: ("npc.cockatrice.male.leg_l"), + lateral: ("npc.cockatrice.male.leg_r"), ), foot_r: ( offset: (-2.5, 0.0, -12.0), diff --git a/assets/voxygen/voxel/fish_medium_lateral_manifest.ron b/assets/voxygen/voxel/fish_medium_lateral_manifest.ron index cd6184b305..4d8bfcbdab 100644 --- a/assets/voxygen/voxel/fish_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/fish_medium_lateral_manifest.ron @@ -2,7 +2,7 @@ (Marlin, Male): ( fin_l: ( offset: (-3.0, -5.0, -4.0), - lateral: ("npc.marlin.male.fin_l"), + lateral: ("npc.marlin.male.fin_r"), ), fin_r: ( offset: (0.0, -5.0, -4.0), @@ -12,7 +12,7 @@ (Marlin, Female): ( fin_l: ( offset: (-3.0, -5.0, -4.0), - lateral: ("npc.marlin.male.fin_l"), + lateral: ("npc.marlin.male.fin_r"), ), fin_r: ( offset: (0.0, -5.0, -4.0), diff --git a/assets/voxygen/voxel/fish_small_lateral_manifest.ron b/assets/voxygen/voxel/fish_small_lateral_manifest.ron index 55415f9a5d..40f3db28b4 100644 --- a/assets/voxygen/voxel/fish_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/fish_small_lateral_manifest.ron @@ -2,7 +2,7 @@ (Clownfish, Male): ( fin_l: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_l"), + lateral: ("npc.clownfish.male.fin_r"), ), fin_r: ( offset: (-0.5, -3.0, -4.0), @@ -12,7 +12,7 @@ (Clownfish, Female): ( fin_l: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_l"), + lateral: ("npc.clownfish.male.fin_r"), ), fin_r: ( offset: (-0.5, -3.0, -4.0), diff --git a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron index c7251d3ee7..109a2e2b0b 100644 --- a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron @@ -60,6 +60,10 @@ vox_spec: ("armor.belt.steel-0", (-5.0, -4.5, 2.0)), color: None ), + "PlateLeather": ( + vox_spec: ("armor.belt.plate_leather-0", (-4.0, -4.5, 2.0)), + color: None + ), "Druid": ( vox_spec: ("armor.belt.druid", (-4.0, -3.5, -1.0)), color: None diff --git a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron index 786d64cb9d..69cbd6a837 100644 --- a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron @@ -135,7 +135,11 @@ color: Some((57, 81, 132)) ), "Steel0": ( - vox_spec: ("armor.chest.steel-0", (-8.0, -4.5, 2.0)), + vox_spec: ("armor.chest.steel-0", (-5.0, -4.5, 2.0)), + color: None + ), + "PlateLeather": ( + vox_spec: ("armor.chest.plate_leather", (-8.0, -5.5, 2.0)), color: None ), "Leather2": ( diff --git a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron index 0e86f2f0d8..86ff26fb20 100644 --- a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron @@ -48,6 +48,10 @@ vox_spec: ("armor.foot.steel-0", (-2.5, -3.5, -2.0)), color: None ), + "PlateLeather": ( + vox_spec: ("armor.foot.plate_leather", (-2.5, -3.5, -2.0)), + color: None + ), "Leather2": ( vox_spec: ("armor.foot.leather-2", (-2.5, -3.5, -2.0)), color: None diff --git a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron index 32503f4e36..4fe3176e98 100644 --- a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron @@ -110,6 +110,16 @@ color: None ) ), + "PlateLeather": ( + left: ( + vox_spec: ("armor.hand.plate_leather_left-0", (-1.5, -1.5, -2.5)), + color: None + ), + right: ( + vox_spec: ("armor.hand.plate_leather_right-0", (-1.5, -1.5, -2.5)), + color: None + ) + ), "Leather2": ( left: ( vox_spec: ("armor.hand.leather_left-2", (-1.5, -1.5, -2.5)), diff --git a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron index 81e6991489..6e42a21601 100644 --- a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron @@ -72,6 +72,10 @@ vox_spec: ("armor.pants.steel-0", (-6.0, -4.5, 1.0)), color: None ), + "PlateLeather": ( + vox_spec: ("armor.pants.plate_leather-0", (-5.0, -4.5, 1.0)), + color: None + ), "Leather2": ( vox_spec: ("armor.pants.leather-2", (-5.0, -3.5, 1.0)), color: None diff --git a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron index fd8ce1ab32..9a394e488c 100644 --- a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron @@ -131,6 +131,16 @@ color: None ) ), + "PlateLeather": ( + left: ( + vox_spec: ("armor.shoulder.plate_leather_left-0", (-4.0, -4.5 , 0.0)), + color: None + ), + right: ( + vox_spec: ("armor.shoulder.plate_leather_right-0", (-0.9, -4.5, 0.0)), + color: None + ) + ), "Leather2": ( left: ( vox_spec: ("armor.shoulder.leather_left-2", (-5.0, -3.8, -0.9)), diff --git a/assets/voxygen/voxel/npc/alligator/male/foot_bl.vox b/assets/voxygen/voxel/npc/alligator/male/foot_bl.vox deleted file mode 100644 index a673df88b3..0000000000 --- a/assets/voxygen/voxel/npc/alligator/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:95c9ab892899acebcad8b556c1e11da6d869faaac582e464bf41473341f2b34a -size 1340 diff --git a/assets/voxygen/voxel/npc/alligator/male/foot_fl.vox b/assets/voxygen/voxel/npc/alligator/male/foot_fl.vox deleted file mode 100644 index 5ecb3871c8..0000000000 --- a/assets/voxygen/voxel/npc/alligator/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8b654d8bfc43da2b0a5391ebbe2bc3ab076098f75401bb0baaeafcc1aed5dc9 -size 1300 diff --git a/assets/voxygen/voxel/npc/archaeos/male/foot_l.vox b/assets/voxygen/voxel/npc/archaeos/male/foot_l.vox deleted file mode 100644 index 03a9710acd..0000000000 --- a/assets/voxygen/voxel/npc/archaeos/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:00268caa63742ad6b6ecec52881a67bf1efc4cb914d0f95e3e42610b25a71685 -size 2204 diff --git a/assets/voxygen/voxel/npc/archaeos/male/hand_l.vox b/assets/voxygen/voxel/npc/archaeos/male/hand_l.vox deleted file mode 100644 index 1151e23ba6..0000000000 --- a/assets/voxygen/voxel/npc/archaeos/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db3c129d96bf431c65c7e8f3ac4049c82682a630806a616ba57f7d844f355a7a -size 1316 diff --git a/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox b/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox deleted file mode 100644 index bc82319cbb..0000000000 --- a/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eb4161119dbb651beefd80d1baa3f4d293970c30605999380786f771b74c406d -size 2540 diff --git a/assets/voxygen/voxel/npc/asp/male/foot_bl.vox b/assets/voxygen/voxel/npc/asp/male/foot_bl.vox deleted file mode 100644 index 5985364b69..0000000000 --- a/assets/voxygen/voxel/npc/asp/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:efb25b8b4f016dd0cb7745e77de63848cfc991eb6bde5ea25099f6ad44d64b2b -size 1348 diff --git a/assets/voxygen/voxel/npc/asp/male/foot_fl.vox b/assets/voxygen/voxel/npc/asp/male/foot_fl.vox deleted file mode 100644 index 893ee4aa13..0000000000 --- a/assets/voxygen/voxel/npc/asp/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5cb88a6ed2484b2e3e6fce6a6c1d2e362870e2b068039b3df4bb7b3264e0dd93 -size 1344 diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox deleted file mode 100644 index 24830ba05d..0000000000 --- a/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0a06dd06be133f1b79f2ea03a28219ab58de825c3206e87b55dead31aca9d819 -size 1144 diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox deleted file mode 100644 index ae9e61784e..0000000000 --- a/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:41232e14058833068511c1a10c79696fe922c379b818544e22ed260d753b4f31 -size 1144 diff --git a/assets/voxygen/voxel/npc/basilisk/male/foot_bl.vox b/assets/voxygen/voxel/npc/basilisk/male/foot_bl.vox deleted file mode 100644 index bc87d80914..0000000000 --- a/assets/voxygen/voxel/npc/basilisk/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:39b32c142cb3e6d3dc186fd9f95338c5b4f24ff471a0231dee87da6eacee9bc3 -size 2920 diff --git a/assets/voxygen/voxel/npc/basilisk/male/foot_fl.vox b/assets/voxygen/voxel/npc/basilisk/male/foot_fl.vox deleted file mode 100644 index 5cff2571c2..0000000000 --- a/assets/voxygen/voxel/npc/basilisk/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a109cb737e4bb7bca5f1e1c3567e77dd592206a48cdaddbf3dbe9b6dddef598 -size 3088 diff --git a/assets/voxygen/voxel/npc/batfox/male/foot_bl.vox b/assets/voxygen/voxel/npc/batfox/male/foot_bl.vox deleted file mode 100644 index 8616e9ea18..0000000000 --- a/assets/voxygen/voxel/npc/batfox/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:40e3801e2ed880743b36dc9d4d5ff3ed74a3473cbfa7fc3b9064aa09d9f690eb -size 1216 diff --git a/assets/voxygen/voxel/npc/batfox/male/foot_fl.vox b/assets/voxygen/voxel/npc/batfox/male/foot_fl.vox deleted file mode 100644 index af85963dab..0000000000 --- a/assets/voxygen/voxel/npc/batfox/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7e40fc893b8588a905ac7b57702fa93a34ca13895395ce5810c3a697f90eb46f -size 1204 diff --git a/assets/voxygen/voxel/npc/beaver/male/foot_bl.vox b/assets/voxygen/voxel/npc/beaver/male/foot_bl.vox deleted file mode 100644 index 3a87ce60eb..0000000000 --- a/assets/voxygen/voxel/npc/beaver/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0396d67d40f031393caf6f74784aa8b53edd465012c64a4bc589cc0925fd3297 -size 1356 diff --git a/assets/voxygen/voxel/npc/beaver/male/foot_fl.vox b/assets/voxygen/voxel/npc/beaver/male/foot_fl.vox deleted file mode 100644 index c848036f75..0000000000 --- a/assets/voxygen/voxel/npc/beaver/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de2ae142495e09cb599f9cd97c2be908931c126e5e4aa09a96266d66dda8dddd -size 1216 diff --git a/assets/voxygen/voxel/npc/boar/female/foot_bl.vox b/assets/voxygen/voxel/npc/boar/female/foot_bl.vox deleted file mode 100644 index 17e883e386..0000000000 --- a/assets/voxygen/voxel/npc/boar/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ec159e28721d8a809abb35ecf9e951475014c92a5db7ccb8709f430dd4aef04 -size 1296 diff --git a/assets/voxygen/voxel/npc/boar/female/foot_fl.vox b/assets/voxygen/voxel/npc/boar/female/foot_fl.vox deleted file mode 100644 index 6fd4869d46..0000000000 --- a/assets/voxygen/voxel/npc/boar/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e74af40426a02e80f4d30e64619a20aaef3da687f6f14febb65c8be19928dace -size 1316 diff --git a/assets/voxygen/voxel/npc/boar/male/foot_bl.vox b/assets/voxygen/voxel/npc/boar/male/foot_bl.vox deleted file mode 100644 index 4bcb1c9453..0000000000 --- a/assets/voxygen/voxel/npc/boar/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ec7c85de24d042fe7985f0fe4946f3c076aa82ebcc47b597950811341c125391 -size 1296 diff --git a/assets/voxygen/voxel/npc/boar/male/foot_fl.vox b/assets/voxygen/voxel/npc/boar/male/foot_fl.vox deleted file mode 100644 index 9469a8ebf1..0000000000 --- a/assets/voxygen/voxel/npc/boar/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff819f1f4863b460c58025f781f32dfb76188350c3453450054d9ba8b6adf267 -size 1316 diff --git a/assets/voxygen/voxel/npc/cat/female/foot_bl.vox b/assets/voxygen/voxel/npc/cat/female/foot_bl.vox deleted file mode 100644 index 44e50cc23e..0000000000 --- a/assets/voxygen/voxel/npc/cat/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f83dd059cdc963ecb6f6407132e94c2646a7bdd288bd389c5b4e224f726c8a43 -size 1184 diff --git a/assets/voxygen/voxel/npc/cat/female/foot_fl.vox b/assets/voxygen/voxel/npc/cat/female/foot_fl.vox deleted file mode 100644 index 78423aab90..0000000000 --- a/assets/voxygen/voxel/npc/cat/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ee9dc8c6473c45da834a8e0ff47adc4f7d6da16f015b0f41c04042e9ab642f2 -size 1172 diff --git a/assets/voxygen/voxel/npc/cat/male/foot_bl.vox b/assets/voxygen/voxel/npc/cat/male/foot_bl.vox deleted file mode 100644 index 782b6f7783..0000000000 --- a/assets/voxygen/voxel/npc/cat/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:59b28e2f43072929871ab8117dbb6a215bafd10925fc7326180aac9c8d54264f -size 1184 diff --git a/assets/voxygen/voxel/npc/cat/male/foot_fl.vox b/assets/voxygen/voxel/npc/cat/male/foot_fl.vox deleted file mode 100644 index 9661ebb608..0000000000 --- a/assets/voxygen/voxel/npc/cat/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de06e552c49af6f98e69ddab1a602cffe3e9d7fc324fd6d402462f8c834e5b2b -size 1172 diff --git a/assets/voxygen/voxel/npc/chicken/female/leg_l.vox b/assets/voxygen/voxel/npc/chicken/female/leg_l.vox deleted file mode 100644 index f3f3f92eaf..0000000000 --- a/assets/voxygen/voxel/npc/chicken/female/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:af7c4dee1203ed93f41878122df5b8206fec38fc65898b3a52b4d1762431e13d -size 1128 diff --git a/assets/voxygen/voxel/npc/chicken/male/leg_l.vox b/assets/voxygen/voxel/npc/chicken/male/leg_l.vox deleted file mode 100644 index 070a3ca5ff..0000000000 --- a/assets/voxygen/voxel/npc/chicken/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c9b67581e39726b4632bcf5e505571ba4891c7b90ead0c0b01e1020985fb002c -size 1128 diff --git a/assets/voxygen/voxel/npc/clownfish/male/fin_l.vox b/assets/voxygen/voxel/npc/clownfish/male/fin_l.vox deleted file mode 100644 index fbab630e4f..0000000000 --- a/assets/voxygen/voxel/npc/clownfish/male/fin_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e07ac13b045455fa6a13115b0de82884d9475b39a8ac450a0e4e51c663fa4e5 -size 1132 diff --git a/assets/voxygen/voxel/npc/cockatrice/male/leg_l.vox b/assets/voxygen/voxel/npc/cockatrice/male/leg_l.vox deleted file mode 100644 index 359c82e0a5..0000000000 --- a/assets/voxygen/voxel/npc/cockatrice/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:957eac8c94bb878c3f6cea3a199991b4997a8caacb407ba081da834150ef1d25 -size 1364 diff --git a/assets/voxygen/voxel/npc/cockatrice/male/wing_l.vox b/assets/voxygen/voxel/npc/cockatrice/male/wing_l.vox deleted file mode 100644 index 02ab02c2d1..0000000000 --- a/assets/voxygen/voxel/npc/cockatrice/male/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9827918d715cbf23b4f3441905243ed196d917d83a92a6946d2100243e694d15 -size 1212 diff --git a/assets/voxygen/voxel/npc/crocodile/male/foot_bl.vox b/assets/voxygen/voxel/npc/crocodile/male/foot_bl.vox deleted file mode 100644 index f9c1721bc4..0000000000 --- a/assets/voxygen/voxel/npc/crocodile/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:917089da6960ed0bf3f440e7be7fb3ca68e58f027b6416b459b7dbd5ac915b4c -size 1340 diff --git a/assets/voxygen/voxel/npc/crocodile/male/foot_fl.vox b/assets/voxygen/voxel/npc/crocodile/male/foot_fl.vox deleted file mode 100644 index 88e49d7a60..0000000000 --- a/assets/voxygen/voxel/npc/crocodile/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:313fa9dd8128e594d51406ae59ad6c7d03c231e3c63a002422e4376d810740db -size 1300 diff --git a/assets/voxygen/voxel/npc/crow/wing_l.vox b/assets/voxygen/voxel/npc/crow/wing_l.vox deleted file mode 100644 index 757d9ba333..0000000000 --- a/assets/voxygen/voxel/npc/crow/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1f5e5670531fabc51dc1f5578c555ee96b2ec19b71df51b662685ed92935ccc2 -size 1292 diff --git a/assets/voxygen/voxel/npc/dodarock/male/foot_bl.vox b/assets/voxygen/voxel/npc/dodarock/male/foot_bl.vox deleted file mode 100644 index ec14d2c0bd..0000000000 --- a/assets/voxygen/voxel/npc/dodarock/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d07af60b66655a4cb072e4e3d6b5ee06b527e69ccac0378e15d4fb1ada5cf119 -size 1252 diff --git a/assets/voxygen/voxel/npc/dodarock/male/foot_fl.vox b/assets/voxygen/voxel/npc/dodarock/male/foot_fl.vox deleted file mode 100644 index 4373de546c..0000000000 --- a/assets/voxygen/voxel/npc/dodarock/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f53eb4d341d318dbfd903e37cff5b6893eb3b79619665b8447f7120b8c98170f -size 1552 diff --git a/assets/voxygen/voxel/npc/dog/female/foot_bl.vox b/assets/voxygen/voxel/npc/dog/female/foot_bl.vox deleted file mode 100644 index 060f51feef..0000000000 --- a/assets/voxygen/voxel/npc/dog/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3b6b9a69bbcba3c706b99262d04ddedb1df649efede847d0b8712552539c49df -size 1300 diff --git a/assets/voxygen/voxel/npc/dog/female/foot_fl.vox b/assets/voxygen/voxel/npc/dog/female/foot_fl.vox deleted file mode 100644 index e0631c3513..0000000000 --- a/assets/voxygen/voxel/npc/dog/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1cf17480e4774a864fd7fb73145a3e59d8fe9cf4646d0ed398d62510129d7f5b -size 1228 diff --git a/assets/voxygen/voxel/npc/dog/male/foot_bl.vox b/assets/voxygen/voxel/npc/dog/male/foot_bl.vox deleted file mode 100644 index ade5f135bc..0000000000 --- a/assets/voxygen/voxel/npc/dog/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d75a171bdb543ffa662929d44071e8bb4846aabd703e04dbddc3b16894857ef1 -size 1300 diff --git a/assets/voxygen/voxel/npc/dog/male/foot_fl.vox b/assets/voxygen/voxel/npc/dog/male/foot_fl.vox deleted file mode 100644 index fa8ba881ce..0000000000 --- a/assets/voxygen/voxel/npc/dog/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:15792830a47d95a14c528debc3ef1f471907933aa5eb422c94b937d3818e4492 -size 1228 diff --git a/assets/voxygen/voxel/npc/duck/female/leg_l.vox b/assets/voxygen/voxel/npc/duck/female/leg_l.vox deleted file mode 100644 index 3fb63af787..0000000000 --- a/assets/voxygen/voxel/npc/duck/female/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b86bdb9f386d7ec40fecc6f3877282c3f8e6a4e84454d5c9eb54228bea45f5ba -size 1128 diff --git a/assets/voxygen/voxel/npc/duck/male/leg_l.vox b/assets/voxygen/voxel/npc/duck/male/leg_l.vox deleted file mode 100644 index 3fb63af787..0000000000 --- a/assets/voxygen/voxel/npc/duck/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b86bdb9f386d7ec40fecc6f3877282c3f8e6a4e84454d5c9eb54228bea45f5ba -size 1128 diff --git a/assets/voxygen/voxel/npc/eagle/male/leg_l.vox b/assets/voxygen/voxel/npc/eagle/male/leg_l.vox deleted file mode 100644 index 75b733724e..0000000000 --- a/assets/voxygen/voxel/npc/eagle/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e9418f1a58d17a4a94603c0bae688969a6d23fdd72671de7cb7ebc45c25d1aa -size 1184 diff --git a/assets/voxygen/voxel/npc/eagle/male/wing_l.vox b/assets/voxygen/voxel/npc/eagle/male/wing_l.vox deleted file mode 100644 index ee5cf52c55..0000000000 --- a/assets/voxygen/voxel/npc/eagle/male/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:027480e91a012c37628a576c32156e8e64e3b9e8ad6cb3a3b800810d2ce4f69d -size 1532 diff --git a/assets/voxygen/voxel/npc/fox/female/foot_bl.vox b/assets/voxygen/voxel/npc/fox/female/foot_bl.vox deleted file mode 100644 index 46ddc26f3f..0000000000 --- a/assets/voxygen/voxel/npc/fox/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:faececdab6b18288de2aa1107bc49d63be715f89c5c8392b8155e7a3a44d4dae -size 1216 diff --git a/assets/voxygen/voxel/npc/fox/female/foot_fl.vox b/assets/voxygen/voxel/npc/fox/female/foot_fl.vox deleted file mode 100644 index 31a87141f4..0000000000 --- a/assets/voxygen/voxel/npc/fox/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f303cff97d0131704eb2d009df7d0fdeed1c72a96475d86048546b7350510164 -size 1208 diff --git a/assets/voxygen/voxel/npc/fox/male/foot_bl.vox b/assets/voxygen/voxel/npc/fox/male/foot_bl.vox deleted file mode 100644 index 4808f939d6..0000000000 --- a/assets/voxygen/voxel/npc/fox/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7811991f5addd3fb91d2d75cc644510a8e73e692c86edf1d245527a710b15ba6 -size 1216 diff --git a/assets/voxygen/voxel/npc/fox/male/foot_fl.vox b/assets/voxygen/voxel/npc/fox/male/foot_fl.vox deleted file mode 100644 index 7e2971bb93..0000000000 --- a/assets/voxygen/voxel/npc/fox/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bc8993716402a56f5dda9eedb6506ac3c878c835e6004738cf6580f6046d4115 -size 1208 diff --git a/assets/voxygen/voxel/npc/frog/male/foot_bl.vox b/assets/voxygen/voxel/npc/frog/male/foot_bl.vox deleted file mode 100644 index 6a71af4f1b..0000000000 --- a/assets/voxygen/voxel/npc/frog/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:73639cb81b4346ed81cbec74e463271b908b8d4cf64ff460f96cd4a56e97fb67 -size 1240 diff --git a/assets/voxygen/voxel/npc/frog/male/foot_fl.vox b/assets/voxygen/voxel/npc/frog/male/foot_fl.vox deleted file mode 100644 index 33e9134b53..0000000000 --- a/assets/voxygen/voxel/npc/frog/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:55c7a3fb00a34206552249f6bdc6f5caf9ae441545769de9a1952eb2dabc42ba -size 1164 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox b/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox deleted file mode 100644 index e5db739148..0000000000 --- a/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45c80e397249aa2b0518ee53f3edee8a37e888e549d56f0666b6ad1f608f481b -size 1136 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox b/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox deleted file mode 100644 index e475b5f432..0000000000 --- a/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d4c3b9b5efe26218bc9931f28ae1cd616401e8813ee88bf64bb1f8d81c082932 -size 1140 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox b/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox deleted file mode 100644 index 52091c6ae9..0000000000 --- a/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f74d8f8c4c1d72a25001d915886250bf2a3b09d62c77f100c175c2fcb2586390 -size 1172 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox b/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox deleted file mode 100644 index e4cf0ff28f..0000000000 --- a/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4ec3ee19ab326fa7a0cd5e19ef3be23ac0237ba7c1eb7b2b16bbbdfc6ebaf840 -size 1168 diff --git a/assets/voxygen/voxel/npc/goose/male/leg_l.vox b/assets/voxygen/voxel/npc/goose/male/leg_l.vox deleted file mode 100644 index d55ea91e81..0000000000 --- a/assets/voxygen/voxel/npc/goose/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5279fc8f6bf609a2e454325e2d1bfd42f8ad957be849eace1115faef8e09bfc2 -size 1132 diff --git a/assets/voxygen/voxel/npc/hakulaq/male/foot_bl.vox b/assets/voxygen/voxel/npc/hakulaq/male/foot_bl.vox deleted file mode 100644 index b9fb3840fa..0000000000 --- a/assets/voxygen/voxel/npc/hakulaq/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:75ee37a8f57dc763ce4a375ea2ddc0122716af2d8b32fab8961f31df6f55aeb0 -size 1400 diff --git a/assets/voxygen/voxel/npc/hakulaq/male/foot_fl.vox b/assets/voxygen/voxel/npc/hakulaq/male/foot_fl.vox deleted file mode 100644 index c9240a3fd6..0000000000 --- a/assets/voxygen/voxel/npc/hakulaq/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a90241046cc4ff739a7aace0ec148acc0428c50d958b587109e4ca87ece66b1 -size 1472 diff --git a/assets/voxygen/voxel/npc/hare/female/foot_bl.vox b/assets/voxygen/voxel/npc/hare/female/foot_bl.vox deleted file mode 100644 index aadf5b1c70..0000000000 --- a/assets/voxygen/voxel/npc/hare/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce91255cbb001c56157a820c15733bd4491a6a6cfe4e9c4e2863703075b4d6ba -size 1272 diff --git a/assets/voxygen/voxel/npc/hare/female/foot_fl.vox b/assets/voxygen/voxel/npc/hare/female/foot_fl.vox deleted file mode 100644 index 0036f9bc42..0000000000 --- a/assets/voxygen/voxel/npc/hare/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20eae48674cc88c2c44574632e595b42c0b21d42610bc6044f6d33daf85a66da -size 1192 diff --git a/assets/voxygen/voxel/npc/hare/male/foot_bl.vox b/assets/voxygen/voxel/npc/hare/male/foot_bl.vox deleted file mode 100644 index 3bc3f8d873..0000000000 --- a/assets/voxygen/voxel/npc/hare/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79c0427fc0feebfcbd511e2fec8d44c41027337031462b197e2de24af9be654b -size 1332 diff --git a/assets/voxygen/voxel/npc/hare/male/foot_fl.vox b/assets/voxygen/voxel/npc/hare/male/foot_fl.vox deleted file mode 100644 index 2757f19bed..0000000000 --- a/assets/voxygen/voxel/npc/hare/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9bfd60c00e264ffbe53613c65190d61a13a972c19506b5ab159d6dceb1477d1c -size 1128 diff --git a/assets/voxygen/voxel/npc/holladon/male/foot_bl.vox b/assets/voxygen/voxel/npc/holladon/male/foot_bl.vox deleted file mode 100644 index 7874d827e4..0000000000 --- a/assets/voxygen/voxel/npc/holladon/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e4f0879993c621a3ca92436f9e996386cdf6a3124c3a543179a91f70f07c7441 -size 1200 diff --git a/assets/voxygen/voxel/npc/holladon/male/foot_fl.vox b/assets/voxygen/voxel/npc/holladon/male/foot_fl.vox deleted file mode 100644 index ad790ca7a8..0000000000 --- a/assets/voxygen/voxel/npc/holladon/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:afd75ceb7ef757f1ba0886a9227090a987a1c01a049e9293a204c7fa733833b7 -size 1248 diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox b/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox deleted file mode 100644 index 17acb920a7..0000000000 --- a/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ccaa64d65281b1781cb8aa16620c8196b9841d4cb3574b04403fb23c807b2509 -size 1272 diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox b/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox deleted file mode 100644 index 6c90343ea2..0000000000 --- a/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:435225bdb49373f5e45bddc13396b7f477b25599f2caac75886e3f9f00297eab -size 1284 diff --git a/assets/voxygen/voxel/npc/jackalope/male/foot_bl.vox b/assets/voxygen/voxel/npc/jackalope/male/foot_bl.vox deleted file mode 100644 index dae8b99501..0000000000 --- a/assets/voxygen/voxel/npc/jackalope/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20d8d1bb0baa44be27d956d2af8db5bba5c56b6e6a3c579b7f4283a310324015 -size 1272 diff --git a/assets/voxygen/voxel/npc/jackalope/male/foot_fl.vox b/assets/voxygen/voxel/npc/jackalope/male/foot_fl.vox deleted file mode 100644 index 952c180d2e..0000000000 --- a/assets/voxygen/voxel/npc/jackalope/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:89b051e86f59eccfc98d3808d89ec01d00c0a05f99e03879a6a9237bae72711d -size 1192 diff --git a/assets/voxygen/voxel/npc/lavadrake/male/foot_bl.vox b/assets/voxygen/voxel/npc/lavadrake/male/foot_bl.vox deleted file mode 100644 index 8c9ccb376e..0000000000 --- a/assets/voxygen/voxel/npc/lavadrake/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72c688fda5396ab81daab975daf0c3315b95e2b5ff035f938fa0896e2b4dc1bd -size 2284 diff --git a/assets/voxygen/voxel/npc/lavadrake/male/foot_fl.vox b/assets/voxygen/voxel/npc/lavadrake/male/foot_fl.vox deleted file mode 100644 index a2e38341e7..0000000000 --- a/assets/voxygen/voxel/npc/lavadrake/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:68f6ad2f0f9f865b05e02cf4dd150fe7110f636de1229b20b8dc84a728d436dc -size 2748 diff --git a/assets/voxygen/voxel/npc/maneater/male/foot_bl.vox b/assets/voxygen/voxel/npc/maneater/male/foot_bl.vox deleted file mode 100644 index 1e351d142f..0000000000 --- a/assets/voxygen/voxel/npc/maneater/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63f8b9c9811b7b1eaa5368793014431fb6bd329a6117c19646ccdf300dbd3b15 -size 1648 diff --git a/assets/voxygen/voxel/npc/maneater/male/foot_fl.vox b/assets/voxygen/voxel/npc/maneater/male/foot_fl.vox deleted file mode 100644 index 677939e776..0000000000 --- a/assets/voxygen/voxel/npc/maneater/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:37e29cbcc2ed259549c83ad0bfb2f55cb78c649eecc72e0e96f6c8789bd8fe3a -size 1648 diff --git a/assets/voxygen/voxel/npc/marlin/male/fin_l.vox b/assets/voxygen/voxel/npc/marlin/male/fin_l.vox deleted file mode 100644 index b1f8e28fb6..0000000000 --- a/assets/voxygen/voxel/npc/marlin/male/fin_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ba8060df483358747e137dbb17bcc04145e65c2330e65c60c4fc9273cc34917d -size 1152 diff --git a/assets/voxygen/voxel/npc/monitor/male/foot_bl.vox b/assets/voxygen/voxel/npc/monitor/male/foot_bl.vox deleted file mode 100644 index f93aa116dc..0000000000 --- a/assets/voxygen/voxel/npc/monitor/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5a97413b517c0c63072006ca80525ac5a3108b83afe9cf415f4eaa9c7c3705a6 -size 1260 diff --git a/assets/voxygen/voxel/npc/monitor/male/foot_fl.vox b/assets/voxygen/voxel/npc/monitor/male/foot_fl.vox deleted file mode 100644 index 63fd4936f5..0000000000 --- a/assets/voxygen/voxel/npc/monitor/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20eb9495a96fde3dffade4a43375ab42ac6fcfd107fb10b4173f07e4dc773d7b -size 1292 diff --git a/assets/voxygen/voxel/npc/odonto/male/foot_l.vox b/assets/voxygen/voxel/npc/odonto/male/foot_l.vox deleted file mode 100644 index 42189b7f0b..0000000000 --- a/assets/voxygen/voxel/npc/odonto/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4d7e3cab3f2a990ee083b02a292b972844e05124ace87575f72adc6b4c683fcf -size 2952 diff --git a/assets/voxygen/voxel/npc/odonto/male/hand_l.vox b/assets/voxygen/voxel/npc/odonto/male/hand_l.vox deleted file mode 100644 index 4f7f97380c..0000000000 --- a/assets/voxygen/voxel/npc/odonto/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6912093b51066d2c34c51fcb3db6ebd90f77090becb2c64e0ef9b1114084471e -size 1228 diff --git a/assets/voxygen/voxel/npc/odonto/male/leg_l.vox b/assets/voxygen/voxel/npc/odonto/male/leg_l.vox deleted file mode 100644 index 3e2578dbc3..0000000000 --- a/assets/voxygen/voxel/npc/odonto/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5bc3d9f3b008cf8ab7e32a0923a3744c3b7354ef8da305b7d21f6f40601e8d63 -size 2476 diff --git a/assets/voxygen/voxel/npc/owl/female/leg_l.vox b/assets/voxygen/voxel/npc/owl/female/leg_l.vox deleted file mode 100644 index 819fdc1206..0000000000 --- a/assets/voxygen/voxel/npc/owl/female/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7212dad002db2a10f2370b49d0ab07a5d6be884bd3136f9d4b0caa6af7dc3c76 -size 1196 diff --git a/assets/voxygen/voxel/npc/owl/female/wing_l.vox b/assets/voxygen/voxel/npc/owl/female/wing_l.vox deleted file mode 100644 index a57e7bcdd2..0000000000 --- a/assets/voxygen/voxel/npc/owl/female/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4da1b8df08ab2397b2689204cad3fc6137fcf0c2f830ef18323b0088859997c8 -size 1364 diff --git a/assets/voxygen/voxel/npc/owl/male/leg_l.vox b/assets/voxygen/voxel/npc/owl/male/leg_l.vox deleted file mode 100644 index cabeb0a0ed..0000000000 --- a/assets/voxygen/voxel/npc/owl/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d2efdd54f19e4467e781c3068ef3079f11cf7932076bb4f2d554044106e97bf1 -size 1196 diff --git a/assets/voxygen/voxel/npc/owl/male/wing_l.vox b/assets/voxygen/voxel/npc/owl/male/wing_l.vox deleted file mode 100644 index 353efa5c63..0000000000 --- a/assets/voxygen/voxel/npc/owl/male/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e52d0f4ede8e25c98eff9ce8692f44d466205faea7b01a11395eb31426ad914 -size 1360 diff --git a/assets/voxygen/voxel/npc/pangolin/male/foot_bl.vox b/assets/voxygen/voxel/npc/pangolin/male/foot_bl.vox deleted file mode 100644 index c681fcb79a..0000000000 --- a/assets/voxygen/voxel/npc/pangolin/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:23d913c7362393ce0e7a4f430fd3119e2c28382131fcfc414c980f0336a20a4b -size 1304 diff --git a/assets/voxygen/voxel/npc/pangolin/male/foot_fl.vox b/assets/voxygen/voxel/npc/pangolin/male/foot_fl.vox deleted file mode 100644 index bb5ea8f938..0000000000 --- a/assets/voxygen/voxel/npc/pangolin/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9866eca621da6b6ee3c90d57d3bdae7fca62d6660fea73ddb6414ab1ed1bac7f -size 1252 diff --git a/assets/voxygen/voxel/npc/parrot/male/leg_l.vox b/assets/voxygen/voxel/npc/parrot/male/leg_l.vox deleted file mode 100644 index 62494431ad..0000000000 --- a/assets/voxygen/voxel/npc/parrot/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f14c1d4f83db3461e7a77c53b632e05fbfd251c8683db7731107f190a1487362 -size 1116 diff --git a/assets/voxygen/voxel/npc/peacock/female/leg_l.vox b/assets/voxygen/voxel/npc/peacock/female/leg_l.vox deleted file mode 100644 index 197007765d..0000000000 --- a/assets/voxygen/voxel/npc/peacock/female/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65324a119fffd476420a60c1d93bc570536d86e219d2344bafe558d5a3e2d989 -size 1140 diff --git a/assets/voxygen/voxel/npc/peacock/female/wing_l.vox b/assets/voxygen/voxel/npc/peacock/female/wing_l.vox deleted file mode 100644 index 78e4854d28..0000000000 --- a/assets/voxygen/voxel/npc/peacock/female/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:26b84917a45068aca9c8cd63e435dc4f050ae9464e9553741c92758764baeabe -size 1236 diff --git a/assets/voxygen/voxel/npc/peacock/male/leg_l.vox b/assets/voxygen/voxel/npc/peacock/male/leg_l.vox deleted file mode 100644 index 197007765d..0000000000 --- a/assets/voxygen/voxel/npc/peacock/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65324a119fffd476420a60c1d93bc570536d86e219d2344bafe558d5a3e2d989 -size 1140 diff --git a/assets/voxygen/voxel/npc/peacock/male/wing_l.vox b/assets/voxygen/voxel/npc/peacock/male/wing_l.vox deleted file mode 100644 index 38d478e204..0000000000 --- a/assets/voxygen/voxel/npc/peacock/male/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cabee12279731078145b3b3329da1f592401c6eb720fcc58caef9fd09a0c0bd8 -size 1236 diff --git a/assets/voxygen/voxel/npc/pig/male/foot_bl.vox b/assets/voxygen/voxel/npc/pig/male/foot_bl.vox deleted file mode 100644 index 8aba943b41..0000000000 --- a/assets/voxygen/voxel/npc/pig/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8538576cb07634d5b65d1770c964aedd44f308503b26c60e74f42a74e10d2a1 -size 1240 diff --git a/assets/voxygen/voxel/npc/pig/male/foot_fl.vox b/assets/voxygen/voxel/npc/pig/male/foot_fl.vox deleted file mode 100644 index cf95caec8f..0000000000 --- a/assets/voxygen/voxel/npc/pig/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e3ec823e5b628dabf27526524603feb436fe7b8123b5c8aee540dae984f5bb44 -size 1196 diff --git a/assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox b/assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox deleted file mode 100644 index 3267ff5831..0000000000 --- a/assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a44ef9ce3bf3d4569165abf5d4e99be8329be52cef7b199be7313cc851a3d9c2 -size 1384 diff --git a/assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox b/assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox deleted file mode 100644 index 7d24707fc7..0000000000 --- a/assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:22c25095db066285c8b55a0038f1e8c280df22198b6ad5577791518af4d7374a -size 1308 diff --git a/assets/voxygen/voxel/npc/quokka/male/foot_bl.vox b/assets/voxygen/voxel/npc/quokka/male/foot_bl.vox deleted file mode 100644 index a354da08aa..0000000000 --- a/assets/voxygen/voxel/npc/quokka/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:36b6413c289b05d9507645f4cbd1da124dbd41411d67ecb808e123944756c2fa -size 1260 diff --git a/assets/voxygen/voxel/npc/quokka/male/foot_fl.vox b/assets/voxygen/voxel/npc/quokka/male/foot_fl.vox deleted file mode 100644 index 1881d416c7..0000000000 --- a/assets/voxygen/voxel/npc/quokka/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d122132ae892a25c2592460832272afe139f237774b1baeadf1fb62f96a33da6 -size 1204 diff --git a/assets/voxygen/voxel/npc/rabbit/male/foot_bl.vox b/assets/voxygen/voxel/npc/rabbit/male/foot_bl.vox deleted file mode 100644 index 868c822d9b..0000000000 --- a/assets/voxygen/voxel/npc/rabbit/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b5f985c6875dee0144b547f7448a6cdc111332a1d260f597e71f3b627359e3a5 -size 1208 diff --git a/assets/voxygen/voxel/npc/rabbit/male/foot_fl.vox b/assets/voxygen/voxel/npc/rabbit/male/foot_fl.vox deleted file mode 100644 index 0de756b69f..0000000000 --- a/assets/voxygen/voxel/npc/rabbit/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d91b461f9623b85a98e37bb327700b932dfa5cff077f7705017ee4b1ee4f90fa -size 1148 diff --git a/assets/voxygen/voxel/npc/raccoon/male/foot_bl.vox b/assets/voxygen/voxel/npc/raccoon/male/foot_bl.vox deleted file mode 100644 index 22258dac64..0000000000 --- a/assets/voxygen/voxel/npc/raccoon/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96aaa0de2bc320f2f1208111e115bd88b52147d87daeb558eafd0b7b0e9fdcdf -size 1420 diff --git a/assets/voxygen/voxel/npc/raccoon/male/foot_fl.vox b/assets/voxygen/voxel/npc/raccoon/male/foot_fl.vox deleted file mode 100644 index 81e6c8c86b..0000000000 --- a/assets/voxygen/voxel/npc/raccoon/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6d0e52becc669f11c2e4287f6e770c89a7062698842f68e42a72b14f9d5a894 -size 1240 diff --git a/assets/voxygen/voxel/npc/raptor_sand/male/foot_l.vox b/assets/voxygen/voxel/npc/raptor_sand/male/foot_l.vox deleted file mode 100644 index 9793ed6f7f..0000000000 --- a/assets/voxygen/voxel/npc/raptor_sand/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:401b25db996711a53e317de4b4c826161b039891c4537567f73eb6344826a0b3 -size 1384 diff --git a/assets/voxygen/voxel/npc/raptor_sand/male/hand_l.vox b/assets/voxygen/voxel/npc/raptor_sand/male/hand_l.vox deleted file mode 100644 index 00dabd0391..0000000000 --- a/assets/voxygen/voxel/npc/raptor_sand/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7c9d723da56499441bbd1ffc34aacbbb098eb64f0c30d7726bb5585cdb7d8fb2 -size 1672 diff --git a/assets/voxygen/voxel/npc/raptor_sand/male/leg_l.vox b/assets/voxygen/voxel/npc/raptor_sand/male/leg_l.vox deleted file mode 100644 index 304654e5a1..0000000000 --- a/assets/voxygen/voxel/npc/raptor_sand/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5f71ae7fa186a44d29b1f4124e275c3129038dc2331a359b6b8358c5f6d302d -size 1628 diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/foot_l.vox b/assets/voxygen/voxel/npc/raptor_snow/male/foot_l.vox deleted file mode 100644 index b682cfcd61..0000000000 --- a/assets/voxygen/voxel/npc/raptor_snow/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:78ccec8653b8d2db97c4ec6e26b1604c56ca9026f78a8bbbb9d06f7121d46cc7 -size 1384 diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/hand_l.vox b/assets/voxygen/voxel/npc/raptor_snow/male/hand_l.vox deleted file mode 100644 index 5db6026e79..0000000000 --- a/assets/voxygen/voxel/npc/raptor_snow/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:845b0571f3abec22bc6f889219d7bec4e8b387bfabaa90671a70b4446be7ed67 -size 1616 diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/leg_l.vox b/assets/voxygen/voxel/npc/raptor_snow/male/leg_l.vox deleted file mode 100644 index 87ab3259b7..0000000000 --- a/assets/voxygen/voxel/npc/raptor_snow/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f55f9e47c979e117906eb20ba106e834741dbfc4abf53c2c7b2f7656db03d119 -size 1628 diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/foot_l.vox b/assets/voxygen/voxel/npc/raptor_wood/male/foot_l.vox deleted file mode 100644 index 84f4aee9ca..0000000000 --- a/assets/voxygen/voxel/npc/raptor_wood/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b0c11647abe410acca2b9c50ae7bf5d82517b4e52bec385f461fb3a9bb5f0ab -size 1384 diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/hand_l.vox b/assets/voxygen/voxel/npc/raptor_wood/male/hand_l.vox deleted file mode 100644 index ffbc71f066..0000000000 --- a/assets/voxygen/voxel/npc/raptor_wood/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:076891fc33970341d6b6c3a7f2d12e2f9bc2a1d04c9e7ffd44d02d5a731b24c2 -size 1684 diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/leg_l.vox b/assets/voxygen/voxel/npc/raptor_wood/male/leg_l.vox deleted file mode 100644 index b571b8c8a2..0000000000 --- a/assets/voxygen/voxel/npc/raptor_wood/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac1b149c2212a37b7640697ec764397adabd5bc6ed4c67a4611ee6550805b359 -size 1628 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_bl.vox b/assets/voxygen/voxel/npc/rat/male/foot_bl.vox deleted file mode 100644 index d5af76f775..0000000000 --- a/assets/voxygen/voxel/npc/rat/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ceb18e0a3e013afe4075785a839ed914c4755e81a16bed46c01d827868ab1252 -size 1252 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_fl.vox b/assets/voxygen/voxel/npc/rat/male/foot_fl.vox deleted file mode 100644 index 14424ecf37..0000000000 --- a/assets/voxygen/voxel/npc/rat/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f9e15fb7b2dc36448630f58dd4ac9b28915333c00ead3e725c96cf74c0d4ea92 -size 1212 diff --git a/assets/voxygen/voxel/npc/rocksnapper/male/foot_bl.vox b/assets/voxygen/voxel/npc/rocksnapper/male/foot_bl.vox deleted file mode 100644 index fbc3ffa8ac..0000000000 --- a/assets/voxygen/voxel/npc/rocksnapper/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b76da17922521b88b4e6463483e1185deb638b0080ea826fc732f70663abccb -size 2124 diff --git a/assets/voxygen/voxel/npc/rocksnapper/male/foot_fl.vox b/assets/voxygen/voxel/npc/rocksnapper/male/foot_fl.vox deleted file mode 100644 index dd9d49fd72..0000000000 --- a/assets/voxygen/voxel/npc/rocksnapper/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab0993f5cf7c4e41eb8a65555f31b3a9f7c37ac6c13877f37ff150c8f6939049 -size 2188 diff --git a/assets/voxygen/voxel/npc/salamander/female/foot_bl.vox b/assets/voxygen/voxel/npc/salamander/female/foot_bl.vox deleted file mode 100644 index bafd43bd57..0000000000 --- a/assets/voxygen/voxel/npc/salamander/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6efcf8a7c173bae183d1a961ad2f531af6cf9a9484bfa3733edd8a0a2cd7860d -size 1260 diff --git a/assets/voxygen/voxel/npc/salamander/female/foot_fl.vox b/assets/voxygen/voxel/npc/salamander/female/foot_fl.vox deleted file mode 100644 index 36894359b0..0000000000 --- a/assets/voxygen/voxel/npc/salamander/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:62a30c1511242da54c436fb2feeee2eb990582e79dc8702b9ec1573d1fc20402 -size 1268 diff --git a/assets/voxygen/voxel/npc/salamander/male/foot_bl.vox b/assets/voxygen/voxel/npc/salamander/male/foot_bl.vox deleted file mode 100644 index 5100dd6fd3..0000000000 --- a/assets/voxygen/voxel/npc/salamander/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b18dea4f5f7c05b6d66b35e51d0fd1696e86b8d81ba800b82faa3531bbf1994d -size 1244 diff --git a/assets/voxygen/voxel/npc/salamander/male/foot_fl.vox b/assets/voxygen/voxel/npc/salamander/male/foot_fl.vox deleted file mode 100644 index b747f98131..0000000000 --- a/assets/voxygen/voxel/npc/salamander/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d2108ecaae55bd50e08892ad54311d4931d660024f9492aa919af5e0419dd8d6 -size 1268 diff --git a/assets/voxygen/voxel/npc/sandshark/male/foot_bl.vox b/assets/voxygen/voxel/npc/sandshark/male/foot_bl.vox deleted file mode 100644 index 79afa364f5..0000000000 --- a/assets/voxygen/voxel/npc/sandshark/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f3e556f98a0706af06aef45e34d3f8772a7acb6dd2720fe789e674a19fcda80f -size 2072 diff --git a/assets/voxygen/voxel/npc/sandshark/male/foot_fl.vox b/assets/voxygen/voxel/npc/sandshark/male/foot_fl.vox deleted file mode 100644 index 7fd75deca1..0000000000 --- a/assets/voxygen/voxel/npc/sandshark/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:08578696d830ef319872948760193d1e97799b9a7f5fedc9a2b2b7c30632b3b9 -size 3524 diff --git a/assets/voxygen/voxel/npc/sheep/female/foot_bl.vox b/assets/voxygen/voxel/npc/sheep/female/foot_bl.vox deleted file mode 100644 index abc6a06dfc..0000000000 --- a/assets/voxygen/voxel/npc/sheep/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e88930cefb61d3624440c81fb610f112cdd0266978a7dc2ddb5c37bad3030924 -size 1232 diff --git a/assets/voxygen/voxel/npc/sheep/female/foot_fl.vox b/assets/voxygen/voxel/npc/sheep/female/foot_fl.vox deleted file mode 100644 index 9d5376fbea..0000000000 --- a/assets/voxygen/voxel/npc/sheep/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c20c088b32b90d5ec41f95f16b032665d0cdaf11e5f1df60d3dde90b81ff2a1c -size 1208 diff --git a/assets/voxygen/voxel/npc/sheep/male/foot_bl.vox b/assets/voxygen/voxel/npc/sheep/male/foot_bl.vox deleted file mode 100644 index abc6a06dfc..0000000000 --- a/assets/voxygen/voxel/npc/sheep/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e88930cefb61d3624440c81fb610f112cdd0266978a7dc2ddb5c37bad3030924 -size 1232 diff --git a/assets/voxygen/voxel/npc/sheep/male/foot_fl.vox b/assets/voxygen/voxel/npc/sheep/male/foot_fl.vox deleted file mode 100644 index b099eb9af4..0000000000 --- a/assets/voxygen/voxel/npc/sheep/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c98e924793aebb7dbddcf621009903c6fc2cf875c840b187bfb6d62b4f8462c0 -size 1208 diff --git a/assets/voxygen/voxel/npc/skunk/male/foot_bl.vox b/assets/voxygen/voxel/npc/skunk/male/foot_bl.vox deleted file mode 100644 index bf6f2ae841..0000000000 --- a/assets/voxygen/voxel/npc/skunk/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:189a1dfccfe94573c1ac6d9e6948bc2b399f9d48fee2b4510f852f692cde5eb9 -size 1272 diff --git a/assets/voxygen/voxel/npc/skunk/male/foot_fl.vox b/assets/voxygen/voxel/npc/skunk/male/foot_fl.vox deleted file mode 100644 index 84e7815f4b..0000000000 --- a/assets/voxygen/voxel/npc/skunk/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dfac9a2796b701c728ecf70500d524ebcc6c13e03b4e0057fa1c4c5eb3bd3e9b -size 1196 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox deleted file mode 100644 index e182b859ec..0000000000 --- a/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d7d463014e1c784e08624a38258cb2774fbad71eb614a68bc98b03625b06fb49 -size 1228 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox deleted file mode 100644 index 525b66ba8c..0000000000 --- a/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c7c52ef287399626b4d05e8f87e852d6676fafb1a7b672f6b2dfcadc015f7a76 -size 1164 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/foot_l.vox b/assets/voxygen/voxel/npc/sunlizard/male/foot_l.vox deleted file mode 100644 index efb407e2a1..0000000000 --- a/assets/voxygen/voxel/npc/sunlizard/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5bf1b2877e4325004e570bcfdc5bd6e82a96d38e05b003b7f650726893eb5cdc -size 1276 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/hand_l.vox b/assets/voxygen/voxel/npc/sunlizard/male/hand_l.vox deleted file mode 100644 index 2a6f892ef5..0000000000 --- a/assets/voxygen/voxel/npc/sunlizard/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a61452aa33dc9e2d7d072b7ca32591b64f0c0984ecedc963794843cf82050a5 -size 1228 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/leg_l.vox b/assets/voxygen/voxel/npc/sunlizard/male/leg_l.vox deleted file mode 100644 index d3501ac447..0000000000 --- a/assets/voxygen/voxel/npc/sunlizard/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f2c28aaa835fbbc4be60de200693512a6ab858313f2e911118b4605feb615e6a -size 1364 diff --git a/assets/voxygen/voxel/npc/tortoise/male/foot_bl.vox b/assets/voxygen/voxel/npc/tortoise/male/foot_bl.vox deleted file mode 100644 index 73cad48f51..0000000000 --- a/assets/voxygen/voxel/npc/tortoise/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c308128f3ba79f4cc9caa3439b3077f688e45a095289182559e55f48bc0b0047 -size 1580 diff --git a/assets/voxygen/voxel/npc/tortoise/male/foot_fl.vox b/assets/voxygen/voxel/npc/tortoise/male/foot_fl.vox deleted file mode 100644 index c83624934c..0000000000 --- a/assets/voxygen/voxel/npc/tortoise/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f338128840ca7e40d209bfea664f2a3599079ab73a7e28a307637e077be3a4cb -size 1624 diff --git a/assets/voxygen/voxel/npc/truffler/male/foot_bl.vox b/assets/voxygen/voxel/npc/truffler/male/foot_bl.vox deleted file mode 100644 index 603e677bed..0000000000 --- a/assets/voxygen/voxel/npc/truffler/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:48402fcea0ca0d40993c2b07ab6cec6421bb1c320c736bee8c214812761a590d -size 1412 diff --git a/assets/voxygen/voxel/npc/truffler/male/foot_fl.vox b/assets/voxygen/voxel/npc/truffler/male/foot_fl.vox deleted file mode 100644 index 603e677bed..0000000000 --- a/assets/voxygen/voxel/npc/truffler/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:48402fcea0ca0d40993c2b07ab6cec6421bb1c320c736bee8c214812761a590d -size 1412 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox b/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox deleted file mode 100644 index 696ab221ab..0000000000 --- a/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1aabc60fe30c1f38e89ff8cfe770444baf9a5e2bd4060b56ba46ac0835460ef6 -size 1180 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox b/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox deleted file mode 100644 index 0ef897e45b..0000000000 --- a/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:60cde6297e3bcec71278065f8e23dbf5cb6d318d9fc1d3d0c2f261c5d3d09e2b -size 1180 diff --git a/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron index 9ee5695317..46e13be409 100644 --- a/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron @@ -2,7 +2,7 @@ (Crocodile, Male): ( front_left: ( offset: (-7.0, -0.0, -4.0),//full x dimension, 0 y dimension, full z dimension - lateral: ("npc.crocodile.male.foot_fl"), + lateral: ("npc.crocodile.male.foot_fr"), ), front_right: ( offset: (0.0, -0.0, -4.0),//0 x dimension, 0 y dimension, full z dimension @@ -10,7 +10,7 @@ ), back_left: ( offset: (-8.0, -0.0, -4.0),//full x dimension, 0 y dimension, full z dimension - lateral: ("npc.crocodile.male.foot_bl"), + lateral: ("npc.crocodile.male.foot_br"), ), back_right: ( offset: (0.0, -0.0, -4.0),//0 x dimension, 0 y dimension, full z dimension @@ -20,7 +20,7 @@ (Crocodile, Female): ( front_left: ( offset: (-7.0, -0.0, -4.0), - lateral: ("npc.crocodile.male.foot_fl"), + lateral: ("npc.crocodile.male.foot_fr"), ), front_right: ( offset: (0.0, -0.0, -4.0), @@ -28,7 +28,7 @@ ), back_left: ( offset: (-8.0, -0.0, -4.0), - lateral: ("npc.crocodile.male.foot_bl"), + lateral: ("npc.crocodile.male.foot_br"), ), back_right: ( offset: (0.0, -0.0, -4.0), @@ -38,7 +38,7 @@ (Alligator, Male): ( front_left: ( offset: (-7.0, 0.0, -4.0), - lateral: ("npc.alligator.male.foot_fl"), + lateral: ("npc.alligator.male.foot_fr"), ), front_right: ( offset: (-0.0, 0.0, -4.0), @@ -46,7 +46,7 @@ ), back_left: ( offset: (-8.0, 0.0, -4.0), - lateral: ("npc.alligator.male.foot_bl"), + lateral: ("npc.alligator.male.foot_br"), ), back_right: ( offset: (-0.0, 0.0, -4.0), @@ -56,7 +56,7 @@ (Alligator, Female): ( front_left: ( offset: (-7.0, 0.0, -4.0), - lateral: ("npc.alligator.male.foot_fl"), + lateral: ("npc.alligator.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -4.0), @@ -64,7 +64,7 @@ ), back_left: ( offset: (-8.0, 0.0, -4.0), - lateral: ("npc.alligator.male.foot_bl"), + lateral: ("npc.alligator.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -4.0), @@ -74,7 +74,7 @@ (Salamander, Male): ( front_left: ( offset: (-6.0, 0.0, -3.0), - lateral: ("npc.salamander.male.foot_fl"), + lateral: ("npc.salamander.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -3.0), @@ -82,7 +82,7 @@ ), back_left: ( offset: (-7.0, 0.0, -3.0), - lateral: ("npc.salamander.male.foot_bl"), + lateral: ("npc.salamander.male.foot_br"), ), back_right: ( offset: (-0.0, 0.0, -3.0), @@ -92,7 +92,7 @@ (Salamander, Female): ( front_left: ( offset: (-6.0, 0.0, -3.0), - lateral: ("npc.salamander.female.foot_fl"), + lateral: ("npc.salamander.female.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -3.0), @@ -100,7 +100,7 @@ ), back_left: ( offset: (-8.0, 0.0, -3.0), - lateral: ("npc.salamander.female.foot_bl"), + lateral: ("npc.salamander.female.foot_br"), ), back_right: ( offset: (0.0, 0.0, -3.0), @@ -110,7 +110,7 @@ (Monitor, Male): ( front_left: ( offset: (-8.0, 0.0, -5.0), - lateral: ("npc.monitor.male.foot_fl"), + lateral: ("npc.monitor.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -5.0), @@ -118,7 +118,7 @@ ), back_left: ( offset: (-7.0, 0.0, -5.0), - lateral: ("npc.monitor.male.foot_bl"), + lateral: ("npc.monitor.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -5.0), @@ -128,7 +128,7 @@ (Monitor, Female): ( front_left: ( offset: (-8.0, 0.0, -5.0), - lateral: ("npc.monitor.male.foot_fl"), + lateral: ("npc.monitor.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -5.0), @@ -136,7 +136,7 @@ ), back_left: ( offset: (-7.0, 0.0, -5.0), - lateral: ("npc.monitor.male.foot_bl"), + lateral: ("npc.monitor.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -5.0), @@ -145,16 +145,16 @@ ), (Asp, Male): ( front_left: ( - offset: (-17.0, 0.0, -14.0), - lateral: ("npc.asp.male.foot_fl"), + offset: (-10.0, 0.0, -6.5), + lateral: ("npc.asp.male.foot_fr"), ), front_right: ( - offset: (0.0, 0.0, -14.0), + offset: (0.0, 0.0, -6.5), lateral: ("npc.asp.male.foot_fr"), ), back_left: ( offset: (-7.5, 0.0, -6.5), - lateral: ("npc.asp.male.foot_bl"), + lateral: ("npc.asp.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -6.5), @@ -163,16 +163,16 @@ ), (Asp, Female): ( front_left: ( - offset: (-17.0, 0.0, -14.0), - lateral: ("npc.asp.male.foot_fl"), + offset: (-10.0, 0.0, -6.5), + lateral: ("npc.asp.male.foot_fr"), ), front_right: ( - offset: (0.0, 0.0, -14.0), + offset: (0.0, 0.0, -6.5), lateral: ("npc.asp.male.foot_fr"), ), back_left: ( offset: (-7.5, 0.0, -6.5), - lateral: ("npc.asp.male.foot_bl"), + lateral: ("npc.asp.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -6.5), @@ -182,7 +182,7 @@ (Tortoise, Male): ( front_left: ( offset: (-7.0, 0.0, -8.0), - lateral: ("npc.tortoise.male.foot_fl"), + lateral: ("npc.tortoise.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -8.0), @@ -190,7 +190,7 @@ ), back_left: ( offset: (-7.0, 0.0, -8.0), - lateral: ("npc.tortoise.male.foot_bl"), + lateral: ("npc.tortoise.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -8.0), @@ -200,7 +200,7 @@ (Tortoise, Female): ( front_left: ( offset: (-7.0, 0.0, -8.0), - lateral: ("npc.tortoise.male.foot_fl"), + lateral: ("npc.tortoise.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -8.0), @@ -208,7 +208,7 @@ ), back_left: ( offset: (-7.0, 0.0, -8.0), - lateral: ("npc.tortoise.male.foot_bl"), + lateral: ("npc.tortoise.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -8.0), @@ -218,7 +218,7 @@ (Rocksnapper, Male): ( front_left: ( offset: (-12.0, 0.0, -10.0), - lateral: ("npc.rocksnapper.male.foot_fl"), + lateral: ("npc.rocksnapper.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -10.0), @@ -226,7 +226,7 @@ ), back_left: ( offset: (-11.0, -6.0, -9.0), - lateral: ("npc.rocksnapper.male.foot_bl"), + lateral: ("npc.rocksnapper.male.foot_br"), ), back_right: ( offset: (0.0, -6.0, -9.0), @@ -236,7 +236,7 @@ (Rocksnapper, Female): ( front_left: ( offset: (-12.0, 0.0, -10.0), - lateral: ("npc.rocksnapper.male.foot_fl"), + lateral: ("npc.rocksnapper.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -10.0), @@ -244,7 +244,7 @@ ), back_left: ( offset: (-11.0, -6.0, -9.0),//special case - lateral: ("npc.rocksnapper.male.foot_bl"), + lateral: ("npc.rocksnapper.male.foot_br"), ), back_right: ( offset: (0.0, -6.0, -9.0), @@ -254,7 +254,7 @@ (Pangolin, Male): ( front_left: ( offset: (-1.5, 0.0, -6.0),//unique - lateral: ("npc.pangolin.male.foot_fl"), + lateral: ("npc.pangolin.male.foot_fr"), ), front_right: ( offset: (-1.5, 0.0, -6.0), @@ -262,7 +262,7 @@ ), back_left: ( offset: (-1.5, 0.0, -6.0), - lateral: ("npc.pangolin.male.foot_bl"), + lateral: ("npc.pangolin.male.foot_br"), ), back_right: ( offset: (-1.5, 0.0, -6.0), @@ -272,7 +272,7 @@ (Pangolin, Female): ( front_left: ( offset: (-1.5, 0.0, -6.0), - lateral: ("npc.pangolin.male.foot_fl"), + lateral: ("npc.pangolin.male.foot_fr"), ), front_right: ( offset: (-1.5, 0.0, -6.0), @@ -280,7 +280,7 @@ ), back_left: ( offset: (-1.5, 0.0, -6.0),//special case - lateral: ("npc.pangolin.male.foot_bl"), + lateral: ("npc.pangolin.male.foot_br"), ), back_right: ( offset: (-1.5, 0.0, -6.0), @@ -290,7 +290,7 @@ (Maneater, Male): ( front_left: ( offset: (-6.0, 0.0, -6.5), - lateral: ("npc.maneater.male.foot_fl"), + lateral: ("npc.maneater.male.foot_fr"), ), front_right: ( offset: (-2.0, 0.0, -6.5), @@ -298,7 +298,7 @@ ), back_left: ( offset: (-6.0, -8.0, -9.0), - lateral: ("npc.maneater.male.foot_bl"), + lateral: ("npc.maneater.male.foot_br"), ), back_right: ( offset: (-2.0, -8.0, -9.0), @@ -308,7 +308,7 @@ (Maneater, Female): ( front_left: ( offset: (-6.0, 0.0, -6.5), - lateral: ("npc.maneater.male.foot_fl"), + lateral: ("npc.maneater.male.foot_fr"), ), front_right: ( offset: (-2.0, 0.0, -6.5), @@ -316,7 +316,7 @@ ), back_left: ( offset: (-6.0, -8.0, -9.0), - lateral: ("npc.maneater.male.foot_bl"), + lateral: ("npc.maneater.male.foot_br"), ), back_right: ( offset: (-2.0, -8.0, -9.0), @@ -326,7 +326,7 @@ (Hakulaq, Male): ( front_left: ( offset: (-10.0, 0.0, -9.0), - lateral: ("npc.hakulaq.male.foot_fl"), + lateral: ("npc.hakulaq.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -9.0), @@ -334,7 +334,7 @@ ), back_left: ( offset: (-10.0, 0.0, -9.0), - lateral: ("npc.hakulaq.male.foot_bl"), + lateral: ("npc.hakulaq.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -9.0), @@ -344,7 +344,7 @@ (Hakulaq, Female): ( front_left: ( offset: (-10.0, 0.0, -9.0), - lateral: ("npc.hakulaq.male.foot_fl"), + lateral: ("npc.hakulaq.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -9.0), @@ -352,7 +352,7 @@ ), back_left: ( offset: (-10.0, 0.0, -9.0), - lateral: ("npc.hakulaq.male.foot_bl"), + lateral: ("npc.hakulaq.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -9.0), @@ -362,7 +362,7 @@ (Sandshark, Male): ( front_left: ( offset: (-17.0, 0.0, -12.0), - lateral: ("npc.sandshark.male.foot_fl"), + lateral: ("npc.sandshark.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -12.0), @@ -370,7 +370,7 @@ ), back_left: ( offset: (-9.0, 0.0, -6.0), - lateral: ("npc.sandshark.male.foot_bl"), + lateral: ("npc.sandshark.male.foot_br"), ), back_right: ( offset: (-2.0, 0.0, -6.0), @@ -380,7 +380,7 @@ (Sandshark, Female): ( front_left: ( offset: (-17.0, 0.0, -12.0), - lateral: ("npc.sandshark.male.foot_fl"), + lateral: ("npc.sandshark.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -12.0), @@ -388,7 +388,7 @@ ), back_left: ( offset: (-9.0, 0.0, -6.0), - lateral: ("npc.sandshark.male.foot_bl"), + lateral: ("npc.sandshark.male.foot_br"), ), back_right: ( offset: (-2.0, 0.0, -6.0), @@ -398,7 +398,7 @@ (Lavadrake, Male): ( front_left: ( offset: (-14.0, -4.0, -10.0), - lateral: ("npc.lavadrake.male.foot_fl"), + lateral: ("npc.lavadrake.male.foot_fr"), ), front_right: ( offset: (0.0, -4.0, -10.0), @@ -406,7 +406,7 @@ ), back_left: ( offset: (-14.0, -7.5, -10.0), - lateral: ("npc.lavadrake.male.foot_bl"), + lateral: ("npc.lavadrake.male.foot_br"), ), back_right: ( offset: (0.0, -7.5, -10.0), @@ -416,7 +416,7 @@ (Lavadrake, Female): ( front_left: ( offset: (-14.0, -4.0, -10.0), - lateral: ("npc.lavadrake.male.foot_fl"), + lateral: ("npc.lavadrake.male.foot_fr"), ), front_right: ( offset: (0.0, -4.0, -10.0), @@ -424,7 +424,7 @@ ), back_left: ( offset: (-14.0, -7.5, -10.0), - lateral: ("npc.lavadrake.male.foot_bl"), + lateral: ("npc.lavadrake.male.foot_br"), ), back_right: ( offset: (0.0, -7.5, -10.0), @@ -434,7 +434,7 @@ (Basilisk, Male): ( front_left: ( offset: (-17.0, 0.0, -9.0), - lateral: ("npc.basilisk.male.foot_fl"), + lateral: ("npc.basilisk.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -9.0), @@ -442,7 +442,7 @@ ), back_left: ( offset: (-15.0, 0.0, -9.0), - lateral: ("npc.basilisk.male.foot_bl"), + lateral: ("npc.basilisk.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -9.0), @@ -452,7 +452,7 @@ (Basilisk, Female): ( front_left: ( offset: (-17.0, 0.0, -9.0), - lateral: ("npc.basilisk.male.foot_fl"), + lateral: ("npc.basilisk.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -9.0), @@ -460,7 +460,7 @@ ), back_left: ( offset: (-15.0, 0.0, -9.0), - lateral: ("npc.basilisk.male.foot_bl"), + lateral: ("npc.basilisk.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -9.0), diff --git a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron index f04f164dd4..41ec808ea5 100644 --- a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron @@ -2,7 +2,7 @@ (Pig, Male): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.pig.male.foot_fl"), + lateral: ("npc.pig.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -10,7 +10,7 @@ ), left_back: ( offset: (-1.0, -2.0, -6.0), - lateral: ("npc.pig.male.foot_bl"), + lateral: ("npc.pig.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -6.0), @@ -20,7 +20,7 @@ (Pig, Female): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.pig.male.foot_fl"), + lateral: ("npc.pig.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -28,7 +28,7 @@ ), left_back: ( offset: (-1.0, -2.0, -6.0), - lateral: ("npc.pig.male.foot_bl"), + lateral: ("npc.pig.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -6.0), @@ -39,7 +39,7 @@ (Fox, Male): ( left_front: ( offset: (-1.0, -2.0, -2.5), - lateral: ("npc.fox.male.foot_fl"), + lateral: ("npc.fox.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.0, -2.5), @@ -47,7 +47,7 @@ ), left_back: ( offset: (-1.0, -2.0, -5.0), - lateral: ("npc.fox.male.foot_bl"), + lateral: ("npc.fox.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -5.0), @@ -57,7 +57,7 @@ (Fox, Female): ( left_front: ( offset: (-1.0, -2.0, -2.5), - lateral: ("npc.fox.female.foot_fl"), + lateral: ("npc.fox.female.foot_fr"), ), right_front: ( offset: (-1.0, -2.0, -2.5), @@ -65,7 +65,7 @@ ), left_back: ( offset: (-1.0, -2.0, -5.0), - lateral: ("npc.fox.female.foot_bl"), + lateral: ("npc.fox.female.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -5.0), @@ -76,7 +76,7 @@ (Sheep, Male): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.sheep.male.foot_fl"), + lateral: ("npc.sheep.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -84,7 +84,7 @@ ), left_back: ( offset: (-1.0, -1.5, -5.5), - lateral: ("npc.sheep.male.foot_bl"), + lateral: ("npc.sheep.male.foot_br"), ), right_back: ( offset: (-1.0, -1.5, -5.5), @@ -95,7 +95,7 @@ (Sheep, Female): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.sheep.female.foot_fl"), + lateral: ("npc.sheep.female.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -103,7 +103,7 @@ ), left_back: ( offset: (-1.0, -1.5, -5.5), - lateral: ("npc.sheep.female.foot_bl"), + lateral: ("npc.sheep.female.foot_br"), ), right_back: ( offset: (-1.0, -1.5, -5.5), @@ -114,7 +114,7 @@ (Boar, Male): ( left_front: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.boar.male.foot_fl"), + lateral: ("npc.boar.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -4.0), @@ -122,7 +122,7 @@ ), left_back: ( offset: (-1.5, -2.0, -7.0), - lateral: ("npc.boar.male.foot_bl"), + lateral: ("npc.boar.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -7.0), @@ -133,7 +133,7 @@ (Boar, Female): ( left_front: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.boar.female.foot_fl"), + lateral: ("npc.boar.female.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -4.0), @@ -141,7 +141,7 @@ ), left_back: ( offset: (-1.5, -2.0, -7.0), - lateral: ("npc.boar.female.foot_bl"), + lateral: ("npc.boar.female.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -7.0), @@ -151,7 +151,7 @@ (Jackalope, Male): ( left_front: ( offset: (-1.0, -2.0, -4.0), - lateral: ("npc.jackalope.male.foot_fl"), + lateral: ("npc.jackalope.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.0, -4.0), @@ -159,7 +159,7 @@ ), left_back: ( offset: (-1.5, -2.5, -6.0), - lateral: ("npc.jackalope.male.foot_bl"), + lateral: ("npc.jackalope.male.foot_br"), ), right_back: ( offset: (-1.5, -2.5, -6.0), @@ -170,7 +170,7 @@ (Jackalope, Female): ( left_front: ( offset: (-1.0, -2.0, -4.0), - lateral: ("npc.jackalope.male.foot_fl"), + lateral: ("npc.jackalope.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.0, -4.0), @@ -178,7 +178,7 @@ ), left_back: ( offset: (-1.5, -2.5, -6.0), - lateral: ("npc.jackalope.male.foot_bl"), + lateral: ("npc.jackalope.male.foot_br"), ), right_back: ( offset: (-1.5, -2.5, -6.0), @@ -188,7 +188,7 @@ (Skunk, Male): ( left_front: ( offset: (-1.5, -2.0, -4.5), - lateral: ("npc.skunk.male.foot_fl"), + lateral: ("npc.skunk.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -4.5), @@ -196,7 +196,7 @@ ), left_back: ( offset: (-1.0, -1.0, -3.5), - lateral: ("npc.skunk.male.foot_bl"), + lateral: ("npc.skunk.male.foot_br"), ), right_back: ( offset: (-1.0, -1.0, -3.5), @@ -207,7 +207,7 @@ (Skunk, Female): ( left_front: ( offset: (-1.5, -2.0, -4.5), - lateral: ("npc.skunk.male.foot_fl"), + lateral: ("npc.skunk.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -4.5), @@ -215,7 +215,7 @@ ), left_back: ( offset: (-1.5, -2.0, -4.5), - lateral: ("npc.skunk.male.foot_bl"), + lateral: ("npc.skunk.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -4.5), @@ -226,7 +226,7 @@ (Cat, Male): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.cat.male.foot_fl"), + lateral: ("npc.cat.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -234,7 +234,7 @@ ), left_back: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.cat.male.foot_bl"), + lateral: ("npc.cat.male.foot_br"), ), right_back: ( offset: (-1.0, -1.5, -5.0), @@ -245,7 +245,7 @@ (Cat, Female): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.cat.female.foot_fl"), + lateral: ("npc.cat.female.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -253,7 +253,7 @@ ), left_back: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.cat.female.foot_bl"), + lateral: ("npc.cat.female.foot_br"), ), right_back: ( offset: (-1.0, -1.5, -5.0), @@ -264,7 +264,7 @@ (Batfox, Male): ( left_front: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.batfox.male.foot_fl"), + lateral: ("npc.batfox.male.foot_fr"), ), right_front: ( offset: (-2.0, -2.5, -5.0), @@ -272,7 +272,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.batfox.male.foot_bl"), + lateral: ("npc.batfox.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -283,7 +283,7 @@ (Batfox, Female): ( left_front: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.batfox.male.foot_fl"), + lateral: ("npc.batfox.male.foot_fr"), ), right_front: ( offset: (-2.0, -2.5, -5.0), @@ -291,7 +291,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.batfox.male.foot_bl"), + lateral: ("npc.batfox.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -302,7 +302,7 @@ (Raccoon, Male): ( left_front: ( offset: (-1.5, -2.0, -5.5), - lateral: ("npc.raccoon.male.foot_fl"), + lateral: ("npc.raccoon.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -5.5), @@ -310,7 +310,7 @@ ), left_back: ( offset: (-2.0, -2.5, -6.0), - lateral: ("npc.raccoon.male.foot_bl"), + lateral: ("npc.raccoon.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -6.0), @@ -321,7 +321,7 @@ (Raccoon, Female): ( left_front: ( offset: (-1.5, -2.0, -5.5), - lateral: ("npc.raccoon.male.foot_fl"), + lateral: ("npc.raccoon.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -5.5), @@ -329,7 +329,7 @@ ), left_back: ( offset: (-2.0, -2.5, -6.0), - lateral: ("npc.raccoon.male.foot_bl"), + lateral: ("npc.raccoon.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -6.0), @@ -339,7 +339,7 @@ (Quokka, Male): ( left_front: ( offset: (-1.0, -1.5, -5.5), - lateral: ("npc.quokka.male.foot_fl"), + lateral: ("npc.quokka.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.5), @@ -347,7 +347,7 @@ ), left_back: ( offset: (-1.0, -2.5, -5.5), - lateral: ("npc.quokka.male.foot_bl"), + lateral: ("npc.quokka.male.foot_br"), ), right_back: ( offset: (-1.0, -2.5, -5.5), @@ -358,7 +358,7 @@ (Quokka, Female): ( left_front: ( offset: (-1.0, -1.5, -5.5), - lateral: ("npc.quokka.male.foot_fl"), + lateral: ("npc.quokka.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.5), @@ -366,7 +366,7 @@ ), left_back: ( offset: (-1.0, -2.5, -5.5), - lateral: ("npc.quokka.male.foot_bl"), + lateral: ("npc.quokka.male.foot_br"), ), right_back: ( offset: (-1.0, -2.5, -5.5), @@ -376,7 +376,7 @@ (Dodarock, Male): ( left_front: ( offset: (-2.0, -3.0, -6.5), - lateral: ("npc.dodarock.male.foot_fl"), + lateral: ("npc.dodarock.male.foot_fr"), ), right_front: ( offset: (-2.0, -3.0, -6.5), @@ -384,7 +384,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.dodarock.male.foot_bl"), + lateral: ("npc.dodarock.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -395,7 +395,7 @@ (Dodarock, Female): ( left_front: ( offset: (-2.0, -3.0, -6.5), - lateral: ("npc.dodarock.male.foot_fl"), + lateral: ("npc.dodarock.male.foot_fr"), ), right_front: ( offset: (-2.0, -3.0, -6.5), @@ -403,7 +403,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.dodarock.male.foot_bl"), + lateral: ("npc.dodarock.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -413,7 +413,7 @@ (Holladon, Male): ( left_front: ( offset: (-1.0, -2.5, -6.0), - lateral: ("npc.holladon.male.foot_fl"), + lateral: ("npc.holladon.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.5, -6.0), @@ -421,7 +421,7 @@ ), left_back: ( offset: (-1.0, -2.0, -5.5), - lateral: ("npc.holladon.male.foot_bl"), + lateral: ("npc.holladon.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -5.5), @@ -432,7 +432,7 @@ (Holladon, Female): ( left_front: ( offset: (-1.0, -2.5, -6.0), - lateral: ("npc.holladon.male.foot_fl"), + lateral: ("npc.holladon.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.5, -6.0), @@ -440,7 +440,7 @@ ), left_back: ( offset: (-1.0, -2.0, -5.5), - lateral: ("npc.holladon.male.foot_bl"), + lateral: ("npc.holladon.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -5.5), @@ -450,7 +450,7 @@ (Hyena, Male): ( left_front: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.hyena.male.foot_fl"), + lateral: ("npc.hyena.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -5.0), @@ -458,7 +458,7 @@ ), left_back: ( offset: (-1.5, -2.0, -6.5), - lateral: ("npc.hyena.male.foot_bl"), + lateral: ("npc.hyena.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -6.5), @@ -469,7 +469,7 @@ (Hyena, Female): ( left_front: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.hyena.male.foot_fl"), + lateral: ("npc.hyena.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -5.0), @@ -477,7 +477,7 @@ ), left_back: ( offset: (-1.5, -2.0, -6.5), - lateral: ("npc.hyena.male.foot_bl"), + lateral: ("npc.hyena.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -6.5), @@ -487,7 +487,7 @@ (Rabbit, Male): ( left_front: ( offset: (-1.5, -0.0, -2.0), - lateral: ("npc.rabbit.male.foot_fl"), + lateral: ("npc.rabbit.male.foot_fr"), ), right_front: ( offset: (-1.5, -0.0, -2.0), @@ -495,7 +495,7 @@ ), left_back: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.rabbit.male.foot_bl"), + lateral: ("npc.rabbit.male.foot_br"), ), right_back: ( offset: (-1.5, -3.0, -4.0), @@ -505,7 +505,7 @@ (Rabbit, Female): ( left_front: ( offset: (-1.5, -0.0, -2.0), - lateral: ("npc.rabbit.male.foot_fl"), + lateral: ("npc.rabbit.male.foot_fr"), ), right_front: ( offset: (-1.5, -0.0, -2.0), @@ -513,7 +513,7 @@ ), left_back: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.rabbit.male.foot_bl"), + lateral: ("npc.rabbit.male.foot_br"), ), right_back: ( offset: (-1.5, -3.0, -4.0), @@ -523,7 +523,7 @@ (Truffler, Male): ( left_front: ( offset: (-2.5, -3.0, -6.5), - lateral: ("npc.truffler.male.foot_fl"), + lateral: ("npc.truffler.male.foot_fr"), ), right_front: ( offset: (-2.5, -3.0, -6.5), @@ -531,7 +531,7 @@ ), left_back: ( offset: (-2.5, -3.0, -6.5), - lateral: ("npc.truffler.male.foot_bl"), + lateral: ("npc.truffler.male.foot_br"), ), right_back: ( offset: (-2.5, -3.0, -6.5), @@ -542,7 +542,7 @@ (Truffler, Female): ( left_front: ( offset: (-2.5, -3.0, -6.5), - lateral: ("npc.truffler.male.foot_fl"), + lateral: ("npc.truffler.male.foot_fr"), ), right_front: ( offset: (-2.5, -3.0, -6.5), @@ -550,7 +550,7 @@ ), left_back: ( offset: (-2.5, -3.0, -6.5), - lateral: ("npc.truffler.male.foot_bl"), + lateral: ("npc.truffler.male.foot_br"), ), right_back: ( offset: (-2.5, -3.0, -6.5), @@ -560,7 +560,7 @@ (Frog, Male): ( left_front: ( offset: (-2.5, -2.5, -4.0), - lateral: ("npc.frog.male.foot_fl"), + lateral: ("npc.frog.male.foot_fr"), ), right_front: ( offset: (-2.5, -2.5, -4.0), @@ -568,7 +568,7 @@ ), left_back: ( offset: (-2.5, -3.5, -4.0), - lateral: ("npc.frog.male.foot_bl"), + lateral: ("npc.frog.male.foot_br"), ), right_back: ( offset: (-2.5, -3.5, -4.0), @@ -578,7 +578,7 @@ (Frog, Female): ( left_front: ( offset: (-2.5, -2.5, -4.0), - lateral: ("npc.frog.male.foot_fl"), + lateral: ("npc.frog.male.foot_fr"), ), right_front: ( offset: (-2.5, -2.5, -4.0), @@ -586,7 +586,7 @@ ), left_back: ( offset: (-2.5, -3.5, -4.0), - lateral: ("npc.frog.male.foot_bl"), + lateral: ("npc.frog.male.foot_br"), ), right_back: ( offset: (-2.5, -3.5, -4.0), @@ -596,7 +596,7 @@ (Rat, Male): ( left_front: ( offset: (-1.5, -2.0, -4.0), - lateral: ("npc.rat.male.foot_fl"), + lateral: ("npc.rat.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -4.0), @@ -604,7 +604,7 @@ ), left_back: ( offset: (-1.5, -2.5, -6.0), - lateral: ("npc.rat.male.foot_bl"), + lateral: ("npc.rat.male.foot_br"), ), right_back: ( offset: (-1.5, -2.5, -6.0), @@ -614,7 +614,7 @@ (Rat, Female): ( left_front: ( offset: (-1.5, -2.0, -4.0), - lateral: ("npc.rat.male.foot_fl"), + lateral: ("npc.rat.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -4.0), @@ -622,7 +622,7 @@ ), left_back: ( offset: (-1.5, -2.5, -6.0), - lateral: ("npc.rat.male.foot_bl"), + lateral: ("npc.rat.male.foot_br"), ), right_back: ( offset: (-1.5, -2.5, -6.0), @@ -632,7 +632,7 @@ (Axolotl, Male): ( left_front: ( offset: (-5.5, -0.5, -3.0), - lateral: ("npc.axolotl.male.foot_fl"), + lateral: ("npc.axolotl.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.5, -3.0), @@ -640,7 +640,7 @@ ), left_back: ( offset: (-5.5, -3.5, -3.0), - lateral: ("npc.axolotl.male.foot_bl"), + lateral: ("npc.axolotl.male.foot_br"), ), right_back: ( offset: (-0.5, -3.5, -3.0), @@ -650,7 +650,7 @@ (Axolotl, Female): ( left_front: ( offset: (-5.5, -0.5, -3.0), - lateral: ("npc.axolotl.male.foot_fl"), + lateral: ("npc.axolotl.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.5, -3.0), @@ -658,7 +658,7 @@ ), left_back: ( offset: (-5.5, -3.5, -3.0), - lateral: ("npc.axolotl.male.foot_bl"), + lateral: ("npc.axolotl.male.foot_br"), ), right_back: ( offset: (-0.5, -3.5, -3.0), @@ -668,7 +668,7 @@ (Gecko, Male): ( left_front: ( offset: (-5.5, -1.0, -3.5), - lateral: ("npc.gecko.male.foot_fl"), + lateral: ("npc.gecko.male.foot_fr"), ), right_front: ( offset: (-0.5, -1.0, -3.5), @@ -676,7 +676,7 @@ ), left_back: ( offset: (-5.5, -4.0, -3.5), - lateral: ("npc.gecko.male.foot_bl"), + lateral: ("npc.gecko.male.foot_br"), ), right_back: ( offset: (-0.5, -4.0, -3.5), @@ -686,7 +686,7 @@ (Gecko, Female): ( left_front: ( offset: (-5.5, -1.0, -3.5), - lateral: ("npc.gecko.male.foot_fl"), + lateral: ("npc.gecko.male.foot_fr"), ), right_front: ( offset: (-0.5, -1.0, -3.5), @@ -694,7 +694,7 @@ ), left_back: ( offset: (-5.5, -4.0, -3.5), - lateral: ("npc.gecko.male.foot_bl"), + lateral: ("npc.gecko.male.foot_br"), ), right_back: ( offset: (-0.5, -4.0, -3.5), @@ -704,7 +704,7 @@ (Turtle, Male): ( left_front: ( offset: (-1.5, -0.5, -4.0), - lateral: ("npc.turtle.male.foot_fl"), + lateral: ("npc.turtle.male.foot_fr"), ), right_front: ( offset: (-1.5, -0.5, -4.0), @@ -712,7 +712,7 @@ ), left_back: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.turtle.male.foot_bl"), + lateral: ("npc.turtle.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -4.0), @@ -722,7 +722,7 @@ (Turtle, Female): ( left_front: ( offset: (-1.5, -0.5, -4.0), - lateral: ("npc.turtle.male.foot_fl"), + lateral: ("npc.turtle.male.foot_fr"), ), right_front: ( offset: (-1.5, -0.5, -4.0), @@ -730,7 +730,7 @@ ), left_back: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.turtle.male.foot_bl"), + lateral: ("npc.turtle.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -4.0), @@ -740,7 +740,7 @@ (Squirrel, Male): ( left_front: ( offset: (-1.5, -1.5, -4.0), - lateral: ("npc.squirrel.male.foot_fl"), + lateral: ("npc.squirrel.male.foot_fr"), ), right_front: ( offset: (-1.5, -1.5, -4.0), @@ -748,7 +748,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.squirrel.male.foot_bl"), + lateral: ("npc.squirrel.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -758,7 +758,7 @@ (Squirrel, Female): ( left_front: ( offset: (-1.5, -1.5, -4.0), - lateral: ("npc.squirrel.male.foot_fl"), + lateral: ("npc.squirrel.male.foot_fr"), ), right_front: ( offset: (-1.5, -1.5, -4.0), @@ -766,7 +766,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.squirrel.male.foot_bl"), + lateral: ("npc.squirrel.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -776,7 +776,7 @@ (Fungome, Male): ( left_front: ( offset: (-2.5, -0.5, -3.0), - lateral: ("npc.fungome.male.foot_fl"), + lateral: ("npc.fungome.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.5, -3.0), @@ -784,7 +784,7 @@ ), left_back: ( offset: (-2.5, -1.0, -3.0), - lateral: ("npc.fungome.male.foot_bl"), + lateral: ("npc.fungome.male.foot_br"), ), right_back: ( offset: (-0.5, -1.0, -3.0), @@ -794,7 +794,7 @@ (Fungome, Female): ( left_front: ( offset: (-2.5, -0.5, -3.0), - lateral: ("npc.fungome.male.foot_fl"), + lateral: ("npc.fungome.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.5, -3.0), @@ -802,7 +802,7 @@ ), left_back: ( offset: (-2.5, -1.0, -3.0), - lateral: ("npc.fungome.male.foot_bl"), + lateral: ("npc.fungome.male.foot_br"), ), right_back: ( offset: (-0.5, -1.0, -3.0), @@ -812,7 +812,7 @@ (Porcupine, Male): ( left_front: ( offset: (-1.5, -2.5, -2.0), - lateral: ("npc.porcupine.male.foot_fl"), + lateral: ("npc.porcupine.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -2.0), @@ -820,7 +820,7 @@ ), left_back: ( offset: (-2.0, -3.0, -3.0), - lateral: ("npc.porcupine.male.foot_bl"), + lateral: ("npc.porcupine.male.foot_br"), ), right_back: ( offset: (-2.0, -3.0, -3.0), @@ -830,7 +830,7 @@ (Porcupine, Female): ( left_front: ( offset: (-1.5, -2.5, -2.0), - lateral: ("npc.porcupine.male.foot_fl"), + lateral: ("npc.porcupine.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -2.0), @@ -838,7 +838,7 @@ ), left_back: ( offset: (-2.0, -3.0, -3.0), - lateral: ("npc.porcupine.male.foot_bl"), + lateral: ("npc.porcupine.male.foot_br"), ), right_back: ( offset: (-2.0, -3.0, -3.0), @@ -848,7 +848,7 @@ (Beaver, Male): ( left_front: ( offset: (-1.5, -2.0, -2.0), - lateral: ("npc.beaver.male.foot_fl"), + lateral: ("npc.beaver.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -2.0), @@ -856,7 +856,7 @@ ), left_back: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.beaver.male.foot_bl"), + lateral: ("npc.beaver.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -3.0), @@ -866,7 +866,7 @@ (Beaver, Female): ( left_front: ( offset: (-1.5, -2.0, -2.0), - lateral: ("npc.beaver.male.foot_fl"), + lateral: ("npc.beaver.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -2.0), @@ -874,7 +874,7 @@ ), left_back: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.beaver.male.foot_bl"), + lateral: ("npc.beaver.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -3.0), @@ -884,7 +884,7 @@ (Hare, Male): ( left_front: ( offset: (-0.5, -0.0, -2.0), - lateral: ("npc.hare.male.foot_fl"), + lateral: ("npc.hare.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.0, -2.0), @@ -892,7 +892,7 @@ ), left_back: ( offset: (-1.0, -4.0, -5.0), - lateral: ("npc.hare.male.foot_bl"), + lateral: ("npc.hare.male.foot_br"), ), right_back: ( offset: (-1.0, -4.0, -5.0), @@ -902,7 +902,7 @@ (Hare, Female): ( left_front: ( offset: (-1.0, -0.0, -2.0), - lateral: ("npc.hare.female.foot_fl"), + lateral: ("npc.hare.female.foot_fr"), ), right_front: ( offset: (-1.0, -0.0, -2.0), @@ -910,7 +910,7 @@ ), left_back: ( offset: (-1.0, -2.5, -4.0), - lateral: ("npc.hare.female.foot_bl"), + lateral: ("npc.hare.female.foot_br"), ), right_back: ( offset: (-1.0, -2.5, -4.0), @@ -920,7 +920,7 @@ (Dog, Male): ( left_front: ( offset: (-1.0, -1.5, -6.0), - lateral: ("npc.dog.male.foot_fl"), + lateral: ("npc.dog.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -6.0), @@ -928,7 +928,7 @@ ), left_back: ( offset: (-1.5, -2.0, -6.0), - lateral: ("npc.dog.male.foot_bl"), + lateral: ("npc.dog.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -6.0), @@ -938,7 +938,7 @@ (Dog, Female): ( left_front: ( offset: (-1.0, -1.5, -6.0), - lateral: ("npc.dog.female.foot_fl"), + lateral: ("npc.dog.female.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -6.0), @@ -946,7 +946,7 @@ ), left_back: ( offset: (-1.5, -2.0, -6.0), - lateral: ("npc.dog.female.foot_bl"), + lateral: ("npc.dog.female.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -6.0), diff --git a/assets/voxygen/voxel/theropod_lateral_manifest.ron b/assets/voxygen/voxel/theropod_lateral_manifest.ron index 9a0d0a8e26..e7d859dc0b 100644 --- a/assets/voxygen/voxel/theropod_lateral_manifest.ron +++ b/assets/voxygen/voxel/theropod_lateral_manifest.ron @@ -2,7 +2,7 @@ (Archaeos, Male): ( hand_l: ( offset: (-4.0, -2.0, -9.0), - lateral: ("npc.archaeos.male.hand_l"), + lateral: ("npc.archaeos.male.hand_r"), ), hand_r: ( offset: (0.0, -2.0, -9.0), @@ -10,7 +10,7 @@ ), leg_l: ( offset: (-6.0, -4.5, -8.0), - lateral: ("npc.archaeos.male.leg_l"), + lateral: ("npc.archaeos.male.leg_r"), ), leg_r: ( offset: (0.0, -4.5, -8.0), @@ -18,7 +18,7 @@ ), foot_l: ( offset: (-11.0, -1.0, -8.0), - lateral: ("npc.archaeos.male.foot_l"), + lateral: ("npc.archaeos.male.foot_r"), ), foot_r: ( offset: (0.0, -1.0, -8.0), @@ -28,7 +28,7 @@ (Archaeos, Female): ( hand_l: ( offset: (-4.0, -2.0, -9.0), - lateral: ("npc.archaeos.male.hand_l"), + lateral: ("npc.archaeos.male.hand_r"), ), hand_r: ( offset: (0.0, -2.0, -9.0), @@ -36,7 +36,7 @@ ), leg_l: ( offset: (-6.0, -4.5, -8.0), - lateral: ("npc.archaeos.male.leg_l"), + lateral: ("npc.archaeos.male.leg_r"), ), leg_r: ( offset: (0.0, -4.5, -8.0), @@ -44,7 +44,7 @@ ), foot_l: ( offset: (-11.0, -1.0, -8.0), - lateral: ("npc.archaeos.male.foot_l"), + lateral: ("npc.archaeos.male.foot_r"), ), foot_r: ( offset: (0.0, -1.0, -8.0), @@ -54,7 +54,7 @@ (Odonto, Male): ( hand_l: ( offset: (-3.0, -3.0, -7.0), - lateral: ("npc.odonto.male.hand_l"), + lateral: ("npc.odonto.male.hand_r"), ), hand_r: ( offset: (0.0, -3.0, -7.0), @@ -62,7 +62,7 @@ ), leg_l: ( offset: (-7.0, -4.5, -4.0), - lateral: ("npc.odonto.male.leg_l"), + lateral: ("npc.odonto.male.leg_r"), ), leg_r: ( offset: (0.0, -4.5, -4.0), @@ -70,7 +70,7 @@ ), foot_l: ( offset: (-8.0, -1.0, -8.0), - lateral: ("npc.odonto.male.foot_l"), + lateral: ("npc.odonto.male.foot_r"), ), foot_r: ( offset: (-6.0, -1.0, -8.0), @@ -80,7 +80,7 @@ (Odonto, Female): ( hand_l: ( offset: (-3.0, -3.0, -7.0), - lateral: ("npc.odonto.male.hand_l"), + lateral: ("npc.odonto.male.hand_r"), ), hand_r: ( offset: (0.0, -3.0, -7.0), @@ -88,7 +88,7 @@ ), leg_l: ( offset: (-7.0, -4.5, -4.0), - lateral: ("npc.odonto.male.leg_l"), + lateral: ("npc.odonto.male.leg_r"), ), leg_r: ( offset: (0.0, -4.5, -4.0), @@ -96,7 +96,7 @@ ), foot_l: ( offset: (-8.0, -1.0, -8.0), - lateral: ("npc.odonto.male.foot_l"), + lateral: ("npc.odonto.male.foot_r"), ), foot_r: ( offset: (-6.0, -1.0, -8.0), @@ -106,7 +106,7 @@ (Sandraptor, Male): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_sand.male.hand_l"), + lateral: ("npc.raptor_sand.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -114,7 +114,7 @@ ), leg_l: ( offset: (-5.0, -3.5, -3.5), - lateral: ("npc.raptor_sand.male.leg_l"), + lateral: ("npc.raptor_sand.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -122,7 +122,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_sand.male.foot_l"), + lateral: ("npc.raptor_sand.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -132,7 +132,7 @@ (Sandraptor, Female): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_sand.male.hand_l"), + lateral: ("npc.raptor_sand.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -140,7 +140,7 @@ ), leg_l: ( offset: (-5.0, -3.5, -3.5), - lateral: ("npc.raptor_sand.male.leg_l"), + lateral: ("npc.raptor_sand.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -148,7 +148,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_sand.male.foot_l"), + lateral: ("npc.raptor_sand.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -158,7 +158,7 @@ (Snowraptor, Male): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_snow.male.hand_l"), + lateral: ("npc.raptor_snow.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -166,7 +166,7 @@ ), leg_l: ( offset: (-5.0, -3.5, -3.5), - lateral: ("npc.raptor_snow.male.leg_l"), + lateral: ("npc.raptor_snow.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -174,7 +174,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_snow.male.foot_l"), + lateral: ("npc.raptor_snow.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -184,7 +184,7 @@ (Snowraptor, Female): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_snow.male.hand_l"), + lateral: ("npc.raptor_snow.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -192,7 +192,7 @@ ), leg_l: ( offset: (-5.0, -3.5, -3.5), - lateral: ("npc.raptor_snow.male.leg_l"), + lateral: ("npc.raptor_snow.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -200,7 +200,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_snow.male.foot_l"), + lateral: ("npc.raptor_snow.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -210,7 +210,7 @@ (Woodraptor, Male): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_wood.male.hand_l"), + lateral: ("npc.raptor_wood.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -218,7 +218,7 @@ ), leg_l: ( offset: (-2.5, -3.5, -3.5), - lateral: ("npc.raptor_wood.male.leg_l"), + lateral: ("npc.raptor_wood.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -226,7 +226,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_wood.male.foot_l"), + lateral: ("npc.raptor_wood.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -236,7 +236,7 @@ (Woodraptor, Female): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_wood.male.hand_l"), + lateral: ("npc.raptor_wood.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -244,7 +244,7 @@ ), leg_l: ( offset: (-2.5, -3.5, -3.5), - lateral: ("npc.raptor_wood.male.leg_l"), + lateral: ("npc.raptor_wood.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -252,7 +252,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_wood.male.foot_l"), + lateral: ("npc.raptor_wood.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -262,7 +262,7 @@ (Sunlizard, Male): ( hand_l: ( offset: (-4.0, -1.5, -7.0), - lateral: ("npc.sunlizard.male.hand_l"), + lateral: ("npc.sunlizard.male.hand_r"), ), hand_r: ( offset: (0.0, -1.5, -7.0), @@ -270,7 +270,7 @@ ), leg_l: ( offset: (-1.5, -2.5, -3.5), - lateral: ("npc.sunlizard.male.leg_l"), + lateral: ("npc.sunlizard.male.leg_r"), ), leg_r: ( offset: (0.0, -2.5, -3.5), @@ -278,7 +278,7 @@ ), foot_l: ( offset: (-2.5, -4.0, -9.0), - lateral: ("npc.sunlizard.male.foot_l"), + lateral: ("npc.sunlizard.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.0, -9.0), @@ -288,7 +288,7 @@ (Sunlizard, Female): ( hand_l: ( offset: (-4.0, -1.5, -7.0), - lateral: ("npc.sunlizard.male.hand_l"), + lateral: ("npc.sunlizard.male.hand_r"), ), hand_r: ( offset: (0.0, -1.5, -7.0), @@ -296,7 +296,7 @@ ), leg_l: ( offset: (-1.5, -2.5, -3.5), - lateral: ("npc.sunlizard.male.leg_l"), + lateral: ("npc.sunlizard.male.leg_r"), ), leg_r: ( offset: (0.0, -2.5, -3.5), @@ -304,7 +304,7 @@ ), foot_l: ( offset: (-2.5, -4.0, -9.0), - lateral: ("npc.sunlizard.male.foot_l"), + lateral: ("npc.sunlizard.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.0, -9.0), diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 5f688399ff..9ac6e2baca 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -508,7 +508,12 @@ impl Body { } } - pub fn can_strafe(&self) -> bool { matches!(self, Body::Humanoid(_)) } + pub fn can_strafe(&self) -> bool { + matches!( + self, + Body::Humanoid(_) | Body::BipedSmall(_) | Body::BipedLarge(_) + ) + } } impl Component for Body { diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 4dce7a4a0e..de2484185a 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -18,6 +18,10 @@ pub enum ToolKind { Sword, Axe, Hammer, + HammerSimple, + SwordSimple, + StaffSimple, + BowSimple, Bow, Dagger, Staff, diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 0b5de96f61..4d853ca1ff 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -238,7 +238,7 @@ impl LoadoutBuilder { }, (biped_large::Species::Minotaur, _) => { main_tool = Some(Item::new_from_asset_expect( - "common.items.npc_weapons.sword.saurok_sword", + "common.items.npc_weapons.hammer.cyclops_hammer", )); }, }, @@ -370,22 +370,22 @@ impl LoadoutBuilder { Guard => LoadoutBuilder::new() .active_item(active_item) .shoulder(Some(Item::new_from_asset_expect( - "common.items.armor.shoulder.steel_0", + "common.items.armor.shoulder.plate_leather_0", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.armor.chest.steel_0", + "common.items.armor.chest.plate_leather_0", ))) .belt(Some(Item::new_from_asset_expect( - "common.items.armor.belt.steel_0", + "common.items.armor.belt.plate_leather_0", ))) .hands(Some(Item::new_from_asset_expect( - "common.items.armor.hand.steel_0", + "common.items.armor.hand.plate_leather_0", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.armor.pants.steel_0", + "common.items.armor.pants.plate_leather_0", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.armor.foot.steel_0", + "common.items.armor.foot.plate_leather_0", ))) .lantern(match rand::thread_rng().gen_range(0..3) { 0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")), diff --git a/server/src/persistence/json_models.rs b/server/src/persistence/json_models.rs index a067901148..5088bf79db 100644 --- a/server/src/persistence/json_models.rs +++ b/server/src/persistence/json_models.rs @@ -142,6 +142,10 @@ pub fn skill_to_db_string(skill: comp::skills::Skill) -> String { UnlockGroup(SkillGroupKind::Weapon(ToolKind::Dagger)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Shield)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Spear)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::HammerSimple)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::StaffSimple)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::BowSimple)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::SwordSimple)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Debug)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Farming)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Empty)) @@ -278,6 +282,10 @@ pub fn skill_group_to_db_string(skill_group: comp::skills::SkillGroupKind) -> St Weapon(ToolKind::Dagger) | Weapon(ToolKind::Shield) | Weapon(ToolKind::Spear) + | Weapon(ToolKind::HammerSimple) + | Weapon(ToolKind::StaffSimple) + | Weapon(ToolKind::BowSimple) + | Weapon(ToolKind::SwordSimple) | Weapon(ToolKind::Debug) | Weapon(ToolKind::Farming) | Weapon(ToolKind::Empty) diff --git a/voxygen/anim/src/biped_large/alpha.rs b/voxygen/anim/src/biped_large/alpha.rs index b05f7bcba0..2e749fcd06 100644 --- a/voxygen/anim/src/biped_large/alpha.rs +++ b/voxygen/anim/src/biped_large/alpha.rs @@ -11,9 +11,10 @@ impl Animation for AlphaAnimation { type Dependency = ( Option, Option, - f32, + Vec3, f64, Option, + f32, ); type Skeleton = BipedLargeSkeleton; @@ -24,117 +25,115 @@ impl Animation for AlphaAnimation { #[allow(clippy::approx_constant)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { *rate = 1.0; let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); - let lab = 1.0; + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); - let (movement1, movement2, movement3) = match stage_section { + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); + let (movement1base, movement2base, movement3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; + let pullback = 1.0 - movement3; + let movement1 = movement1base * pullback; + let movement2 = movement2base * pullback; - let foot = (((1.0) - / (0.2 + 0.8 * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()); - let slowersmooth = (anim_time as f32 * lab as f32 * 4.0).sin(); - let slower = (((1.0) - / (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 4.0).sin()); + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = Quaternion::rotation_x( + movement1 * 0.8 + 0.6 * speednorm + (footrotr * -0.2) * speednorm, + ); - next.torso.position = Vec3::new(0.0, 0.0, 0.1); + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = Quaternion::rotation_x( + movement1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm, + ); next.torso.orientation = Quaternion::rotation_z(0.0); - match active_tool_kind { - Some(ToolKind::Sword) => { - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4); - next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + match active_tool_kind { + Some(ToolKind::SwordSimple) => { + next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); + next.control_r.position = Vec3::new(0.0, 2.0, -3.0); + next.head.orientation = Quaternion::rotation_x(movement1 * -0.25) + * Quaternion::rotation_z(movement1 * -0.2 + movement2 * 0.6); + next.control.position = Vec3::new( + -3.0 + movement1 * -4.0 + movement2 * 5.0, + 5.0 + s_a.grip / 1.2 + movement1 * -4.0 + movement2 * 8.0, + -4.0 + -s_a.grip / 2.0 + movement2 * -5.0, + ); + next.upper_torso.orientation = + Quaternion::rotation_z(movement1base * 0.5 + movement2 * -0.7); + next.lower_torso.orientation = + Quaternion::rotation_z(movement1base * -0.5 + movement2 * 0.7); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + movement1 * -0.5 + movement2 * 1.5) + * Quaternion::rotation_y(-0.2); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.2 + movement1 * -0.5 + movement2 * 1.5) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-0.2 + movement1 * 0.5 + movement2 * -1.5) + * Quaternion::rotation_y(-0.1 + movement1 * -0.5 + movement2 * 1.0); + }, + Some(ToolKind::HammerSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + movement2 * -10.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); next.control.position = Vec3::new( - s_a.sc.0, - s_a.sc.1 + movement1 * -4.0 + movement2 * 16.0 + movement3 * -4.0, - s_a.sc.2 + movement1 * 1.0, + 4.0 + movement1 * -12.0 + movement2 * 20.0, + (s_a.grip / 1.0) + movement1 * -3.0 + movement2 * 5.0, + (-s_a.grip / 0.8) + movement1 * -2.0 + movement2 * 8.0, ); - next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + movement1 * -0.5) - * Quaternion::rotation_y( - s_a.sc.4 + movement1 * -1.0 + movement2 * -0.6 + movement3 * 1.0, - ) - * Quaternion::rotation_z(s_a.sc.5 + movement1 * -1.2 + movement2 * 1.3); - - next.upper_torso.orientation = Quaternion::rotation_z( - movement1 * 1.5 + (movement2 * 1.75).sin() * -3.0 + movement3 * 0.5, - ); - - next.head.position = Vec3::new(0.0 + movement2 * 2.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_z( - movement1 * -0.9 + (movement2 * 1.75).sin() * 2.5 + movement3 * -0.5, - ); - }, - Some(ToolKind::Hammer) => { - next.hand_l.position = Vec3::new(-12.0, 0.0, 10.0); - next.hand_l.orientation = - Quaternion::rotation_x(0.0) * Quaternion::rotation_z(-2.0); - next.hand_r.position = Vec3::new(3.0, 0.0, 10.0); - next.hand_r.orientation = - Quaternion::rotation_x(0.0) * Quaternion::rotation_z(-2.0); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = - Quaternion::rotation_y(-1.57) * Quaternion::rotation_z(-1.87); - - next.head.orientation = Quaternion::rotation_z(slower * 0.03) - * Quaternion::rotation_x(slowersmooth * 0.1) - * Quaternion::rotation_y(slower * 0.05 + slowersmooth * 0.06) - * Quaternion::rotation_z((slowersmooth * -0.4).max(0.0)); - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1); + next.head.orientation = Quaternion::rotation_x(movement1 * -0.25) + * Quaternion::rotation_z(movement1 * -0.2 + movement2 * 0.6); next.upper_torso.orientation = - Quaternion::rotation_z(slower * 0.18 + slowersmooth * 0.15) - * Quaternion::rotation_x(0.0 + slower * 0.18 + slowersmooth * 0.15) - * Quaternion::rotation_y(slower * 0.18 + slowersmooth * 0.15); + Quaternion::rotation_z(movement1 * 0.2 + movement2 * -0.4); + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + movement2 * 0.8) + * Quaternion::rotation_y(-0.0); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.0 + 0.2 + movement2 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); - next.lower_torso.orientation = - Quaternion::rotation_z(slower * -0.1 + slowersmooth * -0.075) - * Quaternion::rotation_x(0.0 + slower * -0.1) - * Quaternion::rotation_y(slower * -0.1); - - if velocity > 0.5 { - next.foot_l.position = Vec3::new(-s_a.foot.0, foot * -6.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(foot * -0.4) - * Quaternion::rotation_z((slower * 0.3).max(0.0)); - - next.foot_r.position = Vec3::new(s_a.foot.0, foot * 6.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(foot * 0.4) - * Quaternion::rotation_z((slower * 0.3).max(0.0)); - next.torso.orientation = Quaternion::rotation_x(-0.15); - } else { - next.foot_l.position = - Vec3::new(-s_a.foot.0, -2.5, s_a.foot.2 + (slower * 2.5).max(0.0)); - next.foot_l.orientation = Quaternion::rotation_x(slower * -0.2 - 0.2) - * Quaternion::rotation_z((slower * 1.0).max(0.0)); - - next.foot_r.position = Vec3::new(s_a.foot.0, 3.5 - slower * 2.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(slower * 0.1) - * Quaternion::rotation_z((slower * 0.5).max(0.0)); - } - - next.control.position = Vec3::new(-8.0, 7.0, 1.0); - next.control.orientation = Quaternion::rotation_x(-1.5 + slower * 1.5) - * Quaternion::rotation_y(slowersmooth * 0.35 - 0.3) - * Quaternion::rotation_z(1.4 + slowersmooth * 0.2); + next.control.orientation = + Quaternion::rotation_x(-1.0 + movement1 * -0.5 + movement2 * -0.3) + * Quaternion::rotation_y(-1.8 + movement1 * -0.8 + movement2 * 3.0) + * Quaternion::rotation_z(movement1 * -0.8 + movement2 * -0.8); }, Some(ToolKind::Debug) => { next.hand_l.position = Vec3::new(-7.0, 4.0, 3.0); diff --git a/voxygen/anim/src/biped_large/idle.rs b/voxygen/anim/src/biped_large/idle.rs index b8421f944c..459f0628db 100644 --- a/voxygen/anim/src/biped_large/idle.rs +++ b/voxygen/anim/src/biped_large/idle.rs @@ -65,7 +65,7 @@ impl Animation for IdleAnimation { next.hand_r.scale = Vec3::one() * 1.04; next.lower_torso.scale = Vec3::one() * 1.02; next.hold.scale = Vec3::one() * 0.0; - next.torso.scale = Vec3::one() / 8.0; + next.torso.scale = Vec3::one() / 8.0 * s_a.scaler; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + torso * 0.2); next.head.orientation = @@ -103,7 +103,7 @@ impl Animation for IdleAnimation { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Hammer) => { + Some(ToolKind::HammerSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, @@ -131,7 +131,7 @@ impl Animation for IdleAnimation { next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); - next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0; + next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0 * s_a.scaler; if s_a.float { next.upper_torso.position = Vec3::new( diff --git a/voxygen/anim/src/biped_large/jump.rs b/voxygen/anim/src/biped_large/jump.rs index e2aa7bf7e1..6c97b5a660 100644 --- a/voxygen/anim/src/biped_large/jump.rs +++ b/voxygen/anim/src/biped_large/jump.rs @@ -109,9 +109,9 @@ impl Animation for JumpAnimation { next.foot_r.position = Vec3::new(s_a.foot.0, 5.0 + s_a.foot.1, s_a.foot.2); next.foot_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.4); - next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0; + next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0 * s_a.scaler; next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.torso.scale = Vec3::one() / 8.0; + next.torso.scale = Vec3::one() / 8.0 * s_a.scaler; next } diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index eb65fc0d8a..c1341c3d38 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -48,6 +48,8 @@ skeleton_impls!(struct BipedLargeSkeleton { + hold, torso, control, + control_l, + control_r, leg_control_l, leg_control_r, arm_control_l, @@ -72,7 +74,8 @@ impl Skeleton for BipedLargeSkeleton { let torso_mat = base_mat * Mat4::::from(self.torso); let upper_torso_mat = torso_mat * upper_torso; - + let control_l_mat = Mat4::::from(self.control_l); + let control_r_mat = Mat4::::from(self.control_r); let lower_torso_mat = upper_torso_mat * Mat4::::from(self.lower_torso); let leg_l = Mat4::::from(self.leg_l); @@ -86,6 +89,7 @@ impl Skeleton for BipedLargeSkeleton { let head_mat = upper_torso_mat * Mat4::::from(self.head); let control_mat = Mat4::::from(self.control); + let hand_l_mat = Mat4::::from(self.hand_l); *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ @@ -98,8 +102,8 @@ impl Skeleton for BipedLargeSkeleton { make_bone(upper_torso_mat * control_mat * Mat4::::from(self.second)), make_bone(arm_control_l * Mat4::::from(self.shoulder_l)), make_bone(arm_control_r * Mat4::::from(self.shoulder_r)), - make_bone(arm_control_l * control_mat * Mat4::::from(self.hand_l)), - make_bone(arm_control_r * control_mat * Mat4::::from(self.hand_r)), + make_bone(arm_control_l * control_mat * control_l_mat * Mat4::::from(self.hand_l)), + make_bone(arm_control_r * control_mat * control_r_mat * Mat4::::from(self.hand_r)), make_bone(leg_control_l * leg_l), make_bone(leg_control_r * leg_r), make_bone(leg_control_l * Mat4::::from(self.foot_l)), @@ -121,6 +125,9 @@ pub struct SkeletonAttr { hand: (f32, f32, f32), leg: (f32, f32, f32), foot: (f32, f32, f32), + scaler: f32, + tempo: f32, + grip: f32, shl: (f32, f32, f32, f32, f32, f32), shr: (f32, f32, f32, f32, f32, f32), sc: (f32, f32, f32, f32, f32, f32), @@ -160,6 +167,9 @@ impl Default for SkeletonAttr { hand: (0.0, 0.0, 0.0), leg: (0.0, 0.0, 0.0), foot: (0.0, 0.0, 0.0), + scaler: 0.0, + tempo: 0.0, + grip: 0.0, shl: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), shr: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), sc: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), @@ -217,11 +227,11 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Troll, _) => (-1.0, 26.5), (Dullahan, _) => (0.0, 29.0), (Werewolf, _) => (3.0, 26.0), - (Occultsaurok, _) => (3.0, 23.0), - (Mightysaurok, _) => (3.0, 23.0), - (Slysaurok, _) => (3.0, 23.0), + (Occultsaurok, _) => (3.0, 24.0), + (Mightysaurok, _) => (3.0, 24.0), + (Slysaurok, _) => (3.0, 24.0), (Mindflayer, _) => (0.0, 30.5), - (Minotaur, _) => (-1.0, 27.5), + (Minotaur, _) => (-1.0, 31.5), }, lower_torso: match (body.species, body.body_type) { (Ogre, Male) => (1.0, -7.0), @@ -232,7 +242,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Dullahan, _) => (0.0, -6.5), (Werewolf, _) => (1.0, -10.0), (Occultsaurok, _) => (0.0, -6.0), - (Mightysaurok, _) => (0.0, -6.0), + (Mightysaurok, _) => (0.0, -5.0), (Slysaurok, _) => (0.0, -6.0), (Mindflayer, _) => (3.5, -19.5), (Minotaur, _) => (1.5, -8.5), @@ -246,25 +256,25 @@ impl<'a> From<&'a Body> for SkeletonAttr { _ => (0.0, 0.0), }, shoulder: match (body.species, body.body_type) { - (Ogre, Male) => (12.0, 0.5, 0.0), - (Ogre, Female) => (8.0, 0.5, -1.0), - (Cyclops, _) => (9.5, 2.5, 2.5), - (Wendigo, _) => (9.0, 0.5, -0.5), - (Troll, _) => (11.0, 0.5, -1.5), - (Dullahan, _) => (14.0, 0.5, 4.5), + (Ogre, Male) => (12.0, 0.5, 3.0), + (Ogre, Female) => (8.0, 0.5, 2.0), + (Cyclops, _) => (9.5, 2.5, 4.5), + (Wendigo, _) => (9.0, 0.5, 2.5), + (Troll, _) => (11.0, 0.5, 4.5), + (Dullahan, _) => (14.0, 0.5, 3.5), (Werewolf, _) => (9.0, 4.0, -3.0), - (Occultsaurok, _) => (7.5, 1.0, -1.5), - (Mightysaurok, _) => (7.5, 1.0, -1.5), - (Slysaurok, _) => (7.5, 1.0, -1.5), + (Occultsaurok, _) => (7.5, 1.0, 1.5), + (Mightysaurok, _) => (7.5, 1.0, 1.5), + (Slysaurok, _) => (7.5, 1.0, 1.5), (Mindflayer, _) => (8.0, 0.5, -1.0), - (Minotaur, _) => (10.0, 1.0, -4.0), + (Minotaur, _) => (10.0, 1.0, -1.0), }, hand: match (body.species, body.body_type) { - (Ogre, Male) => (14.5, 0.0, -2.0), + (Ogre, Male) => (14.5, 0.0, -4.0), (Ogre, Female) => (9.0, 0.5, -4.5), (Cyclops, _) => (10.0, 2.0, -0.5), - (Wendigo, _) => (12.0, 0.0, -0.5), - (Troll, _) => (11.5, 0.0, -1.5), + (Wendigo, _) => (12.0, 0.0, -3.5), + (Troll, _) => (11.5, 0.0, -5.5), (Dullahan, _) => (14.5, 0.0, -2.5), (Werewolf, _) => (10.0, 2.5, -11.0), (Occultsaurok, _) => (8.0, 1.5, -5.5), @@ -276,30 +286,72 @@ impl<'a> From<&'a Body> for SkeletonAttr { leg: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 0.0, -4.0), (Ogre, Female) => (0.0, 0.0, -2.0), - (Cyclops, _) => (0.0, 0.0, -5.0), + (Cyclops, _) => (0.0, -1.0, -5.0), (Wendigo, _) => (2.0, 2.0, -2.5), (Troll, _) => (5.0, 0.0, -6.0), (Dullahan, _) => (0.0, 0.0, -5.0), (Werewolf, _) => (4.5, 1.0, -5.0), - (Occultsaurok, _) => (3.0, 0.5, -6.0), - (Mightysaurok, _) => (3.0, 0.5, -6.0), - (Slysaurok, _) => (3.0, 0.5, -6.0), + (Occultsaurok, _) => (3.0, 0.5, -4.0), + (Mightysaurok, _) => (3.0, 0.5, -4.0), + (Slysaurok, _) => (3.0, 0.5, -4.0), (Mindflayer, _) => (6.0, -2.0, 6.5), - (Minotaur, _) => (5.0, 0.0, -6.0), + (Minotaur, _) => (5.0, 0.0, -10.0), }, foot: match (body.species, body.body_type) { (Ogre, Male) => (4.0, 1.0, -12.0), (Ogre, Female) => (4.0, 0.5, -13.5), - (Cyclops, _) => (4.0, 0.5, -17.0), + (Cyclops, _) => (4.0, 1.5, -17.0), (Wendigo, _) => (5.0, 2.5, -17.0), (Troll, _) => (6.0, 1.5, -13.0), (Dullahan, _) => (4.0, 2.5, -14.0), (Werewolf, _) => (5.5, 3.0, -6.5), - (Occultsaurok, _) => (3.5, 2.0, -12.0), - (Mightysaurok, _) => (3.5, 2.0, -12.0), - (Slysaurok, _) => (3.5, 2.0, -12.0), + (Occultsaurok, _) => (3.5, 3.5, -10.0), + (Mightysaurok, _) => (3.5, 3.5, -10.0), + (Slysaurok, _) => (3.5, 3.5, -10.0), (Mindflayer, _) => (4.5, 1.5, -7.0), - (Minotaur, _) => (6.0, 4.5, -13.5), + (Minotaur, _) => (6.0, 4.5, -17.5), + }, + scaler: match (body.species, body.body_type) { + (Ogre, Male) => 1.4, + (Ogre, Female) => 1.4, + (Cyclops, _) => 1.6, + (Wendigo, _) => 1.2, + (Troll, _) => 1.3, + (Dullahan, _) => 1.4, + (Werewolf, _) => 1.2, + (Occultsaurok, _) => 1.2, + (Mightysaurok, _) => 1.2, + (Slysaurok, _) => 1.2, + (Mindflayer, _) => 1.5, + (Minotaur, _) => 2.0, + }, + tempo: match (body.species, body.body_type) { + (Ogre, Male) => 0.9, + (Ogre, Female) => 0.9, + (Cyclops, _) => 0.8, + (Wendigo, _) => 1.0, + (Troll, _) => 0.9, + (Dullahan, _) => 0.8, + (Werewolf, _) => 1.0, + (Occultsaurok, _) => 1.0, + (Mightysaurok, _) => 1.0, + (Slysaurok, _) => 1.0, + (Mindflayer, _) => 1.0, + (Minotaur, _) => 0.8, + }, + grip: match (body.species, body.body_type) { + (Ogre, Male) => 13.0, + (Ogre, Female) => 8.0, + (Cyclops, _) => 12.0, + (Wendigo, _) => 15.0, + (Troll, _) => 12.0, + (Dullahan, _) => 15.0, + (Werewolf, _) => 13.0, + (Occultsaurok, _) => 10.0, + (Mightysaurok, _) => 10.0, + (Slysaurok, _) => 10.0, + (Mindflayer, _) => 12.0, + (Minotaur, _) => 14.0, }, shl: match (body.species, body.body_type) { (Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0), diff --git a/voxygen/anim/src/biped_large/run.rs b/voxygen/anim/src/biped_large/run.rs index 105768b303..1e6935796f 100644 --- a/voxygen/anim/src/biped_large/run.rs +++ b/voxygen/anim/src/biped_large/run.rs @@ -10,11 +10,12 @@ pub struct RunAnimation; type RunAnimationDependency = ( Option, Option, - f32, + Vec3, Vec3, Vec3, f64, Vec3, + f32, ); impl Animation for RunAnimation { type Dependency = RunAnimationDependency; @@ -34,6 +35,7 @@ impl Animation for RunAnimation { last_ori, global_time, avg_vel, + acc_vel, ): Self::Dependency, anim_time: f64, rate: &mut f32, @@ -45,30 +47,19 @@ impl Animation for RunAnimation { *rate = 1.0; - let lab = 0.65; //.65 - let foothoril = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); - let foothorir = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + let lab = 0.65 * s_a.tempo; //.65 + let speednorm = (speed / 12.0).powf(0.6); //.powf(0.4) - let footvertl = (anim_time as f32 * 16.0 * lab as f32).sin(); - let footvertr = (anim_time as f32 * 16.0 * lab as f32 + PI).sin(); - let handhoril = (anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin(); - let handhorir = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin(); + let footvertl = (acc_vel * lab as f32 + PI * -0.2).sin() * speednorm; + let footvertr = (acc_vel * lab as f32 + PI * -1.2).sin() * speednorm; - let footrotl = (((5.0) - / (2.5 + (2.5) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); - let footrotr = (((5.0) - / (1.0 + (4.0) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); let amplitude = (speed / 21.0).max(0.25); let amplitude2 = (speed * 1.4 / 21.0).sqrt().max(0.6); @@ -76,10 +67,9 @@ impl Animation for RunAnimation { let speedmult = 1.0; let canceler = (speed / 21.0).sqrt(); - let short = (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15).sin(); + let short = (acc_vel * lab as f32 * speedmult).sin(); // - let shortalt = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 3.0 / 8.0 + 0.7).sin(); + let shortalt = (acc_vel * lab as f32 * speedmult + PI * 3.0 + 0.7).sin(); let look = Vec2::new( ((global_time + anim_time) as f32 / 2.0) .floor() @@ -100,28 +90,19 @@ impl Animation for RunAnimation { let shift4 = speedadjust - PI * 3.0 / 4.0 + speedadjust * PI / 2.0; //FL - let foot1a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift1) - .sin(); //1.5 - let foot1b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.1 + canceler * 0.05 + shift1) - .sin(); //1.9 + let foot1a = (acc_vel * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift1).sin(); //1.5 + let foot1b = (acc_vel * lab as f32 * speedmult + 1.1 + canceler * 0.05 + shift1).sin(); //1.9 //FR - let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift2).sin(); //1.2 - let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.1 + shift2).sin(); //1.6 + let foot2a = (acc_vel * lab as f32 * speedmult + shift2).sin(); //1.2 + let foot2b = (acc_vel * lab as f32 * speedmult + 1.1 + shift2).sin(); //1.6 //BL - let foot3a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift3).sin(); //0.0 - let foot3b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.3 + shift3).sin(); //0.4 + let foot3a = (acc_vel * lab as f32 * speedmult + shift3).sin(); //0.0 + let foot3b = (acc_vel * lab as f32 * speedmult + 0.3 + shift3).sin(); //0.4 //BR - let foot4a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift4) - .sin(); //0.3 - let foot4b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + canceler * 0.05 + shift4) - .sin(); //0.7 + let foot4a = (acc_vel * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift4).sin(); //0.3 + let foot4b = (acc_vel * lab as f32 * speedmult + 1.57 + canceler * 0.05 + shift4).sin(); //0.7 // - let _slower = (anim_time as f32 * 1.0 + PI).sin(); - let slow = (anim_time as f32 * 3.5 + PI).sin(); + let slow = (acc_vel * lab as f32 * speedmult + PI).sin(); let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); @@ -137,6 +118,18 @@ impl Animation for RunAnimation { 0.0 } * 1.3; + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footstrafel = (acc_vel * lab as f32 + PI * 1.45).sin(); + let footstrafer = (acc_vel * lab as f32 + PI * (0.95)).sin(); + let footvertsl = (acc_vel * lab as f32).sin(); + let footvertsr = (acc_vel * lab as f32 + PI * 0.5).sin(); + let direction = velocity.y * -0.098 * orientation.y + velocity.x * -0.098 * orientation.x; + + let side = + (velocity.x * -0.098 * orientation.y + velocity.y * 0.098 * orientation.x) * -1.0; + let sideabs = side.abs(); + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); next.jaw.scale = Vec3::one() * 1.02; @@ -145,7 +138,7 @@ impl Animation for RunAnimation { next.hand_l.scale = Vec3::one() * 1.04; next.hand_r.scale = Vec3::one() * 1.04; next.hold.scale = Vec3::one() * 0.0; - next.torso.scale = Vec3::one() / 8.0; + next.torso.scale = Vec3::one() / 8.0 * s_a.scaler; if s_a.beast { next.head.position = Vec3::new(0.0, s_a.head.0, 3.0 + s_a.head.1); @@ -264,27 +257,35 @@ impl Animation for RunAnimation { 0.0, 0.0 + (short * 0.75).max(-2.0), speedavg * 0.15 + (short * 0.75).max(-2.0), - ) / 8.0; + ) / 8.0 + * s_a.scaler; next.torso.orientation = Quaternion::rotation_x(x_tilt + amplitude * short * 0.1 + speedavg * -0.045); } else { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = - Quaternion::rotation_z(short * -0.18) * Quaternion::rotation_x(-0.05); + next.head.orientation = Quaternion::rotation_z(short * -0.18 * speednorm - tilt * 2.0) + * Quaternion::rotation_x(0.25 * speednorm); - next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + shortalt * -1.5); - next.upper_torso.orientation = Quaternion::rotation_z(short * 0.18); + next.upper_torso.position = Vec3::new( + 0.0, + s_a.upper_torso.0, + s_a.upper_torso.1 + shortalt * -1.5 * speednorm, + ); + next.upper_torso.orientation = + Quaternion::rotation_z(short * 0.18 * speednorm + tilt * -1.0) + * Quaternion::rotation_y(tilt); next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); next.lower_torso.orientation = - Quaternion::rotation_z(short * 0.15) * Quaternion::rotation_x(0.14); + Quaternion::rotation_z(short * 0.15 * speednorm + tilt * 0.5) + * Quaternion::rotation_y(tilt * -0.5) + * Quaternion::rotation_x(0.14 * speednorm); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); next.jaw.orientation = Quaternion::rotation_x(0.0); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = Quaternion::rotation_x(shortalt * 0.3); + next.tail.orientation = Quaternion::rotation_x(shortalt * 0.3 * speednorm); next.second.position = Vec3::new(0.0, 0.0, 0.0); next.second.orientation = Quaternion::rotation_x(PI) @@ -292,22 +293,22 @@ impl Animation for RunAnimation { * Quaternion::rotation_z(0.0); match active_tool_kind { - Some(ToolKind::Bow) => { + Some(ToolKind::BowSimple) => { next.main.position = Vec3::new(-2.0, -5.0, -6.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { next.main.position = Vec3::new(-6.0, -5.0, -12.0); next.main.orientation = Quaternion::rotation_y(0.6) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Sword) => { + Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Hammer) => { + Some(ToolKind::HammerSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); @@ -321,86 +322,116 @@ impl Animation for RunAnimation { next.shoulder_l.position = Vec3::new( -s_a.shoulder.0, - s_a.shoulder.1 + foothoril * -3.0, - s_a.shoulder.2, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.5, ); - next.shoulder_l.orientation = Quaternion::rotation_x(footrotl * -0.36) - * Quaternion::rotation_y(0.1) - * Quaternion::rotation_z(footrotl * 0.3); + next.shoulder_l.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotr * -0.8) * speednorm) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); next.shoulder_r.position = Vec3::new( s_a.shoulder.0, - s_a.shoulder.1 + foothorir * -3.0, - s_a.shoulder.2, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.5, ); - next.shoulder_r.orientation = Quaternion::rotation_x(footrotr * -0.36) - * Quaternion::rotation_y(-0.1) - * Quaternion::rotation_z(footrotr * -0.3); + next.shoulder_r.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotl * -0.8) * speednorm) + * Quaternion::rotation_y(0.0); next.hand_l.position = Vec3::new( - -1.0 + -s_a.hand.0, - s_a.hand.1 + foothoril * -4.0, - s_a.hand.2 + foothoril * 1.0, + -s_a.hand.0 + foothorir * -1.3, + 2.0 * speednorm + s_a.hand.1 + foothorir * -5.0, + 1.5 * speednorm + s_a.hand.2 - foothorir * 4.5, ); - next.hand_l.orientation = Quaternion::rotation_x(0.15 + (handhoril * -1.2).max(-0.3)) - * Quaternion::rotation_y(handhoril * -0.1); + next.hand_l.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotr * -1.2) * speednorm) + * Quaternion::rotation_y(footrotr * 0.4 * speednorm); next.hand_r.position = Vec3::new( - 1.0 + s_a.hand.0, - s_a.hand.1 + foothorir * -4.0, - s_a.hand.2 + foothorir * 1.0, + s_a.hand.0 + foothoril * 1.3, + 2.0 * speednorm + s_a.hand.1 + foothoril * -5.0, + 1.5 * speednorm + s_a.hand.2 - foothoril * 4.5, ); - next.hand_r.orientation = Quaternion::rotation_x(0.15 + (handhorir * -1.2).max(-0.3)) - * Quaternion::rotation_y(handhorir * 0.1); + next.hand_r.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotl * -1.2) * speednorm) + * Quaternion::rotation_y(footrotl * -0.4 * speednorm); - next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2) * 0.98; - next.leg_l.orientation = - Quaternion::rotation_z(short * 0.18) * Quaternion::rotation_x(foothoril * 0.3); + next.leg_l.position = Vec3::new( + -s_a.leg.0, + s_a.leg.1 + foothoril * -3.5, + s_a.leg.2 + (footvertl * -3.0), + ) * 0.98; + next.leg_l.orientation = Quaternion::rotation_z(short * 0.18 * speednorm) + * Quaternion::rotation_y(tilt * -0.5) + * Quaternion::rotation_x(foothoril * -0.8); - next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2) * 0.98; + next.leg_r.position = Vec3::new( + s_a.leg.0, + s_a.leg.1 + foothorir * -3.5, + s_a.leg.2 + (footvertr * -3.0), + ) * 0.98; - next.leg_r.orientation = - Quaternion::rotation_z(short * 0.18) * Quaternion::rotation_x(foothorir * 0.3); + next.leg_r.orientation = Quaternion::rotation_z(short * 0.18 * speednorm) + * Quaternion::rotation_y(tilt * -0.5) + * Quaternion::rotation_x(foothorir * -0.8); next.foot_l.position = Vec3::new( - -s_a.foot.0, - s_a.foot.1 + foothoril * 8.5, - s_a.foot.2 + ((footvertl * 6.5).max(0.0)), + -s_a.foot.0 + footstrafel * sideabs * 3.0 + tilt * -2.0, + s_a.foot.1 + + (1.0 - sideabs) * (-1.5 * speednorm + foothoril * -10.5) + + (direction * 5.0).max(0.0), + s_a.foot.2 + + (1.0 - sideabs) * (1.0 * speednorm + ((footvertl * -4.1).max(-1.0))) + + side * ((footvertsl * 1.5).max(-1.0)), ); - next.foot_l.orientation = - Quaternion::rotation_x(-0.5 + footrotl * 0.85) * Quaternion::rotation_y(0.0); + next.foot_l.orientation = Quaternion::rotation_x( + (1.0 - sideabs) * (-0.2 + foothoril * -0.9) + sideabs * -0.5, + ) * Quaternion::rotation_y( + tilt * 1.0 + side * 0.3 + side * (foothoril * 0.3), + ) * Quaternion::rotation_z(side * 0.2); next.foot_r.position = Vec3::new( - s_a.foot.0, - s_a.foot.1 + foothorir * 8.5, - s_a.foot.2 + ((footvertr * 6.5).max(0.0)), + s_a.foot.0 + footstrafer * sideabs * 3.0 + tilt * -2.0, + s_a.foot.1 + + (1.0 - sideabs) * (-1.5 * speednorm + foothorir * -10.5) + + (direction * 5.0).max(0.0), + s_a.foot.2 + + (1.0 - sideabs) * (1.0 * speednorm + ((footvertr * -4.1).max(-1.0))) + + side * ((footvertsr * -1.5).max(-1.0)), ); - next.foot_r.orientation = - Quaternion::rotation_x(-0.5 + footrotr * 0.85) * Quaternion::rotation_y(0.0); + next.foot_r.orientation = Quaternion::rotation_x( + (1.0 - sideabs) * (-0.2 + foothorir * -0.9) + sideabs * -0.5, + ) * Quaternion::rotation_y( + tilt * 1.0 + side * 0.3 + side * (foothorir * 0.3), + ) * Quaternion::rotation_z(side * 0.2); next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0; - next.torso.orientation = Quaternion::rotation_x(-0.25); + next.torso.orientation = Quaternion::rotation_x(-0.25 * speednorm); } if s_a.float { next.head.orientation = Quaternion::rotation_x(slow * 0.1); - next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + slow * 2.0 + 4.0); - next.upper_torso.orientation = Quaternion::rotation_x(-0.1 + slow * 0.05); - next.lower_torso.orientation = - Quaternion::rotation_z(short * 0.05) * Quaternion::rotation_x(0.14); + next.upper_torso.position = Vec3::new( + 0.0, + s_a.upper_torso.0, + s_a.upper_torso.1 + slow * 2.0 + 4.0 * speednorm, + ); + next.upper_torso.orientation = Quaternion::rotation_x(-0.1 * speednorm + slow * 0.05); + next.lower_torso.orientation = Quaternion::rotation_z(short * 0.05 * speednorm) + * Quaternion::rotation_x(0.14 * speednorm); next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_l.orientation = Quaternion::rotation_x(-0.4 + slow * 0.1); + next.shoulder_l.orientation = Quaternion::rotation_x(-0.4 * speednorm + slow * 0.1); next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = Quaternion::rotation_x(-0.4 + slow * 0.1); + next.shoulder_r.orientation = Quaternion::rotation_x(-0.4 * speednorm + slow * 0.1); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_l.orientation = Quaternion::rotation_x(-0.4 + slow * 0.1); + next.hand_l.orientation = Quaternion::rotation_x(-0.4 * speednorm + slow * 0.1); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.orientation = Quaternion::rotation_x(-0.4 + slow * 0.1); + next.hand_r.orientation = Quaternion::rotation_x(-0.4 * speednorm + slow * 0.1); next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(-0.5 + slow * 0.1); + next.foot_l.orientation = Quaternion::rotation_x(-0.5 * speednorm + slow * 0.1); next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(-0.5 + slow * 0.1); + next.foot_r.orientation = Quaternion::rotation_x(-0.5 * speednorm + slow * 0.1); } next diff --git a/voxygen/anim/src/biped_large/shoot.rs b/voxygen/anim/src/biped_large/shoot.rs index 7af7cd9234..e37e9fc6fb 100644 --- a/voxygen/anim/src/biped_large/shoot.rs +++ b/voxygen/anim/src/biped_large/shoot.rs @@ -10,11 +10,12 @@ pub struct ShootAnimation; type ShootAnimationDependency = ( Option, Option, - f32, + Vec3, Vec3, Vec3, f64, Option, + f32, ); impl Animation for ShootAnimation { type Dependency = ShootAnimationDependency; @@ -30,10 +31,11 @@ impl Animation for ShootAnimation { active_tool_kind, _second_tool_kind, velocity, - orientation, - last_ori, + _orientation, + _last_ori, _global_time, stage_section, + acc_vel, ): Self::Dependency, anim_time: f64, rate: &mut f32, @@ -44,140 +46,151 @@ impl Animation for ShootAnimation { let mut next = (*skeleton).clone(); - let lab = 1.0; - let ori: Vec2 = Vec2::from(orientation); - let last_ori = Vec2::from(last_ori); - let tilt = if ::vek::Vec2::new(ori, last_ori) - .map(|o| o.magnitude_squared()) - .map(|m| m > 0.001 && m.is_finite()) - .reduce_and() - && ori.angle_between(last_ori).is_finite() - { - ori.angle_between(last_ori).min(0.2) - * last_ori.determine_side(Vec2::zero(), ori).signum() - } else { - 0.0 - } * 1.3; + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); + + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(0.8 + 1.2 * speednorm + (footrotr * -0.2) * speednorm); + + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(0.8 + 1.2 * speednorm + (footrotl * -0.2) * speednorm); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); next.jaw.orientation = Quaternion::rotation_x(0.0); + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); match active_tool_kind { - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { - let (movement1, movement2, movement3) = match stage_section { - Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), - Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), - Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), - _ => (0.0, 0.0, 0.0), + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { + let (movement1base, movement1shake, movement2base, movement3) = match stage_section + { + Some(StageSection::Buildup) => ( + anim_time as f32, + (anim_time as f32 * 10.0 + PI).sin(), + 0.0, + 0.0, + ), + Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(0.25), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0, 0.0), }; - let xmove = (movement1 as f32 * 6.0 * lab as f32 + PI).sin(); - let ymove = (movement1 as f32 * 6.0 * lab as f32 + PI * (0.5)).sin(); - next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.sthl.3); - - next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); - next.shoulder_l.orientation = Quaternion::rotation_z(0.2) - * Quaternion::rotation_x( - (movement1 * (movement2 * 8.0 + PI / 2.0).sin() * -0.1) * (1.0 - movement3), - ); - - next.shoulder_r.orientation = Quaternion::rotation_z(-0.2) - * Quaternion::rotation_x( - 1.0 + movement1 * (movement2 * 8.0 + PI / 2.0).sin() * -0.1, - ); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + let pullback = 1.0 - movement3; + let movement1 = movement1base * pullback; + let movement2 = movement2base * pullback; + next.control_l.position = Vec3::new(-1.0, 3.0, 12.0); + next.control_r.position = Vec3::new(1.0, 2.0, 2.0); next.control.position = Vec3::new( - s_a.stc.0 + (xmove * 3.0 + movement1 * -4.0) * (1.0 - movement3), - s_a.stc.1 + (2.0 + ymove * 3.0 + movement2 * 3.0) * (1.0 - movement3), - s_a.stc.2, + -3.0, + 3.0 + s_a.grip / 1.2 + + movement1 * 4.0 + + movement2 + + movement1shake * 2.0 + + movement2 * -2.0, + -11.0 + -s_a.grip / 2.0 + movement1 * 3.0, ); + next.head.orientation = Quaternion::rotation_x(movement1 * -0.15) + * Quaternion::rotation_y(movement1 * 0.25) + * Quaternion::rotation_z(movement1 * 0.25); + next.jaw.orientation = Quaternion::rotation_x(movement1 * -0.5); + + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + movement1 * 0.5) + * Quaternion::rotation_y(movement1 * -0.4); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.5 + movement1 * 0.5) + * Quaternion::rotation_y(0.5) + * Quaternion::rotation_z(0.0); + next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement2 * 0.6) * (1.0 - movement3)) - * Quaternion::rotation_y(s_a.stc.4 + (movement1 * 0.5 + movement2 * -0.5)) - * Quaternion::rotation_z( - s_a.stc.5 - - (0.2 + movement1 * -0.5 + movement2 * 0.8) * (1.0 - movement3), - ); - next.upper_torso.orientation = - Quaternion::rotation_z((movement1 * 0.3 + movement2 * 0.2) * (1.0 - movement3)); - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_z( - tilt * -2.5 + (movement1 * -0.2 + movement2 * -0.4) * (1.0 - movement3), + Quaternion::rotation_x(-0.2 + movement1 * -0.2 + movement1shake * 0.1) + * Quaternion::rotation_y(-0.1 + movement1 * 0.8 + movement2 * -0.3); + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = Quaternion::rotation_x( + movement1 * 0.8 + 0.8 * speednorm + (footrotr * -0.2) * speednorm, ); - if speed < 0.5 { - next.lower_torso.orientation = - Quaternion::rotation_x(0.08) * Quaternion::rotation_z(0.0); - - next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1 - 5.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(-0.5); - - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1 + 3.0, s_a.foot.2); - next.foot_r.orientation = - Quaternion::rotation_x(0.5) * Quaternion::rotation_z(0.3); - } else { - }; + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = Quaternion::rotation_x( + movement1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm, + ); }, - Some(ToolKind::Bow) => { - let (movement1, movement2, movement3) = match stage_section { + Some(ToolKind::BowSimple) => { + let (movement1base, movement2base, movement3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new( - s_a.bhl.0 + movement2 * -2.0, - s_a.bhl.1 + movement2 * -12.0, - s_a.bhl.2 + movement2 * -3.0, + let pullback = 1.0 - movement3; + let movement1 = movement1base * pullback; + let movement2 = movement2base * pullback; + next.control_l.position = Vec3::new(-1.0, -2.0 + movement2 * -7.0, -3.0); + next.control_r.position = Vec3::new(0.0, 4.0, 1.0); + + next.control.position = Vec3::new( + -1.0 + movement1 * 2.0, + 6.0 + s_a.grip / 1.2 + movement1 * 7.0, + -5.0 + -s_a.grip / 2.0 + movement1 * 8.0, ); - next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3); - next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); - next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3); - next.shoulder_l.orientation = Quaternion::rotation_z(0.2) - * Quaternion::rotation_x( - (movement1 * (movement2 * 8.0 + PI / 2.0).sin() * 1.1) * (1.0 - movement3), - ); - next.shoulder_r.orientation = Quaternion::rotation_z(-0.2) - * Quaternion::rotation_x( - 1.5 + movement1 * (movement2 * 8.0 + PI / 2.0).sin() * -0.1, - ); - next.hold.position = - Vec3::new(0.0, -1.0 + movement2 * 2.0, -5.2 + movement2 * -3.0); - next.hold.orientation = Quaternion::rotation_x(-1.57); - next.hold.scale = Vec3::one() * 1.0 * (1.0 - movement2); + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + movement2 * 0.4) + * Quaternion::rotation_y(-0.2); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.2 + movement1 * 0.4) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); - next.control.position = Vec3::new(s_a.bc.0 + 11.0, s_a.bc.1 + 2.0, s_a.bc.2 + 8.0); - next.control.orientation = - Quaternion::rotation_x(0.0 + (movement2 as f32 * 0.1).sin()) - * Quaternion::rotation_y(s_a.bc.4 - 1.25) - * Quaternion::rotation_z(s_a.bc.5 - 0.2 + (movement2 as f32 * -0.2).sin()); - next.upper_torso.orientation = Quaternion::rotation_z(0.8); - next.head.position = Vec3::new(0.0 - 2.0, s_a.head.0, s_a.head.1); + next.control.orientation = Quaternion::rotation_x(-0.2) + * Quaternion::rotation_y(1.0 + movement1 * -0.4) + * Quaternion::rotation_z(-0.3); + next.head.orientation = Quaternion::rotation_z(movement1 * 0.25); + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = Quaternion::rotation_x( + movement1 * 0.8 + 1.2 * speednorm + (footrotr * -0.2) * speednorm, + ); - next.head.orientation = - Quaternion::rotation_z(tilt * -2.5 - 0.5 + (movement2 as f32 * 0.2).sin()); - if speed < 0.5 { - next.upper_torso.orientation = - Quaternion::rotation_z(0.8 + (movement2 as f32 * 0.1).sin()); - - next.lower_torso.orientation = Quaternion::rotation_x(0.08) - * Quaternion::rotation_z((movement2 as f32 * -0.15).sin()); - - next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1 - 5.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(-0.5); - - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1 + 3.0, s_a.foot.2); - next.foot_r.orientation = - Quaternion::rotation_x(0.5) * Quaternion::rotation_z(0.3); - } else { - }; + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = Quaternion::rotation_x( + movement1 * 0.8 + 1.2 * speednorm + (footrotl * -0.2) * speednorm, + ); }, _ => {}, } diff --git a/voxygen/anim/src/biped_large/wield.rs b/voxygen/anim/src/biped_large/wield.rs index 77640eeac5..85f772f671 100644 --- a/voxygen/anim/src/biped_large/wield.rs +++ b/voxygen/anim/src/biped_large/wield.rs @@ -8,7 +8,7 @@ use std::{f32::consts::PI, ops::Mul}; pub struct WieldAnimation; impl Animation for WieldAnimation { - type Dependency = (Option, Option, f32, f64); + type Dependency = (Option, Option, Vec3, f64, f32); type Skeleton = BipedLargeSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,21 +17,28 @@ impl Animation for WieldAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_large_wield")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, velocity, global_time): Self::Dependency, + (active_tool_kind, _second_tool_kind, velocity, global_time, acc_vel): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); - let lab = 0.55; - let test = (anim_time as f32 + 36.0 * PI).sin(); + let lab = 0.65 * s_a.tempo; //.65 let torso = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); let slower = (anim_time as f32 * 1.0 + PI).sin(); let slow = (anim_time as f32 * 3.5 + PI).sin(); - let u_slow = (anim_time as f32 * 1.0 + PI).sin(); - let u_slowalt = (anim_time as f32 * 3.0 + PI).cos(); let tailmove = Vec2::new( ((global_time + anim_time) as f32 / 2.0) @@ -74,31 +81,12 @@ impl Animation for WieldAnimation { 0.0 }; - let foothoril = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); - let foothorir = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); - let footvertl = (anim_time as f32 * 16.0 * lab as f32).sin(); let footvertr = (anim_time as f32 * 16.0 * lab as f32 + PI).sin(); let handhoril = (anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin(); let handhorir = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin(); - let footrotl = (((5.0) - / (2.5 + (2.5) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); - - let footrotr = (((5.0) - / (1.0 + (4.0) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); - - let short = (anim_time as f32 * lab as f32 * 16.0).sin(); + let short = (acc_vel * lab as f32).sin() * speednorm; let shortalt = (anim_time as f32 * lab as f32 * 16.0 + PI / 2.0).sin(); @@ -107,61 +95,33 @@ impl Animation for WieldAnimation { } else { next.jaw.position = Vec3::new(0.0, s_a.jaw.0 - slower * 0.12, s_a.jaw.1 + slow * 0.2); - next.hand_l.position = - Vec3::new(-s_a.hand.0 - 7.0, s_a.hand.1 - 7.0, s_a.hand.2 + 10.0); - next.hand_l.orientation = Quaternion::rotation_x(0.57) * Quaternion::rotation_z(1.57); - - next.hand_r.position = Vec3::new(s_a.hand.0 - 7.0, s_a.hand.1 - 7.0, s_a.hand.2 + 10.0); - next.hand_r.orientation = Quaternion::rotation_x(0.57) * Quaternion::rotation_z(1.57); - next.hand_r.orientation = Quaternion::rotation_x(0.57) * Quaternion::rotation_z(1.57); - - next.control.position = Vec3::new(7.0, 9.0, -10.0); - next.control.orientation = Quaternion::rotation_x(test * 0.02) - * Quaternion::rotation_y(test * 0.02) - * Quaternion::rotation_z(test * 0.02); - - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); next.hold.scale = Vec3::one() * 0.0; - if velocity > 0.5 { - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = - Quaternion::rotation_z(short * -0.18) * Quaternion::rotation_x(-0.05); + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); - next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + shortalt * -1.5); - next.upper_torso.orientation = Quaternion::rotation_z(short * 0.18); + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); - next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); - next.lower_torso.orientation = - Quaternion::rotation_z(short * 0.15) * Quaternion::rotation_x(0.14); - - next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = Quaternion::rotation_z(0.0 + slow * 0.2 + tailmove.x) - * Quaternion::rotation_x(0.0); + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + if speed > 0.5 { next.shoulder_l.position = Vec3::new( -s_a.shoulder.0, - s_a.shoulder.1 + foothoril * -1.0, - s_a.shoulder.2, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, ); - next.shoulder_l.orientation = Quaternion::rotation_x(0.5 + footrotl * -0.16) - * Quaternion::rotation_y(0.1) - * Quaternion::rotation_z(footrotl * 0.1); + next.shoulder_l.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotr * -0.2) * speednorm); next.shoulder_r.position = Vec3::new( s_a.shoulder.0, - s_a.shoulder.1 + foothorir * -1.0, - s_a.shoulder.2, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, ); - next.shoulder_r.orientation = Quaternion::rotation_x(0.5 + footrotr * -0.16) - * Quaternion::rotation_y(-0.1) - * Quaternion::rotation_z(footrotr * -0.1); - - next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0; - next.torso.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.25); + next.shoulder_r.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotl * -0.2) * speednorm); } else { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; next.head.orientation = @@ -189,91 +149,87 @@ impl Animation for WieldAnimation { next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_l.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + Quaternion::rotation_y(0.0) * Quaternion::rotation_x(0.3); next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - - next.control.position = Vec3::new(7.0, 9.0, -10.0); - next.control.orientation = Quaternion::rotation_x(test * 0.02) - * Quaternion::rotation_y(test * 0.02) - * Quaternion::rotation_z(test * 0.02); + next.shoulder_r.orientation = + Quaternion::rotation_y(0.0) * Quaternion::rotation_x(0.3); } match active_tool_kind { - Some(ToolKind::Sword) => { - next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4); - next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + Some(ToolKind::SwordSimple) => { + next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); + next.control_r.position = Vec3::new(0.0, 2.0, -3.0); - next.control.position = Vec3::new(s_a.sc.0, s_a.sc.1, s_a.sc.2); - next.control.orientation = Quaternion::rotation_x(u_slow * 0.15) - * Quaternion::rotation_z(u_slowalt * 0.08); + next.control.position = Vec3::new( + -3.0, + 5.0 + s_a.grip / 1.2, + -4.0 + -s_a.grip / 2.0 + short * -1.5, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.2); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.2) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(-0.1); }, - Some(ToolKind::Bow) => { - next.hand_l.position = Vec3::new(s_a.bhl.0, s_a.bhl.1, s_a.bhl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3) - * Quaternion::rotation_y(s_a.bhl.4) - * Quaternion::rotation_z(s_a.bhl.5); - next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); - next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3) - * Quaternion::rotation_y(s_a.bhr.4) - * Quaternion::rotation_z(s_a.bhr.5); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + Some(ToolKind::BowSimple) => { + next.control_l.position = Vec3::new(-1.0, -2.0, -3.0); + next.control_r.position = Vec3::new(0.0, 4.0, 1.0); - next.hold.position = Vec3::new(0.0, -1.0, -15.2); - next.hold.orientation = Quaternion::rotation_x(-1.57); - next.hold.scale = Vec3::one() * 1.0; + next.control.position = Vec3::new( + -1.0, + 6.0 + s_a.grip / 1.2, + -5.0 + -s_a.grip / 2.0 + short * -1.5, + ); - next.control.position = Vec3::new(s_a.bc.0, s_a.bc.1, s_a.bc.2 - 5.0); - next.control.orientation = Quaternion::rotation_x(u_slow * 0.06) - * Quaternion::rotation_y(s_a.bc.4) - * Quaternion::rotation_z(s_a.bc.5 + u_slowalt * 0.1); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.2); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.2) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); + + next.control.orientation = Quaternion::rotation_x(-0.2 + short * 0.2) + * Quaternion::rotation_y(1.0) + * Quaternion::rotation_z(-0.3); }, - Some(ToolKind::Hammer) => { - next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.hhl.3) - * Quaternion::rotation_y(s_a.hhl.4) - * Quaternion::rotation_z(s_a.hhl.5); + Some(ToolKind::HammerSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); - next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2); - next.hand_r.orientation = Quaternion::rotation_x(s_a.hhr.3) - * Quaternion::rotation_y(s_a.hhr.4) - * Quaternion::rotation_z(s_a.hhr.5); + next.control.position = + Vec3::new(4.0, 0.0 + s_a.grip / 1.0, -s_a.grip / 0.8 + short * -1.5); - next.control.position = Vec3::new(s_a.hc.0, s_a.hc.1, s_a.hc.2); - next.control.orientation = Quaternion::rotation_x(s_a.hc.3 + test * 0.02) - * Quaternion::rotation_y(s_a.hc.4 + test * 0.02) - * Quaternion::rotation_z(s_a.hc.5 + test * 0.02); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + next.control.orientation = + Quaternion::rotation_x(-1.0 + short * 0.2) * Quaternion::rotation_y(-1.8); }, - Some(ToolKind::Staff) => { - next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.sthl.3) * Quaternion::rotation_y(s_a.sthl.4); - next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); + Some(ToolKind::StaffSimple) => { + next.control_l.position = Vec3::new(-1.0, 3.0, 12.0); + next.control_r.position = Vec3::new(1.0, 2.0, 2.0); - next.shoulder_r.position = - Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = - Quaternion::rotation_z(0.4) * Quaternion::rotation_x(1.0); + next.control.position = Vec3::new( + -3.0, + 3.0 + s_a.grip / 1.2, + -11.0 + -s_a.grip / 2.0 + short * -1.5, + ); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.5); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.5) + * Quaternion::rotation_y(0.5) + * Quaternion::rotation_z(0.0); - next.control.position = Vec3::new(s_a.stc.0, s_a.stc.1, s_a.stc.2); - next.control.orientation = Quaternion::rotation_x(-0.3 + u_slow * 0.1) - * Quaternion::rotation_y(0.15) - * Quaternion::rotation_z(u_slowalt * 0.08); + next.control.orientation = + Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(-0.1); }, Some(ToolKind::Unique(UniqueKind::BeastClaws)) => { next.shoulder_l.position = @@ -288,7 +244,7 @@ impl Animation for WieldAnimation { next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * 0.6); - if velocity < 0.5 { + if speed < 0.5 { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + torso * 0.2) * 1.02; next.head.orientation = Quaternion::rotation_z(look.x * 0.6) diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs index 46b9713af3..23e68e4276 100644 --- a/voxygen/anim/src/biped_small/alpha.rs +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -29,7 +29,16 @@ impl Animation for AlphaAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (velocity, _orientation, _last_ori, _global_time, _avg_vel, _acc_vel, stage_section, _timer): Self::Dependency, + ( + velocity, + _orientation, + _last_ori, + _global_time, + _avg_vel, + _acc_vel, + stage_section, + _timer, + ): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, diff --git a/voxygen/anim/src/character/alpha.rs b/voxygen/anim/src/character/alpha.rs index 3e22f7b6c6..15b5ed6ece 100644 --- a/voxygen/anim/src/character/alpha.rs +++ b/voxygen/anim/src/character/alpha.rs @@ -150,7 +150,8 @@ impl Animation for AlphaAnimation { }; next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2); + next.hand_l.position = + Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2 + movement2 * -7.0); next.hand_l.orientation = Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4); next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2); @@ -169,15 +170,18 @@ impl Animation for AlphaAnimation { * (1.0 - movement3) * Quaternion::rotation_z(s_a.hc.5 + (movement2 * -0.5) * (1.0 - movement3)); next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_x( - (movement1 * 0.3 + movement2 * -0.5) * (1.0 - movement3), - ) * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z( - (movement1 * 0.2 + movement2 * -0.5) * (1.0 - movement3), - ); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); + next.head.orientation = + Quaternion::rotation_x((movement1 * 0.1 + movement2 * 0.3) * (1.0 - movement3)) + * Quaternion::rotation_z( + (movement1 * -0.2 + movement2 * 0.2) * (1.0 - movement3), + ); + next.chest.position = Vec3::new( + 0.0, + s_a.chest.0, + s_a.chest.1 + movement2 * -2.0 * (1.0 - movement3), + ); next.chest.orientation = Quaternion::rotation_x( - (movement1 * 0.8 + movement2 * -1.2) * (1.0 - movement3), + (movement1 * 0.4 + movement2 * -0.7) * (1.0 - movement3), ) * Quaternion::rotation_y( (movement1 * 0.3 + movement2 * -0.4) * (1.0 - movement3), ) * Quaternion::rotation_z( diff --git a/voxygen/anim/src/character/mod.rs b/voxygen/anim/src/character/mod.rs index 3ca3521a24..c43b068fed 100644 --- a/voxygen/anim/src/character/mod.rs +++ b/voxygen/anim/src/character/mod.rs @@ -27,6 +27,7 @@ pub mod stand; pub mod stunned; pub mod swim; pub mod swimwield; +pub mod talk; pub mod wield; // Reexports @@ -39,7 +40,7 @@ pub use self::{ roll::RollAnimation, run::RunAnimation, shockwave::ShockwaveAnimation, shoot::ShootAnimation, sit::SitAnimation, sneak::SneakAnimation, spin::SpinAnimation, spinmelee::SpinMeleeAnimation, staggered::StaggeredAnimation, stand::StandAnimation, stunned::StunnedAnimation, - swim::SwimAnimation, swimwield::SwimWieldAnimation, wield::WieldAnimation, + swim::SwimAnimation, swimwield::SwimWieldAnimation, talk::TalkAnimation, wield::WieldAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; use common::comp; diff --git a/voxygen/anim/src/character/talk.rs b/voxygen/anim/src/character/talk.rs new file mode 100644 index 0000000000..f8e47ec373 --- /dev/null +++ b/voxygen/anim/src/character/talk.rs @@ -0,0 +1,54 @@ +use super::{ + super::{vek::*, Animation}, + CharacterSkeleton, SkeletonAttr, +}; +use common::comp::item::ToolKind; +use std::f32::consts::PI; + +pub struct TalkAnimation; + +impl Animation for TalkAnimation { + type Dependency = (Option, Option, f32, f64); + type Skeleton = CharacterSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"character_talk\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "character_talk")] + #[allow(clippy::approx_constant)] // TODO: Pending review in #587 + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_active_tool_kind, _second_tool_kind, _velocity, _global_time): Self::Dependency, + anim_time: f64, + rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + *rate = 1.0; + let mut next = (*skeleton).clone(); + + let slowa = (anim_time as f32 * 6.0).sin(); + let slowb = (anim_time as f32 * 4.0 + PI / 2.0).sin(); + let slowc = (anim_time as f32 * 12.0 + PI / 2.0).sin(); + + next.head.orientation = Quaternion::rotation_x(slowc * 0.035); + next.hand_l.position = Vec3::new( + -s_a.hand.0 + 0.5 + slowb * 0.5, + s_a.hand.1 + 5.0 + slowc * 1.0, + s_a.hand.2 + 2.0 + slowa * 1.0, + ); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + + next.hand_r.position = Vec3::new( + s_a.hand.0 - 0.5 + slowb * 0.5, + s_a.hand.1 + 4.0 + slowc * -1.0, + s_a.hand.2 + 2.0 + slowa * 1.0, + ); + next.hand_l.orientation = Quaternion::rotation_y(-0.2 + slowb * 0.2 + slowa * 0.07) + * Quaternion::rotation_x(1.3 + slowa * 0.15); + next.hand_r.orientation = Quaternion::rotation_y(0.2 + slowa * -0.1 + slowb * 0.07) + * Quaternion::rotation_x(1.3 + slowb * -0.15 + slowc * 0.05); + + next + } +} diff --git a/voxygen/anim/src/quadruped_low/mod.rs b/voxygen/anim/src/quadruped_low/mod.rs index 11dc5becda..9e3bd5e17e 100644 --- a/voxygen/anim/src/quadruped_low/mod.rs +++ b/voxygen/anim/src/quadruped_low/mod.rs @@ -259,6 +259,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Pangolin, _) => (1.3), (Maneater, _) => (1.4), (Lavadrake, _) => (1.4), + (Basilisk, _) => (1.6), _ => (1.0), }, tempo: match (body.species, body.body_type) { @@ -271,6 +272,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Pangolin, _) => (1.15), (Maneater, _) => (0.9), (Lavadrake, _) => (1.1), + (Basilisk, _) => (0.8), _ => (1.0), }, } diff --git a/voxygen/anim/src/quadruped_low/run.rs b/voxygen/anim/src/quadruped_low/run.rs index b1d1851637..ab6c18e040 100644 --- a/voxygen/anim/src/quadruped_low/run.rs +++ b/voxygen/anim/src/quadruped_low/run.rs @@ -7,7 +7,7 @@ use std::f32::consts::PI; pub struct RunAnimation; impl Animation for RunAnimation { - type Dependency = (f32, Vec3, Vec3, f64, Vec3); + type Dependency = (f32, Vec3, Vec3, f64, Vec3, f32); type Skeleton = QuadrupedLowSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -16,46 +16,49 @@ impl Animation for RunAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_low_run")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, orientation, last_ori, _global_time, avg_vel): Self::Dependency, - anim_time: f64, + (velocity, orientation, last_ori, _global_time, avg_vel, acc_vel): Self::Dependency, + _anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let speed = (Vec2::::from(velocity).magnitude()).min(15.0); + + let speednorm = (speed / 15.0).powf(0.25); let lab = 0.7 * s_a.tempo; - let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()).max(-0.7); + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()).max(-0.7) * speednorm; - let short = (((1.0) - / (0.72 + 0.28 * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.25).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.25).sin()); - let shortalt = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.25).sin(); + let short = (((1.0) / (0.72 + 0.28 * ((acc_vel * lab as f32 + PI * 0.25).sin()).powi(2))) + .sqrt()) + * ((acc_vel * lab as f32 + PI * 0.25).sin()) + * speednorm; + let shortalt = (acc_vel * lab as f32 + PI * 0.25).sin(); - let foothoril = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.45).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.45).sin()); - let footvertl = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.0).sin(); + let foothoril = + (((1.0) / (0.4 + (0.6) * ((acc_vel * lab as f32 + PI * 1.45).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.45).sin()) + * speednorm; + let footvertl = (acc_vel * lab as f32 + PI * 0.0).sin() * speednorm; - let foothorir = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.45).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.45).sin()); - let footvertr = (anim_time as f32 * 16.0 * lab as f32 + PI).sin(); + let foothorir = + (((1.0) / (0.4 + (0.6) * ((acc_vel * lab as f32 + PI * 0.45).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.45).sin()) + * speednorm; + let footvertr = (acc_vel * lab as f32 + PI).sin() * speednorm; //back feet - let foothorilb = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.05).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.05).sin()); - let footvertlb = (anim_time as f32 * 16.0 * lab as f32 + PI * (-0.4)).sin(); + let foothorilb = + (((1.0) / (0.4 + (0.6) * ((acc_vel * lab as f32 + PI * 1.05).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.05).sin()) + * speednorm; + let footvertlb = (acc_vel * lab as f32 + PI * (-0.4)).sin() * speednorm; - let foothorirb = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.05).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.05).sin()); - let footvertrb = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.6).sin(); + let foothorirb = + (((1.0) / (0.4 + (0.6) * ((acc_vel * lab as f32 + PI * 0.05).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.05).sin()) + * speednorm; + let footvertrb = (acc_vel * lab as f32 + PI * 0.6).sin() * speednorm; let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); @@ -94,14 +97,14 @@ impl Animation for RunAnimation { s_a.tail_front.1 + s_a.lean.0 * 2.0, ); next.tail_front.orientation = - Quaternion::rotation_z(shortalt * 0.18 * s_a.lean.1 + tilt * 1.8) - * Quaternion::rotation_y(shortalt * 0.1) + Quaternion::rotation_z(shortalt * -0.18 * s_a.lean.1 + tilt * 1.8) + * Quaternion::rotation_y(shortalt * -0.1) * Quaternion::rotation_x(0.06 - s_a.lean.0 * 1.2 + x_tilt * 0.2); next.tail_rear.position = Vec3::new(0.0, s_a.tail_rear.0, s_a.tail_rear.1); next.tail_rear.orientation = - Quaternion::rotation_z(shortalt * 0.25 * s_a.lean.1 + tilt * 1.6) - * Quaternion::rotation_y(shortalt * 0.1) + Quaternion::rotation_z(shortalt * -0.25 * s_a.lean.1 + tilt * 1.6) + * Quaternion::rotation_y(shortalt * 0.08) * Quaternion::rotation_x(-0.04 + x_tilt * 0.5); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) * s_a.scaler / 11.0; @@ -112,20 +115,20 @@ impl Animation for RunAnimation { next.foot_fl.position = Vec3::new( -s_a.feet_f.0, s_a.feet_f.1 + foothoril * -2.0, - s_a.feet_f.2 + 1.0 + ((footvertl * -1.8).max(-0.0)), + s_a.feet_f.2 + 1.0 * speednorm + ((footvertl * -1.8).max(-0.0)), ); next.foot_fl.orientation = - Quaternion::rotation_x(-0.2 + footvertl * -0.45 * s_a.lean.1 - s_a.lean.0) + Quaternion::rotation_x(-0.2 * speednorm + footvertl * -0.45 * s_a.lean.1 - s_a.lean.0) * Quaternion::rotation_y(tilt * -1.0) * Quaternion::rotation_z(foothoril * 0.4 * s_a.lean.1 + tilt * -2.0); next.foot_fr.position = Vec3::new( s_a.feet_f.0, s_a.feet_f.1 + foothorir * -2.0, - s_a.feet_f.2 + 1.0 + ((footvertr * -1.8).max(-0.0)), + s_a.feet_f.2 + 1.0 * speednorm + ((footvertr * -1.8).max(-0.0)), ); next.foot_fr.orientation = - Quaternion::rotation_x(-0.2 + footvertr * -0.45 * s_a.lean.1 - s_a.lean.0) + Quaternion::rotation_x(-0.2 * speednorm + footvertr * -0.45 * s_a.lean.1 - s_a.lean.0) * Quaternion::rotation_y(tilt * -1.0) * Quaternion::rotation_z(foothorir * -0.4 * s_a.lean.1 + tilt * -2.0); @@ -134,18 +137,20 @@ impl Animation for RunAnimation { s_a.feet_b.1 + foothorilb * -1.0, s_a.feet_b.2 + ((footvertlb * -1.2).max(-0.0)), ); - next.foot_bl.orientation = Quaternion::rotation_x(-0.2 + footvertlb * -0.5 - s_a.lean.0) - * Quaternion::rotation_y(tilt * -1.0) - * Quaternion::rotation_z(foothorilb * 0.4 + tilt * -2.0); + next.foot_bl.orientation = + Quaternion::rotation_x(-0.2 * speednorm + footvertlb * -0.5 - s_a.lean.0) + * Quaternion::rotation_y(tilt * -1.0) + * Quaternion::rotation_z(foothorilb * 0.4 + tilt * -2.0); next.foot_br.position = Vec3::new( s_a.feet_b.0, s_a.feet_b.1 + foothorirb * -1.0, s_a.feet_b.2 + ((footvertrb * -1.2).max(-0.0)), ); - next.foot_br.orientation = Quaternion::rotation_x(-0.2 + footvertrb * -0.5 - s_a.lean.0) - * Quaternion::rotation_y(tilt * -1.0) - * Quaternion::rotation_z(foothorirb * -0.4 + tilt * -2.0); + next.foot_br.orientation = + Quaternion::rotation_x(-0.2 * speednorm + footvertrb * -0.5 - s_a.lean.0) + * Quaternion::rotation_y(tilt * -1.0) + * Quaternion::rotation_z(foothorirb * -0.4 + tilt * -2.0); next } diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index ee9ff1ec92..4234d19977 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -482,6 +482,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (1.3), (Roshwalr, _) => (1.2), (Barghest, _) => (1.3), + (Cattle, _) => (1.9), + (Highland, _) => (1.9), + (Bear, _) => (1.9), + (Yak, _) => (1.9), _ => (1.0), }, startangle: match (body.species, body.body_type) { @@ -515,6 +519,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Horse, _) => (0.85), (Barghest, _) => (0.95), (Darkhound, _) => (1.1), + (Cattle, _) => (0.8), + (Highland, _) => (0.8), + (Bear, _) => (0.8), + (Yak, _) => (0.8), _ => (1.0), }, spring: match (body.species, body.body_type) { diff --git a/voxygen/anim/src/quadruped_medium/run.rs b/voxygen/anim/src/quadruped_medium/run.rs index cfe718d469..cf4179e842 100644 --- a/voxygen/anim/src/quadruped_medium/run.rs +++ b/voxygen/anim/src/quadruped_medium/run.rs @@ -90,7 +90,7 @@ impl Animation for RunAnimation { } else { 0.0 } * 1.3; - let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()) * canceler; next.neck.scale = Vec3::one() * 1.02; next.jaw.scale = Vec3::one() * 1.02; diff --git a/voxygen/anim/src/quadruped_small/run.rs b/voxygen/anim/src/quadruped_small/run.rs index eb68728eb7..7662f62d9d 100644 --- a/voxygen/anim/src/quadruped_small/run.rs +++ b/voxygen/anim/src/quadruped_small/run.rs @@ -7,7 +7,7 @@ use std::f32::consts::PI; pub struct RunAnimation; impl Animation for RunAnimation { - type Dependency = (f32, Vec3, Vec3, f64, Vec3); + type Dependency = (f32, Vec3, Vec3, f64, Vec3, f32); type Skeleton = QuadrupedSmallSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -16,24 +16,26 @@ impl Animation for RunAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_small_run")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, orientation, last_ori, _global_time, avg_vel): Self::Dependency, - anim_time: f64, + (velocity, orientation, last_ori, _global_time, avg_vel, acc_vel): Self::Dependency, + _anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let lab = 0.6; //6 + let lab = 0.8; //6 + let speed = (Vec2::::from(velocity).magnitude()).min(12.0); + let speednorm = (speed / 12.0).powf(0.4); let speedmult = s_a.tempo; - let short = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 1.0).sin(); - let shortalt = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.5).sin(); + let short = (acc_vel * lab as f32 * speedmult + PI * 1.0).sin() * speednorm; + let shortalt = (acc_vel * lab as f32 * speedmult + PI * 0.5).sin() * speednorm; - let footvert = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.0).sin(); - let footvertt = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.4).sin(); + let footvert = (acc_vel * lab as f32 * speedmult + PI * 0.0).sin() * speednorm; + let footvertt = (acc_vel * lab as f32 * speedmult + PI * 0.4).sin() * speednorm; - let footvertf = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.3).sin(); - let footverttf = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.7).sin(); + let footvertf = (acc_vel * lab as f32 * speedmult + PI * 0.3).sin() * speednorm; + let footverttf = (acc_vel * lab as f32 * speedmult + PI * 0.7).sin() * speednorm; let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); @@ -48,7 +50,7 @@ impl Animation for RunAnimation { } else { 0.0 } * 1.3; - let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()) * speednorm; next.leg_fl.scale = Vec3::one() * 1.02; next.leg_fr.scale = Vec3::one() * 1.02; @@ -63,7 +65,7 @@ impl Animation for RunAnimation { next.chest.position = Vec3::new( 0.0, s_a.chest.0, - s_a.chest.1 + 2.0 * s_a.spring + shortalt * 3.0 * s_a.spring, + s_a.chest.1 + 2.0 * speednorm * s_a.spring + shortalt * 3.0 * s_a.spring, ) / 11.0 * s_a.scaler; next.chest.orientation = Quaternion::rotation_x(short * 0.2 * s_a.spring + x_tilt) @@ -76,36 +78,40 @@ impl Animation for RunAnimation { s_a.feet_f.1 + footverttf * 3.0 * s_a.minimize, s_a.feet_f.2 + ((footvertf * -1.5).max(-1.0)), ); - next.leg_fl.orientation = Quaternion::rotation_x(0.2 + s_a.maximize * footverttf * 0.65) - * Quaternion::rotation_z(tilt * -0.5) - * Quaternion::rotation_y(tilt * 1.5); + next.leg_fl.orientation = + Quaternion::rotation_x(0.2 * speednorm + s_a.maximize * footverttf * 0.65) + * Quaternion::rotation_z(tilt * -0.5) + * Quaternion::rotation_y(tilt * 1.5); next.leg_fr.position = Vec3::new( s_a.feet_f.0, s_a.feet_f.1 + footvertt * 3.0 * s_a.minimize, s_a.feet_f.2 + ((footvert * -1.5).max(-1.0)), ); - next.leg_fr.orientation = Quaternion::rotation_x(0.2 + s_a.maximize * footvertt * 0.65) - * Quaternion::rotation_z(tilt * -0.5) - * Quaternion::rotation_y(tilt * 1.5); + next.leg_fr.orientation = + Quaternion::rotation_x(0.2 * speednorm + s_a.maximize * footvertt * 0.65) + * Quaternion::rotation_z(tilt * -0.5) + * Quaternion::rotation_y(tilt * 1.5); next.leg_bl.position = Vec3::new( -s_a.feet_b.0, s_a.feet_b.1 + footvertt * -1.4, s_a.feet_b.2 + ((footvert * 1.5).max(-1.0)), ); - next.leg_bl.orientation = Quaternion::rotation_x(-0.25 + s_a.maximize * footvertt * -0.8) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_bl.orientation = + Quaternion::rotation_x(-0.25 * speednorm + s_a.maximize * footvertt * -0.8) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.leg_br.position = Vec3::new( s_a.feet_b.0, s_a.feet_b.1 + footverttf * -1.4, s_a.feet_b.2 + ((footvertf * 1.5).max(-1.0)), ); - next.leg_br.orientation = Quaternion::rotation_x(-0.25 + s_a.maximize * footverttf * -0.8) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_br.orientation = + Quaternion::rotation_x(-0.25 * speednorm + s_a.maximize * footverttf * -0.8) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.tail.orientation = Quaternion::rotation_x(short * 0.2 + x_tilt) diff --git a/voxygen/src/hud/util.rs b/voxygen/src/hud/util.rs index 4295469fd2..8f3981e3a5 100644 --- a/voxygen/src/hud/util.rs +++ b/voxygen/src/hud/util.rs @@ -154,6 +154,10 @@ fn tool_desc(tool: &Tool, components: &[Item], msm: &MaterialStatManifest, desc: ToolKind::Sceptre => "Sceptre", ToolKind::Shield => "Shield", ToolKind::Spear => "Spear", + ToolKind::HammerSimple => "HammerSimple", + ToolKind::SwordSimple => "SwordSimple", + ToolKind::StaffSimple => "StaffSimple", + ToolKind::BowSimple => "BowSimple", ToolKind::Unique(_) => "Unique", ToolKind::Debug => "Debug", ToolKind::Farming => "Farming Tool", diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 84dd8001ad..6dda5b6c69 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -1219,7 +1219,7 @@ impl QuadrupedSmallLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.left_front.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.left_front.lateral.0); (lateral, Vec3::from(spec.left_front.offset)) } @@ -1251,7 +1251,7 @@ impl QuadrupedSmallLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.left_back.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.left_back.lateral.0); (lateral, Vec3::from(spec.left_back.offset)) } @@ -1771,7 +1771,7 @@ impl BirdMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.wing_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.wing_l.lateral.0); (lateral, Vec3::from(spec.wing_l.offset)) } @@ -1803,7 +1803,7 @@ impl BirdMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.foot_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_l.lateral.0); (lateral, Vec3::from(spec.foot_l.offset)) } @@ -2052,7 +2052,7 @@ impl TheropodLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.hand_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.hand_l.lateral.0); (lateral, Vec3::from(spec.hand_l.offset)) } @@ -2084,7 +2084,7 @@ impl TheropodLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.leg_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.leg_l.lateral.0); (lateral, Vec3::from(spec.leg_l.offset)) } @@ -2116,7 +2116,7 @@ impl TheropodLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.foot_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_l.lateral.0); (lateral, Vec3::from(spec.foot_l.offset)) } @@ -2310,7 +2310,7 @@ impl FishMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.fin_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.fin_l.lateral.0); (lateral, Vec3::from(spec.fin_l.offset)) } @@ -2445,7 +2445,7 @@ impl FishSmallLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.fin_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.fin_l.lateral.0); (lateral, Vec3::from(spec.fin_l.offset)) } @@ -3170,7 +3170,6 @@ struct SidedBLCentralVoxSpec { torso_upper: BipedLargeCentralSubSpec, torso_lower: BipedLargeCentralSubSpec, tail: BipedLargeCentralSubSpec, - main: BipedLargeCentralSubSpec, second: BipedLargeCentralSubSpec, } #[derive(Deserialize)] @@ -3198,14 +3197,29 @@ struct BipedLargeLateralSubSpec { offset: [f32; 3], // Should be relative to initial origin lateral: VoxSimple, } - +#[derive(Deserialize)] +struct BipedLargeWeaponSpec(HashMap); make_vox_spec!( biped_large::Body, struct BipedLargeSpec { central: BipedLargeCentralSpec = "voxygen.voxel.biped_large_central_manifest", lateral: BipedLargeLateralSpec = "voxygen.voxel.biped_large_lateral_manifest", + weapon: BipedLargeWeaponSpec = "voxygen.voxel.biped_large_weapon_manifest", }, - |FigureKey { body, .. }, spec| { + |FigureKey { body, extra }, spec| { + const DEFAULT_LOADOUT: super::cache::CharacterCacheKey = super::cache::CharacterCacheKey { + third_person: None, + tool: None, + lantern: None, + glider: None, + hand: None, + foot: None, + }; + + // TODO: This is bad code, maybe this method should return Option<_> + let loadout = extra.as_deref().unwrap_or(&DEFAULT_LOADOUT); + //let third_person = loadout.third_person.as_ref(); + let tool = loadout.tool.as_ref(); [ Some(spec.central.read().0.mesh_head( body.species, @@ -3227,10 +3241,12 @@ make_vox_spec!( body.species, body.body_type, )), - Some(spec.central.read().0.mesh_main( - body.species, - body.body_type, - )), + tool.and_then(|tool| tool.active.as_ref()).map(|tool| { + spec.weapon.read().0.mesh_main( + tool, + false, + ) + }), Some(spec.central.read().0.mesh_second( body.species, body.body_type, @@ -3353,22 +3369,6 @@ impl BipedLargeCentralSpec { (central, Vec3::from(spec.tail.offset)) } - fn mesh_main(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No main weapon specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, - }; - let central = graceful_load_segment(&spec.main.central.0); - - (central, Vec3::from(spec.main.offset)) - } - fn mesh_second(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, @@ -3514,6 +3514,35 @@ impl BipedLargeLateralSpec { (lateral, Vec3::from(spec.foot_r.offset)) } } +impl BipedLargeWeaponSpec { + fn mesh_main(&self, item_definition_id: &str, flipped: bool) -> BoneMeshes { + let spec = match self.0.get(item_definition_id) { + Some(spec) => spec, + None => { + error!(?item_definition_id, "No tool/weapon specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + }; + + let tool_kind_segment = if flipped { + graceful_load_segment_flipped(&spec.vox_spec.0) + } else { + graceful_load_segment(&spec.vox_spec.0) + }; + + let offset = Vec3::new( + if flipped { + 0.0 - spec.vox_spec.1[0] - (tool_kind_segment.sz.x as f32) + } else { + spec.vox_spec.1[0] + }, + spec.vox_spec.1[1], + spec.vox_spec.1[2], + ); + + (tool_kind_segment, offset) + } +} //// #[derive(Deserialize)] struct GolemCentralSpec(HashMap<(GSpecies, GBodyType), SidedGCentralVoxSpec>); @@ -4013,7 +4042,7 @@ impl QuadrupedLowLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.front_left.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.front_left.lateral.0); (lateral, Vec3::from(spec.front_left.offset)) } @@ -4045,7 +4074,7 @@ impl QuadrupedLowLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.back_left.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.back_left.lateral.0); (lateral, Vec3::from(spec.back_left.offset)) } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 0f723bcd5c..89caf22f31 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -53,7 +53,7 @@ use treeculler::{BVol, BoundingSphere}; use vek::*; const DAMAGE_FADE_COEFFICIENT: f64 = 15.0; -const MOVING_THRESHOLD: f32 = 0.7; +const MOVING_THRESHOLD: f32 = 0.4; const MOVING_THRESHOLD_SQR: f32 = MOVING_THRESHOLD * MOVING_THRESHOLD; /// camera data, figure LOD render distance. @@ -1345,6 +1345,13 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::Talk => anim::character::TalkAnimation::update_skeleton( + &target_base, + (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), CharacterState::Wielding { .. } => { if physics.in_liquid.is_some() { anim::character::SwimWieldAnimation::update_skeleton( @@ -1517,6 +1524,8 @@ impl FigureMgr { state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, @@ -1533,6 +1542,8 @@ impl FigureMgr { state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, @@ -2047,6 +2058,8 @@ impl FigureMgr { state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, @@ -2062,6 +2075,8 @@ impl FigureMgr { state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, @@ -3217,12 +3232,13 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -3257,7 +3273,13 @@ impl FigureMgr { CharacterState::Wielding { .. } => { anim::biped_large::WieldAnimation::update_skeleton( &target_base, - (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), + ( + active_tool_kind, + second_tool_kind, + vel.0, + time, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, @@ -3269,9 +3291,10 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, time, None, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -3297,12 +3320,13 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, @@ -3328,12 +3352,13 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, @@ -3400,9 +3425,10 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, From 952a77f94d495297de077c96cdbb24169fe21882 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 11 Feb 2021 01:05:33 -0500 Subject: [PATCH 15/36] speedier weapons initial testing --- assets/common/abilities/axe/doublestrike.ron | 8 +- .../common/abilities/hammer/singlestrike.ron | 2 +- .../common/abilities/sword/triplestrike.ron | 20 +-- .../common/items/npc_armor/foot/sahagin.ron | 19 ++- .../common/items/npc_armor/pants/sahagin.ron | 19 ++- voxygen/anim/src/character/spin.rs | 143 +++++------------- world/src/site/dungeon/mod.rs | 88 +++++++---- 7 files changed, 134 insertions(+), 165 deletions(-) diff --git a/assets/common/abilities/axe/doublestrike.ron b/assets/common/abilities/axe/doublestrike.ron index 314cda35a8..f1668fe86c 100644 --- a/assets/common/abilities/axe/doublestrike.ron +++ b/assets/common/abilities/axe/doublestrike.ron @@ -9,9 +9,9 @@ ComboMelee( knockback: 8.0, range: 3.5, angle: 50.0, - base_buildup_duration: 0.35, + base_buildup_duration: 0.3, base_swing_duration: 0.075, - base_recover_duration: 0.4, + base_recover_duration: 0.3, forward_movement: 0.5, ), ( @@ -23,9 +23,9 @@ ComboMelee( knockback: 12.0, range: 3.5, angle: 30.0, - base_buildup_duration: 0.5, + base_buildup_duration: 0.4, base_swing_duration: 0.1, - base_recover_duration: 0.5, + base_recover_duration: 0.4, forward_movement: 0.25, ), ], diff --git a/assets/common/abilities/hammer/singlestrike.ron b/assets/common/abilities/hammer/singlestrike.ron index 22848b8746..3d6d64cda5 100644 --- a/assets/common/abilities/hammer/singlestrike.ron +++ b/assets/common/abilities/hammer/singlestrike.ron @@ -8,7 +8,7 @@ ComboMelee( knockback: 10.0, range: 4.5, angle: 50.0, - base_buildup_duration: 0.5, + base_buildup_duration: 0.4, base_swing_duration: 0.1, base_recover_duration: 0.2, forward_movement: 0.0, diff --git a/assets/common/abilities/sword/triplestrike.ron b/assets/common/abilities/sword/triplestrike.ron index 06bf0c8667..4482f80182 100644 --- a/assets/common/abilities/sword/triplestrike.ron +++ b/assets/common/abilities/sword/triplestrike.ron @@ -9,9 +9,9 @@ ComboMelee( knockback: 10.0, range: 4.0, angle: 30.0, - base_buildup_duration: 0.35, - base_swing_duration: 0.1, - base_recover_duration: 0.4, + base_buildup_duration: 0.2, + base_swing_duration: 0.075, + base_recover_duration: 0.2, forward_movement: 0.5, ), ( @@ -22,10 +22,10 @@ ComboMelee( poise_damage_increase: 0, knockback: 12.0, range: 3.5, - angle: 180.0, - base_buildup_duration: 0.4, - base_swing_duration: 0.6, - base_recover_duration: 0.4, + angle: 40.0, + base_buildup_duration: 0.15, + base_swing_duration: 0.1, + base_recover_duration: 0.3, forward_movement: 0.0, ), ( @@ -37,9 +37,9 @@ ComboMelee( knockback: 14.0, range: 6.0, angle: 10.0, - base_buildup_duration: 0.5, - base_swing_duration: 0.2, - base_recover_duration: 0.3, + base_buildup_duration: 0.3, + base_swing_duration: 0.1, + base_recover_duration: 0.2, forward_movement: 1.2, ), ], diff --git a/assets/common/items/npc_armor/foot/sahagin.ron b/assets/common/items/npc_armor/foot/sahagin.ron index 4b65043e12..2d67bf980f 100644 --- a/assets/common/items/npc_armor/foot/sahagin.ron +++ b/assets/common/items/npc_armor/foot/sahagin.ron @@ -1,13 +1,12 @@ ItemDef( name: "Sahagin", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Foot("Sahagin"), - stats: ( - protection: Normal(2.0)), - poise_resilience: Normal(0.3), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Foot("Sahagin"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/sahagin.ron b/assets/common/items/npc_armor/pants/sahagin.ron index c7a4dad627..f77f30c2a9 100644 --- a/assets/common/items/npc_armor/pants/sahagin.ron +++ b/assets/common/items/npc_armor/pants/sahagin.ron @@ -1,13 +1,12 @@ ItemDef( name: "Sahagin", - description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Pants("Sahagin"), - stats: ( - protection: Normal(2.0)), - poise_resilience: Normal(3.0), - ) - ), + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Sahagin"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/voxygen/anim/src/character/spin.rs b/voxygen/anim/src/character/spin.rs index 1c95ee58ec..7fd2ddc36c 100644 --- a/voxygen/anim/src/character/spin.rs +++ b/voxygen/anim/src/character/spin.rs @@ -31,23 +31,15 @@ impl Animation for SpinAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let lab = 1.0; - let (movement1, movement2, movement3) = match stage_section { + let (movement1base, movement2base, movement3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), - Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(1.8), 0.0), + Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; - - let foot = (((5.0) - / (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 10.32).sin()); - - let decel = (anim_time as f32 * 16.0 * lab as f32).min(PI / 2.0).sin(); - - let spin = (anim_time as f32 * 2.8 * lab as f32).sin(); - let spinhalf = (anim_time as f32 * 1.4 * lab as f32).sin(); + let pullback = 1.0 - movement3; + let movement1 = movement1base * pullback; + let movement2 = movement2base * pullback; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); @@ -64,20 +56,21 @@ impl Animation for SpinAnimation { Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); next.control.position = Vec3::new( - s_a.sc.0 + movement1 * 2.0 + movement2 * -4.0 + movement3 * -7.0, - s_a.sc.1 + 8.0 + movement1 * 0.6 + movement3 * -10.0, + s_a.sc.0 + movement1 * 2.0 + movement2 * -12.0 + movement3 * -7.0, + s_a.sc.1 + 8.0 + movement1 * 0.6 + movement2 * -9.0 + movement3 * -10.0, s_a.sc.2 + 1.0 + movement1 * 0.6 + movement2 * 1.5 + movement3 * -4.0, ); next.control.orientation = Quaternion::rotation_x(-0.5 + s_a.sc.3 + movement1 * -1.2) - * Quaternion::rotation_y(s_a.sc.4 - 0.6 + movement1 * 1.0) - * Quaternion::rotation_z(s_a.sc.5 + 0.1 + movement1 * 1.57); + * Quaternion::rotation_y( + s_a.sc.4 - 0.6 + movement1 * 0.0 + movement2 * -1.3, + ) + * Quaternion::rotation_z(s_a.sc.5 + 0.1 + movement1 * -1.57); next.head.position = Vec3::new( 0.0 + 2.0 + movement2 * -2.0, 2.0 + movement2 * -2.0 + s_a.head.0, s_a.head.1, ); - next.head.orientation = Quaternion::rotation_z(movement2 * -0.4); next.chest.orientation = Quaternion::rotation_x(movement2 * 0.15) * Quaternion::rotation_y(movement1 * -0.1 + movement2 * 0.3 + movement3 * -0.1) @@ -91,10 +84,8 @@ impl Animation for SpinAnimation { next.shorts.orientation = Quaternion::rotation_x(movement1 * 0.1) * Quaternion::rotation_z(movement2.sin() * 1.5); - next.head.orientation = Quaternion::rotation_y(movement1 * 0.1 - movement2 * -0.1) - * Quaternion::rotation_z(1.07 + movement1 * 0.4 + movement2 * -1.5); - - next.torso.orientation = Quaternion::rotation_z(movement2 * 6.28); + next.head.orientation = Quaternion::rotation_y(movement1 * 0.1 + movement2 * -0.1) + * Quaternion::rotation_z(1.07 + movement1 * 0.4 + movement2 * -1.1); }, Some(ToolKind::Axe) => { @@ -115,111 +106,55 @@ impl Animation for SpinAnimation { }; next.control.position = Vec3::new( - s_a.ac.0 + (-3.0 + movement1 * 0.0 + movement2 * -2.0) * (1.0 - movement3), - s_a.ac.1 + (-3.5 + movement1 * -4.6 + movement2 * 5.0) * (1.0 - movement3), - s_a.ac.2 + (-11.0 + movement1 * 10.0 + movement2 * -4.0) * (1.0 - movement3), + s_a.ac.0 + (-3.0 + movement1 * 0.0 + movement2 * -2.0), + s_a.ac.1 + (-3.5 + movement1 * -4.6 + movement2 * 5.0), + s_a.ac.2 + (-11.0 + movement1 * 10.0 + movement2 * -4.0), ); - next.control.orientation = Quaternion::rotation_x( - s_a.ac.3 + (-2.6 + movement1 * 0.0 + movement2 * -0.6) * (1.0 - movement3), - ) * Quaternion::rotation_y( - s_a.ac.4 + (0.2 + movement1 * -0.5 + movement2 * 0.0) * (1.0 - movement3), - ) * Quaternion::rotation_z( - s_a.ac.5 + (-0.5 + movement1 * -3.0 + movement2 * 0.5) * (1.0 - movement3), - ); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); - - next.chest.orientation = - Quaternion::rotation_x((0.4 + movement2 * -0.5) * (1.0 - movement3)) + next.control.orientation = + Quaternion::rotation_x(s_a.ac.3 + (-2.6 + movement1 * 0.0 + movement2 * -0.6)) * Quaternion::rotation_y( - (0.0 + movement1 * -0.1 + movement2 * 0.0) * (1.0 - movement3), + s_a.ac.4 + (0.2 + movement1 * -0.5 + movement2 * 0.0), ) * Quaternion::rotation_z( - (0.5 + movement1 * -0.6 + movement2 * 0.6) * (1.0 - movement3), + s_a.ac.5 + (-0.5 + movement1 * -3.0 + movement2 * 0.5), ); + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); + + next.chest.orientation = Quaternion::rotation_x(0.4 + movement2 * -0.5) + * Quaternion::rotation_y(movement1 * -0.1 + movement2 * 0.0) + * Quaternion::rotation_z(0.5 + movement1 * -0.6 + movement2 * 0.6); next.belt.orientation = Quaternion::rotation_x(movement1 * -0.2 + movement2 * 0.2); next.shorts.orientation = - Quaternion::rotation_x(0.0 + movement1 * -0.2 + movement2 * 0.2); + Quaternion::rotation_x(movement1 * -0.2 + movement2 * 0.2); - next.head.orientation = - Quaternion::rotation_y(0.0 + movement1 * 0.0 + movement3 * -0.0) - * Quaternion::rotation_z( - (1.0 + movement1 * -0.5 + movement2 * 0.0) * (1.0 - movement3), - ); + next.head.orientation = Quaternion::rotation_y(movement1 * 0.0 + movement3 * -0.0) + * Quaternion::rotation_z(1.0 + movement1 * -0.5 + movement2 * 0.0); next.torso.position = Vec3::new( 0.0, 0.0, - (-1.0 - + 1.0 * (movement1 * 0.5 * PI).sin() - + 1.0 * (movement2 * 0.5 * PI + 0.5 * PI).sin()) - * (1.0 - movement3), - ); - next.torso.orientation = Quaternion::rotation_z( - movement1.powi(2) * -6.0 + movement2 * -1.7 + movement3 * 1.4, + -1.0 + 1.0 * (movement1 * 0.5 * PI).sin() + + 1.0 * (movement2 * 0.5 * PI + 0.5 * PI).sin(), ); + next.torso.orientation = + Quaternion::rotation_z(movement1.powi(2) * -6.0 + movement2 * -1.7); next.foot_l.position = Vec3::new( - -s_a.foot.0 + (movement1 * -1.0 + movement2 * -3.0) * (1.0 - movement3), + -s_a.foot.0 + (movement1 * -1.0 + movement2 * -3.0), s_a.foot.1, - s_a.foot.2 + (movement2 * 6.0) * (1.0 - movement3), + s_a.foot.2 + (movement2 * 6.0), ); - next.foot_l.orientation = - Quaternion::rotation_x((movement1 * 0.2 + movement2 * 0.5) * (1.0 - movement3)) - * Quaternion::rotation_y((movement2 * 0.5) * (1.0 - movement3)); + next.foot_l.orientation = Quaternion::rotation_x(movement1 * 0.2 + movement2 * 0.5) + * Quaternion::rotation_y(movement2 * 0.5); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + (movement1 * -2.0 + movement2 * -3.0) * (1.0 - movement3), + s_a.foot.1 + (movement1 * -2.0 + movement2 * -3.0), s_a.foot.2, ); - next.foot_r.orientation = Quaternion::rotation_x( - (movement1 * -0.5 + movement2 * -0.5) * (1.0 - movement3), - ); - }, - - Some(ToolKind::Hammer) => { - next.hand_l.position = Vec3::new(-0.75, -1.0, -2.5); - next.hand_l.orientation = Quaternion::rotation_x(1.27); - next.hand_r.position = Vec3::new(0.75, -1.5, -5.5); - next.hand_r.orientation = Quaternion::rotation_x(1.27); - next.main.position = Vec3::new(0.0, 6.0, -1.0); - next.main.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); - - next.control.position = Vec3::new(-4.5 + spinhalf * 4.0, 11.0, 8.0); - next.control.orientation = Quaternion::rotation_x(-1.7) - * Quaternion::rotation_y(0.2 + spin * -2.0) - * Quaternion::rotation_z(1.4 + spin * 0.1); - next.head.position = Vec3::new(0.0, -1.0 + s_a.head.0 + spin * -0.8, s_a.head.1); - next.head.orientation = Quaternion::rotation_z(spin * -0.25) - * Quaternion::rotation_x(0.0 + spin * -0.1) - * Quaternion::rotation_y(spin * -0.2); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); - next.chest.orientation = Quaternion::rotation_z(spin * 0.1) - * Quaternion::rotation_x(0.0 + spin * 0.1) - * Quaternion::rotation_y(decel * -0.2); - - next.belt.position = Vec3::new(0.0, 0.0, -2.0); - next.belt.orientation = next.chest.orientation * -0.1; - - next.shorts.position = Vec3::new(0.0, 0.0, -5.0); - next.belt.orientation = next.chest.orientation * -0.08; - next.torso.orientation = Quaternion::rotation_z((spin * 7.0).max(0.3)); - - next.foot_l.position = Vec3::new(-s_a.foot.0, foot * 1.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(foot * -1.2); - - next.foot_r.position = Vec3::new(s_a.foot.0, foot * -1.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(foot * 1.2); - - next.lantern.orientation = - Quaternion::rotation_x(spin * -0.7 + 0.4) * Quaternion::rotation_y(spin * 0.4); - next.foot_r.orientation = Quaternion::rotation_x(foot * 1.2); - - next.lantern.orientation = - Quaternion::rotation_x(spin * -0.7 + 0.4) * Quaternion::rotation_y(spin * 0.4); + next.foot_r.orientation = + Quaternion::rotation_x(movement1 * -0.5 + movement2 * -0.5); }, _ => {}, } diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index 42bba0caf5..22afd7de26 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -798,7 +798,9 @@ impl Floor { )) .with_name("Outcast Leader".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_loadout_config(loadout_builder::LoadoutConfig::Outcast) + .with_loadout_config( + loadout_builder::LoadoutConfig::Outcast, + ) .with_skillset_config( common::skillset_builder::SkillSetConfig::Outcast, ) @@ -860,27 +862,14 @@ impl Floor { ], 3 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Humanoid( - comp::humanoid::Body::random() + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Minotaur, + ), )) - .with_name("Cultist Acolyte".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_loadout_config(loadout_builder::LoadoutConfig::CultistAcolyte) - .with_skillset_config( - common::skillset_builder::SkillSetConfig::CultistAcolyte - ) - .with_scale(2.0) - .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.malachite_axe-0", - 1..=2 => "common.items.weapons.sword.cultist", - 3 => - "common.items.weapons.hammer.cultist_purp_2h-0", - 4 => "common.items.weapons.staff.cultist_staff", - _ => "common.items.weapons.bow.bone-1", - }, - ),); - 2 + .with_name("Minotaur".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 4 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) @@ -903,7 +892,9 @@ impl Floor { )) .with_name("Mindflayer".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_skillset_config(common::skillset_builder::SkillSetConfig::Mindflayer), + .with_skillset_config( + common::skillset_builder::SkillSetConfig::Mindflayer, + ), ], _ => { vec![EntityInfo::at(tile_wcenter.map(|e| e as f32)).with_body( @@ -1003,13 +994,58 @@ impl Floor { ], 2 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::QuadrupedMedium( - comp::quadruped_medium::Body::random_with( + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( dynamic_rng, - &comp::quadruped_medium::Species::Tarasque, + &comp::quadruped_low::Species::Hakulaq, ), )) - .with_name("Tarasque".to_string()) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 3 => vec![ From a4513fe09dc8efa549bc8fd82fd8b9fade6ba27a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20K=C3=B6sters?= Date: Fri, 8 Jan 2021 23:09:47 +0100 Subject: [PATCH 16/36] Improve particles --- .../common/abilities/staff/flamethrower.ron | 6 +- assets/voxygen/shaders/particle-vert.glsl | 41 ++++--- voxygen/src/render/pipelines/particle.rs | 2 +- voxygen/src/scene/particle.rs | 101 ++++++++++++++---- 4 files changed, 112 insertions(+), 38 deletions(-) diff --git a/assets/common/abilities/staff/flamethrower.ron b/assets/common/abilities/staff/flamethrower.ron index 4d886dbff5..f451b9347e 100644 --- a/assets/common/abilities/staff/flamethrower.ron +++ b/assets/common/abilities/staff/flamethrower.ron @@ -1,15 +1,15 @@ BasicBeam( buildup_duration: 0.25, recover_duration: 0.25, - beam_duration: 0.5, + beam_duration: 1.5, base_hps: 0, base_dps: 150, tick_rate: 3.0, range: 15.0, - max_angle: 22.5, + max_angle: 10.0, lifesteal_eff: 0.0, energy_regen: 0, energy_cost: 1, energy_drain: 350, orientation_behavior: Normal, -) \ No newline at end of file +) diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index e7a9b75237..70389f8599 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -86,6 +86,18 @@ float linear_scale(float factor) { return lifetime * factor; } +float percent() { + return lifetime / inst_lifespan; +} + +float slow_end(float factor) { + return (1 + factor) * percent() / (percent() + factor); +} + +float slow_start(float factor) { + return 1-(1 + factor) * (1-percent()) / ((1-percent()) + factor); +} + float start_end(float from, float to) { return mix(from, to, lifetime / inst_lifespan); } @@ -124,10 +136,10 @@ vec3 spiral_motion(vec3 line, float radius, float time_function) { vec3 axis2 = perp_axis1(line); vec3 axis3 = perp_axis2(line, axis2); - return line * time_function + vec3( - radius * cos(10 * time_function - inst_time) * axis2.x + radius * sin(10 * time_function - inst_time) * axis3.x, - radius * cos(10 * time_function - inst_time) * axis2.y + radius * sin(10 * time_function - inst_time) * axis3.y, - radius * cos(10 * time_function - inst_time) * axis2.z + radius * sin(10 * time_function - inst_time) * axis3.z); + return vec3( + radius * cos(time_function) * axis2.x + radius * sin(time_function) * axis3.x, + radius * cos(time_function) * axis2.y + radius * sin(time_function) * axis3.y, + radius * cos(time_function) * axis2.z + radius * sin(time_function) * axis3.z); } void main() { @@ -161,7 +173,7 @@ void main() { f_reflect = 0.0; // Fire doesn't reflect light, it emits it attr = Attr( linear_motion( - vec3(normalize(vec2(rand0, rand1)) * 0.25, 0.3), + vec3(0.0), vec3(rand2 * 0.1, rand3 * 0.1, 2.0 + rand4 * 1.0) ), vec3(1.0), @@ -317,26 +329,25 @@ void main() { } else if (inst_mode == ENERGY_NATURE) { f_reflect = 0.0; attr = Attr( - linear_motion( - vec3(rand0 * 1, rand1 * 1, rand2 * 1), - vec3(rand3 * 2, rand4 * 2, rand5 * 2) - ), - vec3(0.8), + inst_dir * slow_end(0.03) + spiral_motion(vec3(rand1, rand2, rand3), + 0.2 * (rand4 + 1.3) * slow_end(0.02), percent() * 3 * (rand4 + 4.0) + rand0), + vec3(1.0), vec4(vec3(0, 2.5, 1.5 + rand7 * 0.7), start_end(1.0, 0.0)), spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3) ); } else if (inst_mode == FLAMETHROWER) { f_reflect = 0.0; // Fire doesn't reflect light, it emits it attr = Attr( - (inst_dir * lifetime / inst_lifespan) + vec3(rand0, rand1, rand2) * (lifetime * 5 + 0.25), - vec3(0.6 + rand3 * 0.5 + lifetime / inst_lifespan * 5), - vec4(3, 1.6 + rand5 * 0.3 - 0.4 * lifetime / inst_lifespan, 0.2, start_end(1.0, 0.0) /*0.8 - 0.6 * lifetime / inst_lifespan*/), - spin_in_axis(vec3(rand6, rand7, rand8), lifetime / inst_lifespan * 10 + 3 * rand9) + inst_dir * ((rand0+1.0)/2 + 0.5) * slow_end(0.2) + /*0.4 * vec3(rand0, + rand1, rand2) * slow_end(0.1)*/ + 0.1 * grav_vel(earth_gravity), + vec3((3 * (1 - slow_start(0.1)))), + vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, start_end(1.0, 0.0)), + spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) ); } else if (inst_mode == FIRE_SHOCKWAVE) { f_reflect = 0.0; // Fire doesn't reflect light, it emits it attr = Attr( - vec3(rand0, rand1, lifetime * 10 + rand2), + vec3(rand0, rand1, lifetime * 1 + rand2), vec3(1.6 + rand3 * 1.5 + 10 * (lifetime + inst_lifespan)), vec4(3, 1.6 + rand7 * 0.3 - 5 * inst_lifespan + 2 * lifetime, 0.2, start_end(1.0, 0.0) /*0.8 - 3.5 * inst_lifespan*/), spin_in_axis(vec3(rand3, rand4, rand5), rand6) diff --git a/voxygen/src/render/pipelines/particle.rs b/voxygen/src/render/pipelines/particle.rs index 224587f429..09e1218db1 100644 --- a/voxygen/src/render/pipelines/particle.rs +++ b/voxygen/src/render/pipelines/particle.rs @@ -139,7 +139,7 @@ impl Instance { } } - pub fn new_beam( + pub fn new_directed( inst_time: f64, lifespan: f32, inst_mode: ParticleMode, diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 83d8ceb793..3498b4c1a9 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -66,14 +66,15 @@ impl ParticleMgr { self.particles.resize_with( self.particles.len() + (200.0 * power.abs()) as usize, || { - Particle::new( - Duration::from_secs(1), + Particle::new_directed( + Duration::from_secs_f32(rng.gen_range(1.0, 8.0)), time, ParticleMode::EnergyNature, + *pos, *pos + Vec3::::zero() .map(|_| rng.gen_range(-1.0..1.0)) .normalized() - * *radius, + * rng.gen_range(1.0, radius) ) }, ); @@ -81,10 +82,11 @@ impl ParticleMgr { self.particles.resize_with( self.particles.len() + (200.0 * power.abs()) as usize, || { - Particle::new( - Duration::from_secs(1), + Particle::new_directed( + Duration::from_secs(2), time, - ParticleMode::CampfireFire, + ParticleMode::FlameThrower, + *pos, *pos + Vec3::::zero() .map(|_| rng.gen_range(-1.0..1.0)) .normalized() @@ -295,7 +297,7 @@ impl ParticleMgr { Particle::new( Duration::from_millis(250), time, - ParticleMode::EnergyNature, + ParticleMode::CampfireSmoke, pos.0, ) }, @@ -376,6 +378,7 @@ impl ParticleMgr { .join() .filter(|(_, _, b)| b.creation.map_or(true, |c| (c + dt as f64) >= time)) { +// let range = beam.properties.speed * beam.properties.duration.as_secs_f32(); if beam .properties @@ -393,6 +396,58 @@ impl ParticleMgr { pos.0, pos.0 + *ori.look_dir() * range, )); +// + if let CharacterState::BasicBeam(b) = character_state { + let particle_ori = b.particle_ori.unwrap_or_else(|| ori.look_vec()); + if b.stage_section == StageSection::Cast { + if b.static_data.base_hps > 0.0 { + // Emit a light when using healing + lights.push(Light::new(pos.0 + b.offset, Rgb::new(0.1, 1.0, 0.15), 1.0)); + for i in 0..self.scheduler.heartbeats(Duration::from_millis(1)) { + self.particles.push(Particle::new_directed( + b.static_data.beam_duration, + time + i as f64 / 1000.0, + ParticleMode::HealingBeam, + pos.0 + particle_ori * 0.5 + b.offset, + pos.0 + particle_ori * b.static_data.range + b.offset, + )); + } + } else { + let mut rng = thread_rng(); + let (from, to) = (Vec3::::unit_z(), particle_ori); + let m = Mat3::::rotation_from_to_3d(from, to); + // Emit a light when using flames + lights.push(Light::new( + pos.0 + b.offset, + Rgb::new(1.0, 0.25, 0.05).map(|e| e * rng.gen_range(0.8..1.2)), + 2.0, + )); + self.particles.resize_with( + self.particles.len() + + 2 * usize::from( + self.scheduler.heartbeats(Duration::from_millis(1)), + ), + || { + let phi: f32 = + rng.gen_range(0.0..b.static_data.max_angle.to_radians()); + let theta: f32 = rng.gen_range(0.0..2.0 * PI); + let offset_z = Vec3::new( + phi.sin() * theta.cos(), + phi.sin() * theta.sin(), + phi.cos(), + ); + let random_ori = offset_z * m * Vec3::new(-1.0, -1.0, 1.0); + Particle::new_directed( + b.static_data.beam_duration, + time, + ParticleMode::FlameThrower, + pos.0 + random_ori * 0.5 + b.offset, + pos.0 + random_ori * b.static_data.range + b.offset, + ) + }, + ); + } +// } } else { let mut rng = thread_rng(); @@ -612,25 +667,27 @@ impl ParticleMgr { let position_snapped = ((position / scale).floor() + 0.5) * scale; - self.particles.push(Particle::new( - Duration::from_millis(250), + self.particles.push(Particle::new_directed( + Duration::from_secs(2), time, - ParticleMode::GroundShockwave, + ParticleMode::FlameThrower, position_snapped, + Vec3::new(0.0, 0.0, 10.0) + position_snapped, )); } } else { - for d in 0..3 * distance as i32 { + for d in 0..8 * distance as i32 { let arc_position = theta - radians / 2.0 + dtheta * d as f32 / 3.0; - let position = pos.0 - + distance * Vec3::new(arc_position.cos(), arc_position.sin(), 0.0); + let diff = distance * Vec3::new(arc_position.cos(), arc_position.sin(), 0.0); + let position = pos.0 + diff; - self.particles.push(Particle::new( - Duration::from_secs_f32(distance / 50.0), + self.particles.push(Particle::new_directed( + Duration::from_millis(500), time, - ParticleMode::FireShockwave, - position, + ParticleMode::FlameThrower, + pos.0 + diff * 0.9, + Vec3::new(0.0, 0.0, 2.0) + position, )); } } @@ -805,7 +862,7 @@ impl Particle { } } - fn new_beam( + fn new_directed( lifespan: Duration, time: f64, mode: ParticleMode, @@ -814,7 +871,13 @@ impl Particle { ) -> Self { Particle { alive_until: time + lifespan.as_secs_f64(), - instance: ParticleInstance::new_beam(time, lifespan.as_secs_f32(), mode, pos1, pos2), + instance: ParticleInstance::new_directed( + time, + lifespan.as_secs_f32(), + mode, + pos1, + pos2, + ), } } } From 130d51786a32a9e3aaf4d253a7934acee97e084a Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 11 Feb 2021 20:36:15 -0500 Subject: [PATCH 17/36] golem retrofit --- .../common/abilities/staff/flamethrower.ron | 2 +- .../abilities/unique/stonegolemfist/basic.ron | 11 -- .../unique/stonegolemfist/singlestrike.ron | 25 ++++ .../abilities/weapon_ability_manifest.ron | 2 +- voxygen/anim/src/golem/alpha.rs | 124 ++++++++---------- voxygen/anim/src/golem/idle.rs | 4 +- voxygen/anim/src/golem/jump.rs | 54 -------- voxygen/anim/src/golem/mod.rs | 17 ++- voxygen/anim/src/golem/run.rs | 61 +++++---- voxygen/anim/src/golem/shockwave.rs | 3 +- voxygen/anim/src/golem/spinmelee.rs | 3 +- voxygen/src/scene/figure/mod.rs | 37 +++++- voxygen/src/scene/particle.rs | 7 +- 13 files changed, 174 insertions(+), 176 deletions(-) delete mode 100644 assets/common/abilities/unique/stonegolemfist/basic.ron create mode 100644 assets/common/abilities/unique/stonegolemfist/singlestrike.ron delete mode 100644 voxygen/anim/src/golem/jump.rs diff --git a/assets/common/abilities/staff/flamethrower.ron b/assets/common/abilities/staff/flamethrower.ron index f451b9347e..9c94bc65c7 100644 --- a/assets/common/abilities/staff/flamethrower.ron +++ b/assets/common/abilities/staff/flamethrower.ron @@ -1,7 +1,7 @@ BasicBeam( buildup_duration: 0.25, recover_duration: 0.25, - beam_duration: 1.5, + beam_duration: 0.5, base_hps: 0, base_dps: 150, tick_rate: 3.0, diff --git a/assets/common/abilities/unique/stonegolemfist/basic.ron b/assets/common/abilities/unique/stonegolemfist/basic.ron deleted file mode 100644 index 49d111c38d..0000000000 --- a/assets/common/abilities/unique/stonegolemfist/basic.ron +++ /dev/null @@ -1,11 +0,0 @@ -BasicMelee( - energy_cost: 0, - buildup_duration: 0.4, - swing_duration: 0.1, - recover_duration: 0.25, - knockback: 25.0, - base_damage: 200, - base_poise_damage: 0, - range: 5.0, - max_angle: 120.0, -) diff --git a/assets/common/abilities/unique/stonegolemfist/singlestrike.ron b/assets/common/abilities/unique/stonegolemfist/singlestrike.ron new file mode 100644 index 0000000000..7b728bc18c --- /dev/null +++ b/assets/common/abilities/unique/stonegolemfist/singlestrike.ron @@ -0,0 +1,25 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 100, + damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 5.0, + range: 3.5, + angle: 60.0, + base_buildup_duration: 0.9, + base_swing_duration: 0.1, + base_recover_duration: 0.9, + forward_movement: 3.0, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index 5b54bfeb16..4683401e1d 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -81,7 +81,7 @@ abilities: [], ), Unique(StoneGolemFist): ( - primary: "common.abilities.unique.stonegolemfist.basic", + primary: "common.abilities.unique.stonegolemfist.singlestrike", secondary: "common.abilities.unique.stonegolemfist.shockwave", abilities: [ (None, "common.abilities.unique.stonegolemfist.spin"), diff --git a/voxygen/anim/src/golem/alpha.rs b/voxygen/anim/src/golem/alpha.rs index d147dfca34..dde2065b89 100644 --- a/voxygen/anim/src/golem/alpha.rs +++ b/voxygen/anim/src/golem/alpha.rs @@ -2,12 +2,13 @@ use super::{ super::{vek::*, Animation}, GolemSkeleton, SkeletonAttr, }; +use common::states::utils::StageSection; use std::f32::consts::PI; pub struct AlphaAnimation; impl Animation for AlphaAnimation { - type Dependency = (f32, f64); + type Dependency = (Option, f64, f64); type Skeleton = GolemSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,78 +18,69 @@ impl Animation for AlphaAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, global_time): Self::Dependency, + (stage_section, global_time, timer): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let lab = 1.0; - - let slower = (((1.0) - / (0.05 + 0.95 * ((anim_time as f32 * lab as f32 * 8.0 - 0.5 * PI).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 8.0 - 0.5 * PI).sin()) - + 1.0; - let twist = (anim_time as f32 * lab as f32 * 4.0).sin() + 0.5; - - let random = ((((2.0 - * (((global_time as f32 - anim_time as f32) * 10.0) - - (((global_time as f32 - anim_time as f32) * 10.0).round()))) - .abs()) - * 10.0) - .round()) - / 10.0; - - let switch = if random > 0.5 { 1.0 } else { -1.0 }; - - if switch > 0.0 { - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = Quaternion::rotation_x(-0.2); - - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) / 8.0; - next.upper_torso.orientation = Quaternion::rotation_z(twist * 1.1); - - next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); - next.lower_torso.orientation = - Quaternion::rotation_z(twist * -1.1) * Quaternion::rotation_x(0.0); - - next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - - next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = Quaternion::rotation_x(slower * 0.4); - - next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.orientation = Quaternion::rotation_x(slower * 0.35); - } else { - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); - - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) / 8.0; - next.upper_torso.orientation = Quaternion::rotation_z(twist * -1.1); - - next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); - next.lower_torso.orientation = Quaternion::rotation_z(twist * 1.1); - - next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_l.orientation = Quaternion::rotation_x(slower * 0.4); - - next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = Quaternion::rotation_z(0.0); - - next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_l.orientation = Quaternion::rotation_x(slower * 0.35); - - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)), + _ => (0.0, 0.0, 0.0), }; - next.torso.position = Vec3::new(0.0, 0.0, 0.0); - next.torso.orientation = Quaternion::rotation_z(0.0); + + let pullback = 1.0 - move3; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum() as f32; + + let move1 = move1base * pullback; + let move2 = move2base * pullback; + if mirror > 0.0 { + next.head.orientation = + Quaternion::rotation_x(-0.2) * Quaternion::rotation_z(move1 * -1.2 + move2 * 2.0); + + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.6) + * Quaternion::rotation_z(move1 * 1.2 + move2 * -3.2); + + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -1.2 + move2 * 3.2) + * Quaternion::rotation_x(move1 * 0.6); + + next.shoulder_l.orientation = Quaternion::rotation_y(move1 * 0.8) + * Quaternion::rotation_x(move1 * -1.0 + move2 * 1.6); + + next.shoulder_r.orientation = Quaternion::rotation_x(move1 * 0.4); + + next.hand_l.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(move1 * -1.0 + move2 * 1.8); + + next.hand_r.orientation = + Quaternion::rotation_y(move1 * 0.5) * Quaternion::rotation_x(move1 * 0.4); + } else { + next.head.orientation = + Quaternion::rotation_x(-0.2) * Quaternion::rotation_z(move1 * 1.2 + move2 * -2.0); + + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.6) + * Quaternion::rotation_z(move1 * -1.2 + move2 * 3.2); + + next.lower_torso.orientation = Quaternion::rotation_z(move1 * 1.2 + move2 * -3.2) + * Quaternion::rotation_x(move1 * 0.6); + + next.shoulder_l.orientation = Quaternion::rotation_x(move1 * 0.4); + + next.shoulder_r.orientation = Quaternion::rotation_y(move1 * -0.8) + * Quaternion::rotation_x(move1 * -1.0 + move2 * 1.6); + + next.hand_l.orientation = + Quaternion::rotation_y(move1 * -0.5) * Quaternion::rotation_x(move1 * 0.4); + + next.hand_r.orientation = + Quaternion::rotation_y(0.0) * Quaternion::rotation_x(move1 * -1.0 + move2 * 1.8); + }; + next.torso.position = Vec3::new(0.0, move1 * 0.7, move1 * -0.3); next } } diff --git a/voxygen/anim/src/golem/idle.rs b/voxygen/anim/src/golem/idle.rs index 7b5945750d..5f8744a771 100644 --- a/voxygen/anim/src/golem/idle.rs +++ b/voxygen/anim/src/golem/idle.rs @@ -41,7 +41,7 @@ impl Animation for IdleAnimation { ); next.head.scale = Vec3::one() * 1.02; next.jaw.scale = Vec3::one() * 1.02; - next.upper_torso.scale = Vec3::one() / 8.0; + next.upper_torso.scale = Vec3::one() * s_a.scaler / 8.0; next.hand_l.scale = Vec3::one() * 1.04; next.hand_r.scale = Vec3::one() * 1.04; next.leg_l.scale = Vec3::one() * 1.02; @@ -56,7 +56,7 @@ impl Animation for IdleAnimation { next.jaw.orientation = Quaternion::rotation_x(-0.1 + breathe * 0.1); next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + breathe * 0.5) / 8.0; + Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + breathe * 0.5) * s_a.scaler / 8.0; next.upper_torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.lower_torso.position = diff --git a/voxygen/anim/src/golem/jump.rs b/voxygen/anim/src/golem/jump.rs deleted file mode 100644 index 2f9c536c79..0000000000 --- a/voxygen/anim/src/golem/jump.rs +++ /dev/null @@ -1,54 +0,0 @@ -use super::{super::Animation, GolemSkeleton, SkeletonAttr}; -//use std::f32::consts::PI; -use super::super::vek::*; - -pub struct JumpAnimation; - -impl Animation for JumpAnimation { - type Dependency = (f32, f64); - type Skeleton = GolemSkeleton; - - #[cfg(feature = "use-dyn-lib")] - const UPDATE_FN: &'static [u8] = b"golem_jump\0"; - - #[cfg_attr(feature = "be-dyn-lib", export_name = "golem_jump")] - - fn update_skeleton_inner( - skeleton: &Self::Skeleton, - _global_time: Self::Dependency, - _anim_time: f64, - _rate: &mut f32, - s_a: &SkeletonAttr, - ) -> Self::Skeleton { - let mut next = (*skeleton).clone(); - - next.head.scale = Vec3::one() * 1.02; - next.jaw.scale = Vec3::one() * 1.02; - next.upper_torso.scale = Vec3::one() / 8.0; - next.hand_l.scale = Vec3::one() * 1.04; - next.hand_r.scale = Vec3::one() * 1.04; - next.leg_l.scale = Vec3::one() * 1.02; - next.leg_r.scale = Vec3::one() * 1.02; - - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) / 8.0; - - next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - - next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - - next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - - next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2) * 1.02; - - next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2) * 1.02; - - next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2) / 8.0; - - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2) / 8.0; - next - } -} diff --git a/voxygen/anim/src/golem/mod.rs b/voxygen/anim/src/golem/mod.rs index a3bcf69f60..93703771ad 100644 --- a/voxygen/anim/src/golem/mod.rs +++ b/voxygen/anim/src/golem/mod.rs @@ -1,14 +1,13 @@ pub mod alpha; pub mod idle; -pub mod jump; pub mod run; pub mod shockwave; pub mod spinmelee; // Reexports pub use self::{ - alpha::AlphaAnimation, idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation, - shockwave::ShockwaveAnimation, spinmelee::SpinMeleeAnimation, + alpha::AlphaAnimation, idle::IdleAnimation, run::RunAnimation, shockwave::ShockwaveAnimation, + spinmelee::SpinMeleeAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; @@ -82,6 +81,8 @@ pub struct SkeletonAttr { hand: (f32, f32, f32), leg: (f32, f32, f32), foot: (f32, f32, f32), + scaler: f32, + tempo: f32, } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -106,6 +107,8 @@ impl Default for SkeletonAttr { hand: (0.0, 0.0, 0.0), leg: (0.0, 0.0, 0.0), foot: (0.0, 0.0, 0.0), + scaler: 0.0, + tempo: 0.0, } } } @@ -146,6 +149,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (StoneGolem, _) => (3.5, 0.5, -9.5), (Treant, _) => (3.5, -5.0, -8.5), }, + scaler: match (body.species, body.body_type) { + (StoneGolem, _) => 1.8, + (Treant, _) => 1.8, + }, + tempo: match (body.species, body.body_type) { + (StoneGolem, _) => 1.0, + (Treant, _) => 1.0, + }, } } } diff --git a/voxygen/anim/src/golem/run.rs b/voxygen/anim/src/golem/run.rs index 1f37f2f21f..1bd3c46881 100644 --- a/voxygen/anim/src/golem/run.rs +++ b/voxygen/anim/src/golem/run.rs @@ -7,7 +7,7 @@ use std::f32::consts::PI; pub struct RunAnimation; impl Animation for RunAnimation { - type Dependency = (f32, Vec3, Vec3, f64); + type Dependency = (Vec3, Vec3, Vec3, f64, f32); type Skeleton = GolemSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,37 +17,43 @@ impl Animation for RunAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, orientation, last_ori, _global_time): Self::Dependency, - anim_time: f64, + (velocity, orientation, last_ori, _global_time, acc_vel): Self::Dependency, + _anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); - let lab = 0.45; //.65 + let lab = 0.45 * s_a.tempo; //.65 + let speednorm = (speed / 7.0).powf(0.6); //.powf(0.4) let foothoril = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) + / (0.4 + (0.6) * ((acc_vel * 2.0 * lab as f32 + PI * 1.4).sin()).powi(2))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); + * ((acc_vel * 2.0 * lab as f32 + PI * 1.4).sin()) + * speednorm; let foothorir = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) + / (0.4 + (0.6) * ((acc_vel * 2.0 * lab as f32 + PI * 0.4).sin()).powi(2))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); - let footvertl = (anim_time as f32 * 16.0 * lab as f32).sin(); - let footvertr = (anim_time as f32 * 16.0 * lab as f32 + PI).sin(); + * ((acc_vel * 2.0 * lab as f32 + PI * 0.4).sin()) + * speednorm; + let footvertl = (acc_vel * 2.0 * lab as f32).sin() * speednorm; + let footvertr = (acc_vel * 2.0 * lab as f32 + PI).sin() * speednorm; - let footrotl = (((5.0) - / (2.5 + (2.5) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) + let footrotl = (((1.0) + / (0.5 + (0.5) * ((acc_vel * 2.0 * lab as f32 + PI * 1.4).sin()).powi(2))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); + * ((acc_vel * 2.0 * lab as f32 + PI * 1.4).sin()) + * speednorm; - let footrotr = (((5.0) - / (1.0 + (4.0) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) + let footrotr = (((1.0) + / (0.2 + (0.8) * ((acc_vel * 2.0 * lab as f32 + PI * 0.4).sin()).powi(2))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + * ((acc_vel * 2.0 * lab as f32 + PI * 0.4).sin()) + * speednorm; - let short = (anim_time as f32 * lab as f32 * 16.0).sin(); - let shortalt = (anim_time as f32 * lab as f32 * 16.0 + PI / 2.0).sin(); + let short = (acc_vel * lab as f32 * 2.0).sin() * speednorm; + let shortalt = (acc_vel * lab as f32 * 2.0 + PI / 2.0).sin() * speednorm; let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); let tilt = if ::vek::Vec2::new(ori, last_ori) @@ -64,19 +70,20 @@ impl Animation for RunAnimation { next.head.scale = Vec3::one() * 1.02; next.jaw.scale = Vec3::one() * 1.02; - next.upper_torso.scale = Vec3::one() / 8.0; + next.upper_torso.scale = Vec3::one() * s_a.scaler / 8.0; next.hand_l.scale = Vec3::one() * 1.04; next.hand_r.scale = Vec3::one() * 1.04; next.leg_l.scale = Vec3::one() * 1.02; next.leg_r.scale = Vec3::one() * 1.02; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = Quaternion::rotation_z(short * -0.3) * Quaternion::rotation_x(-0.2); + next.head.orientation = + Quaternion::rotation_z(short * -0.3) * Quaternion::rotation_x(-0.2 * speednorm); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1) * 1.02; next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + short * 1.0) / 8.0; + Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + short * 1.0) * s_a.scaler / 8.0; next.upper_torso.orientation = Quaternion::rotation_z(tilt * -4.0 + short * 0.40); next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); @@ -89,7 +96,7 @@ impl Animation for RunAnimation { next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_r.orientation = Quaternion::rotation_z(footrotr * -0.07) - * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_y(-0.15 * speednorm) * Quaternion::rotation_x(footrotr * -0.25); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); @@ -104,13 +111,13 @@ impl Animation for RunAnimation { next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2) * 1.02; next.leg_l.orientation = Quaternion::rotation_x(footrotl * 0.3) - * Quaternion::rotation_y(0.1) + * Quaternion::rotation_y(0.1 * speednorm) * Quaternion::rotation_z(footrotl * -0.2); next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2) * 1.02; next.leg_r.orientation = Quaternion::rotation_x(footrotr * 0.3) - * Quaternion::rotation_y(-0.1) + * Quaternion::rotation_y(-0.1 * speednorm) * Quaternion::rotation_z(footrotr * 0.2); next.foot_l.position = Vec3::new( @@ -119,7 +126,7 @@ impl Animation for RunAnimation { s_a.foot.2 + (footvertl * 3.0).max(0.0), ); next.foot_l.orientation = - Quaternion::rotation_x(footrotl * 0.2) * Quaternion::rotation_y(-0.08); + Quaternion::rotation_x(footrotl * 0.2) * Quaternion::rotation_y(-0.08 * speednorm); next.foot_r.position = Vec3::new( s_a.foot.0, @@ -128,10 +135,10 @@ impl Animation for RunAnimation { ); next.foot_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(footrotr * 0.2) - * Quaternion::rotation_y(0.08); + * Quaternion::rotation_y(0.08 * speednorm); next.torso.position = Vec3::new(0.0, 0.0, 0.0); - next.torso.orientation = Quaternion::rotation_x(-0.2); + next.torso.orientation = Quaternion::rotation_x(-0.2 * speednorm); next } } diff --git a/voxygen/anim/src/golem/shockwave.rs b/voxygen/anim/src/golem/shockwave.rs index 1072138087..eda067608a 100644 --- a/voxygen/anim/src/golem/shockwave.rs +++ b/voxygen/anim/src/golem/shockwave.rs @@ -42,7 +42,8 @@ impl Animation for ShockwaveAnimation { 0.0, s_a.upper_torso.0, s_a.upper_torso.1 + slower * -3.0 + breathe * 1.0, - ) / 8.0; + ) * s_a.scaler + / 8.0; next.upper_torso.orientation = Quaternion::rotation_z((twist * 2.0).min(PI)) * Quaternion::rotation_x(0.0); diff --git a/voxygen/anim/src/golem/spinmelee.rs b/voxygen/anim/src/golem/spinmelee.rs index 7cda164165..9d283a2edb 100644 --- a/voxygen/anim/src/golem/spinmelee.rs +++ b/voxygen/anim/src/golem/spinmelee.rs @@ -38,7 +38,8 @@ impl Animation for SpinMeleeAnimation { next.head.orientation = Quaternion::rotation_z(movement2 * -2.0 * PI) * Quaternion::rotation_x(-0.2); - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) / 8.0; + next.upper_torso.position = + Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) * s_a.scaler / 8.0; next.upper_torso.orientation = Quaternion::rotation_z(movement2 * 2.0 * PI); next.lower_torso.position = diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 89caf22f31..95a7e7f4ef 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -3656,20 +3656,21 @@ impl FigureMgr { (true, true, false) => anim::golem::RunAnimation::update_skeleton( &GolemSkeleton::default(), ( - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, + state.acc_vel, ), state.state_time, &mut state_animation_rate, skeleton_attr, ), // In air - (false, _, false) => anim::golem::JumpAnimation::update_skeleton( + (false, _, false) => anim::golem::RunAnimation::update_skeleton( &GolemSkeleton::default(), - (vel.0.magnitude(), time), + (vel.0, ori, state.last_ori, time, state.acc_vel), state.state_time, &mut state_animation_rate, skeleton_attr, @@ -3684,11 +3685,35 @@ impl FigureMgr { ), }; let target_bones = match &character { - CharacterState::BasicMelee(_) => { + CharacterState::ComboMelee(s) => { + let stage_index = (s.stage - 1) as usize; + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time + / s.static_data.stage_data[stage_index] + .base_buildup_duration + .as_secs_f64() + }, + StageSection::Swing => { + stage_time + / s.static_data.stage_data[stage_index] + .base_swing_duration + .as_secs_f64() + }, + StageSection::Recover => { + stage_time + / s.static_data.stage_data[stage_index] + .base_recover_duration + .as_secs_f64() + }, + _ => 0.0, + }; + anim::golem::AlphaAnimation::update_skeleton( &target_base, - (vel.0.magnitude(), time), - state.state_time, + (Some(s.stage_section), time, state.state_time), + stage_progress, &mut state_animation_rate, skeleton_attr, ) diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 3498b4c1a9..91093ba1be 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -67,14 +67,14 @@ impl ParticleMgr { self.particles.len() + (200.0 * power.abs()) as usize, || { Particle::new_directed( - Duration::from_secs_f32(rng.gen_range(1.0, 8.0)), + Duration::from_secs_f32(rng.gen_range(1.0..8.0)), time, ParticleMode::EnergyNature, *pos, *pos + Vec3::::zero() .map(|_| rng.gen_range(-1.0..1.0)) .normalized() - * rng.gen_range(1.0, radius) + * rng.gen_range(1.0..*radius), ) }, ); @@ -679,7 +679,8 @@ impl ParticleMgr { for d in 0..8 * distance as i32 { let arc_position = theta - radians / 2.0 + dtheta * d as f32 / 3.0; - let diff = distance * Vec3::new(arc_position.cos(), arc_position.sin(), 0.0); + let diff = + distance * Vec3::new(arc_position.cos(), arc_position.sin(), 0.0); let position = pos.0 + diff; self.particles.push(Particle::new_directed( From cb59c8017e6f20d48ae9dfa9af720711a52f373a Mon Sep 17 00:00:00 2001 From: jshipsey Date: Fri, 12 Feb 2021 20:01:07 -0500 Subject: [PATCH 18/36] anim tweaks, more loadout setup --- .../chest/{adlet.ron => adlet/adlet_bow.ron} | 2 +- .../npc_armor/chest/adlet/adlet_spear.ron | 12 +++ .../chest/{ => gnarling}/gnarling.ron | 0 .../npc_armor/chest/{ => haniwa}/haniwa.ron | 0 .../npc_armor/chest/{ => kappa}/kappa.ron | 0 .../chest/{ => myrmidon}/myrmidon.ron | 0 .../npc_armor/chest/{ => sahagin}/sahagin.ron | 0 .../npc_armor/foot/{ => adlet}/adlet.ron | 0 .../foot/{ => gnarling}/gnarling.ron | 0 .../npc_armor/foot/{ => haniwa}/haniwa.ron | 0 .../npc_armor/foot/{ => kappa}/kappa.ron | 0 .../foot/{ => myrmidon}/myrmidon.ron | 0 .../npc_armor/foot/{ => sahagin}/sahagin.ron | 0 .../hand/{adlet.ron => adlet/adlet_bow.ron} | 2 +- .../npc_armor/hand/adlet/adlet_spear.ron | 12 +++ .../hand/{ => gnarling}/gnarling.ron | 0 .../npc_armor/hand/{ => haniwa}/haniwa.ron | 0 .../npc_armor/hand/{ => kappa}/kappa.ron | 0 .../hand/{ => myrmidon}/myrmidon.ron | 0 .../npc_armor/hand/{ => sahagin}/sahagin.ron | 0 assets/common/items/npc_armor/pants/adlet.ron | 12 --- .../items/npc_armor/pants/adlet/adlet_bow.ron | 12 +++ .../npc_armor/pants/adlet/adlet_spear.ron | 12 +++ .../pants/{ => gnarling}/gnarling.ron | 0 .../npc_armor/pants/{ => haniwa}/haniwa.ron | 0 .../npc_armor/pants/{ => kappa}/kappa.ron | 0 .../pants/{ => myrmidon}/myrmidon.ron | 0 .../npc_armor/pants/{ => sahagin}/sahagin.ron | 0 .../biped_small_armor_chest_manifest.ron | 7 +- .../voxel/biped_small_armor_hand_manifest.ron | 14 ++- .../biped_small_armor_pants_manifest.ron | 9 +- .../npc/adlet/male/bow/bow_movelater.vox | 3 + .../voxel/npc/adlet/male/bow/chest.vox | 3 + .../voxel/npc/adlet/male/bow/hand_r.vox | 3 + .../voxygen/voxel/npc/adlet/male/bow/head.vox | 3 + .../voxel/npc/adlet/male/bow/pants.vox | 3 + .../npc/adlet/male/{ => spear}/chest.vox | 0 .../npc/adlet/male/{ => spear}/hand_r.vox | 0 .../voxel/npc/adlet/male/spear/head.vox | 3 + .../npc/adlet/male/{ => spear}/pants.vox | 0 common/src/comp/inventory/loadout_builder.rs | 89 ++++++++++++++----- common/src/states/utils.rs | 14 +-- voxygen/anim/src/biped_large/idle.rs | 14 +-- voxygen/anim/src/biped_large/mod.rs | 2 +- voxygen/anim/src/biped_small/alpha.rs | 20 +++-- voxygen/anim/src/biped_small/shoot.rs | 53 +++++++++-- voxygen/anim/src/quadruped_low/mod.rs | 2 +- voxygen/anim/src/quadruped_low/run.rs | 2 +- voxygen/anim/src/quadruped_medium/mod.rs | 2 +- voxygen/anim/src/quadruped_medium/run.rs | 24 ++--- voxygen/anim/src/quadruped_small/mod.rs | 13 ++- voxygen/anim/src/quadruped_small/run.rs | 17 ++-- voxygen/src/scene/particle.rs | 2 +- 53 files changed, 264 insertions(+), 102 deletions(-) rename assets/common/items/npc_armor/chest/{adlet.ron => adlet/adlet_bow.ron} (87%) create mode 100644 assets/common/items/npc_armor/chest/adlet/adlet_spear.ron rename assets/common/items/npc_armor/chest/{ => gnarling}/gnarling.ron (100%) rename assets/common/items/npc_armor/chest/{ => haniwa}/haniwa.ron (100%) rename assets/common/items/npc_armor/chest/{ => kappa}/kappa.ron (100%) rename assets/common/items/npc_armor/chest/{ => myrmidon}/myrmidon.ron (100%) rename assets/common/items/npc_armor/chest/{ => sahagin}/sahagin.ron (100%) rename assets/common/items/npc_armor/foot/{ => adlet}/adlet.ron (100%) rename assets/common/items/npc_armor/foot/{ => gnarling}/gnarling.ron (100%) rename assets/common/items/npc_armor/foot/{ => haniwa}/haniwa.ron (100%) rename assets/common/items/npc_armor/foot/{ => kappa}/kappa.ron (100%) rename assets/common/items/npc_armor/foot/{ => myrmidon}/myrmidon.ron (100%) rename assets/common/items/npc_armor/foot/{ => sahagin}/sahagin.ron (100%) rename assets/common/items/npc_armor/hand/{adlet.ron => adlet/adlet_bow.ron} (87%) create mode 100644 assets/common/items/npc_armor/hand/adlet/adlet_spear.ron rename assets/common/items/npc_armor/hand/{ => gnarling}/gnarling.ron (100%) rename assets/common/items/npc_armor/hand/{ => haniwa}/haniwa.ron (100%) rename assets/common/items/npc_armor/hand/{ => kappa}/kappa.ron (100%) rename assets/common/items/npc_armor/hand/{ => myrmidon}/myrmidon.ron (100%) rename assets/common/items/npc_armor/hand/{ => sahagin}/sahagin.ron (100%) delete mode 100644 assets/common/items/npc_armor/pants/adlet.ron create mode 100644 assets/common/items/npc_armor/pants/adlet/adlet_bow.ron create mode 100644 assets/common/items/npc_armor/pants/adlet/adlet_spear.ron rename assets/common/items/npc_armor/pants/{ => gnarling}/gnarling.ron (100%) rename assets/common/items/npc_armor/pants/{ => haniwa}/haniwa.ron (100%) rename assets/common/items/npc_armor/pants/{ => kappa}/kappa.ron (100%) rename assets/common/items/npc_armor/pants/{ => myrmidon}/myrmidon.ron (100%) rename assets/common/items/npc_armor/pants/{ => sahagin}/sahagin.ron (100%) create mode 100644 assets/voxygen/voxel/npc/adlet/male/bow/bow_movelater.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/bow/chest.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/bow/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/bow/head.vox create mode 100644 assets/voxygen/voxel/npc/adlet/male/bow/pants.vox rename assets/voxygen/voxel/npc/adlet/male/{ => spear}/chest.vox (100%) rename assets/voxygen/voxel/npc/adlet/male/{ => spear}/hand_r.vox (100%) create mode 100644 assets/voxygen/voxel/npc/adlet/male/spear/head.vox rename assets/voxygen/voxel/npc/adlet/male/{ => spear}/pants.vox (100%) diff --git a/assets/common/items/npc_armor/chest/adlet.ron b/assets/common/items/npc_armor/chest/adlet/adlet_bow.ron similarity index 87% rename from assets/common/items/npc_armor/chest/adlet.ron rename to assets/common/items/npc_armor/chest/adlet/adlet_bow.ron index 5b09bab368..8d50e8cd6f 100644 --- a/assets/common/items/npc_armor/chest/adlet.ron +++ b/assets/common/items/npc_armor/chest/adlet/adlet_bow.ron @@ -2,7 +2,7 @@ ItemDef( name: "Adlet", description: "Ceremonial attire used by members.", kind: Armor(( - kind: Chest("Adlet"), + kind: Chest("AdletBow"), stats: ( protection: Normal(2.0), poise_resilience: Normal(1.0), diff --git a/assets/common/items/npc_armor/chest/adlet/adlet_spear.ron b/assets/common/items/npc_armor/chest/adlet/adlet_spear.ron new file mode 100644 index 0000000000..5043c65e01 --- /dev/null +++ b/assets/common/items/npc_armor/chest/adlet/adlet_spear.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("AdletSpear"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/gnarling.ron b/assets/common/items/npc_armor/chest/gnarling/gnarling.ron similarity index 100% rename from assets/common/items/npc_armor/chest/gnarling.ron rename to assets/common/items/npc_armor/chest/gnarling/gnarling.ron diff --git a/assets/common/items/npc_armor/chest/haniwa.ron b/assets/common/items/npc_armor/chest/haniwa/haniwa.ron similarity index 100% rename from assets/common/items/npc_armor/chest/haniwa.ron rename to assets/common/items/npc_armor/chest/haniwa/haniwa.ron diff --git a/assets/common/items/npc_armor/chest/kappa.ron b/assets/common/items/npc_armor/chest/kappa/kappa.ron similarity index 100% rename from assets/common/items/npc_armor/chest/kappa.ron rename to assets/common/items/npc_armor/chest/kappa/kappa.ron diff --git a/assets/common/items/npc_armor/chest/myrmidon.ron b/assets/common/items/npc_armor/chest/myrmidon/myrmidon.ron similarity index 100% rename from assets/common/items/npc_armor/chest/myrmidon.ron rename to assets/common/items/npc_armor/chest/myrmidon/myrmidon.ron diff --git a/assets/common/items/npc_armor/chest/sahagin.ron b/assets/common/items/npc_armor/chest/sahagin/sahagin.ron similarity index 100% rename from assets/common/items/npc_armor/chest/sahagin.ron rename to assets/common/items/npc_armor/chest/sahagin/sahagin.ron diff --git a/assets/common/items/npc_armor/foot/adlet.ron b/assets/common/items/npc_armor/foot/adlet/adlet.ron similarity index 100% rename from assets/common/items/npc_armor/foot/adlet.ron rename to assets/common/items/npc_armor/foot/adlet/adlet.ron diff --git a/assets/common/items/npc_armor/foot/gnarling.ron b/assets/common/items/npc_armor/foot/gnarling/gnarling.ron similarity index 100% rename from assets/common/items/npc_armor/foot/gnarling.ron rename to assets/common/items/npc_armor/foot/gnarling/gnarling.ron diff --git a/assets/common/items/npc_armor/foot/haniwa.ron b/assets/common/items/npc_armor/foot/haniwa/haniwa.ron similarity index 100% rename from assets/common/items/npc_armor/foot/haniwa.ron rename to assets/common/items/npc_armor/foot/haniwa/haniwa.ron diff --git a/assets/common/items/npc_armor/foot/kappa.ron b/assets/common/items/npc_armor/foot/kappa/kappa.ron similarity index 100% rename from assets/common/items/npc_armor/foot/kappa.ron rename to assets/common/items/npc_armor/foot/kappa/kappa.ron diff --git a/assets/common/items/npc_armor/foot/myrmidon.ron b/assets/common/items/npc_armor/foot/myrmidon/myrmidon.ron similarity index 100% rename from assets/common/items/npc_armor/foot/myrmidon.ron rename to assets/common/items/npc_armor/foot/myrmidon/myrmidon.ron diff --git a/assets/common/items/npc_armor/foot/sahagin.ron b/assets/common/items/npc_armor/foot/sahagin/sahagin.ron similarity index 100% rename from assets/common/items/npc_armor/foot/sahagin.ron rename to assets/common/items/npc_armor/foot/sahagin/sahagin.ron diff --git a/assets/common/items/npc_armor/hand/adlet.ron b/assets/common/items/npc_armor/hand/adlet/adlet_bow.ron similarity index 87% rename from assets/common/items/npc_armor/hand/adlet.ron rename to assets/common/items/npc_armor/hand/adlet/adlet_bow.ron index cd1e73e030..173ea9112f 100644 --- a/assets/common/items/npc_armor/hand/adlet.ron +++ b/assets/common/items/npc_armor/hand/adlet/adlet_bow.ron @@ -2,7 +2,7 @@ ItemDef( name: "Adlet", description: "Ceremonial attire used by members..", kind: Armor(( - kind: Hand("Adlet"), + kind: Hand("AdletBow"), stats: ( protection: Normal(2.0), poise_resilience: Normal(1.0), diff --git a/assets/common/items/npc_armor/hand/adlet/adlet_spear.ron b/assets/common/items/npc_armor/hand/adlet/adlet_spear.ron new file mode 100644 index 0000000000..6193f137b5 --- /dev/null +++ b/assets/common/items/npc_armor/hand/adlet/adlet_spear.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("AdletSpear"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/hand/gnarling.ron b/assets/common/items/npc_armor/hand/gnarling/gnarling.ron similarity index 100% rename from assets/common/items/npc_armor/hand/gnarling.ron rename to assets/common/items/npc_armor/hand/gnarling/gnarling.ron diff --git a/assets/common/items/npc_armor/hand/haniwa.ron b/assets/common/items/npc_armor/hand/haniwa/haniwa.ron similarity index 100% rename from assets/common/items/npc_armor/hand/haniwa.ron rename to assets/common/items/npc_armor/hand/haniwa/haniwa.ron diff --git a/assets/common/items/npc_armor/hand/kappa.ron b/assets/common/items/npc_armor/hand/kappa/kappa.ron similarity index 100% rename from assets/common/items/npc_armor/hand/kappa.ron rename to assets/common/items/npc_armor/hand/kappa/kappa.ron diff --git a/assets/common/items/npc_armor/hand/myrmidon.ron b/assets/common/items/npc_armor/hand/myrmidon/myrmidon.ron similarity index 100% rename from assets/common/items/npc_armor/hand/myrmidon.ron rename to assets/common/items/npc_armor/hand/myrmidon/myrmidon.ron diff --git a/assets/common/items/npc_armor/hand/sahagin.ron b/assets/common/items/npc_armor/hand/sahagin/sahagin.ron similarity index 100% rename from assets/common/items/npc_armor/hand/sahagin.ron rename to assets/common/items/npc_armor/hand/sahagin/sahagin.ron diff --git a/assets/common/items/npc_armor/pants/adlet.ron b/assets/common/items/npc_armor/pants/adlet.ron deleted file mode 100644 index b0c1066eed..0000000000 --- a/assets/common/items/npc_armor/pants/adlet.ron +++ /dev/null @@ -1,12 +0,0 @@ -ItemDef( - name: "Haniwa", - description: "Ceremonial attire used by members..", - kind: Armor(( - kind: Pants("Adlet"), - stats: ( - protection: Normal(2.0), - poise_resilience: Normal(1.0), - ), - )), - quality: Low, -) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/adlet/adlet_bow.ron b/assets/common/items/npc_armor/pants/adlet/adlet_bow.ron new file mode 100644 index 0000000000..909e590700 --- /dev/null +++ b/assets/common/items/npc_armor/pants/adlet/adlet_bow.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("AdletBow"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/adlet/adlet_spear.ron b/assets/common/items/npc_armor/pants/adlet/adlet_spear.ron new file mode 100644 index 0000000000..84568b5788 --- /dev/null +++ b/assets/common/items/npc_armor/pants/adlet/adlet_spear.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("AdletSpear"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/gnarling.ron b/assets/common/items/npc_armor/pants/gnarling/gnarling.ron similarity index 100% rename from assets/common/items/npc_armor/pants/gnarling.ron rename to assets/common/items/npc_armor/pants/gnarling/gnarling.ron diff --git a/assets/common/items/npc_armor/pants/haniwa.ron b/assets/common/items/npc_armor/pants/haniwa/haniwa.ron similarity index 100% rename from assets/common/items/npc_armor/pants/haniwa.ron rename to assets/common/items/npc_armor/pants/haniwa/haniwa.ron diff --git a/assets/common/items/npc_armor/pants/kappa.ron b/assets/common/items/npc_armor/pants/kappa/kappa.ron similarity index 100% rename from assets/common/items/npc_armor/pants/kappa.ron rename to assets/common/items/npc_armor/pants/kappa/kappa.ron diff --git a/assets/common/items/npc_armor/pants/myrmidon.ron b/assets/common/items/npc_armor/pants/myrmidon/myrmidon.ron similarity index 100% rename from assets/common/items/npc_armor/pants/myrmidon.ron rename to assets/common/items/npc_armor/pants/myrmidon/myrmidon.ron diff --git a/assets/common/items/npc_armor/pants/sahagin.ron b/assets/common/items/npc_armor/pants/sahagin/sahagin.ron similarity index 100% rename from assets/common/items/npc_armor/pants/sahagin.ron rename to assets/common/items/npc_armor/pants/sahagin/sahagin.ron diff --git a/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron b/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron index aa13561ac0..196b7038b4 100644 --- a/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron @@ -9,8 +9,11 @@ "Sahagin": ( vox_spec: ("npc.sahagin.male.chest", (-4.5, -8.0, -8.0)), ), - "Adlet": ( - vox_spec: ("npc.adlet.male.chest", (-5.0, -3.5, -2.0)), + "AdletSpear": ( + vox_spec: ("npc.adlet.male.spear.chest", (-5.0, -3.5, -2.0)), + ), + "AdletBow": ( + vox_spec: ("npc.adlet.male.bow.chest", (-5.0, -3.5, -2.0)), ), "Gnarling": ( vox_spec: ("npc.gnarling.male.chest", (-4.5, -3.5, -2.5)), diff --git a/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron b/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron index 9cd86cae28..68b7f72157 100644 --- a/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron @@ -24,12 +24,20 @@ vox_spec: ("npc.sahagin.male.hand_r", (0.0, -4.0, -13.0)), ) ), - "Adlet": ( + "AdletSpear": ( left: ( - vox_spec: ("npc.adlet.male.hand_r", (-4.0, -2.0, -7.0)), + vox_spec: ("npc.adlet.male.spear.hand_r", (-4.0, -2.0, -7.0)), ), right: ( - vox_spec: ("npc.adlet.male.hand_r", (0.0, -2.0, -7.0)), + vox_spec: ("npc.adlet.male.spear.hand_r", (0.0, -2.0, -7.0)), + ) + ), + "AdletBow": ( + left: ( + vox_spec: ("npc.adlet.male.bow.hand_r", (-4.0, -2.0, -7.0)), + ), + right: ( + vox_spec: ("npc.adlet.male.bow.hand_r", (0.0, -2.0, -7.0)), ) ), "Gnarling": ( diff --git a/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron index ea643d8405..bf0419402f 100644 --- a/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron @@ -9,8 +9,11 @@ "Sahagin": ( vox_spec: ("npc.sahagin.male.pants", (-2.5, -3.5, -2.0)), ), - "Adlet": ( - vox_spec: ("npc.adlet.male.pants", (-5.0, -4.5, -3.0)), + "AdletSpear": ( + vox_spec: ("npc.adlet.male.spear.pants", (-5.0, -4.5, -3.0)), + ), + "AdletBow": ( + vox_spec: ("npc.adlet.male.bow.pants", (-5.0, -4.5, -3.0)), ), "Gnarling": ( vox_spec: ("npc.gnarling.male.pants", (-3.5, -3.0, -2.5)), @@ -31,7 +34,7 @@ vox_spec: ("npc.haniwa.male.pants", (-4.5, -4.5, -1.5)), ), "Myrmidon": ( - vox_spec: ("npc.myrmidon.male.pants", (-4.5, -4.5, -1.5)), + vox_spec: ("npc.myrmidon.male.pants", (-2.5, -4.5, -1.5)), ), }, )) diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/bow_movelater.vox b/assets/voxygen/voxel/npc/adlet/male/bow/bow_movelater.vox new file mode 100644 index 0000000000..208e52cf49 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/bow_movelater.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef2809ad85372e7662cb5bf787d6054e49b6b749eaf5c2157e12a15649dc3242 +size 1344 diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/chest.vox b/assets/voxygen/voxel/npc/adlet/male/bow/chest.vox new file mode 100644 index 0000000000..27c9b3135d --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a4bfa627e7e6029ffe07381dc6cf1e988a48ce1ab2d8573e621600582ce4575 +size 1696 diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/hand_r.vox b/assets/voxygen/voxel/npc/adlet/male/bow/hand_r.vox new file mode 100644 index 0000000000..4061bb6228 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:078af24a2889ed8b7aab36687bae8149eaf71bbbaaec2154cf3a19ddb0030f7f +size 1420 diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/head.vox b/assets/voxygen/voxel/npc/adlet/male/bow/head.vox new file mode 100644 index 0000000000..d4e4579cf3 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38ab461be8fc63fd4dd334bf9a8b4613a779e9d4f910594c2a12b56ef0410578 +size 3384 diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/pants.vox b/assets/voxygen/voxel/npc/adlet/male/bow/pants.vox new file mode 100644 index 0000000000..f432762f32 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaf54b7e40ab08b25f57dd934917d958e815f09fd02c5f627a212e705dece20e +size 1888 diff --git a/assets/voxygen/voxel/npc/adlet/male/chest.vox b/assets/voxygen/voxel/npc/adlet/male/spear/chest.vox similarity index 100% rename from assets/voxygen/voxel/npc/adlet/male/chest.vox rename to assets/voxygen/voxel/npc/adlet/male/spear/chest.vox diff --git a/assets/voxygen/voxel/npc/adlet/male/hand_r.vox b/assets/voxygen/voxel/npc/adlet/male/spear/hand_r.vox similarity index 100% rename from assets/voxygen/voxel/npc/adlet/male/hand_r.vox rename to assets/voxygen/voxel/npc/adlet/male/spear/hand_r.vox diff --git a/assets/voxygen/voxel/npc/adlet/male/spear/head.vox b/assets/voxygen/voxel/npc/adlet/male/spear/head.vox new file mode 100644 index 0000000000..26a71c9cec --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/spear/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a936f5a25ab1b9dcc72f7824b00b743ae7866822cfc4764238bfa9419a5d9a0f +size 3336 diff --git a/assets/voxygen/voxel/npc/adlet/male/pants.vox b/assets/voxygen/voxel/npc/adlet/male/spear/pants.vox similarity index 100% rename from assets/voxygen/voxel/npc/adlet/male/pants.vox rename to assets/voxygen/voxel/npc/adlet/male/spear/pants.vox diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 4d853ca1ff..1bc0e59ea7 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -290,16 +290,31 @@ impl LoadoutBuilder { Some(ToolKind::Bow) => LoadoutBuilder::new() .active_item(active_item) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.adlet", + "common.items.npc_armor.hand.adlet.adlet_bow", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.adlet", + "common.items.npc_armor.foot.adlet.adlet", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.adlet", + "common.items.npc_armor.chest.adlet.adlet_bow", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.adlet", + "common.items.npc_armor.pants.adlet.adlet_bow", + ))) + .build(), + Some(ToolKind::Spear) | Some(ToolKind::Staff) => LoadoutBuilder::new() + .active_item(active_item) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.hand.adlet.adlet_spear", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.foot.adlet.adlet", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.chest.adlet.adlet_spear", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.pants.adlet.adlet_spear", ))) .build(), _ => LoadoutBuilder::new().active_item(active_item).build(), @@ -308,16 +323,46 @@ impl LoadoutBuilder { Some(ToolKind::Bow) => LoadoutBuilder::new() .active_item(active_item) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.gnarling", + "common.items.npc_armor.foot.gnarling.gnarling", ))) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.gnarling", + "common.items.npc_armor.hand.gnarling.gnarling", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.gnarling", + "common.items.npc_armor.chest.gnarling.gnarling", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.gnarling", + "common.items.npc_armor.pants.gnarling.gnarling", + ))) + .build(), + Some(ToolKind::Staff) => LoadoutBuilder::new() + .active_item(active_item) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.foot.gnarling.gnarling", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.hand.gnarling.gnarling", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.chest.gnarling.gnarling", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.pants.gnarling.gnarling", + ))) + .build(), + Some(ToolKind::Spear) => LoadoutBuilder::new() + .active_item(active_item) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.foot.gnarling.gnarling", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.hand.gnarling.gnarling", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.chest.gnarling.gnarling", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.pants.gnarling.gnarling", ))) .build(), _ => LoadoutBuilder::new().active_item(active_item).build(), @@ -325,46 +370,46 @@ impl LoadoutBuilder { Sahagin => LoadoutBuilder::new() .active_item(active_item) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.sahagin", + "common.items.npc_armor.hand.sahagin.sahagin", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.sahagin", + "common.items.npc_armor.foot.sahagin.sahagin", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.sahagin", + "common.items.npc_armor.chest.sahagin.sahagin", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.sahagin", + "common.items.npc_armor.pants.sahagin.sahagin", ))) .build(), Haniwa => LoadoutBuilder::new() .active_item(active_item) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.haniwa", + "common.items.npc_armor.hand.haniwa.haniwa", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.haniwa", + "common.items.npc_armor.foot.haniwa.haniwa", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.haniwa", + "common.items.npc_armor.chest.haniwa.haniwa", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.haniwa", + "common.items.npc_armor.pants.haniwa.haniwa", ))) .build(), Myrmidon => LoadoutBuilder::new() .active_item(active_item) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.myrmidon", + "common.items.npc_armor.hand.myrmidon.myrmidon", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.myrmidon", + "common.items.npc_armor.foot.myrmidon.myrmidon", ))) - .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.myrmidon", + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.chest.myrmidon.myrmidon", ))) - .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.myrmidon", + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.pants.myrmidon.myrmidon", ))) .build(), Guard => LoadoutBuilder::new() diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 5c65194742..32f5d3027d 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -59,13 +59,13 @@ impl Body { quadruped_medium::Species::Antelope => 185.0, quadruped_medium::Species::Kelpie => 180.0, quadruped_medium::Species::Horse => 180.0, - quadruped_medium::Species::Barghest => 180.0, - quadruped_medium::Species::Cattle => 180.0, - quadruped_medium::Species::Darkhound => 180.0, - quadruped_medium::Species::Highland => 180.0, - quadruped_medium::Species::Yak => 180.0, - quadruped_medium::Species::Panda => 180.0, - quadruped_medium::Species::Bear => 180.0, + quadruped_medium::Species::Barghest => 80.0, + quadruped_medium::Species::Cattle => 80.0, + quadruped_medium::Species::Darkhound => 160.0, + quadruped_medium::Species::Highland => 80.0, + quadruped_medium::Species::Yak => 90.0, + quadruped_medium::Species::Panda => 90.0, + quadruped_medium::Species::Bear => 90.0, }, Body::BipedSmall(_) => 80.0, Body::BirdMedium(_) => 80.0, diff --git a/voxygen/anim/src/biped_large/idle.rs b/voxygen/anim/src/biped_large/idle.rs index 459f0628db..ab3566a13b 100644 --- a/voxygen/anim/src/biped_large/idle.rs +++ b/voxygen/anim/src/biped_large/idle.rs @@ -25,10 +25,10 @@ impl Animation for IdleAnimation { let mut next = (*skeleton).clone(); let lab = 1.0; - let torso = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); + let torso = (anim_time as f32 * lab as f32 + 1.5 * PI).sin() * 1.5; - let slower = (anim_time as f32 * 1.0 + PI).sin(); - let slow = (anim_time as f32 * 3.5 + PI).sin(); + let slower = (anim_time as f32 * 2.0 + PI).sin() * 1.5; + let slow = (anim_time as f32 * 7.0 + PI).sin() * 1.5; let look = Vec2::new( ((global_time + anim_time) as f32 / 8.0) @@ -119,13 +119,13 @@ impl Animation for IdleAnimation { next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_r.orientation = Quaternion::rotation_x(breathe); - next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * 0.6); + next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * -0.1); - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * 0.6); + next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * -0.1); - next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + torso * 0.2); + next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + torso * -0.2); - next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + torso * 0.2); + next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + torso * -0.2); next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2); diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index c1341c3d38..8fc9aeb4db 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -241,7 +241,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Troll, _) => (1.0, -10.5), (Dullahan, _) => (0.0, -6.5), (Werewolf, _) => (1.0, -10.0), - (Occultsaurok, _) => (0.0, -6.0), + (Occultsaurok, _) => (0.0, -5.0), (Mightysaurok, _) => (0.0, -5.0), (Slysaurok, _) => (0.0, -6.0), (Mindflayer, _) => (3.5, -19.5), diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs index 23e68e4276..73aa1b44bc 100644 --- a/voxygen/anim/src/biped_small/alpha.rs +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -64,14 +64,16 @@ impl Animation for AlphaAnimation { let movement2abs = movement2base * pullback; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_x(movement1abs * -0.1 + movement2abs * 0.5) + next.head.orientation = Quaternion::rotation_x(movement1abs * 0.2 + movement2abs * 0.3) * Quaternion::rotation_z(movement1abs * -0.2 + movement2abs * 0.6) * Quaternion::rotation_y(movement1abs * 0.3 + movement2abs * -0.5); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) / 13.0; - next.chest.orientation = Quaternion::rotation_z(movement1abs * 0.5 + movement2abs * -0.6); + next.chest.orientation = Quaternion::rotation_x(movement1abs * -0.2 + movement2abs * 0.3) + * Quaternion::rotation_z(movement1abs * 0.5 + movement2abs * -0.6); next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); - next.pants.orientation = Quaternion::rotation_z(movement1abs * -0.2 + movement2abs * 0.2); + next.pants.orientation = Quaternion::rotation_x(movement1abs * 0.2 + movement2abs * -0.3) + * Quaternion::rotation_z(movement1abs * -0.2 + movement2abs * 0.2); next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); @@ -88,20 +90,20 @@ impl Animation for AlphaAnimation { next.control.position = Vec3::new( -3.0 + movement1abs * -3.0 + movement2abs * 5.0, s_a.grip.2 + movement1abs * -12.0 + movement2abs * 17.0, - -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + movement2abs * 10.0, + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + movement2abs * 5.0, ); next.control_l.orientation = - Quaternion::rotation_x(PI / 1.5 + movement1abs * -1.0 + movement2abs * 3.0) + Quaternion::rotation_x(PI / 1.5 + movement1abs * -1.5 + movement2abs * 2.5) * Quaternion::rotation_y(-0.3); next.control_r.orientation = Quaternion::rotation_x( - PI / 1.5 + s_a.grip.0 * 0.2 + movement1abs * -1.0 + movement2abs * 3.0, + PI / 1.5 + s_a.grip.0 * 0.2 + movement1abs * -1.5 + movement2abs * 2.5, ) * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); next.control.orientation = - Quaternion::rotation_x(-1.35 + movement1abs * -0.3 + movement2abs * 1.0) - * Quaternion::rotation_z(movement1abs * 1.0 + movement2abs * -1.8) - * Quaternion::rotation_y(movement2abs * 0.5); + Quaternion::rotation_x(-1.35 + movement1abs * -0.3 + movement2abs * 0.5) + * Quaternion::rotation_z(movement1abs * 1.0 + movement2abs * -1.0) + * Quaternion::rotation_y(movement2abs * 0.0); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs index 94ab39f3b6..6f04bb3f3e 100644 --- a/voxygen/anim/src/biped_small/shoot.rs +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -84,26 +84,26 @@ impl Animation for ShootAnimation { match active_tool_kind { Some(ToolKind::Bow) => { - let (movement1base, movement2base, movement3) = match stage_section { + let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), _ => (0.0, 0.0, 0.0), }; - let pullback = 1.0 - movement3; - let movement1abs = movement1base * pullback; - let movement2abs = movement2base * pullback; + let pullback = 1.0 - move3; + let move1abs = move1base * pullback; + let move2abs = move2base * pullback; next.control_l.position = Vec3::new( - 1.0 - s_a.grip.0 * 2.0 + movement2abs * -4.0, - movement2abs * -8.0, + 1.0 - s_a.grip.0 * 2.0 + move2abs * -4.0, + move2abs * -8.0, 0.0, ); next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 6.0, -2.0); next.control.position = Vec3::new( -1.0, - 2.0 + movement1abs * 4.0 + s_a.grip.2, - 3.0 + movement1abs * 8.0 - s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0, + 2.0 + move1abs * 3.0 + s_a.grip.2, + 3.0 + move1abs * 7.0 - s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0, ); next.control_l.orientation = @@ -111,9 +111,44 @@ impl Animation for ShootAnimation { next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + s_a.grip.0 * 0.2) * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); - next.control.orientation = Quaternion::rotation_x(-0.3 + movement1abs * 0.7) + next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * 0.4) * Quaternion::rotation_y(0.5 * speednorm); }, + Some(ToolKind::Staff) => { + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move3; + let move1abs = move1base * pullback; + let move2abs = move2base * pullback; + next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0); + next.control_r.position = Vec3::new( + 7.0 + s_a.grip.0 * 2.0 + move1abs * -8.0, + -4.0 + move1abs * 4.0, + 3.0, + ); + + next.control.position = Vec3::new( + -5.0, + -1.0 + s_a.grip.2, + -2.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move1abs * 5.0, + ); + + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1abs * 0.8) + * Quaternion::rotation_y(-0.3) + * Quaternion::rotation_z(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.0 + s_a.grip.0 * 0.2 + move1abs * 0.8) + * Quaternion::rotation_y(-0.4 + s_a.grip.0 * 0.2 + move1abs * 0.8) + * Quaternion::rotation_z(-0.0); + + next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * -0.6) + * Quaternion::rotation_y(-0.2 * speednorm) + * Quaternion::rotation_z(0.5 + move1abs * 0.6); + }, _ => {}, } diff --git a/voxygen/anim/src/quadruped_low/mod.rs b/voxygen/anim/src/quadruped_low/mod.rs index 9e3bd5e17e..c353af153b 100644 --- a/voxygen/anim/src/quadruped_low/mod.rs +++ b/voxygen/anim/src/quadruped_low/mod.rs @@ -265,7 +265,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { tempo: match (body.species, body.body_type) { (Crocodile, _) => (0.7), (Alligator, _) => (0.7), - (Salamander, _) => (0.75), + (Salamander, _) => (0.85), (Monitor, _) => (1.4), (Tortoise, _) => (0.7), (Rocksnapper, _) => (0.7), diff --git a/voxygen/anim/src/quadruped_low/run.rs b/voxygen/anim/src/quadruped_low/run.rs index ab6c18e040..2942df30f7 100644 --- a/voxygen/anim/src/quadruped_low/run.rs +++ b/voxygen/anim/src/quadruped_low/run.rs @@ -26,7 +26,7 @@ impl Animation for RunAnimation { let speednorm = (speed / 15.0).powf(0.25); - let lab = 0.7 * s_a.tempo; + let lab = 0.8 * s_a.tempo; let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()).max(-0.7) * speednorm; let short = (((1.0) / (0.72 + 0.28 * ((acc_vel * lab as f32 + PI * 0.25).sin()).powi(2))) diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index 4234d19977..e1e3622b73 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -493,7 +493,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Grolgar, _) => (-0.3), (Saber, _) => (-0.2), (Tuskram, _) => (0.3), - (Lion, _) => (0.2), + (Lion, _) => (-0.1), (Tarasque, _) => (-0.5), (Catoblepas, _) => (-0.5), (Bonerattler, _) => (-0.7), diff --git a/voxygen/anim/src/quadruped_medium/run.rs b/voxygen/anim/src/quadruped_medium/run.rs index cf4179e842..5bf4d59a5d 100644 --- a/voxygen/anim/src/quadruped_medium/run.rs +++ b/voxygen/anim/src/quadruped_medium/run.rs @@ -26,11 +26,13 @@ impl Animation for RunAnimation { *rate = 1.0; //let increasefreqtest = (((1.0/speed)*3.0).round()).min(5.0); let lab = 0.72; //0.72 - let amplitude = (speed / 24.0).max(0.125); - let amplitude2 = (speed * 1.4 / 24.0).sqrt().max(0.3); - let amplitude3 = (speed / 24.0).sqrt().max(0.175); + let amplitude = (speed / 24.0).powf(0.4); + let amplitude2 = (speed / 24.0).powf(0.4); + let amplitude3 = (speed / 24.0).powf(0.4); let speedmult = s_a.tempo; - let canceler = (speed / 24.0).sqrt(); + let canceler = (speed / 24.0).powf(0.4); + //println!("{} test", canceler); + let short = (((1.0) / (0.72 + 0.28 @@ -106,24 +108,24 @@ impl Animation for RunAnimation { next.ears.scale = Vec3::one() * 1.02; //Gallop - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + shortalt * -0.5); next.head.orientation = Quaternion::rotation_x( - look.y * 0.3 / ((canceler).max(0.5)) + amplitude * short * -0.03 - 0.1, + look.y * 0.3 / ((canceler).max(0.5)) + amplitude * short * 0.05 - 0.1, ) * Quaternion::rotation_z( look.x * 0.3 / ((canceler).max(0.5)) + tilt * -1.2, ) * Quaternion::rotation_y(tilt * 0.8); - next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1); + next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1 + shortalt * -0.8); next.neck.orientation = Quaternion::rotation_z(tilt * -0.8) - * Quaternion::rotation_x(amplitude * short * -0.05) + * Quaternion::rotation_x(amplitude * short * 0.05) * Quaternion::rotation_y(tilt * 0.3); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); next.jaw.orientation = Quaternion::rotation_x(0.0); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = - Quaternion::rotation_x(amplitude * shortalt * 0.3) * Quaternion::rotation_z(tilt * 1.5); + next.tail.orientation = Quaternion::rotation_x(amplitude * shortalt * -0.3) + * Quaternion::rotation_z(tilt * 1.5); next.torso_front.position = Vec3::new( 0.0, @@ -145,7 +147,7 @@ impl Animation for RunAnimation { s_a.torso_back.0, s_a.torso_back.1 + amplitude * shortalt * 0.2 - 0.2, ); - next.torso_back.orientation = Quaternion::rotation_x(amplitude * short * -0.1) + next.torso_back.orientation = Quaternion::rotation_x(amplitude * short * -0.07) * Quaternion::rotation_z(tilt * 1.8) * Quaternion::rotation_y(tilt * 0.6); diff --git a/voxygen/anim/src/quadruped_small/mod.rs b/voxygen/anim/src/quadruped_small/mod.rs index eb4bd967dc..2c5637bf2f 100644 --- a/voxygen/anim/src/quadruped_small/mod.rs +++ b/voxygen/anim/src/quadruped_small/mod.rs @@ -68,6 +68,7 @@ pub struct SkeletonAttr { minimize: f32, spring: f32, feed: f32, + lateral: f32, } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { type Error = (); @@ -94,6 +95,7 @@ impl Default for SkeletonAttr { minimize: 0.0, spring: 0.0, feed: 0.0, + lateral: 0.0, } } } @@ -239,7 +241,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Axolotl, _) => (-4.0, -1.0), (Gecko, _) => (-4.0, 0.0), (Turtle, _) => (-6.0, -2.0), - (Squirrel, _) => (-5.0, 0.0), + (Squirrel, _) => (-4.0, 0.0), (Fungome, _) => (-4.0, -2.0), (Porcupine, _) => (-6.0, 1.0), (Beaver, _) => (-6.5, -1.0), @@ -263,7 +265,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Axolotl, _) => (0.65), (Gecko, _) => (0.7), (Turtle, _) => (0.9), - (Squirrel, _) => (0.7), + (Squirrel, _) => (0.6), (Fungome, _) => (0.9), (Porcupine, _) => (0.8), (Hare, _) => (0.8), @@ -360,6 +362,13 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hare, _) => (1.2), _ => (1.0), }, + lateral: match (body.species, body.body_type) { + (Axolotl, _) => (1.0), + (Gecko, _) => (1.0), + (Turtle, _) => (1.0), + (Fungome, _) => (1.0), + _ => (0.0), + }, } } } diff --git a/voxygen/anim/src/quadruped_small/run.rs b/voxygen/anim/src/quadruped_small/run.rs index 7662f62d9d..e76a81e557 100644 --- a/voxygen/anim/src/quadruped_small/run.rs +++ b/voxygen/anim/src/quadruped_small/run.rs @@ -51,16 +51,16 @@ impl Animation for RunAnimation { 0.0 } * 1.3; let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()) * speednorm; - + let vertcancel = 1.0 - s_a.lateral; next.leg_fl.scale = Vec3::one() * 1.02; next.leg_fr.scale = Vec3::one() * 1.02; next.leg_bl.scale = Vec3::one() * 1.02; next.leg_br.scale = Vec3::one() * 1.02; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_x(x_tilt * -0.5 + short * -0.2) + next.head.orientation = Quaternion::rotation_x(x_tilt * -0.5 + vertcancel * short * -0.2) * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(tilt * -1.2); + * Quaternion::rotation_z(s_a.lateral * -short * 0.2 + tilt * -1.2); next.chest.position = Vec3::new( 0.0, @@ -68,9 +68,10 @@ impl Animation for RunAnimation { s_a.chest.1 + 2.0 * speednorm * s_a.spring + shortalt * 3.0 * s_a.spring, ) / 11.0 * s_a.scaler; - next.chest.orientation = Quaternion::rotation_x(short * 0.2 * s_a.spring + x_tilt) - * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(tilt * -1.5); + next.chest.orientation = + Quaternion::rotation_x(vertcancel * short * 0.2 * s_a.spring + x_tilt) + * Quaternion::rotation_y(tilt * 0.8) + * Quaternion::rotation_z(s_a.lateral * short * 0.2 + tilt * -1.5); next.chest.scale = Vec3::one() / 11.0 * s_a.scaler; next.leg_fl.position = Vec3::new( @@ -114,9 +115,9 @@ impl Animation for RunAnimation { * Quaternion::rotation_z(tilt * -1.5); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = Quaternion::rotation_x(short * 0.2 + x_tilt) + next.tail.orientation = Quaternion::rotation_x(vertcancel * short * 0.2 + x_tilt) * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(tilt * 1.5); + * Quaternion::rotation_z(s_a.lateral * -short * 0.2 + tilt * 1.5); next } } diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 91093ba1be..1ca900113f 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -670,7 +670,7 @@ impl ParticleMgr { self.particles.push(Particle::new_directed( Duration::from_secs(2), time, - ParticleMode::FlameThrower, + ParticleMode::GroundShockwave, position_snapped, Vec3::new(0.0, 0.0, 10.0) + position_snapped, )); From df70976ff5666fcbc7e4523fd70c1cf78db1f1d5 Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 13 Feb 2021 01:05:14 -0500 Subject: [PATCH 19/36] Fixed particles. --- .../common/abilities/staff/flamethrower.ron | 4 +-- assets/voxygen/shaders/particle-vert.glsl | 34 ++++++++++++------- voxygen/src/render/pipelines/particle.rs | 1 + voxygen/src/scene/particle.rs | 33 ++++++++---------- 4 files changed, 39 insertions(+), 33 deletions(-) diff --git a/assets/common/abilities/staff/flamethrower.ron b/assets/common/abilities/staff/flamethrower.ron index 9c94bc65c7..7bb592a9fb 100644 --- a/assets/common/abilities/staff/flamethrower.ron +++ b/assets/common/abilities/staff/flamethrower.ron @@ -1,11 +1,11 @@ BasicBeam( buildup_duration: 0.25, recover_duration: 0.25, - beam_duration: 0.5, + beam_duration: 1.0, base_hps: 0, base_dps: 150, tick_rate: 3.0, - range: 15.0, + range: 20.0, max_angle: 10.0, lifesteal_eff: 0.0, energy_regen: 0, diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index 70389f8599..3bef025d4d 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -57,6 +57,7 @@ const int FLAMETHROWER = 15; const int FIRE_SHOCKWAVE = 16; const int FIRE_BOWL = 17; const int SNOW = 18; +const int EXPLOSION = 19; // meters per second squared (acceleration) const float earth_gravity = 9.807; @@ -132,14 +133,14 @@ vec3 perp_axis2(vec3 axis1, vec3 axis2) { return normalize(vec3(axis1.y * axis2.z - axis1.z * axis2.y, axis1.z * axis2.x - axis1.x * axis2.z, axis1.x * axis2.y - axis1.y * axis2.x)); } -vec3 spiral_motion(vec3 line, float radius, float time_function) { +vec3 spiral_motion(vec3 line, float radius, float time_function, float frequency, float offset) { vec3 axis2 = perp_axis1(line); vec3 axis3 = perp_axis2(line, axis2); - return vec3( - radius * cos(time_function) * axis2.x + radius * sin(time_function) * axis3.x, - radius * cos(time_function) * axis2.y + radius * sin(time_function) * axis3.y, - radius * cos(time_function) * axis2.z + radius * sin(time_function) * axis3.z); + return line * time_function + vec3( + radius * cos(frequency * time_function - offset) * axis2.x + radius * sin(frequency * time_function - offset) * axis3.x, + radius * cos(frequency * time_function - offset) * axis2.y + radius * sin(frequency * time_function - offset) * axis3.y, + radius * cos(frequency * time_function - offset) * axis2.z + radius * sin(frequency * time_function - offset) * axis3.z); } void main() { @@ -321,16 +322,16 @@ void main() { } else if (inst_mode == HEALING_BEAM) { f_reflect = 0.0; attr = Attr( - spiral_motion(inst_dir, 0.3 * (floor(2 * rand0 + 0.5) - 0.5) * min(linear_scale(10), 1), lifetime / inst_lifespan), + spiral_motion(inst_dir, 0.3 * (floor(2 * rand0 + 0.5) - 0.5) * min(linear_scale(10), 1), lifetime / inst_lifespan, 10.0, inst_time), vec3((1.7 - 0.7 * abs(floor(2 * rand0 - 0.5) + 0.5)) * (1.5 + 0.5 * sin(tick.x * 10 - lifetime * 4))), - vec4(vec3(0.4, 2.7 + 0.4 * sin(tick.x * 8 - lifetime * 3 + 4), 0.5 + 0.6 * sin(tick.x * 7)), start_end(1.0, 0.0) /*0.3*/), + vec4(vec3(0.4, 1.6 + 0.3 * sin(tick.x * 10 - lifetime * 3 + 4), 1.0 + 0.15 * sin(tick.x * 5 - lifetime * 5)), start_end(1.0, 0.0) /*0.3*/), spin_in_axis(inst_dir, tick.z) ); } else if (inst_mode == ENERGY_NATURE) { f_reflect = 0.0; attr = Attr( inst_dir * slow_end(0.03) + spiral_motion(vec3(rand1, rand2, rand3), - 0.2 * (rand4 + 1.3) * slow_end(0.02), percent() * 3 * (rand4 + 4.0) + rand0), + 0.2 * (rand4 + 1.3) * slow_end(0.02), percent() * 3 * (rand4 + 4.0) + rand0, 1.0, 0.0), vec3(1.0), vec4(vec3(0, 2.5, 1.5 + rand7 * 0.7), start_end(1.0, 0.0)), spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3) @@ -338,8 +339,15 @@ void main() { } else if (inst_mode == FLAMETHROWER) { f_reflect = 0.0; // Fire doesn't reflect light, it emits it attr = Attr( - inst_dir * ((rand0+1.0)/2 + 0.5) * slow_end(0.2) + /*0.4 * vec3(rand0, - rand1, rand2) * slow_end(0.1)*/ + 0.1 * grav_vel(earth_gravity), + (inst_dir * slow_end(1.5)) + vec3(rand0, rand1, rand2) * (lifetime * 5 + 0.25), + vec3((2.5 * (1 - slow_start(0.3)))), + vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, start_end(1.0, 0.0)), + spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) + ); + } else if (inst_mode == EXPLOSION) { + f_reflect = 0.0; // Fire doesn't reflect light, it emits it + attr = Attr( + inst_dir * ((rand0+1.0)/2 + 0.5) * slow_end(0.2) + 0.1 * grav_vel(earth_gravity), vec3((3 * (1 - slow_start(0.1)))), vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, start_end(1.0, 0.0)), spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) @@ -347,9 +355,9 @@ void main() { } else if (inst_mode == FIRE_SHOCKWAVE) { f_reflect = 0.0; // Fire doesn't reflect light, it emits it attr = Attr( - vec3(rand0, rand1, lifetime * 1 + rand2), - vec3(1.6 + rand3 * 1.5 + 10 * (lifetime + inst_lifespan)), - vec4(3, 1.6 + rand7 * 0.3 - 5 * inst_lifespan + 2 * lifetime, 0.2, start_end(1.0, 0.0) /*0.8 - 3.5 * inst_lifespan*/), + vec3(rand0, rand1, lifetime * 10 + rand2), + vec3((5 * (1 - slow_start(0.5)))), + vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, start_end(1.0, 0.0)), spin_in_axis(vec3(rand3, rand4, rand5), rand6) ); } else { diff --git a/voxygen/src/render/pipelines/particle.rs b/voxygen/src/render/pipelines/particle.rs index 09e1218db1..c5db9acfda 100644 --- a/voxygen/src/render/pipelines/particle.rs +++ b/voxygen/src/render/pipelines/particle.rs @@ -115,6 +115,7 @@ pub enum ParticleMode { FireShockwave = 16, FireBowl = 17, Snow = 18, + Explosion = 19, } impl ParticleMode { diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 1ca900113f..7389fa66f4 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -64,10 +64,10 @@ impl ParticleMgr { if *is_attack { if *power < 0.0 { self.particles.resize_with( - self.particles.len() + (200.0 * power.abs()) as usize, + self.particles.len() + (60.0 * power.abs()) as usize, || { Particle::new_directed( - Duration::from_secs_f32(rng.gen_range(1.0..8.0)), + Duration::from_secs_f32(rng.gen_range(0.2..3.0)), time, ParticleMode::EnergyNature, *pos, @@ -80,12 +80,12 @@ impl ParticleMgr { ); } else { self.particles.resize_with( - self.particles.len() + (200.0 * power.abs()) as usize, + self.particles.len() + (75.0 * power.abs()) as usize, || { Particle::new_directed( - Duration::from_secs(2), + Duration::from_millis(500), time, - ParticleMode::FlameThrower, + ParticleMode::Explosion, *pos, *pos + Vec3::::zero() .map(|_| rng.gen_range(-1.0..1.0)) @@ -642,7 +642,7 @@ impl ParticleMgr { let theta = ori_vec.y.atan2(ori_vec.x); let dtheta = radians / distance; - let heartbeats = self.scheduler.heartbeats(Duration::from_millis(1)); + let heartbeats = self.scheduler.heartbeats(Duration::from_millis(5)); for heartbeat in 0..heartbeats { if shockwave.properties.requires_ground { @@ -667,28 +667,25 @@ impl ParticleMgr { let position_snapped = ((position / scale).floor() + 0.5) * scale; - self.particles.push(Particle::new_directed( - Duration::from_secs(2), + self.particles.push(Particle::new( + Duration::from_millis(250), time, ParticleMode::GroundShockwave, position_snapped, - Vec3::new(0.0, 0.0, 10.0) + position_snapped, )); } } else { - for d in 0..8 * distance as i32 { + for d in 0..3 * distance as i32 { let arc_position = theta - radians / 2.0 + dtheta * d as f32 / 3.0; - let diff = - distance * Vec3::new(arc_position.cos(), arc_position.sin(), 0.0); - let position = pos.0 + diff; + let position = pos.0 + + distance * Vec3::new(arc_position.cos(), arc_position.sin(), 0.0); - self.particles.push(Particle::new_directed( - Duration::from_millis(500), + self.particles.push(Particle::new( + Duration::from_secs_f32((distance + 10.0) / 50.0), time, - ParticleMode::FlameThrower, - pos.0 + diff * 0.9, - Vec3::new(0.0, 0.0, 2.0) + position, + ParticleMode::FireShockwave, + position, )); } } From 57d5e90dddf4816c3d6f9cae677307999483f5a2 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 13 Feb 2021 01:06:43 -0500 Subject: [PATCH 20/36] full bipedsmall armor swaps --- .../adlet/chest}/adlet_bow.ron | 0 .../adlet/chest}/adlet_spear.ron | 0 .../adlet/foot}/adlet.ron | 0 .../adlet/hand}/adlet_bow.ron | 0 .../adlet/hand}/adlet_spear.ron | 0 .../biped_small/adlet/head/adlet_bow.ron | 12 + .../biped_small/adlet/head/adlet_spear.ron | 12 + .../adlet/pants}/adlet_bow.ron | 0 .../adlet/pants}/adlet_spear.ron | 0 .../biped_small/adlet/tail/adlet.ron | 12 + .../gnarling/chest}/gnarling.ron | 0 .../gnarling/foot}/gnarling.ron | 0 .../gnarling/hand}/gnarling.ron | 0 .../biped_small/gnarling/head/gnarling.ron | 12 + .../gnarling/pants}/gnarling.ron | 0 .../biped_small/gnarling/tail/gnarling.ron | 12 + .../haniwa/chest}/haniwa.ron | 0 .../haniwa/foot}/haniwa.ron | 0 .../haniwa/hand}/haniwa.ron | 0 .../biped_small/haniwa/head/haniwa.ron | 12 + .../haniwa/pants}/haniwa.ron | 0 .../kappa/chest}/kappa.ron | 0 .../kappa/foot}/kappa.ron | 0 .../kappa/hand}/kappa.ron | 0 .../biped_small/kappa/head/kappa.ron | 12 + .../kappa/pants}/kappa.ron | 0 .../biped_small/kappa/tail/kappa.ron | 12 + .../myrmidon/chest}/myrmidon.ron | 0 .../myrmidon/foot}/myrmidon.ron | 0 .../myrmidon/hand}/myrmidon.ron | 0 .../biped_small/myrmidon/head/myrmidon.ron | 12 + .../myrmidon/pants}/myrmidon.ron | 0 .../biped_small/myrmidon/tail/myrmidon.ron | 12 + .../sahagin/chest}/sahagin.ron | 0 .../sahagin/foot}/sahagin.ron | 0 .../sahagin/hand}/sahagin.ron | 0 .../biped_small/sahagin/head/sahagin.ron | 12 + .../sahagin/pants}/sahagin.ron | 0 .../biped_small/sahagin/tail/sahagin.ron | 12 + .../voxel/biped_small_armor_foot_manifest.ron | 4 +- .../voxel/biped_small_armor_hand_manifest.ron | 4 +- .../voxel/biped_small_armor_head_manifest.ron | 40 ++ .../biped_small_armor_pants_manifest.ron | 2 +- .../voxel/biped_small_armor_tail_manifest.ron | 25 ++ .../voxel/biped_small_central_manifest.ron | 362 ------------------ .../voxel/biped_small_lateral_manifest.ron | 202 ---------- assets/voxygen/voxel/npc/adlet/male/head.vox | 3 - common/src/comp/inventory/loadout_builder.rs | 112 ++++-- voxygen/anim/src/biped_large/alpha.rs | 72 ++-- voxygen/anim/src/biped_small/alpha.rs | 43 +-- voxygen/anim/src/character/alpha.rs | 118 +++--- voxygen/anim/src/character/beam.rs | 58 ++- voxygen/anim/src/character/beta.rs | 24 +- voxygen/anim/src/character/charge.rs | 164 -------- voxygen/anim/src/character/chargeswing.rs | 31 +- voxygen/anim/src/character/leapmelee.rs | 72 ++-- voxygen/anim/src/character/mod.rs | 17 +- voxygen/anim/src/character/repeater.rs | 57 ++- voxygen/anim/src/character/shockwave.rs | 46 +-- voxygen/anim/src/character/shoot.rs | 48 ++- voxygen/anim/src/character/spinmelee.rs | 82 ++-- voxygen/src/scene/figure/cache.rs | 12 + voxygen/src/scene/figure/load.rs | 103 ++--- voxygen/src/scene/figure/mod.rs | 10 - voxygen/src/scene/particle.rs | 2 +- world/src/site/dungeon/mod.rs | 22 +- 66 files changed, 669 insertions(+), 1210 deletions(-) rename assets/common/items/npc_armor/{chest/adlet => biped_small/adlet/chest}/adlet_bow.ron (100%) rename assets/common/items/npc_armor/{chest/adlet => biped_small/adlet/chest}/adlet_spear.ron (100%) rename assets/common/items/npc_armor/{foot/adlet => biped_small/adlet/foot}/adlet.ron (100%) rename assets/common/items/npc_armor/{hand/adlet => biped_small/adlet/hand}/adlet_bow.ron (100%) rename assets/common/items/npc_armor/{hand/adlet => biped_small/adlet/hand}/adlet_spear.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron create mode 100644 assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron rename assets/common/items/npc_armor/{pants/adlet => biped_small/adlet/pants}/adlet_bow.ron (100%) rename assets/common/items/npc_armor/{pants/adlet => biped_small/adlet/pants}/adlet_spear.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron rename assets/common/items/npc_armor/{chest/gnarling => biped_small/gnarling/chest}/gnarling.ron (100%) rename assets/common/items/npc_armor/{foot/gnarling => biped_small/gnarling/foot}/gnarling.ron (100%) rename assets/common/items/npc_armor/{hand/gnarling => biped_small/gnarling/hand}/gnarling.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron rename assets/common/items/npc_armor/{pants/gnarling => biped_small/gnarling/pants}/gnarling.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron rename assets/common/items/npc_armor/{chest/haniwa => biped_small/haniwa/chest}/haniwa.ron (100%) rename assets/common/items/npc_armor/{foot/haniwa => biped_small/haniwa/foot}/haniwa.ron (100%) rename assets/common/items/npc_armor/{hand/haniwa => biped_small/haniwa/hand}/haniwa.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron rename assets/common/items/npc_armor/{pants/haniwa => biped_small/haniwa/pants}/haniwa.ron (100%) rename assets/common/items/npc_armor/{chest/kappa => biped_small/kappa/chest}/kappa.ron (100%) rename assets/common/items/npc_armor/{foot/kappa => biped_small/kappa/foot}/kappa.ron (100%) rename assets/common/items/npc_armor/{hand/kappa => biped_small/kappa/hand}/kappa.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron rename assets/common/items/npc_armor/{pants/kappa => biped_small/kappa/pants}/kappa.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron rename assets/common/items/npc_armor/{chest/myrmidon => biped_small/myrmidon/chest}/myrmidon.ron (100%) rename assets/common/items/npc_armor/{foot/myrmidon => biped_small/myrmidon/foot}/myrmidon.ron (100%) rename assets/common/items/npc_armor/{hand/myrmidon => biped_small/myrmidon/hand}/myrmidon.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron rename assets/common/items/npc_armor/{pants/myrmidon => biped_small/myrmidon/pants}/myrmidon.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron rename assets/common/items/npc_armor/{chest/sahagin => biped_small/sahagin/chest}/sahagin.ron (100%) rename assets/common/items/npc_armor/{foot/sahagin => biped_small/sahagin/foot}/sahagin.ron (100%) rename assets/common/items/npc_armor/{hand/sahagin => biped_small/sahagin/hand}/sahagin.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron rename assets/common/items/npc_armor/{pants/sahagin => biped_small/sahagin/pants}/sahagin.ron (100%) create mode 100644 assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron create mode 100644 assets/voxygen/voxel/biped_small_armor_head_manifest.ron create mode 100644 assets/voxygen/voxel/biped_small_armor_tail_manifest.ron delete mode 100644 assets/voxygen/voxel/biped_small_central_manifest.ron delete mode 100644 assets/voxygen/voxel/biped_small_lateral_manifest.ron delete mode 100644 assets/voxygen/voxel/npc/adlet/male/head.vox delete mode 100644 voxygen/anim/src/character/charge.rs diff --git a/assets/common/items/npc_armor/chest/adlet/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron similarity index 100% rename from assets/common/items/npc_armor/chest/adlet/adlet_bow.ron rename to assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron diff --git a/assets/common/items/npc_armor/chest/adlet/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron similarity index 100% rename from assets/common/items/npc_armor/chest/adlet/adlet_spear.ron rename to assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron diff --git a/assets/common/items/npc_armor/foot/adlet/adlet.ron b/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron similarity index 100% rename from assets/common/items/npc_armor/foot/adlet/adlet.ron rename to assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron diff --git a/assets/common/items/npc_armor/hand/adlet/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron similarity index 100% rename from assets/common/items/npc_armor/hand/adlet/adlet_bow.ron rename to assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron diff --git a/assets/common/items/npc_armor/hand/adlet/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron similarity index 100% rename from assets/common/items/npc_armor/hand/adlet/adlet_spear.ron rename to assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron diff --git a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron new file mode 100644 index 0000000000..5b1a825fea --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("AdletBow"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron new file mode 100644 index 0000000000..1d17ceea49 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("AdletSpear"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/adlet/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron similarity index 100% rename from assets/common/items/npc_armor/pants/adlet/adlet_bow.ron rename to assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron diff --git a/assets/common/items/npc_armor/pants/adlet/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron similarity index 100% rename from assets/common/items/npc_armor/pants/adlet/adlet_spear.ron rename to assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron diff --git a/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron b/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron new file mode 100644 index 0000000000..d6578b34a1 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Belt("Adlet"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/gnarling/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/chest/gnarling.ron similarity index 100% rename from assets/common/items/npc_armor/chest/gnarling/gnarling.ron rename to assets/common/items/npc_armor/biped_small/gnarling/chest/gnarling.ron diff --git a/assets/common/items/npc_armor/foot/gnarling/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron similarity index 100% rename from assets/common/items/npc_armor/foot/gnarling/gnarling.ron rename to assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron diff --git a/assets/common/items/npc_armor/hand/gnarling/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron similarity index 100% rename from assets/common/items/npc_armor/hand/gnarling/gnarling.ron rename to assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron diff --git a/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron new file mode 100644 index 0000000000..0d6184e2b5 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Gnarling"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/gnarling/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron similarity index 100% rename from assets/common/items/npc_armor/pants/gnarling/gnarling.ron rename to assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron diff --git a/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron new file mode 100644 index 0000000000..93580fa7a0 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Belt("Gnarling"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/haniwa/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron similarity index 100% rename from assets/common/items/npc_armor/chest/haniwa/haniwa.ron rename to assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron diff --git a/assets/common/items/npc_armor/foot/haniwa/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron similarity index 100% rename from assets/common/items/npc_armor/foot/haniwa/haniwa.ron rename to assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron diff --git a/assets/common/items/npc_armor/hand/haniwa/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron similarity index 100% rename from assets/common/items/npc_armor/hand/haniwa/haniwa.ron rename to assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron diff --git a/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron new file mode 100644 index 0000000000..4f75adb4fa --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Haniwa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/haniwa/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron similarity index 100% rename from assets/common/items/npc_armor/pants/haniwa/haniwa.ron rename to assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron diff --git a/assets/common/items/npc_armor/chest/kappa/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/chest/kappa.ron similarity index 100% rename from assets/common/items/npc_armor/chest/kappa/kappa.ron rename to assets/common/items/npc_armor/biped_small/kappa/chest/kappa.ron diff --git a/assets/common/items/npc_armor/foot/kappa/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/foot/kappa.ron similarity index 100% rename from assets/common/items/npc_armor/foot/kappa/kappa.ron rename to assets/common/items/npc_armor/biped_small/kappa/foot/kappa.ron diff --git a/assets/common/items/npc_armor/hand/kappa/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/hand/kappa.ron similarity index 100% rename from assets/common/items/npc_armor/hand/kappa/kappa.ron rename to assets/common/items/npc_armor/biped_small/kappa/hand/kappa.ron diff --git a/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron new file mode 100644 index 0000000000..0ff22d8e1e --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/kappa/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/pants/kappa.ron similarity index 100% rename from assets/common/items/npc_armor/pants/kappa/kappa.ron rename to assets/common/items/npc_armor/biped_small/kappa/pants/kappa.ron diff --git a/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron new file mode 100644 index 0000000000..2a65ad930b --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Belt("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/myrmidon/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron similarity index 100% rename from assets/common/items/npc_armor/chest/myrmidon/myrmidon.ron rename to assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron diff --git a/assets/common/items/npc_armor/foot/myrmidon/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron similarity index 100% rename from assets/common/items/npc_armor/foot/myrmidon/myrmidon.ron rename to assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron diff --git a/assets/common/items/npc_armor/hand/myrmidon/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron similarity index 100% rename from assets/common/items/npc_armor/hand/myrmidon/myrmidon.ron rename to assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron new file mode 100644 index 0000000000..8da8407ec1 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Myrmidon"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/myrmidon/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron similarity index 100% rename from assets/common/items/npc_armor/pants/myrmidon/myrmidon.ron rename to assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron new file mode 100644 index 0000000000..7ab5ceddcf --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Belt("Myrmidon"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/chest/sahagin/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron similarity index 100% rename from assets/common/items/npc_armor/chest/sahagin/sahagin.ron rename to assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron diff --git a/assets/common/items/npc_armor/foot/sahagin/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron similarity index 100% rename from assets/common/items/npc_armor/foot/sahagin/sahagin.ron rename to assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron diff --git a/assets/common/items/npc_armor/hand/sahagin/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron similarity index 100% rename from assets/common/items/npc_armor/hand/sahagin/sahagin.ron rename to assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron diff --git a/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron new file mode 100644 index 0000000000..5d7f9ec81d --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Sahagin"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/pants/sahagin/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron similarity index 100% rename from assets/common/items/npc_armor/pants/sahagin/sahagin.ron rename to assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron diff --git a/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron new file mode 100644 index 0000000000..d724d593d8 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Belt("Sahagin"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron b/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron index fbea5cbe0c..8f16ca7700 100644 --- a/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron @@ -1,10 +1,10 @@ (( default: ( left: ( - vox_spec: ("armor.foot.foot_right_none", (-1.5, -2.0, -4.0)), + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), ), right: ( - vox_spec: ("armor.foot.foot_right_none", (-1.5, -2.0, -4.0)), + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), ) ), map: { diff --git a/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron b/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron index 68b7f72157..30d10a0f42 100644 --- a/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron @@ -1,10 +1,10 @@ (( default: ( left: ( - vox_spec: ("armor.hand.hand_reft_none", (-3.0, -2.0, -5.0)), + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), ), right: ( - vox_spec: ("armor.hand.hand_right_none", (-3.0, -2.0, -5.0)), + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), ) ), map: { diff --git a/assets/voxygen/voxel/biped_small_armor_head_manifest.ron b/assets/voxygen/voxel/biped_small_armor_head_manifest.ron new file mode 100644 index 0000000000..08b8b55326 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_head_manifest.ron @@ -0,0 +1,40 @@ +(( + default: ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + ), + map: { + "Gnome": ( + vox_spec: ("npc.gnome.male.head", (-8.0, -6.5, -12.0)), + ), + "Sahagin": ( + vox_spec: ("npc.sahagin.male.head", (-2.5, 0.0, -4.5)), + ), + "AdletSpear": ( + vox_spec: ("npc.adlet.male.spear.head", (-7.0, -4.5, -6.0)), + ), + "AdletBow": ( + vox_spec: ("npc.adlet.male.bow.head", (-7.0, -4.5, -6.0)), + ), + "Gnarling": ( + vox_spec: ("npc.gnarling.male.head", (-6.5, -5.5, -4.5)), + ), + "Mandragora": ( + vox_spec: ("npc.mandragora.male.head", (0.0, 0.0, 0.0)), + ), + "Kappa": ( + vox_spec: ("npc.kappa.male.chest", (-4.5, -5.0, -4.5)), + ), + "Cactid": ( + vox_spec: ("npc.cactid.male.head", (-8.0, -4.0, -7.5)), + ), + "Gnoll": ( + vox_spec: ("npc.gnoll.male.head", (-4.0, -1.5, -3.0)), + ), + "Haniwa": ( + vox_spec: ("npc.haniwa.male.head", (-5.5, -5.5, -5.5)), + ), + "Myrmidon": ( + vox_spec: ("npc.myrmidon.male.head", (-4.5, -7.0, -6.5)), + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron index bf0419402f..be48415201 100644 --- a/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron +++ b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron @@ -1,6 +1,6 @@ (( default: ( - vox_spec: ("armor.pants.pants_none", (-5.0, -3.5, 1.0)), + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), ), map: { "Gnome": ( diff --git a/assets/voxygen/voxel/biped_small_armor_tail_manifest.ron b/assets/voxygen/voxel/biped_small_armor_tail_manifest.ron new file mode 100644 index 0000000000..97f8e3325e --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_tail_manifest.ron @@ -0,0 +1,25 @@ +(( + default: ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + ), + map: { + "Sahagin": ( + vox_spec: ("npc.sahagin.male.tail", (-1.5, -13.0, -5.0)), + ), + "Adlet": ( + vox_spec: ("npc.adlet.male.tail", (-1.0, -5.0, -1.0)), + ), + "Gnarling": ( + vox_spec: ("npc.gnarling.male.tail", (-1.5, -13.0, -3.0)), + ), + "Kappa": ( + vox_spec: ("npc.kappa.male.tail", (-2.5, -10.0, -5.0)), + ), + "Gnoll": ( + vox_spec: ("npc.gnoll.male.tail", (-1.0, -11.0, -1.0)), + ), + "Myrmidon": ( + vox_spec: ("npc.myrmidon.male.tail", (-2.5, -7.0, -2.5)), + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_central_manifest.ron b/assets/voxygen/voxel/biped_small_central_manifest.ron deleted file mode 100644 index 7760739b99..0000000000 --- a/assets/voxygen/voxel/biped_small_central_manifest.ron +++ /dev/null @@ -1,362 +0,0 @@ -({ - (Gnome, Male): ( - head: ( - offset: (-8.0, -6.5, -12.0), - central: ("npc.gnome.male.head"), - ), - chest: ( - offset: (-5.0, -3.0, -2.5), - central: ("npc.gnome.male.chest"), - ), - shorts: ( - offset: (-4.0, -3.5, -2.5), - central: ("npc.gnome.male.shorts"), - ), - tail: ( - offset: (-0.5, -5.0, -2.5), - central: ("armor.empty"), - ), - ), - (Gnome, Female): ( - head: ( - offset: (-8.0, -6.5, -12.0), - central: ("npc.gnome.male.head"), - ), - chest: ( - offset: (-5.0, -3.0, -2.5), - central: ("npc.gnome.male.chest"), - ), - shorts: ( - offset: (-4.0, -3.5, -2.5), - central: ("npc.gnome.male.shorts"), - ), - tail: ( - offset: (-0.5, -5.0, -2.5), - central: ("armor.empty"), - ), - ), - (Sahagin, Male): ( - head: ( - offset: (-2.5, 0.0, -4.5), - central: ("npc.sahagin.male.head"), - ), - chest: ( - offset: (-4.5, -8.0, -8.0), - central: ("npc.sahagin.male.chest"), - ), - shorts: ( - offset: (-2.5, -3.5, -2.0), - central: ("npc.sahagin.male.shorts"), - ), - tail: ( - offset: (-1.5, -13.0, -5.0), - central: ("npc.sahagin.male.tail"), - ), - ), - (Sahagin, Female): ( - head: ( - offset: (-2.5, 0.0, -4.5), - central: ("npc.sahagin.male.head"), - ), - chest: ( - offset: (-4.5, -8.0, -8.0), - central: ("npc.sahagin.male.chest"), - ), - shorts: ( - offset: (-2.5, -3.5, -2.0), - central: ("npc.sahagin.male.shorts"), - ), - tail: ( - offset: (-1.5, -13.0, -5.0), - central: ("npc.sahagin.male.tail"), - ), - ), - (Adlet, Male): ( - head: ( - offset: (-7.0, -4.5, -6.0), - central: ("npc.adlet.male.head"), - ), - chest: ( - offset: (-5.0, -3.5, -2.0), - central: ("npc.adlet.male.chest"), - ), - shorts: ( - offset: (-5.0, -4.5, -3.0), - central: ("npc.adlet.male.shorts"), - ), - tail: ( - offset: (-1.0, -5.0, -1.0), - central: ("npc.adlet.male.tail"), - ), - ), - (Adlet, Female): ( - head: ( - offset: (-7.0, -4.5, -6.0), - central: ("npc.adlet.male.head"), - ), - chest: ( - offset: (-5.0, -3.5, -2.0), - central: ("npc.adlet.male.chest"), - ), - shorts: ( - offset: (-5.0, -4.5, -3.0), - central: ("npc.adlet.male.shorts"), - ), - tail: ( - offset: (-1.0, -5.0, -1.0), - central: ("npc.adlet.male.tail"), - ), - ), - (Gnarling, Male): ( - head: ( - offset: (-6.5, -5.5, -4.5), - central: ("npc.gnarling.male.head"), - ), - chest: ( - offset: (-4.5, -3.5, -2.5), - central: ("npc.gnarling.male.chest"), - ), - shorts: ( - offset: (-3.5, -3.0, -2.5), - central: ("npc.gnarling.male.shorts"), - ), - tail: ( - offset: (-1.5, -13.0, -3.0), - central: ("npc.gnarling.male.tail"), - ), - ), - (Gnarling, Female): ( - head: ( - offset: (-6.5, -5.5, -4.5), - central: ("npc.gnarling.male.head"), - ), - chest: ( - offset: (-4.5, -3.5, -2.5), - central: ("npc.gnarling.male.chest"), - ), - shorts: ( - offset: (-3.5, -3.0, -2.5), - central: ("npc.gnarling.male.shorts"), - ), - tail: ( - offset: (-1.5, -13.0, -3.0), - central: ("npc.gnarling.male.tail"), - ), - ), - (Mandragora, Male): ( - head: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), - ), - chest: ( - offset: (-11.0, -11.0, -6.5), - central: ("npc.mandragora.male.chest"), - ), - shorts: ( - offset: (-3.0, -3.0, -1.0), - central: ("npc.mandragora.male.shorts"), - ), - tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), - ), - ), - (Mandragora, Female): ( - head: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), - ), - chest: ( - offset: (-11.0, -11.0, -6.5), - central: ("npc.mandragora.male.chest"), - ), - shorts: ( - offset: (-3.0, -3.0, -1.0), - central: ("npc.mandragora.male.shorts"), - ), - tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), - ), - ), - (Kappa, Male): ( - head: ( - offset: (-4.5, -5.0, -4.5), - central: ("npc.kappa.male.head"), - ), - chest: ( - offset: (-6.5, -8.0, -7.0), - central: ("npc.kappa.male.chest"), - ), - shorts: ( - offset: (-3.5, -4.0, -1.5), - central: ("npc.kappa.male.shorts"), - ), - tail: ( - offset: (-2.5, -10.0, -5.0), - central: ("npc.kappa.male.tail"), - ), - ), - (Kappa, Female): ( - head: ( - offset: (-4.5, -5.0, -4.5), - central: ("npc.kappa.male.head"), - ), - chest: ( - offset: (-6.5, -8.0, -7.0), - central: ("npc.kappa.male.chest"), - ), - shorts: ( - offset: (-3.5, -4.0, -1.5), - central: ("npc.kappa.male.shorts"), - ), - tail: ( - offset: (-2.5, -10.0, -5.0), - central: ("npc.kappa.male.tail"), - ), - ), - (Cactid, Male): ( - head: ( - offset: (-8.0, -4.0, -7.5), - central: ("npc.cactid.male.head"), - ), - chest: ( - offset: (-3.0, -3.0, -2.5), - central: ("npc.cactid.male.chest"), - ), - shorts: ( - offset: (-3.0, -2.0, -1.0), - central: ("npc.cactid.male.shorts"), - ), - tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), - ), - ), - (Cactid, Female): ( - head: ( - offset: (-8.0, -4.0, -7.5), - central: ("npc.cactid.male.head"), - ), - chest: ( - offset: (-3.0, -3.0, -2.5), - central: ("npc.cactid.male.chest"), - ), - shorts: ( - offset: (-3.0, -2.0, -1.0), - central: ("npc.cactid.male.shorts"), - ), - tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), - ), - ), - (Gnoll, Male): ( - head: ( - offset: (-4.0, -1.5, -3.0), - central: ("npc.gnoll.male.head"), - ), - chest: ( - offset: (-5.0, -4.5, -6.0), - central: ("npc.gnoll.male.chest"), - ), - shorts: ( - offset: (-5.0, -4.0, -3.0), - central: ("npc.gnoll.male.shorts"), - ), - tail: ( - offset: (-1.0, -11.0, -1.0), - central: ("npc.gnoll.male.tail"), - ), - ), - (Gnoll, Female): ( - head: ( - offset: (-4.0, -1.5, -3.0), - central: ("npc.gnoll.male.head"), - ), - chest: ( - offset: (-5.0, -4.5, -6.0), - central: ("npc.gnoll.male.chest"), - ), - shorts: ( - offset: (-5.0, -4.0, -3.0), - central: ("npc.gnoll.male.shorts"), - ), - tail: ( - offset: (-1.0, -11.0, -1.0), - central: ("npc.gnoll.male.tail"), - ), - ), - (Haniwa, Male): ( - head: ( - offset: (-5.5, -5.5, -5.5), - central: ("npc.haniwa.male.head"), - ), - chest: ( - offset: (-6.5, -4.0, -3.0), - central: ("npc.haniwa.male.chest"), - ), - shorts: ( - offset: (-4.5, -4.5, -1.5), - central: ("npc.haniwa.male.shorts"), - ), - tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), - ), - ), - (Haniwa, Female): ( - head: ( - offset: (-5.5, -5.5, -5.5), - central: ("npc.haniwa.male.head"), - ), - chest: ( - offset: (-6.5, -4.0, -3.0), - central: ("npc.haniwa.male.chest"), - ), - shorts: ( - offset: (-4.5, -4.5, -1.5), - central: ("npc.haniwa.male.shorts"), - ), - tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), - ), - ), - (Myrmidon, Male): ( - head: ( - offset: (-4.5, -7.0, -6.5), - central: ("npc.myrmidon.male.head"), - ), - chest: ( - offset: (-5.5, -4.0, -3.0), - central: ("npc.myrmidon.male.chest"), - ), - shorts: ( - offset: (-2.5, -3.5, -2.0), - central: ("npc.myrmidon.male.shorts"), - ), - tail: ( - offset: (-2.5, -7.0, -2.5), - central: ("npc.myrmidon.male.tail"), - ), - ), - (Myrmidon, Female): ( - head: ( - offset: (-4.5, -7.0, -6.5), - central: ("npc.myrmidon.male.head"), - ), - chest: ( - offset: (-5.5, -4.0, -3.0), - central: ("npc.myrmidon.male.chest"), - ), - shorts: ( - offset: (-2.5, -3.5, -2.0), - central: ("npc.myrmidon.male.shorts"), - ), - tail: ( - offset: (-2.5, -7.0, -2.5), - central: ("npc.myrmidon.male.tail"), - ), - ), -}) diff --git a/assets/voxygen/voxel/biped_small_lateral_manifest.ron b/assets/voxygen/voxel/biped_small_lateral_manifest.ron deleted file mode 100644 index 81763b9a6b..0000000000 --- a/assets/voxygen/voxel/biped_small_lateral_manifest.ron +++ /dev/null @@ -1,202 +0,0 @@ -({ - (Gnome, Male): ( - foot_l: ( - offset: (-1.5, -2.0, -4.0), - lateral: ("npc.gnome.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -2.0, -4.0), - lateral: ("npc.gnome.male.foot_r"), - ), - ), - (Gnome, Female): ( - foot_l: ( - offset: (-1.5, -2.0, -4.0), - lateral: ("npc.gnome.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -2.0, -4.0), - lateral: ("npc.gnome.male.foot_r"), - ), - ), - (Sahagin, Male): ( - foot_l: ( - offset: (-2.5, -2.0, -8.0), - lateral: ("npc.sahagin.male.foot_l"), - ), - foot_r: ( - offset: (-2.5, -2.0, -8.0), - lateral: ("npc.sahagin.male.foot_r"), - ), - ), - (Sahagin, Female): ( - foot_l: ( - offset: (-2.5, -2.0, -8.0), - lateral: ("npc.sahagin.male.foot_l"), - ), - foot_r: ( - offset: (-2.5, -2.0, -8.0), - lateral: ("npc.sahagin.male.foot_r"), - ), - ), - (Adlet, Male): ( - foot_l: ( - offset: (-1.5, -3.0, -7.0), - lateral: ("npc.adlet.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -3.0, -7.0), - lateral: ("npc.adlet.male.foot_r"), - ), - ), - (Adlet, Female): ( - foot_l: ( - offset: (-1.5, -3.0, -7.0), - lateral: ("npc.adlet.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -3.0, -7.0), - lateral: ("npc.adlet.male.foot_r"), - ), - ), - (Gnarling, Male): ( - foot_l: ( - offset: (-1.0, -2.0, -5.0), - lateral: ("npc.gnarling.male.foot_l"), - ), - foot_r: ( - offset: (-1.0, -2.0, -5.0), - lateral: ("npc.gnarling.male.foot_r"), - ), - ), - (Gnarling, Female): ( - foot_l: ( - offset: (-1.0, -2.0, -5.0), - lateral: ("npc.gnarling.male.foot_l"), - ), - foot_r: ( - offset: (-1.0, -2.0, -5.0), - lateral: ("npc.gnarling.male.foot_r"), - ), - ), - (Mandragora, Male): ( - foot_l: ( - offset: (-1.0, -1.5, -4.0), - lateral: ("npc.mandragora.male.foot_l"), - ), - foot_r: ( - offset: (-1.0, -1.5, -4.0), - lateral: ("npc.mandragora.male.foot_r"), - ), - ), - (Mandragora, Female): ( - foot_l: ( - offset: (-1.0, -1.5, -4.0), - lateral: ("npc.mandragora.male.foot_l"), - ), - foot_r: ( - offset: (-1.0, -1.5, -4.0), - lateral: ("npc.mandragora.male.foot_r"), - ), - ), - (Kappa, Male): ( - foot_l: ( - offset: (-2.5, -3.0, -9.0), - lateral: ("npc.kappa.male.foot_l"), - ), - foot_r: ( - offset: (-2.5, -3.0, -9.0), - lateral: ("npc.kappa.male.foot_r"), - ), - ), - (Kappa, Female): ( - foot_l: ( - offset: (-2.5, -3.0, -9.0), - lateral: ("npc.kappa.male.foot_l"), - ), - foot_r: ( - offset: (-2.5, -3.0, -9.0), - lateral: ("npc.kappa.male.foot_r"), - ), - ), - (Cactid, Male): ( - foot_l: ( - offset: (-1.5, -2.0, -5.0), - lateral: ("npc.cactid.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -2.0, -5.0), - lateral: ("npc.cactid.male.foot_r"), - ), - ), - (Cactid, Female): ( - foot_l: ( - offset: (-1.5, -2.0, -5.0), - lateral: ("npc.cactid.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -2.0, -5.0), - lateral: ("npc.cactid.male.foot_r"), - ), - ), - (Gnoll, Male): ( - foot_l: ( - offset: (-1.5, -3.0, -7.0), - lateral: ("npc.gnoll.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -3.0, -7.0), - lateral: ("npc.gnoll.male.foot_r"), - ), - ), - (Gnoll, Female): ( - foot_l: ( - offset: (-1.5, -3.0, -7.0), - lateral: ("npc.gnoll.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -3.0, -7.0), - lateral: ("npc.gnoll.male.foot_r"), - ), - ), - (Haniwa, Male): ( - foot_l: ( - offset: (-2.0, -2.5, -8.0), - lateral: ("npc.haniwa.male.foot_l"), - ), - foot_r: ( - offset: (-2.0, -2.5, -8.0), - lateral: ("npc.haniwa.male.foot_r"), - ), - ), - (Haniwa, Female): ( - foot_l: ( - offset: (-2.0, -2.5, -8.0), - lateral: ("npc.haniwa.male.foot_l"), - ), - foot_r: ( - offset: (-2.0, -2.5, -8.0), - lateral: ("npc.haniwa.male.foot_r"), - ), - ), - (Myrmidon, Male): ( - foot_l: ( - offset: (-1.5, -2.5, -7.0), - lateral: ("npc.myrmidon.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -2.5, -7.0), - lateral: ("npc.myrmidon.male.foot_r"), - ), - ), - (Myrmidon, Female): ( - foot_l: ( - offset: (-1.5, -2.5, -7.0), - lateral: ("npc.myrmidon.male.foot_l"), - ), - foot_r: ( - offset: (-1.5, -2.5, -7.0), - lateral: ("npc.myrmidon.male.foot_r"), - ), - ), -}) diff --git a/assets/voxygen/voxel/npc/adlet/male/head.vox b/assets/voxygen/voxel/npc/adlet/male/head.vox deleted file mode 100644 index 26a71c9cec..0000000000 --- a/assets/voxygen/voxel/npc/adlet/male/head.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a936f5a25ab1b9dcc72f7824b00b743ae7866822cfc4764238bfa9419a5d9a0f -size 3336 diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 1bc0e59ea7..8e0112b698 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -289,32 +289,44 @@ impl LoadoutBuilder { Adlet => match active_tool_kind { Some(ToolKind::Bow) => LoadoutBuilder::new() .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.head.adlet_bow", + ))) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.adlet.adlet_bow", + "common.items.npc_armor.biped_small.adlet.hand.adlet_bow", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.adlet.adlet", + "common.items.npc_armor.biped_small.adlet.foot.adlet", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.adlet.adlet_bow", + "common.items.npc_armor.biped_small.adlet.chest.adlet_bow", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.adlet.adlet_bow", + "common.items.npc_armor.biped_small.adlet.pants.adlet_bow", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.tail.adlet", ))) .build(), Some(ToolKind::Spear) | Some(ToolKind::Staff) => LoadoutBuilder::new() .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.head.adlet_spear", + ))) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.adlet.adlet_spear", + "common.items.npc_armor.biped_small.adlet.hand.adlet_spear", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.adlet.adlet", + "common.items.npc_armor.biped_small.adlet.foot.adlet", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.adlet.adlet_spear", + "common.items.npc_armor.biped_small.adlet.chest.adlet_spear", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.adlet.adlet_spear", + "common.items.npc_armor.biped_small.adlet.pants.adlet_spear", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.tail.adlet", ))) .build(), _ => LoadoutBuilder::new().active_item(active_item).build(), @@ -322,94 +334,124 @@ impl LoadoutBuilder { Gnarling => match active_tool_kind { Some(ToolKind::Bow) => LoadoutBuilder::new() .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.head.gnarling", + ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.foot.gnarling", ))) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.hand.gnarling", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.chest.gnarling", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.pants.gnarling", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.tail.gnarling", ))) .build(), Some(ToolKind::Staff) => LoadoutBuilder::new() .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.head.gnarling", + ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.foot.gnarling", ))) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.hand.gnarling", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.chest.gnarling", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.pants.gnarling", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.tail.gnarling", ))) .build(), Some(ToolKind::Spear) => LoadoutBuilder::new() .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.head.gnarling", + ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.foot.gnarling", ))) .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.hand.gnarling", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.chest.gnarling", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.gnarling.gnarling", + "common.items.npc_armor.biped_small.gnarling.pants.gnarling", ))) .build(), _ => LoadoutBuilder::new().active_item(active_item).build(), }, Sahagin => LoadoutBuilder::new() .active_item(active_item) - .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.sahagin.sahagin", + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.sahagin.head.sahagin", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.sahagin.sahagin", + "common.items.npc_armor.biped_small.sahagin.foot.sahagin", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.sahagin.hand.sahagin", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.sahagin.sahagin", + "common.items.npc_armor.biped_small.sahagin.chest.sahagin", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.sahagin.sahagin", + "common.items.npc_armor.biped_small.sahagin.pants.sahagin", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.sahagin.belt.sahagin", ))) .build(), Haniwa => LoadoutBuilder::new() .active_item(active_item) - .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.haniwa.haniwa", + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.haniwa.head.haniwa", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.haniwa.haniwa", + "common.items.npc_armor.biped_small.haniwa.foot.haniwa", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.haniwa.hand.haniwa", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.haniwa.haniwa", + "common.items.npc_armor.biped_small.haniwa.chest.haniwa", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.haniwa.haniwa", + "common.items.npc_armor.biped_small.haniwa.pants.haniwa", ))) .build(), Myrmidon => LoadoutBuilder::new() .active_item(active_item) - .hands(Some(Item::new_from_asset_expect( - "common.items.npc_armor.hand.myrmidon.myrmidon", + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.myrmidon.head.myrmidon", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.npc_armor.foot.myrmidon.myrmidon", + "common.items.npc_armor.biped_small.myrmidon.foot.myrmidon", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.myrmidon.hand.myrmidon", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.npc_armor.chest.myrmidon.myrmidon", + "common.items.npc_armor.biped_small.myrmidon.chest.myrmidon", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.npc_armor.pants.myrmidon.myrmidon", + "common.items.npc_armor.biped_small.myrmidon.pants.myrmidon", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.myrmidon.belt.myrmidon", ))) .build(), Guard => LoadoutBuilder::new() diff --git a/voxygen/anim/src/biped_large/alpha.rs b/voxygen/anim/src/biped_large/alpha.rs index 2e749fcd06..3fcb8c6e24 100644 --- a/voxygen/anim/src/biped_large/alpha.rs +++ b/voxygen/anim/src/biped_large/alpha.rs @@ -45,33 +45,31 @@ impl Animation for AlphaAnimation { let footrotr = (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) * ((acc_vel * lab as f32 + PI * 0.4).sin()); - let (movement1base, movement2base, movement3) = match stage_section { + let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; - let pullback = 1.0 - movement3; - let movement1 = movement1base * pullback; - let movement2 = movement2base * pullback; + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; next.shoulder_l.position = Vec3::new( -s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2 - foothorir * 1.0, ); - next.shoulder_l.orientation = Quaternion::rotation_x( - movement1 * 0.8 + 0.6 * speednorm + (footrotr * -0.2) * speednorm, - ); + next.shoulder_l.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotr * -0.2) * speednorm); next.shoulder_r.position = Vec3::new( s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2 - foothoril * 1.0, ); - next.shoulder_r.orientation = Quaternion::rotation_x( - movement1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm, - ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm); next.torso.orientation = Quaternion::rotation_z(0.0); next.main.position = Vec3::new(0.0, 0.0, 0.0); @@ -87,53 +85,51 @@ impl Animation for AlphaAnimation { Some(ToolKind::SwordSimple) => { next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); next.control_r.position = Vec3::new(0.0, 2.0, -3.0); - next.head.orientation = Quaternion::rotation_x(movement1 * -0.25) - * Quaternion::rotation_z(movement1 * -0.2 + movement2 * 0.6); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); next.control.position = Vec3::new( - -3.0 + movement1 * -4.0 + movement2 * 5.0, - 5.0 + s_a.grip / 1.2 + movement1 * -4.0 + movement2 * 8.0, - -4.0 + -s_a.grip / 2.0 + movement2 * -5.0, + -3.0 + move1 * -4.0 + move2 * 5.0, + 5.0 + s_a.grip / 1.2 + move1 * -4.0 + move2 * 8.0, + -4.0 + -s_a.grip / 2.0 + move2 * -5.0, ); next.upper_torso.orientation = - Quaternion::rotation_z(movement1base * 0.5 + movement2 * -0.7); + Quaternion::rotation_z(move1base * 0.5 + move2 * -0.7); next.lower_torso.orientation = - Quaternion::rotation_z(movement1base * -0.5 + movement2 * 0.7); + Quaternion::rotation_z(move1base * -0.5 + move2 * 0.7); next.control_l.orientation = - Quaternion::rotation_x(PI / 2.0 + movement1 * -0.5 + movement2 * 1.5) + Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) * Quaternion::rotation_y(-0.2); next.control_r.orientation = - Quaternion::rotation_x(PI / 2.2 + movement1 * -0.5 + movement2 * 1.5) + Quaternion::rotation_x(PI / 2.2 + move1 * -0.5 + move2 * 1.5) * Quaternion::rotation_y(0.2) * Quaternion::rotation_z(0.0); next.control.orientation = - Quaternion::rotation_x(-0.2 + movement1 * 0.5 + movement2 * -1.5) - * Quaternion::rotation_y(-0.1 + movement1 * -0.5 + movement2 * 1.0); + Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -1.5) + * Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.0); }, Some(ToolKind::HammerSimple) => { - next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + movement2 * -10.0); + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move2 * -10.0); next.control_r.position = Vec3::new(1.0, 2.0, -2.0); next.control.position = Vec3::new( - 4.0 + movement1 * -12.0 + movement2 * 20.0, - (s_a.grip / 1.0) + movement1 * -3.0 + movement2 * 5.0, - (-s_a.grip / 0.8) + movement1 * -2.0 + movement2 * 8.0, + 4.0 + move1 * -12.0 + move2 * 20.0, + (s_a.grip / 1.0) + move1 * -3.0 + move2 * 5.0, + (-s_a.grip / 0.8) + move1 * -2.0 + move2 * 8.0, ); - next.head.orientation = Quaternion::rotation_x(movement1 * -0.25) - * Quaternion::rotation_z(movement1 * -0.2 + movement2 * 0.6); - next.upper_torso.orientation = - Quaternion::rotation_z(movement1 * 0.2 + movement2 * -0.4); - next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + movement2 * 0.8) - * Quaternion::rotation_y(-0.0); - next.control_r.orientation = - Quaternion::rotation_x(PI / 2.0 + 0.2 + movement2 * 0.8) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 0.2 + move2 * -0.4); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.8) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move2 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); next.control.orientation = - Quaternion::rotation_x(-1.0 + movement1 * -0.5 + movement2 * -0.3) - * Quaternion::rotation_y(-1.8 + movement1 * -0.8 + movement2 * 3.0) - * Quaternion::rotation_z(movement1 * -0.8 + movement2 * -0.8); + Quaternion::rotation_x(-1.0 + move1 * -0.5 + move2 * -0.3) + * Quaternion::rotation_y(-1.8 + move1 * -0.8 + move2 * 3.0) + * Quaternion::rotation_z(move1 * -0.8 + move2 * -0.8); }, Some(ToolKind::Debug) => { next.hand_l.position = Vec3::new(-7.0, 4.0, 3.0); diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs index 73aa1b44bc..3d183e3bbc 100644 --- a/voxygen/anim/src/biped_small/alpha.rs +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -53,27 +53,27 @@ impl Animation for AlphaAnimation { let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; - let (movement1base, movement2base, movement3) = match stage_section { + let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).sqrt(), 0.0, 0.0), Some(StageSection::Swing) => (1.0, (anim_time as f32).powi(4), 0.0), Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), _ => (0.0, 0.0, 0.0), }; - let pullback = 1.0 - movement3; - let movement1abs = movement1base * pullback; - let movement2abs = movement2base * pullback; + let pullback = 1.0 - move3; + let move1abs = move1base * pullback; + let move2abs = move2base * pullback; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_x(movement1abs * 0.2 + movement2abs * 0.3) - * Quaternion::rotation_z(movement1abs * -0.2 + movement2abs * 0.6) - * Quaternion::rotation_y(movement1abs * 0.3 + movement2abs * -0.5); + next.head.orientation = Quaternion::rotation_x(move1abs * 0.2 + move2abs * 0.3) + * Quaternion::rotation_z(move1abs * -0.2 + move2abs * 0.6) + * Quaternion::rotation_y(move1abs * 0.3 + move2abs * -0.5); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) / 13.0; - next.chest.orientation = Quaternion::rotation_x(movement1abs * -0.2 + movement2abs * 0.3) - * Quaternion::rotation_z(movement1abs * 0.5 + movement2abs * -0.6); + next.chest.orientation = Quaternion::rotation_x(move1abs * -0.2 + move2abs * 0.3) + * Quaternion::rotation_z(move1abs * 0.5 + move2abs * -0.6); next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); - next.pants.orientation = Quaternion::rotation_x(movement1abs * 0.2 + movement2abs * -0.3) - * Quaternion::rotation_z(movement1abs * -0.2 + movement2abs * 0.2); + next.pants.orientation = Quaternion::rotation_x(move1abs * 0.2 + move2abs * -0.3) + * Quaternion::rotation_z(move1abs * -0.2 + move2abs * 0.2); next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); @@ -88,22 +88,21 @@ impl Animation for AlphaAnimation { next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0); next.control.position = Vec3::new( - -3.0 + movement1abs * -3.0 + movement2abs * 5.0, - s_a.grip.2 + movement1abs * -12.0 + movement2abs * 17.0, - -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + movement2abs * 5.0, + -3.0 + move1abs * -3.0 + move2abs * 5.0, + s_a.grip.2 + move1abs * -12.0 + move2abs * 17.0, + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move2abs * 5.0, ); next.control_l.orientation = - Quaternion::rotation_x(PI / 1.5 + movement1abs * -1.5 + movement2abs * 2.5) + Quaternion::rotation_x(PI / 1.5 + move1abs * -1.5 + move2abs * 2.5) * Quaternion::rotation_y(-0.3); - next.control_r.orientation = Quaternion::rotation_x( - PI / 1.5 + s_a.grip.0 * 0.2 + movement1abs * -1.5 + movement2abs * 2.5, - ) * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); + next.control_r.orientation = + Quaternion::rotation_x(PI / 1.5 + s_a.grip.0 * 0.2 + move1abs * -1.5 + move2abs * 2.5) + * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); - next.control.orientation = - Quaternion::rotation_x(-1.35 + movement1abs * -0.3 + movement2abs * 0.5) - * Quaternion::rotation_z(movement1abs * 1.0 + movement2abs * -1.0) - * Quaternion::rotation_y(movement2abs * 0.0); + next.control.orientation = Quaternion::rotation_x(-1.35 + move1abs * -0.3 + move2abs * 0.5) + * Quaternion::rotation_z(move1abs * 1.0 + move2abs * -1.0) + * Quaternion::rotation_y(move2abs * 0.0); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) diff --git a/voxygen/anim/src/character/alpha.rs b/voxygen/anim/src/character/alpha.rs index 15b5ed6ece..b8c8e0f5c9 100644 --- a/voxygen/anim/src/character/alpha.rs +++ b/voxygen/anim/src/character/alpha.rs @@ -34,7 +34,7 @@ impl Animation for AlphaAnimation { let lab = 1.0; - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), @@ -70,22 +70,19 @@ impl Animation for AlphaAnimation { next.control.position = Vec3::new( s_a.sc.0, - s_a.sc.1 + movement1 * -4.0 + movement2 * 16.0 + movement3 * -4.0, - s_a.sc.2 + movement1 * 1.0, + s_a.sc.1 + move1 * -4.0 + move2 * 16.0 + move3 * -4.0, + s_a.sc.2 + move1 * 1.0, ); - next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + movement1 * -0.5) - * Quaternion::rotation_y( - s_a.sc.4 + movement1 * -1.0 + movement2 * -0.6 + movement3 * 1.0, - ) - * Quaternion::rotation_z(s_a.sc.5 + movement1 * -1.2 + movement2 * 1.3); + next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + move1 * -0.5) + * Quaternion::rotation_y(s_a.sc.4 + move1 * -1.0 + move2 * -0.6 + move3 * 1.0) + * Quaternion::rotation_z(s_a.sc.5 + move1 * -1.2 + move2 * 1.3); - next.chest.orientation = Quaternion::rotation_z( - movement1 * 1.5 + (movement2 * 1.75).sin() * -3.0 + movement3 * 0.5, - ); + next.chest.orientation = + Quaternion::rotation_z(move1 * 1.5 + (move2 * 1.75).sin() * -3.0 + move3 * 0.5); - next.head.position = Vec3::new(0.0 + movement2 * 2.0, s_a.head.0, s_a.head.1); + next.head.position = Vec3::new(0.0 + move2 * 2.0, s_a.head.0, s_a.head.1); next.head.orientation = Quaternion::rotation_z( - movement1 * -0.9 + (movement2 * 1.75).sin() * 2.5 + movement3 * -0.5, + move1 * -0.9 + (move2 * 1.75).sin() * 2.5 + move3 * -0.5, ); }, Some(ToolKind::Dagger) => { @@ -104,45 +101,39 @@ impl Animation for AlphaAnimation { next.hand_r.orientation = Quaternion::rotation_x(s_a.ahr.3) * Quaternion::rotation_z(s_a.ahr.5); - next.head.position = Vec3::new( - 0. + movement2 * 2.0, - s_a.head.0 + movement2 * 2.0, - s_a.head.1, - ); + next.head.position = + Vec3::new(0. + move2 * 2.0, s_a.head.0 + move2 * 2.0, s_a.head.1); - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; next.control.position = Vec3::new( - s_a.ac.0 + movement1 * -1.0 + movement2 * -2.0 + movement3 * 0.0, - s_a.ac.1 + movement1 * -3.0 + movement2 * 3.0 + movement3 * -3.5, - s_a.ac.2 + movement1 * 6.0 + movement2 * -15.0 + movement3 * -2.0, - ); - next.control.orientation = Quaternion::rotation_x( - s_a.ac.3 + movement1 * 0.0 + movement2 * -3.0 + movement3 * 0.4, - ) * Quaternion::rotation_y( - s_a.ac.4 + movement1 * -0.0 + movement2 * -0.6 + movement3 * 0.8, - ) * Quaternion::rotation_z( - s_a.ac.5 + movement1 * -2.0 + movement2 * -1.0 + movement3 * 2.5, + s_a.ac.0 + move1 * -1.0 + move2 * -2.0 + move3 * 0.0, + s_a.ac.1 + move1 * -3.0 + move2 * 3.0 + move3 * -3.5, + s_a.ac.2 + move1 * 6.0 + move2 * -15.0 + move3 * -2.0, ); + next.control.orientation = + Quaternion::rotation_x(s_a.ac.3 + move1 * 0.0 + move2 * -3.0 + move3 * 0.4) + * Quaternion::rotation_y( + s_a.ac.4 + move1 * -0.0 + move2 * -0.6 + move3 * 0.8, + ) + * Quaternion::rotation_z( + s_a.ac.5 + move1 * -2.0 + move2 * -1.0 + move3 * 2.5, + ); next.control.scale = Vec3::one(); - next.chest.orientation = Quaternion::rotation_x( - 0.0 + movement1 * 0.6 + movement2 * -0.6 + movement3 * 0.4, - ) * Quaternion::rotation_y( - 0.0 + movement1 * 0.0 + movement2 * 0.0 + movement3 * 0.0, - ) * Quaternion::rotation_z( - 0.0 + movement1 * 1.5 + movement2 * -2.5 + movement3 * 1.5, - ); - next.head.orientation = Quaternion::rotation_z( - 0.0 + movement1 * -1.5 + movement2 * 2.5 + movement3 * -1.0, - ); + next.chest.orientation = + Quaternion::rotation_x(0.0 + move1 * 0.6 + move2 * -0.6 + move3 * 0.4) + * Quaternion::rotation_y(0.0 + move1 * 0.0 + move2 * 0.0 + move3 * 0.0) + * Quaternion::rotation_z(0.0 + move1 * 1.5 + move2 * -2.5 + move3 * 1.5); + next.head.orientation = + Quaternion::rotation_z(0.0 + move1 * -1.5 + move2 * 2.5 + move3 * -1.0); }, Some(ToolKind::Hammer) => { - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), @@ -150,8 +141,7 @@ impl Animation for AlphaAnimation { }; next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = - Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2 + movement2 * -7.0); + next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2 + move2 * -7.0); next.hand_l.orientation = Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4); next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2); @@ -159,34 +149,26 @@ impl Animation for AlphaAnimation { Quaternion::rotation_x(s_a.hhr.3) * Quaternion::rotation_y(s_a.hhr.4); next.control.position = Vec3::new( - s_a.hc.0 + (movement1 * -13.0) * (1.0 - movement3), - s_a.hc.1 + (movement2 * 5.0) * (1.0 - movement3), + s_a.hc.0 + (move1 * -13.0) * (1.0 - move3), + s_a.hc.1 + (move2 * 5.0) * (1.0 - move3), s_a.hc.2, ); next.control.orientation = - Quaternion::rotation_x(s_a.hc.3 + (movement1 * 1.5 + movement2 * -2.5)) - * (1.0 - movement3) - * Quaternion::rotation_y(s_a.hc.4 + (movement1 * 1.57)) - * (1.0 - movement3) - * Quaternion::rotation_z(s_a.hc.5 + (movement2 * -0.5) * (1.0 - movement3)); + Quaternion::rotation_x(s_a.hc.3 + (move1 * 1.5 + move2 * -2.5)) + * (1.0 - move3) + * Quaternion::rotation_y(s_a.hc.4 + (move1 * 1.57)) + * (1.0 - move3) + * Quaternion::rotation_z(s_a.hc.5 + (move2 * -0.5) * (1.0 - move3)); next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); next.head.orientation = - Quaternion::rotation_x((movement1 * 0.1 + movement2 * 0.3) * (1.0 - movement3)) - * Quaternion::rotation_z( - (movement1 * -0.2 + movement2 * 0.2) * (1.0 - movement3), - ); - next.chest.position = Vec3::new( - 0.0, - s_a.chest.0, - s_a.chest.1 + movement2 * -2.0 * (1.0 - movement3), - ); - next.chest.orientation = Quaternion::rotation_x( - (movement1 * 0.4 + movement2 * -0.7) * (1.0 - movement3), - ) * Quaternion::rotation_y( - (movement1 * 0.3 + movement2 * -0.4) * (1.0 - movement3), - ) * Quaternion::rotation_z( - (movement1 * 0.5 + movement2 * -0.5) * (1.0 - movement3), - ); + Quaternion::rotation_x((move1 * 0.1 + move2 * 0.3) * (1.0 - move3)) + * Quaternion::rotation_z((move1 * -0.2 + move2 * 0.2) * (1.0 - move3)); + next.chest.position = + Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + move2 * -2.0 * (1.0 - move3)); + next.chest.orientation = + Quaternion::rotation_x((move1 * 0.4 + move2 * -0.7) * (1.0 - move3)) + * Quaternion::rotation_y((move1 * 0.3 + move2 * -0.4) * (1.0 - move3)) + * Quaternion::rotation_z((move1 * 0.5 + move2 * -0.5) * (1.0 - move3)); if velocity > 0.5 { next.foot_l.position = Vec3::new(-s_a.foot.0, foot * -6.0, s_a.foot.2); @@ -207,10 +189,8 @@ impl Animation for AlphaAnimation { next.foot_r.orientation = Quaternion::rotation_x(slower * 0.1) * Quaternion::rotation_z((slower * 0.5).max(0.0)); - next.belt.orientation = - Quaternion::rotation_x(movement1 * -0.2 + movement2 * 0.2); - next.shorts.orientation = - Quaternion::rotation_x(movement1 * -0.3 + movement2 * 0.3); + next.belt.orientation = Quaternion::rotation_x(move1 * -0.2 + move2 * 0.2); + next.shorts.orientation = Quaternion::rotation_x(move1 * -0.3 + move2 * 0.3); } }, Some(ToolKind::Debug) => { diff --git a/voxygen/anim/src/character/beam.rs b/voxygen/anim/src/character/beam.rs index e4015c7131..14a1904f5f 100644 --- a/voxygen/anim/src/character/beam.rs +++ b/voxygen/anim/src/character/beam.rs @@ -32,7 +32,7 @@ impl Animation for BeamAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), Some(StageSection::Cast) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), @@ -56,59 +56,53 @@ impl Animation for BeamAnimation { match active_tool_kind { Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { next.control.position = Vec3::new( - s_a.stc.0 + (movement1 * 16.0) * (1.0 - movement3), - s_a.stc.1 + (movement1 + (movement2 * 8.0).sin() * 2.0) * (1.0 - movement3), - s_a.stc.2 + (movement1 * 10.0) * (1.0 - movement3), + s_a.stc.0 + (move1 * 16.0) * (1.0 - move3), + s_a.stc.1 + (move1 + (move2 * 8.0).sin() * 2.0) * (1.0 - move3), + s_a.stc.2 + (move1 * 10.0) * (1.0 - move3), ); next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement1 * -1.2) * (1.0 - movement3)) + Quaternion::rotation_x(s_a.stc.3 + (move1 * -1.2) * (1.0 - move3)) * Quaternion::rotation_y( s_a.stc.4 - + (movement1 * -1.4 + (movement2 * 16.0).sin() * 0.07) - * (1.0 - movement3), + + (move1 * -1.4 + (move2 * 16.0).sin() * 0.07) * (1.0 - move3), ) * Quaternion::rotation_z( - (movement1 * -1.7 + (movement2 * 8.0 + PI / 4.0).sin() * 0.3) - * (1.0 - movement3), + (move1 * -1.7 + (move2 * 8.0 + PI / 4.0).sin() * 0.3) * (1.0 - move3), ); next.head.orientation = Quaternion::rotation_x(0.0); next.hand_l.position = Vec3::new( - 0.0 + (movement1 * -1.0 + (movement2 * 8.0).sin() * 3.5) * (1.0 - movement3), - 0.0 + (movement1 * -5.0 - + (movement2 * 8.0).sin() * -2.0 - + (movement2 * 16.0).sin() * -1.5) - * (1.0 - movement3), - -4.0 + (movement1 * 19.0 + (movement2 * 8.0 + PI / 2.0).sin() * 3.5) - * (1.0 - movement3), + 0.0 + (move1 * -1.0 + (move2 * 8.0).sin() * 3.5) * (1.0 - move3), + 0.0 + (move1 * -5.0 + (move2 * 8.0).sin() * -2.0 + (move2 * 16.0).sin() * -1.5) + * (1.0 - move3), + -4.0 + (move1 * 19.0 + (move2 * 8.0 + PI / 2.0).sin() * 3.5) * (1.0 - move3), ); next.hand_l.orientation = - Quaternion::rotation_x(s_a.sthr.3 + (movement1 * -0.3) * (1.0 - movement3)) + Quaternion::rotation_x(s_a.sthr.3 + (move1 * -0.3) * (1.0 - move3)) * Quaternion::rotation_y( - (movement1 * -1.1 + (movement2 * 8.0 + PI / 2.0).sin() * -0.3) - * (1.0 - movement3), + (move1 * -1.1 + (move2 * 8.0 + PI / 2.0).sin() * -0.3) * (1.0 - move3), ) - * Quaternion::rotation_z((movement1 * -2.8) * (1.0 - movement3)); + * Quaternion::rotation_z((move1 * -2.8) * (1.0 - move3)); if velocity < 0.5 { next.head.orientation = - Quaternion::rotation_z(movement1 * -0.5 + (movement2 * 16.0).sin() * 0.05); + Quaternion::rotation_z(move1 * -0.5 + (move2 * 16.0).sin() * 0.05); next.foot_l.position = - Vec3::new(-s_a.foot.0, s_a.foot.1 + movement1 * -3.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(movement1 * -0.5) - * Quaternion::rotation_z(movement1 * 0.5); + Vec3::new(-s_a.foot.0, s_a.foot.1 + move1 * -3.0, s_a.foot.2); + next.foot_l.orientation = + Quaternion::rotation_x(move1 * -0.5) * Quaternion::rotation_z(move1 * 0.5); next.foot_r.position = - Vec3::new(s_a.foot.0, s_a.foot.1 + movement1 * 4.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_z(movement1 * 0.5); + Vec3::new(s_a.foot.0, s_a.foot.1 + move1 * 4.0, s_a.foot.2); + next.foot_r.orientation = Quaternion::rotation_z(move1 * 0.5); next.chest.orientation = - Quaternion::rotation_x(movement1 * -0.2 + (movement2 * 8.0).sin() * 0.05) - * Quaternion::rotation_z(movement1 * 0.5); - next.belt.orientation = Quaternion::rotation_x(movement1 * 0.1) - * Quaternion::rotation_z(movement1 * -0.1); - next.shorts.orientation = Quaternion::rotation_x(movement1 * 0.2) - * Quaternion::rotation_z(movement1 * -0.2); + Quaternion::rotation_x(move1 * -0.2 + (move2 * 8.0).sin() * 0.05) + * Quaternion::rotation_z(move1 * 0.5); + next.belt.orientation = + Quaternion::rotation_x(move1 * 0.1) * Quaternion::rotation_z(move1 * -0.1); + next.shorts.orientation = + Quaternion::rotation_x(move1 * 0.2) * Quaternion::rotation_z(move1 * -0.2); } else { }; }, diff --git a/voxygen/anim/src/character/beta.rs b/voxygen/anim/src/character/beta.rs index 7255a22667..ba42293d1f 100644 --- a/voxygen/anim/src/character/beta.rs +++ b/voxygen/anim/src/character/beta.rs @@ -30,7 +30,7 @@ impl Animation for BetaAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), @@ -48,21 +48,17 @@ impl Animation for BetaAnimation { Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); next.control.position = Vec3::new( - s_a.sc.0 + (-1.4 + movement1 * -3.0 + movement2 * -2.0) * (1.0 - movement3), - s_a.sc.1 + (-1.4 + movement1 * 3.0 + movement2 * 3.0) * (1.0 - movement3), - s_a.sc.2 + (-1.9 + movement1 * 2.5 * (1.0 - movement3)), + s_a.sc.0 + (-1.4 + move1 * -3.0 + move2 * -2.0) * (1.0 - move3), + s_a.sc.1 + (-1.4 + move1 * 3.0 + move2 * 3.0) * (1.0 - move3), + s_a.sc.2 + (-1.9 + move1 * 2.5 * (1.0 - move3)), ); - next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + (-1.7) * (1.0 - movement3)) - * Quaternion::rotation_y( - s_a.sc.4 + (0.4 + movement1 * 1.5 + movement2 * -2.5) * (1.0 - movement3), - ) - * Quaternion::rotation_z(s_a.sc.5 + (1.67 + movement2 * 1.57) * (1.0 - movement3)); + next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + (-1.7) * (1.0 - move3)) + * Quaternion::rotation_y(s_a.sc.4 + (0.4 + move1 * 1.5 + move2 * -2.5) * (1.0 - move3)) + * Quaternion::rotation_z(s_a.sc.5 + (1.67 + move2 * 1.57) * (1.0 - move3)); next.chest.orientation = Quaternion::rotation_x(0.15) - * Quaternion::rotation_y((-0.1) * (1.0 - movement3)) - * Quaternion::rotation_z( - (0.4 + movement1 * 1.5 + movement2 * -2.5) * (1.0 - movement3), - ); - next.head.orientation = Quaternion::rotation_z((-0.4) * (1.0 - movement3)); + * Quaternion::rotation_y((-0.1) * (1.0 - move3)) + * Quaternion::rotation_z((0.4 + move1 * 1.5 + move2 * -2.5) * (1.0 - move3)); + next.head.orientation = Quaternion::rotation_z((-0.4) * (1.0 - move3)); next } diff --git a/voxygen/anim/src/character/charge.rs b/voxygen/anim/src/character/charge.rs deleted file mode 100644 index a64285ca9e..0000000000 --- a/voxygen/anim/src/character/charge.rs +++ /dev/null @@ -1,164 +0,0 @@ -use super::{ - super::{vek::*, Animation}, - CharacterSkeleton, SkeletonAttr, -}; -use common::comp::item::ToolKind; - -pub struct ChargeAnimation; - -impl Animation for ChargeAnimation { - type Dependency = ( - Option, - Option, - f32, - Vec3, - Vec3, - f64, - ); - type Skeleton = CharacterSkeleton; - - #[cfg(feature = "use-dyn-lib")] - const UPDATE_FN: &'static [u8] = b"character_charge\0"; - - #[cfg_attr(feature = "be-dyn-lib", export_name = "character_charge")] - #[allow(clippy::approx_constant)] // TODO: Pending review in #587 - - fn update_skeleton_inner( - skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, velocity, orientation, last_ori, _global_time): Self::Dependency, - anim_time: f64, - rate: &mut f32, - s_a: &SkeletonAttr, - ) -> Self::Skeleton { - *rate = 1.0; - - let mut next = (*skeleton).clone(); - - let lab = 1.0; - - let foot = (((5.0) / (0.2 + 4.8 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 8.0).sin()); - let foote = (((5.0) - / (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 8.0 + 1.57).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 8.0).sin()); - let stress = - (((5.0) / (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 20.0).cos()).powi(2))).sqrt()) - * ((anim_time as f32 * lab as f32 * 20.0).cos()); - let quick = (((5.0) / (3.5 + 1.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 8.0).sin()); - let stop = ((anim_time as f32).powf(0.3)).min(1.2); - let stopa = ((anim_time as f32).powf(0.9)).min(5.0); - - let ori: Vec2 = Vec2::from(orientation); - let last_ori = Vec2::from(last_ori); - let tilt = if ::vek::Vec2::new(ori, last_ori) - .map(|o| o.magnitude_squared()) - .map(|m| m > 0.001 && m.is_finite()) - .reduce_and() - && ori.angle_between(last_ori).is_finite() - { - ori.angle_between(last_ori).min(0.2) - * last_ori.determine_side(Vec2::zero(), ori).signum() - } else { - 0.0 - } * 1.3; - - next.head.position = Vec3::new(stop * -2.0, -1.5 + stop * 2.5 + s_a.head.0, s_a.head.1); - next.head.orientation = - Quaternion::rotation_z(stop * -1.0 + tilt * -2.0) * Quaternion::rotation_y(stop * -0.3); - next.head.scale = Vec3::one() * s_a.head_scale; - - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); - next.chest.orientation = - Quaternion::rotation_z(stop * 1.2 + stress * stop * 0.02 + tilt * -2.0); - - next.belt.position = Vec3::new(0.0, s_a.belt.0, s_a.belt.1); - next.belt.orientation = Quaternion::rotation_z(stop * -0.5 + tilt * 2.0); - - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); - next.shorts.orientation = Quaternion::rotation_z(stop * -0.7 + tilt * 4.0); - - match active_tool_kind { - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { - next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.sthl.3); - - next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); - - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); - - next.control.position = Vec3::new( - s_a.stc.0 + quick * 3.5 * (1.0 / (stopa + 0.1)), - s_a.stc.1, - s_a.stc.2 - stop * 3.0, - ); - next.control.orientation = Quaternion::rotation_x(s_a.stc.3 + stop * -0.2) - * Quaternion::rotation_y(s_a.stc.4) - * Quaternion::rotation_z(s_a.stc.5 + stop * 0.2); - }, - Some(ToolKind::Bow) => { - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.bhl.0, s_a.bhl.1, s_a.bhl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3); - next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); - next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3); - - next.hold.position = Vec3::new(0.0, -1.0, -5.2); - next.hold.orientation = Quaternion::rotation_x(-1.57); - next.hold.scale = Vec3::one() * 1.0; - - next.control.position = Vec3::new( - 3.0 + s_a.bc.0 + stop * 13.0, - -5.0 + s_a.bc.1 + stop * 4.0, - 6.0 + s_a.bc.2, - ); - next.control.orientation = Quaternion::rotation_x(0.2 + s_a.bc.3) - * Quaternion::rotation_y(-0.8 + s_a.bc.4 + stop * -0.4) - * Quaternion::rotation_z(s_a.bc.5 + stop * -0.6); - }, - _ => {}, - } - - if velocity > 0.2 { - next.foot_l.position = Vec3::new( - -s_a.foot.0 - foot * 1.5, - s_a.foot.1 + foote * 2.0, - s_a.foot.2, - ); - next.foot_l.orientation = Quaternion::rotation_x(foote * -0.1) - * Quaternion::rotation_z(0.4) - * Quaternion::rotation_y(0.15); - - next.foot_r.position = Vec3::new( - s_a.foot.0 + foot * 1.5, - s_a.foot.1 + foote * -1.5, - s_a.foot.2, - ); - next.foot_r.orientation = Quaternion::rotation_z(0.4); - } else { - next.foot_l.position = Vec3::new( - -s_a.foot.0, - -2.5 + stop * -1.3, - s_a.foot.2 + tilt * -4.0 * foot, - ); - next.foot_l.orientation = - Quaternion::rotation_x(stop * -0.2 - 0.2 + stop * stress * 0.02) - * Quaternion::rotation_z(stop * 0.1) - * Quaternion::rotation_y(stop * 0.08); - - next.foot_r.position = - Vec3::new(s_a.foot.0, 3.5 + stop * 1.5, s_a.foot.2 + tilt * 4.0 * foot); - next.foot_r.orientation = - Quaternion::rotation_x(stop * 0.1) * Quaternion::rotation_z(stop * 0.1); - } - - next - } -} diff --git a/voxygen/anim/src/character/chargeswing.rs b/voxygen/anim/src/character/chargeswing.rs index 847bdbaf64..2af043041e 100644 --- a/voxygen/anim/src/character/chargeswing.rs +++ b/voxygen/anim/src/character/chargeswing.rs @@ -37,7 +37,7 @@ impl Animation for ChargeswingAnimation { * ((anim_time as f32 * lab as f32 * 8.0).sin()); // end spin stuff - let (movement1, movement2, movement3, tension) = match stage_section { + let (move1, move2, move3, tension) = match stage_section { Some(StageSection::Charge) => ( (anim_time as f32).min(1.0), 0.0, @@ -54,7 +54,7 @@ impl Animation for ChargeswingAnimation { next.hand_l.position = Vec3::new( s_a.hhl.0, s_a.hhl.1, - s_a.hhl.2 + (movement2 * -8.0) * (1.0 - movement3), + s_a.hhl.2 + (move2 * -8.0) * (1.0 - move3), ); next.hand_l.orientation = Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4); @@ -63,27 +63,26 @@ impl Animation for ChargeswingAnimation { Quaternion::rotation_x(s_a.hhr.3) * Quaternion::rotation_y(s_a.hhr.4); next.control.position = Vec3::new( - s_a.hc.0 + (movement1 * -2.0 + movement2 * -3.0) * (1.0 - movement3), - s_a.hc.1 + (movement1 * 2.0 + movement2 * 3.0) * (1.0 - movement3), - s_a.hc.2 + (movement1 * 2.0 + movement2 * 4.0) * (1.0 - movement3), - ); - next.control.orientation = Quaternion::rotation_x(s_a.hc.3+(movement2*4.0)*(1.0-movement3)) - * Quaternion::rotation_y(s_a.hc.4+(tension*0.08+movement1 * 0.7+movement2*-3.5)*(1.0-movement3))//+fire * 0.1 - * Quaternion::rotation_z(s_a.hc.5+(movement1 * 0.2+movement2*-0.5)*(1.0-movement3)); - next.chest.orientation = Quaternion::rotation_z( - short * 0.04 + (movement1 * 2.0 + movement2 * -2.5) * (1.0 - movement3), + s_a.hc.0 + (move1 * -2.0 + move2 * -3.0) * (1.0 - move3), + s_a.hc.1 + (move1 * 2.0 + move2 * 3.0) * (1.0 - move3), + s_a.hc.2 + (move1 * 2.0 + move2 * 4.0) * (1.0 - move3), ); + next.control.orientation = Quaternion::rotation_x(s_a.hc.3+(move2*4.0)*(1.0-move3)) + * Quaternion::rotation_y(s_a.hc.4+(tension*0.08+move1 * 0.7+move2*-3.5)*(1.0-move3))//+fire * 0.1 + * Quaternion::rotation_z(s_a.hc.5+(move1 * 0.2+move2*-0.5)*(1.0-move3)); + next.chest.orientation = + Quaternion::rotation_z(short * 0.04 + (move1 * 2.0 + move2 * -2.5) * (1.0 - move3)); next.belt.orientation = - Quaternion::rotation_z(short * 0.08 + (movement1 * -1.0) * (1.0 - movement3)); + Quaternion::rotation_z(short * 0.08 + (move1 * -1.0) * (1.0 - move3)); next.shorts.orientation = - Quaternion::rotation_z(short * 0.15 + (movement1 * -1.0) * (1.0 - movement3)); + Quaternion::rotation_z(short * 0.15 + (move1 * -1.0) * (1.0 - move3)); next.head.position = Vec3::new( - 0.0 + (movement1 * -1.0 + movement2 * 2.0) * (1.0 - movement3), - s_a.head.0 + (movement1 * 1.0) * (1.0 - movement3), + 0.0 + (move1 * -1.0 + move2 * 2.0) * (1.0 - move3), + s_a.head.0 + (move1 * 1.0) * (1.0 - move3), s_a.head.1, ); next.head.orientation = - Quaternion::rotation_z((movement1 * -1.5 + movement2 * 2.2) * (1.0 - movement3)); + Quaternion::rotation_z((move1 * -1.5 + move2 * 2.2) * (1.0 - move3)); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); } next diff --git a/voxygen/anim/src/character/leapmelee.rs b/voxygen/anim/src/character/leapmelee.rs index 89fc320472..a07fb06b75 100644 --- a/voxygen/anim/src/character/leapmelee.rs +++ b/voxygen/anim/src/character/leapmelee.rs @@ -31,7 +31,7 @@ impl Animation for LeapAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3, movement4) = match stage_section { + let (move1, move2, move3, move4) = match stage_section { Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0, 0.0), Some(StageSection::Movement) => (1.0, (anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(0.25), 0.0), @@ -50,38 +50,37 @@ impl Animation for LeapAnimation { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); next.control.position = Vec3::new( - s_a.hc.0 + movement2 * -10.0 + movement3 * 6.0, - s_a.hc.1 + movement2 * 5.0 + movement3 * 7.0, - s_a.hc.2 + movement2 * 5.0 + movement3 * -10.0, + s_a.hc.0 + move2 * -10.0 + move3 * 6.0, + s_a.hc.1 + move2 * 5.0 + move3 * 7.0, + s_a.hc.2 + move2 * 5.0 + move3 * -10.0, ); next.control.orientation = - Quaternion::rotation_x(s_a.hc.3 + movement2 * 1.57 + movement3 * -2.3) - * Quaternion::rotation_y(s_a.hc.4 + movement2 * 1.3) - * Quaternion::rotation_z(s_a.hc.5 + movement2 * -1.0 + movement3 * 0.5); + Quaternion::rotation_x(s_a.hc.3 + move2 * 1.57 + move3 * -2.3) + * Quaternion::rotation_y(s_a.hc.4 + move2 * 1.3) + * Quaternion::rotation_z(s_a.hc.5 + move2 * -1.0 + move3 * 0.5); next.chest.orientation = - Quaternion::rotation_x( - movement1 * 0.3 + movement2 * 0.3 + movement3 * -0.9 + movement4 * 0.3, - ) * Quaternion::rotation_z(movement1 * 0.5 + movement2 * 0.2 + movement3 * -0.7); + Quaternion::rotation_x(move1 * 0.3 + move2 * 0.3 + move3 * -0.9 + move4 * 0.3) + * Quaternion::rotation_z(move1 * 0.5 + move2 * 0.2 + move3 * -0.7); - next.head.orientation = Quaternion::rotation_x(movement3 * 0.2) - * Quaternion::rotation_y(0.0 + movement2 * -0.1) - * Quaternion::rotation_z(movement1 * -0.4 + movement2 * -0.2 + movement3 * 0.6); + next.head.orientation = Quaternion::rotation_x(move3 * 0.2) + * Quaternion::rotation_y(0.0 + move2 * -0.1) + * Quaternion::rotation_z(move1 * -0.4 + move2 * -0.2 + move3 * 0.6); - //next.hand_l.position = Vec3::new(-12.0 + movement3 * 10.0, 0.0, 0.0); + //next.hand_l.position = Vec3::new(-12.0 + move3 * 10.0, 0.0, 0.0); next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + movement3 * 13.0, - s_a.foot.2 + movement3 * -2.0, + s_a.foot.1 + move3 * 13.0, + s_a.foot.2 + move3 * -2.0, ); - next.foot_l.orientation = Quaternion::rotation_x(-0.8 + movement3 * 1.7); + next.foot_l.orientation = Quaternion::rotation_x(-0.8 + move3 * 1.7); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + 8.0 + movement3 * -13.0, - s_a.foot.2 + 5.0 + movement3 * -5.0, + s_a.foot.1 + 8.0 + move3 * -13.0, + s_a.foot.2 + 5.0 + move3 * -5.0, ); - next.foot_r.orientation = Quaternion::rotation_x(0.9 + movement3 * -1.7); + next.foot_r.orientation = Quaternion::rotation_x(0.9 + move3 * -1.7); } else if let Some(ToolKind::Axe) = active_tool_kind { next.hand_l.position = Vec3::new(s_a.ahl.0, s_a.ahl.1, s_a.ahl.2); next.hand_l.orientation = Quaternion::rotation_x(s_a.ahl.3); @@ -93,45 +92,42 @@ impl Animation for LeapAnimation { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); next.control.position = Vec3::new( - s_a.ac.0 + movement1 * 8.0, - s_a.ac.1 + movement1 * 4.0 + movement3 * 3.0, - s_a.ac.2 + movement1 * 6.0 + movement2 * 1.0 + movement3 * -14.0, + s_a.ac.0 + move1 * 8.0, + s_a.ac.1 + move1 * 4.0 + move3 * 3.0, + s_a.ac.2 + move1 * 6.0 + move2 * 1.0 + move3 * -14.0, ); next.control.orientation = Quaternion::rotation_x( - s_a.ac.3 + movement1 * -2.0 + movement2 * 0.7 + movement3 * -2.3 - ) * Quaternion::rotation_y(s_a.ac.4)// + movement1 * 0.5) - * Quaternion::rotation_z(s_a.ac.5+movement1*PI); // - movement1 * 0.2); + s_a.ac.3 + move1 * -2.0 + move2 * 0.7 + move3 * -2.3 + ) * Quaternion::rotation_y(s_a.ac.4)// + move1 * 0.5) + * Quaternion::rotation_z(s_a.ac.5+move1*PI); // - move1 * 0.2); next.torso.orientation = Quaternion::rotation_x( - -0.3 + movement2 * -1.6 * PI - + movement2 * -0.3 - + movement3 * -0.2 * PI - + movement4 * -0.1 * PI, + -0.3 + move2 * -1.6 * PI + move2 * -0.3 + move3 * -0.2 * PI + move4 * -0.1 * PI, ) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(0.0); next.head.orientation = - Quaternion::rotation_x(0.0 + movement1 * -0.4 + movement2 * 0.4 + movement3 * 0.2); + Quaternion::rotation_x(0.0 + move1 * -0.4 + move2 * 0.4 + move3 * 0.2); next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + movement2 * 4.0 + movement3 * -1.0, + s_a.foot.1 + move2 * 4.0 + move3 * -1.0, s_a.foot.2, ); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + movement2 * 4.0 + movement3 * -8.0, - s_a.foot.2 + movement3 * -3.0, + s_a.foot.1 + move2 * 4.0 + move3 * -8.0, + s_a.foot.2 + move3 * -3.0, ); next.foot_l.orientation = - Quaternion::rotation_x(movement1 * 0.9 - movement2 * 1.0 + movement3 * 1.8); + Quaternion::rotation_x(move1 * 0.9 - move2 * 1.0 + move3 * 1.8); - next.foot_r.orientation = Quaternion::rotation_x(movement1 * 0.9 - movement3 * 1.8); + next.foot_r.orientation = Quaternion::rotation_x(move1 * 0.9 - move3 * 1.8); - next.belt.orientation = Quaternion::rotation_x(movement1 * 0.22 + movement2 * 0.1); - next.shorts.orientation = Quaternion::rotation_x(movement1 * 0.3 + movement2 * 0.1); + next.belt.orientation = Quaternion::rotation_x(move1 * 0.22 + move2 * 0.1); + next.shorts.orientation = Quaternion::rotation_x(move1 * 0.3 + move2 * 0.1); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); } diff --git a/voxygen/anim/src/character/mod.rs b/voxygen/anim/src/character/mod.rs index c43b068fed..36e2cae0c4 100644 --- a/voxygen/anim/src/character/mod.rs +++ b/voxygen/anim/src/character/mod.rs @@ -2,7 +2,6 @@ pub mod alpha; pub mod beam; pub mod beta; pub mod block; -pub mod charge; pub mod chargeswing; pub mod climb; pub mod dance; @@ -33,14 +32,14 @@ pub mod wield; // Reexports pub use self::{ alpha::AlphaAnimation, beam::BeamAnimation, beta::BetaAnimation, block::BlockAnimation, - charge::ChargeAnimation, chargeswing::ChargeswingAnimation, climb::ClimbAnimation, - dance::DanceAnimation, dash::DashAnimation, equip::EquipAnimation, - glidewield::GlideWieldAnimation, gliding::GlidingAnimation, idle::IdleAnimation, - jump::JumpAnimation, leapmelee::LeapAnimation, repeater::RepeaterAnimation, - roll::RollAnimation, run::RunAnimation, shockwave::ShockwaveAnimation, shoot::ShootAnimation, - sit::SitAnimation, sneak::SneakAnimation, spin::SpinAnimation, spinmelee::SpinMeleeAnimation, - staggered::StaggeredAnimation, stand::StandAnimation, stunned::StunnedAnimation, - swim::SwimAnimation, swimwield::SwimWieldAnimation, talk::TalkAnimation, wield::WieldAnimation, + chargeswing::ChargeswingAnimation, climb::ClimbAnimation, dance::DanceAnimation, + dash::DashAnimation, equip::EquipAnimation, glidewield::GlideWieldAnimation, + gliding::GlidingAnimation, idle::IdleAnimation, jump::JumpAnimation, leapmelee::LeapAnimation, + repeater::RepeaterAnimation, roll::RollAnimation, run::RunAnimation, + shockwave::ShockwaveAnimation, shoot::ShootAnimation, sit::SitAnimation, sneak::SneakAnimation, + spin::SpinAnimation, spinmelee::SpinMeleeAnimation, staggered::StaggeredAnimation, + stand::StandAnimation, stunned::StunnedAnimation, swim::SwimAnimation, + swimwield::SwimWieldAnimation, talk::TalkAnimation, wield::WieldAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; use common::comp; diff --git a/voxygen/anim/src/character/repeater.rs b/voxygen/anim/src/character/repeater.rs index bf6d204d0a..75583139ac 100644 --- a/voxygen/anim/src/character/repeater.rs +++ b/voxygen/anim/src/character/repeater.rs @@ -30,7 +30,7 @@ impl Animation for RepeaterAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3, _movement4) = match stage_section { + let (move1, move2, move3, _move4) = match stage_section { Some(StageSection::Movement) => (anim_time as f32, 0.0, 0.0, 0.0), Some(StageSection::Buildup) => (1.0, anim_time as f32, 0.0, 0.0), Some(StageSection::Shoot) => (1.0, 1.0, anim_time as f32, 0.0), @@ -52,48 +52,43 @@ impl Animation for RepeaterAnimation { next.hold.position = Vec3::new(1.2, -1.0, -5.2); next.hold.orientation = Quaternion::rotation_x(-1.7) * Quaternion::rotation_z(-0.1); - next.hold.scale = Vec3::one() * 1.0 * (1.0 - movement3); + next.hold.scale = Vec3::one() * 1.0 * (1.0 - move3); next.foot_l.position = Vec3::new( - -s_a.foot.0 + movement1 * -0.75 - 0.75, - s_a.foot.1 + movement1 * 4.0 + 4.0, - s_a.foot.2 + movement1 * 2.5 + 2.5, + -s_a.foot.0 + move1 * -0.75 - 0.75, + s_a.foot.1 + move1 * 4.0 + 4.0, + s_a.foot.2 + move1 * 2.5 + 2.5, ); - next.foot_l.orientation = - Quaternion::rotation_x(movement1 * 0.6 + 0.6 + movement2 * -0.2) - * Quaternion::rotation_z(movement1 * 0.3 + 0.3); + next.foot_l.orientation = Quaternion::rotation_x(move1 * 0.6 + 0.6 + move2 * -0.2) + * Quaternion::rotation_z(move1 * 0.3 + 0.3); next.foot_r.position = Vec3::new( - s_a.foot.0 + movement1 * 0.75 + 0.75, - s_a.foot.1 + movement1 * 4.0 + 4.0, - s_a.foot.2 + movement1 * 2.5 + 2.5, + s_a.foot.0 + move1 * 0.75 + 0.75, + s_a.foot.1 + move1 * 4.0 + 4.0, + s_a.foot.2 + move1 * 2.5 + 2.5, ); - next.foot_r.orientation = - Quaternion::rotation_x(movement1 * 0.6 + 0.6 + movement2 * -0.2) - * Quaternion::rotation_z(movement1 * -0.3 - 0.3); - next.shorts.position = Vec3::new( - 0.0, - s_a.shorts.0 + movement1 * 4.0, - s_a.shorts.1 + movement1 * 1.0, - ); - next.shorts.orientation = Quaternion::rotation_x(movement1 * 0.6); - next.belt.position = Vec3::new(0.0, s_a.belt.0 + movement1 * 2.0, s_a.belt.1); - next.belt.orientation = Quaternion::rotation_x(movement1 * 0.2); + next.foot_r.orientation = Quaternion::rotation_x(move1 * 0.6 + 0.6 + move2 * -0.2) + * Quaternion::rotation_z(move1 * -0.3 - 0.3); + next.shorts.position = + Vec3::new(0.0, s_a.shorts.0 + move1 * 4.0, s_a.shorts.1 + move1 * 1.0); + next.shorts.orientation = Quaternion::rotation_x(move1 * 0.6); + next.belt.position = Vec3::new(0.0, s_a.belt.0 + move1 * 2.0, s_a.belt.1); + next.belt.orientation = Quaternion::rotation_x(move1 * 0.2); next.control.position = Vec3::new( - s_a.bc.0 + movement1 * 5.0, - s_a.bc.1 + movement1 * 3.0, - s_a.bc.2 + movement1 * 1.0, + s_a.bc.0 + move1 * 5.0, + s_a.bc.1 + move1 * 3.0, + s_a.bc.2 + move1 * 1.0, ); - next.control.orientation = Quaternion::rotation_x(s_a.bc.3 + movement1 * 0.4) - * Quaternion::rotation_y(s_a.bc.4 + movement1 * 0.8) + next.control.orientation = Quaternion::rotation_x(s_a.bc.3 + move1 * 0.4) + * Quaternion::rotation_y(s_a.bc.4 + move1 * 0.8) * Quaternion::rotation_z(s_a.bc.5); - next.head.orientation = Quaternion::rotation_y(movement1 * 0.15 + movement2 * 0.05); + next.head.orientation = Quaternion::rotation_y(move1 * 0.15 + move2 * 0.05); next.torso.orientation = - Quaternion::rotation_x(movement1 * 0.1 + movement2 * 0.1 + movement3 * 0.15); + Quaternion::rotation_x(move1 * 0.1 + move2 * 0.1 + move3 * 0.15); next.hand_l.position = Vec3::new( - 2.0 + fire(movement3) * -6.0 - 3.0, - 1.5 + fire(movement3) * -6.0 - 3.0, + 2.0 + fire(move3) * -6.0 - 3.0, + 1.5 + fire(move3) * -6.0 - 3.0, 0.0, ); next.hand_l.orientation = Quaternion::rotation_x(1.20) diff --git a/voxygen/anim/src/character/shockwave.rs b/voxygen/anim/src/character/shockwave.rs index 22569a62da..e8dd676d3b 100644 --- a/voxygen/anim/src/character/shockwave.rs +++ b/voxygen/anim/src/character/shockwave.rs @@ -34,7 +34,7 @@ impl Animation for ShockwaveAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), @@ -56,53 +56,53 @@ impl Animation for ShockwaveAnimation { next.control.orientation = Quaternion::rotation_x(s_a.stc.3) * Quaternion::rotation_y(s_a.stc.4); - let twist = movement1 * 0.8; + let twist = move1 * 0.8; next.control.position = Vec3::new( - s_a.stc.0 + (movement1 * 5.0) * (1.0 - movement3), - s_a.stc.1 + (movement1 * 5.0) * (1.0 - movement3), - s_a.stc.2 + (movement1 * 10.0 + movement2 * -10.0) * (1.0 - movement3), + s_a.stc.0 + (move1 * 5.0) * (1.0 - move3), + s_a.stc.1 + (move1 * 5.0) * (1.0 - move3), + s_a.stc.2 + (move1 * 10.0 + move2 * -10.0) * (1.0 - move3), ); next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement1 * 0.8) * (1.0 - movement3)) + Quaternion::rotation_x(s_a.stc.3 + (move1 * 0.8) * (1.0 - move3)) * Quaternion::rotation_y( - s_a.stc.4 + (movement1 * -0.15 + movement2 * -0.15) * (1.0 - movement3), + s_a.stc.4 + (move1 * -0.15 + move2 * -0.15) * (1.0 - move3), ) - * Quaternion::rotation_z((movement1 * 0.8 + movement2 * -0.8) * (1.0 - movement3)); + * Quaternion::rotation_z((move1 * 0.8 + move2 * -0.8) * (1.0 - move3)); - next.head.orientation = Quaternion::rotation_x((movement1 * 0.4) * (1.0 - movement3)) - * Quaternion::rotation_z((twist * 0.2 + movement2 * -0.8) * (1.0 - movement3)); + next.head.orientation = Quaternion::rotation_x((move1 * 0.4) * (1.0 - move3)) + * Quaternion::rotation_z((twist * 0.2 + move2 * -0.8) * (1.0 - move3)); next.chest.position = Vec3::new( 0.0, s_a.chest.0, - s_a.chest.1 + (movement1 * 2.0 + movement2 * -4.0) * (1.0 - movement3), + s_a.chest.1 + (move1 * 2.0 + move2 * -4.0) * (1.0 - move3), ); - next.chest.orientation = Quaternion::rotation_x((movement2 * -0.8) * (1.0 - movement3)) - * Quaternion::rotation_z(twist * -0.2 + movement2 * -0.1 + (1.0 - movement3)); + next.chest.orientation = Quaternion::rotation_x((move2 * -0.8) * (1.0 - move3)) + * Quaternion::rotation_z(twist * -0.2 + move2 * -0.1 + (1.0 - move3)); - next.belt.orientation = Quaternion::rotation_x((movement2 * 0.2) * (1.0 - movement3)) - * Quaternion::rotation_z((twist * 0.6 + movement2 * -0.48) * (1.0 - movement3)); + next.belt.orientation = Quaternion::rotation_x((move2 * 0.2) * (1.0 - move3)) + * Quaternion::rotation_z((twist * 0.6 + move2 * -0.48) * (1.0 - move3)); - next.shorts.orientation = Quaternion::rotation_x((movement2 * 0.3) * (1.0 - movement3)) - * Quaternion::rotation_z((twist + movement2 * -0.8) * (1.0 - movement3)); + next.shorts.orientation = Quaternion::rotation_x((move2 * 0.3) * (1.0 - move3)) + * Quaternion::rotation_z((twist + move2 * -0.8) * (1.0 - move3)); if velocity < 0.5 { next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + movement1 * -7.0 + movement2 * 7.0, + s_a.foot.1 + move1 * -7.0 + move2 * 7.0, s_a.foot.2, ); - next.foot_l.orientation = Quaternion::rotation_x(movement1 * -0.8 + movement2 * 0.8) - * Quaternion::rotation_z(movement1 * 0.3 + movement2 * -0.3); + next.foot_l.orientation = Quaternion::rotation_x(move1 * -0.8 + move2 * 0.8) + * Quaternion::rotation_z(move1 * 0.3 + move2 * -0.3); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + movement1 * 5.0 + movement2 * -5.0, + s_a.foot.1 + move1 * 5.0 + move2 * -5.0, s_a.foot.2, ); - next.foot_r.orientation = Quaternion::rotation_y(movement1 * -0.3 + movement2 * 0.3) - * Quaternion::rotation_z(movement1 * 0.4 + movement2 * -0.4); + next.foot_r.orientation = Quaternion::rotation_y(move1 * -0.3 + move2 * 0.3) + * Quaternion::rotation_z(move1 * 0.4 + move2 * -0.4); } next } diff --git a/voxygen/anim/src/character/shoot.rs b/voxygen/anim/src/character/shoot.rs index 8a6a63e269..d16ac15bcd 100644 --- a/voxygen/anim/src/character/shoot.rs +++ b/voxygen/anim/src/character/shoot.rs @@ -63,14 +63,14 @@ impl Animation for ShootAnimation { } * 1.3; match active_tool_kind { Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), _ => (0.0, 0.0, 0.0), }; - let xmove = (movement1 as f32 * 6.0 * lab as f32 + PI).sin(); - let ymove = (movement1 as f32 * 6.0 * lab as f32 + PI * (0.5)).sin(); + let xmove = (move1 as f32 * 6.0 * lab as f32 + PI).sin(); + let ymove = (move1 as f32 * 6.0 * lab as f32 + PI * (0.5)).sin(); next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); next.hand_l.orientation = Quaternion::rotation_x(s_a.sthl.3); @@ -82,22 +82,21 @@ impl Animation for ShootAnimation { next.main.orientation = Quaternion::rotation_y(0.0); next.control.position = Vec3::new( - s_a.stc.0 + (xmove * 3.0 + movement1 * -4.0) * (1.0 - movement3), - s_a.stc.1 + (2.0 + ymove * 3.0 + movement2 * 3.0) * (1.0 - movement3), + s_a.stc.0 + (xmove * 3.0 + move1 * -4.0) * (1.0 - move3), + s_a.stc.1 + (2.0 + ymove * 3.0 + move2 * 3.0) * (1.0 - move3), s_a.stc.2, ); next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement2 * 0.6) * (1.0 - movement3)) - * Quaternion::rotation_y(s_a.stc.4 + (movement1 * 0.5 + movement2 * -0.5)) + Quaternion::rotation_x(s_a.stc.3 + (move2 * 0.6) * (1.0 - move3)) + * Quaternion::rotation_y(s_a.stc.4 + (move1 * 0.5 + move2 * -0.5)) * Quaternion::rotation_z( - s_a.stc.5 - - (0.2 + movement1 * -0.5 + movement2 * 0.8) * (1.0 - movement3), + s_a.stc.5 - (0.2 + move1 * -0.5 + move2 * 0.8) * (1.0 - move3), ); next.chest.orientation = - Quaternion::rotation_z((movement1 * 0.3 + movement2 * 0.2) * (1.0 - movement3)); + Quaternion::rotation_z((move1 * 0.3 + move2 * 0.2) * (1.0 - move3)); next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); next.head.orientation = Quaternion::rotation_z( - tilt * -2.5 + (movement1 * -0.2 + movement2 * -0.4) * (1.0 - movement3), + tilt * -2.5 + (move1 * -0.2 + move2 * -0.4) * (1.0 - move3), ); if speed < 0.5 { @@ -117,7 +116,7 @@ impl Animation for ShootAnimation { }; }, Some(ToolKind::Bow) => { - let (_movement1, movement2, _movement3) = match stage_section { + let (_move1, move2, _move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), @@ -126,37 +125,36 @@ impl Animation for ShootAnimation { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); next.hand_l.position = Vec3::new( - s_a.bhl.0 + movement2 * -2.0, - s_a.bhl.1 + movement2 * -6.0, - s_a.bhl.2 + movement2 * -3.0, + s_a.bhl.0 + move2 * -2.0, + s_a.bhl.1 + move2 * -6.0, + s_a.bhl.2 + move2 * -3.0, ); next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3); next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3); - next.hold.position = Vec3::new(0.0, -1.0 + movement2 * 2.0, -5.2 + movement2 * 7.0); + next.hold.position = Vec3::new(0.0, -1.0 + move2 * 2.0, -5.2 + move2 * 7.0); next.hold.orientation = Quaternion::rotation_x(-1.57); - next.hold.scale = Vec3::one() * 1.0 * (1.0 - movement2); + next.hold.scale = Vec3::one() * 1.0 * (1.0 - move2); next.control.position = Vec3::new(s_a.bc.0 + 11.0, s_a.bc.1 + 2.0, s_a.bc.2 + 8.0); - next.control.orientation = - Quaternion::rotation_x(0.0 + (movement2 as f32 * 0.1).sin()) - * Quaternion::rotation_y(s_a.bc.4 - 1.25) - * Quaternion::rotation_z(s_a.bc.5 - 0.2 + (movement2 as f32 * -0.2).sin()); + next.control.orientation = Quaternion::rotation_x(0.0 + (move2 as f32 * 0.1).sin()) + * Quaternion::rotation_y(s_a.bc.4 - 1.25) + * Quaternion::rotation_z(s_a.bc.5 - 0.2 + (move2 as f32 * -0.2).sin()); next.chest.orientation = Quaternion::rotation_z(0.8); next.head.position = Vec3::new(0.0 - 2.0, s_a.head.0, s_a.head.1); next.head.orientation = - Quaternion::rotation_z(tilt * -2.5 - 0.5 + (movement2 as f32 * 0.2).sin()); + Quaternion::rotation_z(tilt * -2.5 - 0.5 + (move2 as f32 * 0.2).sin()); if speed < 0.5 { next.chest.orientation = - Quaternion::rotation_z(0.8 + (movement2 as f32 * 0.1).sin()); + Quaternion::rotation_z(0.8 + (move2 as f32 * 0.1).sin()); next.belt.orientation = Quaternion::rotation_x(0.07) - * Quaternion::rotation_z((movement2 as f32 * -0.1).sin()); + * Quaternion::rotation_z((move2 as f32 * -0.1).sin()); next.shorts.orientation = Quaternion::rotation_x(0.08) - * Quaternion::rotation_z((movement2 as f32 * -0.15).sin()); + * Quaternion::rotation_z((move2 as f32 * -0.15).sin()); next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1 - 5.0, s_a.foot.2); next.foot_l.orientation = Quaternion::rotation_x(-0.5); diff --git a/voxygen/anim/src/character/spinmelee.rs b/voxygen/anim/src/character/spinmelee.rs index 26b810d9ff..cba5ca8a50 100644 --- a/voxygen/anim/src/character/spinmelee.rs +++ b/voxygen/anim/src/character/spinmelee.rs @@ -30,7 +30,7 @@ impl Animation for SpinMeleeAnimation { s_a: &SkeletonAttr, ) -> Self::Skeleton { *rate = 1.0; - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)), @@ -50,24 +50,19 @@ impl Animation for SpinMeleeAnimation { next.hand_r.orientation = Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); - next.control.position = Vec3::new(s_a.sc.0, s_a.sc.1, s_a.sc.2 + movement1 * 2.0); + next.control.position = Vec3::new(s_a.sc.0, s_a.sc.1, s_a.sc.2 + move1 * 2.0); next.control.orientation = - Quaternion::rotation_x(s_a.sc.3 + movement1 * -PI / 2.5 + movement3 * PI / 2.0) - * Quaternion::rotation_z( - s_a.sc.5 + movement1 * -PI / 2.0 + movement3 * PI / 2.0, - ); - next.torso.orientation = Quaternion::rotation_z(movement2 * PI * 2.0); + Quaternion::rotation_x(s_a.sc.3 + move1 * -PI / 2.5 + move3 * PI / 2.0) + * Quaternion::rotation_z(s_a.sc.5 + move1 * -PI / 2.0 + move3 * PI / 2.0); + next.torso.orientation = Quaternion::rotation_z(move2 * PI * 2.0); - next.chest.position = Vec3::new( - 0.0, - s_a.chest.0 + movement1 * -2.0, - s_a.chest.1 + movement1 * -3.0, - ); - next.chest.orientation = Quaternion::rotation_x(movement1 * -0.3) - * Quaternion::rotation_y(movement1 * 0.15 + movement3 * -0.15); + next.chest.position = + Vec3::new(0.0, s_a.chest.0 + move1 * -2.0, s_a.chest.1 + move1 * -3.0); + next.chest.orientation = Quaternion::rotation_x(move1 * -0.3) + * Quaternion::rotation_y(move1 * 0.15 + move3 * -0.15); next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_x(movement1 * 0.2 + movement3 * 0.15) - * Quaternion::rotation_z(movement2 * 0.8 + movement3 * -0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.2 + move3 * 0.15) + * Quaternion::rotation_z(move2 * 0.8 + move3 * -0.6); next.belt.orientation = Quaternion::rotation_x(0.1); next.shorts.orientation = Quaternion::rotation_x(0.2); }, @@ -82,63 +77,52 @@ impl Animation for SpinMeleeAnimation { next.hand_r.orientation = Quaternion::rotation_x(s_a.ahr.3) * Quaternion::rotation_z(s_a.ahr.5); - next.control.position = Vec3::new( - s_a.ac.0 + movement1 * 8.0, - s_a.ac.1, - s_a.ac.2 + movement1 * -4.0, - ); + next.control.position = + Vec3::new(s_a.ac.0 + move1 * 8.0, s_a.ac.1, s_a.ac.2 + move1 * -4.0); next.control.orientation = - Quaternion::rotation_x(s_a.ac.3 + movement1 * -0.8 * (1.0 - movement3)) - * Quaternion::rotation_y(s_a.ac.4 + movement1 * -PI * (1.0 - movement3)) - * Quaternion::rotation_z(s_a.ac.5 + movement1 * 1.2 * (1.0 - movement3)); + Quaternion::rotation_x(s_a.ac.3 + move1 * -0.8 * (1.0 - move3)) + * Quaternion::rotation_y(s_a.ac.4 + move1 * -PI * (1.0 - move3)) + * Quaternion::rotation_z(s_a.ac.5 + move1 * 1.2 * (1.0 - move3)); - next.head.orientation = - Quaternion::rotation_x(movement1 * -0.2 * (1.0 - movement3)) - * Quaternion::rotation_z(movement1 * 0.4 * (1.0 - movement3)); - next.head.position = Vec3::new(0.0, s_a.head.0 + movement1 * 2.0, s_a.head.1); + next.head.orientation = Quaternion::rotation_x(move1 * -0.2 * (1.0 - move3)) + * Quaternion::rotation_z(move1 * 0.4 * (1.0 - move3)); + next.head.position = Vec3::new(0.0, s_a.head.0 + move1 * 2.0, s_a.head.1); - next.chest.position = Vec3::new( - 0.0, - s_a.chest.0, - s_a.chest.1 + movement1 * -1.0 * (1.0 - movement3), - ); - next.chest.orientation = - Quaternion::rotation_x(movement1 * 0.3 * (1.0 - movement3)) - * Quaternion::rotation_y(movement1 * 0.3 * (1.0 - movement3)); + next.chest.position = + Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + move1 * -1.0 * (1.0 - move3)); + next.chest.orientation = Quaternion::rotation_x(move1 * 0.3 * (1.0 - move3)) + * Quaternion::rotation_y(move1 * 0.3 * (1.0 - move3)); next.belt.position = Vec3::new( 0.0, 1.0 + s_a.belt.0, - s_a.belt.1 + movement1 * 0.5 * (1.0 - movement3), + s_a.belt.1 + move1 * 0.5 * (1.0 - move3), ); next.belt.orientation = Quaternion::rotation_x(0.15); next.shorts.position = Vec3::new( 0.0, - 1.0 + s_a.shorts.0 + movement1 * 1.0 * (1.0 - movement3), - s_a.shorts.1 + movement1 * 1.0 * (1.0 - movement3), + 1.0 + s_a.shorts.0 + move1 * 1.0 * (1.0 - move3), + s_a.shorts.1 + move1 * 1.0 * (1.0 - move3), ); next.shorts.orientation = - Quaternion::rotation_x(0.15 + 0.15 * movement1 * (1.0 - movement3)); + Quaternion::rotation_x(0.15 + 0.15 * move1 * (1.0 - move3)); - next.torso.orientation = Quaternion::rotation_z( - movement1 * 1.0 * (1.0 - movement3) + movement2 * -2.0 * PI, - ); + next.torso.orientation = + Quaternion::rotation_z(move1 * 1.0 * (1.0 - move3) + move2 * -2.0 * PI); next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + movement1 * 7.0 * (1.0 - movement3), + s_a.foot.1 + move1 * 7.0 * (1.0 - move3), s_a.foot.2, ); - next.foot_l.orientation = - Quaternion::rotation_x(movement1 * 0.8 * (1.0 - movement3)); + next.foot_l.orientation = Quaternion::rotation_x(move1 * 0.8 * (1.0 - move3)); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + movement1 * -3.0 * (1.0 - movement3), + s_a.foot.1 + move1 * -3.0 * (1.0 - move3), s_a.foot.2, ); - next.foot_r.orientation = - Quaternion::rotation_x(movement1 * -0.5 * (1.0 - movement3)); + next.foot_r.orientation = Quaternion::rotation_x(move1 * -0.5 * (1.0 - move3)); }, _ => {}, diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs index c94f3d1540..487a6d2dbe 100644 --- a/voxygen/src/scene/figure/cache.rs +++ b/voxygen/src/scene/figure/cache.rs @@ -86,6 +86,7 @@ pub(super) struct CharacterToolKey { /// Character data that exists in third person only. #[derive(Eq, Hash, PartialEq)] pub(super) struct CharacterThirdPersonKey { + pub head: Option, pub shoulder: Option, pub chest: Option, pub belt: Option, @@ -141,6 +142,17 @@ impl CharacterCacheKey { None } else { Some(CharacterThirdPersonKey { + head: if let Some(ItemKind::Armor(Armor { + kind: ArmorKind::Head(armor), + .. + })) = inventory + .equipped(EquipSlot::Armor(ArmorSlot::Head)) + .map(|i| i.kind()) + { + Some(armor.clone()) + } else { + None + }, shoulder: if let Some(ItemKind::Armor(Armor { kind: ArmorKind::Shoulder(armor), .. diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 6dda5b6c69..2753eaa04d 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -2469,23 +2469,11 @@ impl FishSmallLateralSpec { //// -#[derive(Deserialize)] -struct BipedSmallCentralSpec(HashMap<(BSSpecies, BSBodyType), SidedBSCentralVoxSpec>); - -#[derive(Deserialize)] -struct SidedBSCentralVoxSpec { - head: BipedSmallCentralSubSpec, - tail: BipedSmallCentralSubSpec, -} -#[derive(Deserialize)] -struct BipedSmallCentralSubSpec { - offset: [f32; 3], // Should be relative to initial origin - central: VoxSimple, -} - #[derive(Deserialize)] struct BipedSmallWeaponSpec(HashMap); #[derive(Deserialize)] +struct BipedSmallArmorHeadSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] struct BipedSmallArmorHandSpec(ArmorVoxSpecMap); #[derive(Deserialize)] struct BipedSmallArmorFootSpec(ArmorVoxSpecMap); @@ -2493,15 +2481,18 @@ struct BipedSmallArmorFootSpec(ArmorVoxSpecMap); struct BipedSmallArmorChestSpec(ArmorVoxSpecMap); #[derive(Deserialize)] struct BipedSmallArmorPantsSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] +struct BipedSmallArmorTailSpec(ArmorVoxSpecMap); make_vox_spec!( biped_small::Body, struct BipedSmallSpec { - central: BipedSmallCentralSpec = "voxygen.voxel.biped_small_central_manifest", armor_foot: BipedSmallArmorFootSpec = "voxygen.voxel.biped_small_armor_foot_manifest", weapon: BipedSmallWeaponSpec = "voxygen.voxel.biped_small_weapon_manifest", armor_hand: BipedSmallArmorHandSpec = "voxygen.voxel.biped_small_armor_hand_manifest", armor_chest: BipedSmallArmorChestSpec = "voxygen.voxel.biped_small_armor_chest_manifest", armor_pants: BipedSmallArmorPantsSpec = "voxygen.voxel.biped_small_armor_pants_manifest", + armor_head: BipedSmallArmorHeadSpec = "voxygen.voxel.biped_small_armor_head_manifest", + armor_tail: BipedSmallArmorTailSpec = "voxygen.voxel.biped_small_armor_tail_manifest", }, |FigureKey { body, extra }, spec| { @@ -2523,10 +2514,11 @@ make_vox_spec!( [ - Some(spec.central.read().0.mesh_head( - body.species, - body.body_type, - )), + third_person.map(|loadout| { + spec.armor_head.read().0.mesh_head( + loadout.head.as_deref(), + ) + }), third_person.map(|loadout| { spec.armor_chest.read().0.mesh_chest( loadout.chest.as_deref(), @@ -2537,10 +2529,11 @@ make_vox_spec!( loadout.pants.as_deref(), ) }), - Some(spec.central.read().0.mesh_tail( - body.species, - body.body_type, - )), + third_person.map(|loadout| { + spec.armor_tail.read().0.mesh_tail( + loadout.belt.as_deref(), + ) + }), tool.and_then(|tool| tool.active.as_ref()).map(|tool| { spec.weapon.read().0.mesh_main( tool, @@ -2570,40 +2563,27 @@ make_vox_spec!( }, ); -impl BipedSmallCentralSpec { - fn mesh_head(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No head specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, +impl BipedSmallArmorHeadSpec { + fn mesh_head(&self, head: Option<&str>) -> BoneMeshes { + let spec = if let Some(head) = head { + match self.0.map.get(head) { + Some(spec) => spec, + None => { + error!(?head, "No head specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default }; - let central = graceful_load_segment(&spec.head.central.0); - (central, Vec3::from(spec.head.offset)) - } + let head_segment = graceful_load_segment(&spec.vox_spec.0); - fn mesh_tail(&self, species: BSSpecies, body_type: BSBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No tail specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, - }; - let central = graceful_load_segment(&spec.tail.central.0); + let offset = Vec3::new(spec.vox_spec.1[0], spec.vox_spec.1[1], spec.vox_spec.1[2]); - (central, Vec3::from(spec.tail.offset)) + (head_segment, offset) } } - impl BipedSmallArmorChestSpec { fn mesh_chest(&self, chest: Option<&str>) -> BoneMeshes { let spec = if let Some(chest) = chest { @@ -2625,6 +2605,27 @@ impl BipedSmallArmorChestSpec { (chest_segment, offset) } } +impl BipedSmallArmorTailSpec { + fn mesh_tail(&self, tail: Option<&str>) -> BoneMeshes { + let spec = if let Some(tail) = tail { + match self.0.map.get(tail) { + Some(spec) => spec, + None => { + error!(?tail, "No tail specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default + }; + + let tail_segment = graceful_load_segment(&spec.vox_spec.0); + + let offset = Vec3::new(spec.vox_spec.1[0], spec.vox_spec.1[1], spec.vox_spec.1[2]); + + (tail_segment, offset) + } +} impl BipedSmallArmorPantsSpec { fn mesh_pants(&self, pants: Option<&str>) -> BoneMeshes { let spec = if let Some(pants) = pants { diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 95a7e7f4ef..5ad3081589 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1326,16 +1326,6 @@ impl FigureMgr { skeleton_attr, ) }, - /* - CharacterState::Charge(_) => { - anim::character::ChargeAnimation::update_skeleton( - &target_base, - (active_tool_kind, time), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ) - }*/ CharacterState::Equipping { .. } => { anim::character::EquipAnimation::update_skeleton( &target_base, diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 7389fa66f4..62da9320a7 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -642,7 +642,7 @@ impl ParticleMgr { let theta = ori_vec.y.atan2(ori_vec.x); let dtheta = radians / distance; - let heartbeats = self.scheduler.heartbeats(Duration::from_millis(5)); + let heartbeats = self.scheduler.heartbeats(Duration::from_millis(2)); for heartbeat in 0..heartbeats { if shockwave.properties.requires_ground { diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index 22afd7de26..f1e0217fe6 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -861,17 +861,6 @@ impl Floor { 2 ], 3 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::BipedLarge( - comp::biped_large::Body::random_with( - dynamic_rng, - &comp::biped_large::Species::Minotaur, - ), - )) - .with_name("Minotaur".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - ], - 4 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) .with_body(comp::Body::Golem( comp::golem::Body::random_with( @@ -882,6 +871,17 @@ impl Floor { .with_name("Stonework Defender".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], + 4 => vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Minotaur, + ), + )) + .with_name("Minotaur".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + ], 5 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) .with_body(comp::Body::BipedLarge( From 5792faa99296a504033bd07d1fe634774bae8d57 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 14 Feb 2021 02:04:29 -0500 Subject: [PATCH 21/36] some new moves, combine biped weapons into one file --- assets/common/abilities/spear/dash.ron | 19 + assets/common/abilities/swordsimple/dash.ron | 19 + .../abilities/swordsimple/doublestrike.ron | 2 +- .../unique/wendigomagic/firebomb.ron | 18 + .../unique/wendigomagic/singlestrike.ron | 25 + .../abilities/weapon_ability_manifest.ron | 9 +- .../npc_weapons/unique/wendigo_magic.ron | 16 + assets/voxygen/shaders/particle-vert.glsl | 2 +- .../voxel/biped_large_central_manifest.ron | 4 +- .../voxel/biped_large_weapon_manifest.ron | 20 + .../voxygen/voxel/biped_weapon_manifest.ron | 768 ++++++++++++++++++ .../voxel/humanoid_main_weapon_manifest.ron | 66 ++ common/src/comp/body.rs | 27 +- common/src/comp/inventory/item/tool.rs | 1 + common/src/comp/inventory/loadout_builder.rs | 2 +- voxygen/anim/src/biped_large/alpha.rs | 27 +- voxygen/anim/src/biped_large/dash.rs | 149 ++-- voxygen/anim/src/biped_large/idle.rs | 6 +- voxygen/anim/src/biped_large/mod.rs | 2 +- voxygen/anim/src/biped_large/shoot.rs | 96 ++- voxygen/anim/src/biped_large/wield.rs | 11 +- voxygen/anim/src/biped_small/shoot.rs | 3 +- voxygen/anim/src/biped_small/wield.rs | 4 +- voxygen/anim/src/character/alpha.rs | 47 +- voxygen/anim/src/character/chargeswing.rs | 54 +- voxygen/anim/src/golem/alpha.rs | 3 +- voxygen/src/scene/figure/load.rs | 8 +- voxygen/src/scene/figure/mod.rs | 2 + 28 files changed, 1187 insertions(+), 223 deletions(-) create mode 100644 assets/common/abilities/spear/dash.ron create mode 100644 assets/common/abilities/swordsimple/dash.ron create mode 100644 assets/common/abilities/unique/wendigomagic/firebomb.ron create mode 100644 assets/common/abilities/unique/wendigomagic/singlestrike.ron create mode 100644 assets/common/items/npc_weapons/unique/wendigo_magic.ron create mode 100644 assets/voxygen/voxel/biped_weapon_manifest.ron diff --git a/assets/common/abilities/spear/dash.ron b/assets/common/abilities/spear/dash.ron new file mode 100644 index 0000000000..4af6873b5f --- /dev/null +++ b/assets/common/abilities/spear/dash.ron @@ -0,0 +1,19 @@ +DashMelee( + energy_cost: 100, + base_damage: 80, + scaled_damage: 160, + base_poise_damage: 0, + scaled_poise_damage: 0, + base_knockback: 8.0, + scaled_knockback: 7.0, + range: 5.0, + angle: 45.0, + energy_drain: 600, + forward_speed: 4.0, + buildup_duration: 0.25, + charge_duration: 0.6, + swing_duration: 0.1, + recover_duration: 0.5, + infinite_charge: true, + is_interruptible: true, +) diff --git a/assets/common/abilities/swordsimple/dash.ron b/assets/common/abilities/swordsimple/dash.ron new file mode 100644 index 0000000000..0da7356930 --- /dev/null +++ b/assets/common/abilities/swordsimple/dash.ron @@ -0,0 +1,19 @@ +DashMelee( + energy_cost: 100, + base_damage: 80, + scaled_damage: 160, + base_poise_damage: 0, + scaled_poise_damage: 0, + base_knockback: 8.0, + scaled_knockback: 7.0, + range: 5.0, + angle: 45.0, + energy_drain: 0, + forward_speed: 4.0, + buildup_duration: 0.25, + charge_duration: 0.6, + swing_duration: 0.1, + recover_duration: 0.5, + infinite_charge: true, + is_interruptible: true, +) diff --git a/assets/common/abilities/swordsimple/doublestrike.ron b/assets/common/abilities/swordsimple/doublestrike.ron index e7523eb2fd..dd14cc0ea1 100644 --- a/assets/common/abilities/swordsimple/doublestrike.ron +++ b/assets/common/abilities/swordsimple/doublestrike.ron @@ -10,7 +10,7 @@ ComboMelee( range: 3.5, angle: 50.0, base_buildup_duration: 0.4, - base_swing_duration: 0.1, + base_swing_duration: 0.08, base_recover_duration: 0.5, forward_movement: 2.5, ), diff --git a/assets/common/abilities/unique/wendigomagic/firebomb.ron b/assets/common/abilities/unique/wendigomagic/firebomb.ron new file mode 100644 index 0000000000..16444d31a3 --- /dev/null +++ b/assets/common/abilities/unique/wendigomagic/firebomb.ron @@ -0,0 +1,18 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.5, + recover_duration: 0.35, + projectile: Fireball( + damage: 100.0, + radius: 5.0, + energy_regen: 50, + ), + projectile_body: Object(BoltFire), + /*projectile_light: Some(LightEmitter { + col: (1.0, 0.75, 0.11).into(), + ..Default::default() + }),*/ + projectile_gravity: Some(Gravity(0.3)), + projectile_speed: 60.0, + can_continue: true, +) diff --git a/assets/common/abilities/unique/wendigomagic/singlestrike.ron b/assets/common/abilities/unique/wendigomagic/singlestrike.ron new file mode 100644 index 0000000000..98007d86c9 --- /dev/null +++ b/assets/common/abilities/unique/wendigomagic/singlestrike.ron @@ -0,0 +1,25 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 100, + damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 5.0, + range: 3.5, + angle: 30.0, + base_buildup_duration: 0.5, + base_swing_duration: 0.2, + base_recover_duration: 0.4, + forward_movement: 5.0, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index 4683401e1d..5d08c7c957 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -31,7 +31,7 @@ ), Spear: ( primary: "common.abilities.spear.doublestrike", - secondary: "common.abilities.spear.doublestrike", + secondary: "common.abilities.spear.dash", skills: [], ), @@ -43,7 +43,7 @@ ), SwordSimple: ( primary: "common.abilities.swordsimple.doublestrike", - secondary: "common.abilities.swordsimple.doublestrike", + secondary: "common.abilities.swordsimple.dash", skills: [ ], ), @@ -92,6 +92,11 @@ secondary: "common.abilities.unique.beastclaws.basic", abilities: [], ), + Unique(WendigoMagic): ( + primary: "common.abilities.unique.wendigomagic.firebomb", + secondary: "common.abilities.unique.wendigomagic.singlestrike", + skills: [], + ), Unique(QuadMedQuick): ( primary: "common.abilities.unique.quadmedquick.triplestrike", secondary: "common.abilities.unique.quadmedquick.dash", diff --git a/assets/common/items/npc_weapons/unique/wendigo_magic.ron b/assets/common/items/npc_weapons/unique/wendigo_magic.ron new file mode 100644 index 0000000000..c60905f9b1 --- /dev/null +++ b/assets/common/items/npc_weapons/unique/wendigo_magic.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Wendigo Magic", + description: "spook.", + kind: Tool( + ( + kind: Unique(WendigoMagic), + stats: ( + equip_time_millis: 500, + power: 1.00, + poise_strength: 1.00, + speed: 1.0, + ), + ) + ), + quality: Low, +) diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index 3bef025d4d..95cfc1ecaf 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -347,7 +347,7 @@ void main() { } else if (inst_mode == EXPLOSION) { f_reflect = 0.0; // Fire doesn't reflect light, it emits it attr = Attr( - inst_dir * ((rand0+1.0)/2 + 0.5) * slow_end(0.2) + 0.1 * grav_vel(earth_gravity), + inst_dir * ((rand0+1.0)/2 + 0.4) * slow_end(2.0) + 0.3 * grav_vel(earth_gravity), vec3((3 * (1 - slow_start(0.1)))), vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, start_end(1.0, 0.0)), spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index 73b13c66b0..884c1e6b83 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -106,7 +106,7 @@ ), (Wendigo, Male): ( head: ( - offset: (-15.0, -4.5, -9.5), + offset: (-15.0, -4.5, -3.5), central: ("npc.wendigo.male.head"), ), torso_upper: ( @@ -132,7 +132,7 @@ ), (Wendigo, Female): ( head: ( - offset: (-15.0, -4.5, -9.5), + offset: (-15.0, -4.5, -3.5), central: ("npc.wendigo.male.head"), ), torso_upper: ( diff --git a/assets/voxygen/voxel/biped_large_weapon_manifest.ron b/assets/voxygen/voxel/biped_large_weapon_manifest.ron index 8f1c4bf46a..18763ebf10 100644 --- a/assets/voxygen/voxel/biped_large_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_large_weapon_manifest.ron @@ -39,4 +39,24 @@ vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), color: None ), + "common.items.npc_weapons.unique.wendigo_magic": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), + "common.items.npc_weapons.spear.wooden_spear": ( + vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.weapon.spear.adlet": ( + vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.bow.adlet": ( + vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.staff.gnoll": ( + vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + color: None + ), }) diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron new file mode 100644 index 0000000000..7d2bb18bbf --- /dev/null +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -0,0 +1,768 @@ +({ //Swords + "common.items.weapons.sword.starter_sword": ( + vox_spec: ("weapon.sword.rusty_2h", (-1.5, -6.5, -4.0)), + color: None + ), + "common.items.npc_weapons.sword.starter_sword": ( + vox_spec: ("weapon.sword.rusty_2h", (-1.5, -6.5, -4.0)), + color: None + ), + "common.items.weapons.sword.wood_sword": ( + vox_spec: ("weapon.sword.wood_ore_2h", (-1.5, -6.5, -4.0)), + color: None + ), + "common.items.weapons.sword.zweihander_sword_0": ( + vox_spec: ("weapon.sword.zweihander_2h-0", (-1.5, -6.5, -4.0)), + color: None + ), + "common.items.npc_weapons.sword.zweihander_sword_0": ( + vox_spec: ("weapon.sword.zweihander_2h-0", (-1.5, -6.5, -4.0)), + color: None + ), + "common.items.weapons.sword.short_sword_0": ( + vox_spec: ("weapon.sword.short_2h-0", (-1.5, -6.5, -1.0)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_dam-0": ( + vox_spec: ("weapon.sword.greatsword_2h_dam-0", (-1.0, -4.5, -6.5)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_dam-1": ( + vox_spec: ("weapon.sword.greatsword_2h_dam-1", (-1.0, -4.5, -6.5)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_dam-2": ( + vox_spec: ("weapon.sword.greatsword_2h_dam-2", (-1.0, -4.5, -6.5)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_simple-0": ( + vox_spec: ("weapon.sword.greatsword_2h_simple-0", (-1.0, -4.5, -6.5)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_simple-1": ( + vox_spec: ("weapon.sword.greatsword_2h_simple-1", (-1.0, -4.5, -6.5)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_simple-2": ( + vox_spec: ("weapon.sword.greatsword_2h_simple-2", (-1.0, -4.5, -6.5)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_orn-0": ( + vox_spec: ("weapon.sword.greatsword_2h_orn-0", (-1.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_orn-1": ( + vox_spec: ("weapon.sword.greatsword_2h_orn-1", (-1.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_orn-2": ( + vox_spec: ("weapon.sword.greatsword_2h_orn-2", (-1.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_fine-0": ( + vox_spec: ("weapon.sword.greatsword_2h_fine-0", (-2.0, -6.5, -8.0)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_fine-1": ( + vox_spec: ("weapon.sword.greatsword_2h_fine-1", (-2.0, -6.5, -8.0)), + color: None + ), + "common.items.weapons.sword.greatsword_2h_fine-2": ( + vox_spec: ("weapon.sword.greatsword_2h_fine-2", (-2.0, -6.5, -8.0)), + color: None + ), + "common.items.weapons.sword.long_2h_dam-0": ( + vox_spec: ("weapon.sword.long_2h_dam-0", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_dam-1": ( + vox_spec: ("weapon.sword.long_2h_dam-1", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_dam-2": ( + vox_spec: ("weapon.sword.long_2h_dam-2", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_dam-3": ( + vox_spec: ("weapon.sword.long_2h_dam-3", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_dam-4": ( + vox_spec: ("weapon.sword.long_2h_dam-4", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_dam-5": ( + vox_spec: ("weapon.sword.long_2h_dam-5", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_simple-0": ( + vox_spec: ("weapon.sword.long_2h_simple-0", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_simple-1": ( + vox_spec: ("weapon.sword.long_2h_simple-1", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_simple-2": ( + vox_spec: ("weapon.sword.long_2h_simple-2", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_simple-3": ( + vox_spec: ("weapon.sword.long_2h_simple-3", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_simple-4": ( + vox_spec: ("weapon.sword.long_2h_simple-4", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_simple-5": ( + vox_spec: ("weapon.sword.long_2h_simple-5", (-1.0, -3.5, -5.0)), + color: None + ), + "common.items.weapons.sword.long_2h_orn-0": ( + vox_spec: ("weapon.sword.long_2h_orn-0", (-1.0, -3.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_orn-1": ( + vox_spec: ("weapon.sword.long_2h_orn-1", (-1.0, -3.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_orn-2": ( + vox_spec: ("weapon.sword.long_2h_orn-2", (-1.0, -3.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_orn-3": ( + vox_spec: ("weapon.sword.long_2h_orn-3", (-1.0, -3.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_orn-4": ( + vox_spec: ("weapon.sword.long_2h_orn-4", (-1.0, -3.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_orn-5": ( + vox_spec: ("weapon.sword.long_2h_orn-5", (-1.0, -3.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_fine-0": ( + vox_spec: ("weapon.sword.long_2h_fine-0", (-2.0, -4.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_fine-1": ( + vox_spec: ("weapon.sword.long_2h_fine-1", (-2.0, -4.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_fine-2": ( + vox_spec: ("weapon.sword.long_2h_fine-2", (-2.0, -4.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_fine-3": ( + vox_spec: ("weapon.sword.long_2h_fine-3", (-2.0, -4.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_fine-4": ( + vox_spec: ("weapon.sword.long_2h_fine-4", (-2.0, -4.5, -6.0)), + color: None + ), + "common.items.weapons.sword.long_2h_fine-5": ( + vox_spec: ("weapon.sword.long_2h_fine-5", (-2.0, -4.5, -6.0)), + color: None + ), + "common.items.weapons.sword.cultist_purp_2h-0": ( + vox_spec: ("weapon.sword.cultist_purp_2h-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.npc_weapons.sword.cultist_purp_2h-0": ( + vox_spec: ("weapon.sword.cultist_purp_2h-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.debug.cultist_purp_2h_boss-0": ( + vox_spec: ("weapon.sword.cultist_purp_2h-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.npc_weapons.sword.cultist_purp_2h_boss-0": ( + vox_spec: ("weapon.sword.cultist_purp_2h-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword.frost_cleaver_2h-0": ( + vox_spec: ("weapon.sword.frost_cleaver-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword.frost_cleaver_2h-1": ( + vox_spec: ("weapon.sword.frost_cleaver-1", (-2.0, -4.5, -7.5)), + color: None + ), + // Axes + "common.items.npc_weapons.axe.starter_axe": ( + vox_spec: ("weapon.axe.2haxe_rusty", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.axe.starter_axe": ( + vox_spec: ("weapon.axe.2haxe_rusty", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.axe.orc_axe-0": ( + vox_spec: ("weapon.axe.2haxe_orc-0", (-1.5, -6.0, -4.5)), + color: None + ), + "common.items.weapons.axe.worn_iron_axe-0": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-0", (-1.5, -3.0, -4.0)), + color: None + ), + "common.items.weapons.axe.worn_iron_axe-1": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-1", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.axe.worn_iron_axe-2": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-2", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.axe.worn_iron_axe-3": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-3", (-1.5, -8.0, -4.0)),//offcenterY + color: None + ), + "common.items.weapons.axe.worn_iron_axe-4": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-4", (-1.5, -4.0, -5.5)), + color: None + ), + "common.items.weapons.axe.bronze_axe-0": ( + vox_spec: ("weapon.axe.2haxe_bronze-0", (-1.5, -4.0, -4.5)), + color: None + ), + "common.items.weapons.axe.bronze_axe-1": ( + vox_spec: ("weapon.axe.2haxe_bronze-1", (-1.5, -3.0, -5.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-0": ( + vox_spec: ("weapon.axe.2haxe_iron-0", (-1.5, -5.0, -5.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-1": ( + vox_spec: ("weapon.axe.2haxe_iron-1", (-1.5, -5.0, -5.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-2": ( + vox_spec: ("weapon.axe.2haxe_iron-2", (-1.5, -5.0, -5.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-3": ( + vox_spec: ("weapon.axe.2haxe_iron-3", (-1.5, -6.0, -6.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-4": ( + vox_spec: ("weapon.axe.2haxe_iron-4", (-1.5, -6.0, -5.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-5": ( + vox_spec: ("weapon.axe.2haxe_iron-5", (-1.5, -6.0, -5.0)), + color: None + ), + "common.items.weapons.axe.iron_axe-6": ( + vox_spec: ("weapon.axe.2haxe_iron-6", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe.iron_axe-7": ( + vox_spec: ("weapon.axe.2haxe_iron-7", (-1.5, -5.0, -5.0)), + color: None + ), + "common.items.weapons.axe.iron_axe-8": ( + vox_spec: ("weapon.axe.2haxe_iron-8", (-1.5, -5.0, -5.0)), + color: None + ), + "common.items.weapons.axe.iron_axe-9": ( + vox_spec: ("weapon.axe.2haxe_iron-9", (-1.5, -4.0, -5.0)), + color: None + ), + "common.items.weapons.axe.steel_axe-0": ( + vox_spec: ("weapon.axe.2haxe_steel-0", (-1.5, -6.0, -4.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-1": ( + vox_spec: ("weapon.axe.2haxe_steel-1", (-1.5, -7.0, -5.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-2": ( + vox_spec: ("weapon.axe.2haxe_steel-2", (-1.5, -3.5, -3.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-3": ( + vox_spec: ("weapon.axe.2haxe_steel-3", (-1.5, -4.0, -6.0)), + color: None + ), + "common.items.weapons.axe.steel_axe-4": ( + vox_spec: ("weapon.axe.2haxe_steel-4", (-1.5, -4.0, -5.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-5": ( + vox_spec: ("weapon.axe.2haxe_steel-5", (-1.5, -5.5, -5.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-6": ( + vox_spec: ("weapon.axe.2haxe_steel-6", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.axe.bloodsteel_axe-0": ( + vox_spec: ("weapon.axe.2haxe_bloodsteel-0", (-1.5, -7.0, -4.0)), + color: None + ), + "common.items.weapons.axe.bloodsteel_axe-1": ( + vox_spec: ("weapon.axe.2haxe_bloodsteel-1", (-1.5, -5.5, -5.0)), + color: None + ), + "common.items.weapons.axe.bloodsteel_axe-2": ( + vox_spec: ("weapon.axe.2haxe_bloodsteel-2", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.axe.cobalt_axe-0": ( + vox_spec: ("weapon.axe.2haxe_cobalt-0", (-1.5, -5.0, -5.5)), + color: None + ), + "common.items.npc_weapons.axe.malachite_axe-0": ( + vox_spec: ("weapon.axe.2haxe_malachite-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe.malachite_axe-0": ( + vox_spec: ("weapon.axe.2haxe_malachite-0", (-1.5, -5.0, -6.0)), + color: None + ), + // Hammers + "common.items.weapons.hammer.hammer_1": ( + vox_spec: ("weapon.hammer.2hhammer_rusty", (-2.5, -5.5, -4.5)), + color: None + ), + "common.items.weapons.hammer.starter_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_rusty", (-2.5, -5.5, -4.5)), + color: None + ), + "common.items.npc_weapons.hammer.starter_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_rusty", (-2.5, -5.5, -4.5)), + color: None + ), + "common.items.weapons.hammer.wood_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_wood-0", (-3.5, -5.5, -4.5)), + color: None + ), + "common.items.weapons.hammer.flimsy_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_flimsy", (-2.5, -5.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.stone_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_stone-0", (-3.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.stone_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_stone-1", (-3.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.stone_hammer-2": ( + vox_spec: ("weapon.hammer.2hhammer_stone-2", (-3.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.stone_hammer-3": ( + vox_spec: ("weapon.hammer.2hhammer_stone-3", (-2.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.worn_iron_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_worn_iron-0", (-2.5, -4.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.worn_iron_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_worn_iron-1", (-2.5, -4.5, -3.0)), + color: None + ), + "common.items.weapons.hammer.worn_iron_hammer-2": ( + vox_spec: ("weapon.hammer.2hhammer_worn_iron-2", (-2.5, -3.5, -3.0)), + color: None + ), + "common.items.weapons.hammer.worn_iron_hammer-3": ( + vox_spec: ("weapon.hammer.2hhammer_worn_iron-3", (-2.5, -4.5, -3.0)), + color: None + ), + "common.items.weapons.hammer.bronze_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_bronze-0", (-2.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.bronze_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_bronze-1", (-3.5, -3.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_iron-0", (-2.5, -6.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_iron-1", (-3.5, -7.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-2": ( + vox_spec: ("weapon.hammer.2hhammer_iron-2", (-3.5, -3.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-3": ( + vox_spec: ("weapon.hammer.2hhammer_iron-3", (-3.5, -3.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-4": ( + vox_spec: ("weapon.hammer.2hhammer_iron-4", (-3.5, -7.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-5": ( + vox_spec: ("weapon.hammer.2hhammer_iron-5", (-1.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-6": ( + vox_spec: ("weapon.hammer.2hhammer_iron-6", (-2.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-7": ( + vox_spec: ("weapon.hammer.2hhammer_iron-7", (-3.5, -7.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-8": ( + vox_spec: ("weapon.hammer.2hhammer_iron-8", (-1.5, -5.5, -7.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_steel-0", (-2.5, -5.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_steel-1", (-3.5, -7.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-2": ( + vox_spec: ("weapon.hammer.2hhammer_steel-2", (-3.5, -3.5, -3.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-3": ( + vox_spec: ("weapon.hammer.2hhammer_steel-3", (-5.5, -5.5, -4.5)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-4": ( + vox_spec: ("weapon.hammer.2hhammer_steel-4", (-3.5, -7.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-5": ( + vox_spec: ("weapon.hammer.2hhammer_steel-5", (-5.5, -5.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.cobalt_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_cobalt-0", (-2.5, -7.5, -6.0)), + color: None + ), + "common.items.weapons.hammer.cobalt_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_cobalt-1", (-4.5, -4.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.runic_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_runic", (-2.5, -7.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.ramshead_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_ramshead", (-4.5, -5.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.mjolnir": ( + vox_spec: ("weapon.hammer.2hhammer_mjolnir", (-2.5, -8.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.cultist_purp_2h-0": ( + vox_spec: ("weapon.hammer.cult_purp-0", (-3.5, -4.5, -5.0)), + color: None + ), + "common.items.npc_weapons.hammer.cultist_purp_2h-0": ( + vox_spec: ("weapon.hammer.cult_purp-0", (-3.5, -4.5, -5.0)), + color: None + ), + /*"Craftsman": ( //TODO This should be a 1h hammer! + vox_spec: ("weapon.hammer.craftsman", (-2.0, -5.0, -5.5)), + color: None + ),*/ + // Daggers + "common.items.weapons.dagger.starter_dagger": ( + vox_spec: ("weapon.dagger.dagger_rusty", (-1.5, -3.0, -3.0)), + color: None + ), + "common.items.npc_weapons.dagger.starter_dagger": ( + vox_spec: ("weapon.dagger.dagger_rusty", (-1.5, -3.0, -3.0)), + color: None + ), + "common.items.weapons.dagger.basic_0": ( + vox_spec: ("weapon.dagger.dagger_basic-0", (-1.5, -3.0, -3.0)), + color: None + ), + "common.items.weapons.dagger.cultist_0": ( + vox_spec: ("weapon.dagger.dagger_cult-0", (-1.5, -3.0, -3.0)), + color: None + ), + // Shields + "common.items.weapons.shield.shield_1": ( + vox_spec: ("weapon.shield.wood-0", (-2.5, -5.5, -5.5)), + color: None + ), + "common.items.npc_weapons.shield.shield_1": ( + vox_spec: ("weapon.shield.wood-0", (-2.5, -5.5, -5.5)), + color: None + ), + // Bows + "common.items.weapons.bow.starter_bow": ( + vox_spec: ("weapon.bow.shortbow_starter", (-0.5, -3.0, -8.5)), + color: None + ), + "common.items.weapons.bow.wood_shortbow-0": ( + vox_spec: ("weapon.bow.shortbow_wood-0", (-0.5, -3.0, -9.5)), + color: None + ), + "common.items.weapons.bow.wood_shortbow-1": ( + vox_spec: ("weapon.bow.shortbow_wood-1", (-0.5, -3.5, -9.5)), + color: None + ), + "common.items.weapons.bow.leafy_shortbow-0": ( + vox_spec: ("weapon.bow.shortbow_leafy-0", (-0.5, -4.5, -9.0)), + color: None + ), + "common.items.weapons.bow.wood_longbow-0": ( + vox_spec: ("weapon.bow.longbow_wood-0", (-0.5, -3.5, -12.5)), + color: None + ), + "common.items.weapons.bow.wood_longbow-1": ( + vox_spec: ("weapon.bow.longbow_wood-1", (-1.5, -3.5, -12.5)), + color: None + ), + "common.items.weapons.bow.leafy_longbow-0": ( + vox_spec: ("weapon.bow.longbow_leafy-0", (-1.5, -4.5, -12.5)), + color: None + ), + "common.items.weapons.bow.horn_longbow-0": ( + vox_spec: ("weapon.bow.longbow_horn-0", (-1.5, -4.5, -17.5)), + color: None + ), + "common.items.npc_weapons.bow.horn_longbow-0": ( + vox_spec: ("weapon.bow.longbow_horn-0", (-1.5, -4.5, -17.5)), + color: None + ), + "common.items.weapons.bow.iron_longbow-0": ( + vox_spec: ("weapon.bow.longbow_iron-0", (-1.5, -4.0, -16.0)), + color: None + ), + "common.items.weapons.bow.rare_longbow": ( + vox_spec: ("weapon.bow.longbow_rare", (-1.5, -5.0, -13.5)), + color: None + ), + "common.items.weapons.bow.nature_ore_longbow-0": ( + vox_spec: ("weapon.bow.longbow_ore_nature-0", (-1.5, -4.0, -15.0)), + color: None + ), + // Farming Equipment + "common.items.weapons.tool.broom": ( + vox_spec: ("weapon.tool.broom-0", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.tool.hoe": ( + vox_spec: ("weapon.tool.hoe_green", (-2.5, -4.5, -4.0)), + color: None + ), + "common.items.weapons.tool.pitchfork": ( + vox_spec: ("weapon.tool.pitchfork-0", (-1.0, -3.5, -4.0)), + color: None + ), + "common.items.weapons.tool.fishing_rod": ( + vox_spec: ("weapon.tool.fishing_rod_blue-0", (-2.5, -4.5, -4.0)), + color: None + ), + "common.items.weapons.tool.rake": ( + vox_spec: ("weapon.tool.rake-0", (-1.0, -5.5, -4.0)), + color: None + ), + "common.items.weapons.tool.pickaxe": ( + vox_spec: ("weapon.tool.pickaxe_green-0", (-1.5, -7.5, -4.0)), + color: None + ), + "common.items.weapons.tool.shovel-0": ( + vox_spec: ("weapon.tool.shovel_green", (-1.0, -2.5, -4.0)), + color: None + ), + "common.items.weapons.tool.shovel-1": ( + vox_spec: ("weapon.tool.shovel_gold", (-1.0, -2.5, -4.0)), + color: None + ), + "common.items.npc_weapons.tool.broom": ( + vox_spec: ("weapon.tool.broom-0", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.tool.hoe": ( + vox_spec: ("weapon.tool.hoe_green", (-2.5, -4.5, -4.0)), + color: None + ), + "common.items.npc_weapons.tool.pitchfork": ( + vox_spec: ("weapon.tool.pitchfork-0", (-1.0, -3.5, -4.0)), + color: None + ), + "common.items.npc_weapons.tool.fishing_rod": ( + vox_spec: ("weapon.tool.fishing_rod_blue-0", (-2.5, -4.5, -4.0)), + color: None + ), + "common.items.npc_weapons.tool.rake": ( + vox_spec: ("weapon.tool.rake-0", (-1.0, -5.5, -4.0)), + color: None + ), + "common.items.npc_weapons.tool.pickaxe": ( + vox_spec: ("weapon.tool.pickaxe_green-0", (-1.5, -7.5, -4.0)), + color: None + ), + "common.items.npc_weapons.tool.shovel-0": ( + vox_spec: ("weapon.tool.shovel_green", (-1.0, -2.5, -4.0)), + color: None + ), + "common.items.npc_weapons.tool.shovel-1": ( + vox_spec: ("weapon.tool.shovel_gold", (-1.0, -2.5, -4.0)), + color: None + ), + // Staves + "common.items.weapons.staff.staff_1": ( + vox_spec: ("weapon.staff.firestaff_starter", (-1.5, -3.0, -3.0)), + color: None + ), + "common.items.weapons.staff.starter_staff": ( + vox_spec: ("weapon.staff.firestaff_starter", (-1.5, -3.0, -3.0)), + color: None + ), + "common.items.weapons.staff.bone_staff": ( + vox_spec: ("weapon.staff.firestaff_bone", (-1.5, -2.5, -3.0)), + color: None + ), + "common.items.npc_weapons.staff.bone_staff": ( + vox_spec: ("weapon.staff.firestaff_bone", (-1.5, -2.5, -3.0)), + color: None + ), + "common.items.weapons.staff.amethyst_staff": ( + vox_spec: ("weapon.staff.firestaff_amethyst", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.staff.cultist_staff": ( + vox_spec: ("weapon.staff.firestaff_cultist", (-2.5, -2.5, -4.0)), + color: None + ), + "common.items.npc_weapons.staff.cultist_staff": ( + vox_spec: ("weapon.staff.firestaff_cultist", (-2.5, -2.5, -4.0)), + color: None + ), + // Healing sceptre + "common.items.weapons.sceptre.starter_sceptre": ( + vox_spec: ("weapon.sceptre.wood-simple", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.moon0": ( + vox_spec: ("weapon.sceptre.moon", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.staff_nature": ( + vox_spec: ("weapon.sceptre.wood-nature", (-1.0, -6.0, -5.0)), + color: None + ), + "common.items.weapons.sceptre.totem_green": ( + vox_spec: ("weapon.sceptre.totem_green", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.root_green0": ( + vox_spec: ("weapon.sceptre.root_green", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.fork0": ( + vox_spec: ("weapon.sceptre.fork", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.loops0": ( + vox_spec: ("weapon.sceptre.loops", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.root_evil": ( + vox_spec: ("weapon.sceptre.root_evil", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.sceptre_velorite_0": ( + vox_spec: ("weapon.sceptre.ore-nature", (-2.0, -6.0, -5.0)), + color: None + ), + // Misc + "common.items.debug.boost": ( + vox_spec: ("weapon.tool.broom_belzeshrub_purple", (-3.0, -4.0, -4.0)), + color: None + ), + "common.items.debug.possess": ( + vox_spec: ("weapon.tool.broom_belzeshrub_purple", (-3.0, -4.0, -4.0)), + color: None + ), + "common.items.debug.cultist_purp_2h_boss-0": ( + vox_spec: ("weapon.sword.frost_cleaver-1", (-2.0, -4.5, -7.5)), + color: None + ), + // Misc + "common.items.weapons.empty.empty": ( + vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)), + color: None + ), + "common.items.npc_weapons.empty.empty": ( + vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)), + color: None + ), + "common.items.npc_weapons.hammer.ogre_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_ogre", (-5.0, -5.5, -7.0)), + color: None + ), + "common.items.npc_weapons.staff.ogre_staff": ( + vox_spec: ("weapon.staff.firestaff_ogre", (-2.5, -5.5, -6.0)), + color: None + ), + "common.items.npc_weapons.hammer.cyclops_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_cyclops-0", (-5.0, -6.5, -7.0)), + color: None + ), + "common.items.npc_weapons.hammer.troll_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_troll", (-4.0, -6.0, -7.0)), + color: None + ), + "common.items.npc_weapons.sword.dullahan_sword": ( + vox_spec: ("weapon.sword.greatsword_2h_dullahan", (-1.5, -9.0, -10.0)), + color: None + ), + "common.items.npc_weapons.staff.saurok_staff": ( + vox_spec: ("weapon.staff.firestaff_saurok", (-3.0, -3.0, -6.0)), + color: None + ), + "common.items.npc_weapons.sword.saurok_sword": ( + vox_spec: ("weapon.sword.long_2h_saurok", (-1.5, -4.0, -5.0)), + color: None + ), + "common.items.npc_weapons.bow.saurok_bow": ( + vox_spec: ("weapon.bow.longbow_saurok", (-1.5, -4.0, -16.5)), + color: None + ), + "common.items.npc_weapons.staff.mindflayer_staff": ( + vox_spec: ("weapon.staff.firestaff_mindflayer", (-5.5, -3.5, -8.0)), + color: None + ), + "common.items.npc_weapons.unique.beast_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), + "common.items.npc_weapons.unique.wendigo_magic": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), + "common.items.npc_weapons.spear.wooden_spear": ( + vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.weapon.spear.adlet": ( + vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.bow.adlet": ( + vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.staff.gnoll": ( + vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + color: None + ), +}) diff --git a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron index 45f11c6aac..52ebbb4b71 100644 --- a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron +++ b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron @@ -924,4 +924,70 @@ vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)), color: None ), + "common.items.npc_weapons.empty.empty": ( + vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)), + color: None + ), +//BIPEDLARGE + "common.items.npc_weapons.hammer.ogre_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_ogre", (-5.0, -5.5, -7.0)), + color: None + ), + "common.items.npc_weapons.staff.ogre_staff": ( + vox_spec: ("weapon.staff.firestaff_ogre", (-2.5, -5.5, -6.0)), + color: None + ), + "common.items.npc_weapons.hammer.cyclops_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_cyclops-0", (-5.0, -6.5, -7.0)), + color: None + ), + "common.items.npc_weapons.hammer.troll_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_troll", (-4.0, -6.0, -7.0)), + color: None + ), + "common.items.npc_weapons.sword.dullahan_sword": ( + vox_spec: ("weapon.sword.greatsword_2h_dullahan", (-1.5, -9.0, -10.0)), + color: None + ), + "common.items.npc_weapons.staff.saurok_staff": ( + vox_spec: ("weapon.staff.firestaff_saurok", (-3.0, -3.0, -6.0)), + color: None + ), + "common.items.npc_weapons.sword.saurok_sword": ( + vox_spec: ("weapon.sword.long_2h_saurok", (-1.5, -4.0, -5.0)), + color: None + ), + "common.items.npc_weapons.bow.saurok_bow": ( + vox_spec: ("weapon.bow.longbow_saurok", (-1.5, -4.0, -16.5)), + color: None + ), + "common.items.npc_weapons.staff.mindflayer_staff": ( + vox_spec: ("weapon.staff.firestaff_mindflayer", (-5.5, -3.5, -8.0)), + color: None + ), + "common.items.npc_weapons.unique.beast_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), + "common.items.npc_weapons.unique.wendigo_magic": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), +//BIPEDSMALL + "common.items.npc_weapons.spear.wooden_spear": ( + vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.weapon.spear.adlet": ( + vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.bow.adlet": ( + vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.staff.gnoll": ( + vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + color: None + ), }) diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 9ac6e2baca..5cf3ccfc72 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -204,11 +204,13 @@ impl Body { Body::BirdSmall(_) => 0.6, Body::FishSmall(_) => 0.6, Body::BipedLarge(body) => match body.species { - biped_large::Species::Slysaurok => 2.3, - biped_large::Species::Occultsaurok => 2.8, - biped_large::Species::Mightysaurok => 2.3, - biped_large::Species::Mindflayer => 1.8, - _ => 4.6, + biped_large::Species::Slysaurok => 2.0, + biped_large::Species::Occultsaurok => 2.0, + biped_large::Species::Mightysaurok => 2.0, + biped_large::Species::Mindflayer => 2.2, + biped_large::Species::Minotaur => 3.0, + + _ => 2.3, }, Body::Golem(_) => 2.5, Body::BipedSmall(_) => 0.75, @@ -269,11 +271,16 @@ impl Body { Body::BirdSmall(_) => 1.1, Body::FishSmall(_) => 0.6, Body::BipedLarge(body) => match body.species { - biped_large::Species::Slysaurok => 2.3, - biped_large::Species::Occultsaurok => 2.8, - biped_large::Species::Mightysaurok => 2.3, - biped_large::Species::Mindflayer => 4.8, - _ => 4.6, + biped_large::Species::Slysaurok => 3.4, + biped_large::Species::Occultsaurok => 3.4, + biped_large::Species::Mightysaurok => 3.4, + biped_large::Species::Mindflayer => 6.3, + biped_large::Species::Minotaur => 8.0, + biped_large::Species::Dullahan => 5.5, + biped_large::Species::Cyclops => 6.5, + biped_large::Species::Werewolf => 3.5, + + _ => 6.0, }, Body::Golem(_) => 5.0, Body::BipedSmall(_) => 1.4, diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index de2484185a..865b11d3b4 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -374,6 +374,7 @@ impl assets::Compound for AbilityMap { pub enum UniqueKind { StoneGolemFist, BeastClaws, + WendigoMagic, QuadMedQuick, QuadMedJump, QuadMedHoof, diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 8e0112b698..87365e75d9 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -213,7 +213,7 @@ impl LoadoutBuilder { }, (biped_large::Species::Wendigo, _) => { main_tool = Some(Item::new_from_asset_expect( - "common.items.npc_weapons.unique.beast_claws", + "common.items.npc_weapons.unique.wendigo_magic", )); }, (biped_large::Species::Werewolf, _) => { diff --git a/voxygen/anim/src/biped_large/alpha.rs b/voxygen/anim/src/biped_large/alpha.rs index 3fcb8c6e24..996397736d 100644 --- a/voxygen/anim/src/biped_large/alpha.rs +++ b/voxygen/anim/src/biped_large/alpha.rs @@ -2,7 +2,10 @@ use super::{ super::{vek::*, Animation}, BipedLargeSkeleton, SkeletonAttr, }; -use common::{comp::item::ToolKind, states::utils::StageSection}; +use common::{ + comp::item::{ToolKind, UniqueKind}, + states::utils::StageSection, +}; use std::f32::consts::PI; pub struct AlphaAnimation; @@ -131,11 +134,23 @@ impl Animation for AlphaAnimation { * Quaternion::rotation_y(-1.8 + move1 * -0.8 + move2 * 3.0) * Quaternion::rotation_z(move1 * -0.8 + move2 * -0.8); }, - Some(ToolKind::Debug) => { - next.hand_l.position = Vec3::new(-7.0, 4.0, 3.0); - next.hand_l.orientation = Quaternion::rotation_x(1.27); - next.main.position = Vec3::new(-5.0, 5.0, 23.0); - next.main.orientation = Quaternion::rotation_x(PI); + Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { + next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4); + + next.control_l.position = + Vec3::new(-9.0 + move2 * 6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 10.5); + next.control_r.position = + Vec3::new(9.0 + move2 * -6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 14.5); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.3); }, _ => {}, } diff --git a/voxygen/anim/src/biped_large/dash.rs b/voxygen/anim/src/biped_large/dash.rs index ee48b01e56..324b32af2c 100644 --- a/voxygen/anim/src/biped_large/dash.rs +++ b/voxygen/anim/src/biped_large/dash.rs @@ -11,8 +11,10 @@ impl Animation for DashAnimation { type Dependency = ( Option, Option, + Vec3, f64, Option, + f32, ); type Skeleton = BipedLargeSkeleton; @@ -23,100 +25,87 @@ impl Animation for DashAnimation { #[allow(clippy::single_match)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, _global_time, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { *rate = 1.0; let mut next = (*skeleton).clone(); + let lab = 0.65 * s_a.tempo; + let speed = Vec2::::from(velocity).magnitude(); - let (movement1, movement2, movement3, _movement4) = match stage_section { - Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0, 0.0), - Some(StageSection::Charge) => (1.0, anim_time as f32, 0.0, 0.0), + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); + + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + let (move1base, move2base, move3base, move4) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0, 0.0), + Some(StageSection::Charge) => (1.0, ((anim_time as f32).powf(4.0)).min(1.0), 0.0, 0.0), Some(StageSection::Swing) => (1.0, 1.0, anim_time as f32, 0.0), - Some(StageSection::Recover) => (1.1, 1.0, 1.0, anim_time as f32), + Some(StageSection::Recover) => (1.1, 1.0, 1.0, (anim_time as f32).powf(4.0)), _ => (0.0, 0.0, 0.0, 0.0), }; + let pullback = 1.0 - move4; + let move1 = move1base * pullback; + let move2 = move2base * pullback; + let move3 = move3base * pullback; - fn short(x: f32) -> f32 { - (((5.0) / (1.5 + 3.5 * ((x * 5.0).sin()).powi(2))).sqrt()) * ((x * 5.0).sin()) - } - fn foothoril(x: f32) -> f32 { (x * 5.0 + PI * 1.45).sin() } - fn foothorir(x: f32) -> f32 { (x * 5.0 + PI * (0.45)).sin() } + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotr * -0.2) * speednorm); - fn footvertl(x: f32) -> f32 { (x * 5.0).sin() } - fn footvertr(x: f32) -> f32 { (x * 5.0 + PI).sin() } + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotl * -0.2) * speednorm); + next.torso.orientation = Quaternion::rotation_z(0.0); - fn footrotl(x: f32) -> f32 { - (((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 1.4).sin()).powi(2))).sqrt()) - * ((x * 5.0 + PI * 1.4).sin()) - } + next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); + next.control_r.position = Vec3::new(0.0, 2.0, -3.0); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.control.position = Vec3::new( + -3.0 + move1 * -2.0 + move2 * 2.0, + 5.0 + s_a.grip / 1.2 + move1 * -4.0 + move2 * 2.0 + move3 * 8.0, + -4.0 + -s_a.grip / 2.0 + move2 * -5.0 + move3 * 5.0, + ); + next.upper_torso.orientation = Quaternion::rotation_x(move2 * -0.2 + move3 * 0.2) + * Quaternion::rotation_z(move1 * 0.8 + move3 * -0.7); + next.lower_torso.orientation = Quaternion::rotation_x(move2 * 0.2 + move3 * -0.2) + * Quaternion::rotation_z(move1 * -0.8 + move3 * 0.7); + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(-0.2); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.2 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); - fn footrotr(x: f32) -> f32 { - (((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 0.4).sin()).powi(2))).sqrt()) - * ((x * 5.0 + PI * 0.4).sin()) - } - - fn shortalt(x: f32) -> f32 { (x * 5.0 + PI / 2.0).sin() } - - next.hand_l.position = Vec3::new(-0.75, -1.0, 2.5); - next.hand_l.orientation = Quaternion::rotation_x(1.47) * Quaternion::rotation_y(-0.2); - next.hand_r.position = Vec3::new(0.75, -1.5, -0.5); - next.hand_r.orientation = Quaternion::rotation_x(1.47) * Quaternion::rotation_y(0.3); - next.main.position = Vec3::new(0.0, 0.0, 2.0); - next.main.orientation = Quaternion::rotation_x(-0.1); - - match active_tool_kind { - //TODO: Inventory - Some(ToolKind::Sword) => { - next.head.position = - Vec3::new(0.0, 0.0 + s_a.head.0, s_a.head.1 + movement2.min(1.0) * 1.0); - next.head.orientation = Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(movement2.min(1.0) * -0.3 + movement3 * 0.3) - * Quaternion::rotation_z(movement1 * -0.9 + movement3 * 1.6); - - next.upper_torso.position = Vec3::new( - 0.0, - s_a.upper_torso.0, - s_a.upper_torso.1 + 2.0 + shortalt(movement2) * -2.5, - ); - next.upper_torso.orientation = - //Quaternion::rotation_x(movement2.min(1.0) * -0.4 + movement3 * 0.4) - //* Quaternion::rotation_y(movement2.min(1.0) * -0.2 + movement3 * 0.3) - Quaternion::rotation_z(movement1 * 1.1 + movement3 * -2.2); - - next.control.position = Vec3::new( - -7.0 + movement1 * -5.0 + movement3 * -2.0, - 7.0 + movement2.min(1.0) * -2.0, - 2.0 + movement2.min(1.0) * 2.0, - ); - next.control.orientation = - Quaternion::rotation_x(movement1 * -1.0 + movement3 * -0.5) - * Quaternion::rotation_y(movement1 * 1.5 + movement3 * -2.5) - * Quaternion::rotation_z(0.0); - - next.lower_torso.orientation = - Quaternion::rotation_z(short(movement2).min(1.0) * 0.25); - - next.foot_l.position = Vec3::new( - -s_a.foot.0, - s_a.foot.1 + movement1 * -12.0 + foothoril(movement2) * -7.5, - s_a.foot.2 + ((footvertl(movement2) * -4.0).max(-1.0)), - ); - next.foot_l.orientation = - Quaternion::rotation_x(movement1 * -1.0 + footrotl(movement2) * -0.6); - - next.foot_r.position = Vec3::new( - s_a.foot.0, - s_a.foot.1 + foothorir(movement2) * -7.5, - s_a.foot.2 + ((footvertr(movement2) * -4.0).max(-1.0)), - ); - next.foot_r.orientation = Quaternion::rotation_x(-0.6 + footrotr(movement2) * -0.6) - * Quaternion::rotation_z(-0.2); - }, - _ => {}, - } + next.control.orientation = + Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -1.5 + move3 * -0.2) + * Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.5 + move3 * -1.0) + * Quaternion::rotation_z(-move3 * -1.5); next } diff --git a/voxygen/anim/src/biped_large/idle.rs b/voxygen/anim/src/biped_large/idle.rs index ab3566a13b..773e368dc1 100644 --- a/voxygen/anim/src/biped_large/idle.rs +++ b/voxygen/anim/src/biped_large/idle.rs @@ -91,15 +91,15 @@ impl Animation for IdleAnimation { Quaternion::rotation_z(0.0 + slow * 0.2) * Quaternion::rotation_x(0.0); match active_tool_kind { - Some(ToolKind::Bow) => { + Some(ToolKind::BowSimple) => { next.main.position = Vec3::new(-2.0, -5.0, -6.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { next.main.position = Vec3::new(-6.0, -5.0, -12.0); next.main.orientation = Quaternion::rotation_y(0.6) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Sword) => { + Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index 8fc9aeb4db..5e4fdfde83 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -196,7 +196,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Male) => (3.0, 9.0), (Ogre, Female) => (1.0, 7.5), (Cyclops, _) => (4.5, 7.5), - (Wendigo, _) => (3.0, 13.5), + (Wendigo, _) => (3.0, 7.5), (Troll, _) => (6.0, 10.0), (Dullahan, _) => (3.0, 6.0), (Werewolf, _) => (11.5, 1.0), diff --git a/voxygen/anim/src/biped_large/shoot.rs b/voxygen/anim/src/biped_large/shoot.rs index e37e9fc6fb..f084b6020c 100644 --- a/voxygen/anim/src/biped_large/shoot.rs +++ b/voxygen/anim/src/biped_large/shoot.rs @@ -2,7 +2,10 @@ use super::{ super::{vek::*, Animation}, BipedLargeSkeleton, SkeletonAttr, }; -use common::{comp::item::ToolKind, states::utils::StageSection}; +use common::{ + comp::item::{ToolKind, UniqueKind}, + states::utils::StageSection, +}; use std::f32::consts::PI; pub struct ShootAnimation; @@ -86,8 +89,7 @@ impl Animation for ShootAnimation { next.hand_r.orientation = Quaternion::rotation_x(0.0); match active_tool_kind { Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { - let (movement1base, movement1shake, movement2base, movement3) = match stage_section - { + let (move1base, move1shake, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ( anim_time as f32, (anim_time as f32 * 10.0 + PI).sin(), @@ -98,42 +100,38 @@ impl Animation for ShootAnimation { Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time as f32), _ => (0.0, 0.0, 0.0, 0.0), }; - let pullback = 1.0 - movement3; - let movement1 = movement1base * pullback; - let movement2 = movement2base * pullback; + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; next.control_l.position = Vec3::new(-1.0, 3.0, 12.0); next.control_r.position = Vec3::new(1.0, 2.0, 2.0); next.control.position = Vec3::new( -3.0, - 3.0 + s_a.grip / 1.2 - + movement1 * 4.0 - + movement2 - + movement1shake * 2.0 - + movement2 * -2.0, - -11.0 + -s_a.grip / 2.0 + movement1 * 3.0, + 3.0 + s_a.grip / 1.2 + move1 * 4.0 + move2 + move1shake * 2.0 + move2 * -2.0, + -11.0 + -s_a.grip / 2.0 + move1 * 3.0, ); - next.head.orientation = Quaternion::rotation_x(movement1 * -0.15) - * Quaternion::rotation_y(movement1 * 0.25) - * Quaternion::rotation_z(movement1 * 0.25); - next.jaw.orientation = Quaternion::rotation_x(movement1 * -0.5); + next.head.orientation = Quaternion::rotation_x(move1 * -0.15) + * Quaternion::rotation_y(move1 * 0.25) + * Quaternion::rotation_z(move1 * 0.25); + next.jaw.orientation = Quaternion::rotation_x(move1 * -0.5); - next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + movement1 * 0.5) - * Quaternion::rotation_y(movement1 * -0.4); - next.control_r.orientation = Quaternion::rotation_x(PI / 2.5 + movement1 * 0.5) + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1 * 0.5) + * Quaternion::rotation_y(move1 * -0.4); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.5 + move1 * 0.5) * Quaternion::rotation_y(0.5) * Quaternion::rotation_z(0.0); next.control.orientation = - Quaternion::rotation_x(-0.2 + movement1 * -0.2 + movement1shake * 0.1) - * Quaternion::rotation_y(-0.1 + movement1 * 0.8 + movement2 * -0.3); + Quaternion::rotation_x(-0.2 + move1 * -0.2 + move1shake * 0.1) + * Quaternion::rotation_y(-0.1 + move1 * 0.8 + move2 * -0.3); next.shoulder_l.position = Vec3::new( -s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2 - foothorir * 1.0, ); next.shoulder_l.orientation = Quaternion::rotation_x( - movement1 * 0.8 + 0.8 * speednorm + (footrotr * -0.2) * speednorm, + move1 * 0.8 + 0.8 * speednorm + (footrotr * -0.2) * speednorm, ); next.shoulder_r.position = Vec3::new( @@ -142,45 +140,45 @@ impl Animation for ShootAnimation { s_a.shoulder.2 - foothoril * 1.0, ); next.shoulder_r.orientation = Quaternion::rotation_x( - movement1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm, + move1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm, ); }, Some(ToolKind::BowSimple) => { - let (movement1base, movement2base, movement3) = match stage_section { + let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; - let pullback = 1.0 - movement3; - let movement1 = movement1base * pullback; - let movement2 = movement2base * pullback; - next.control_l.position = Vec3::new(-1.0, -2.0 + movement2 * -7.0, -3.0); + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; + next.control_l.position = Vec3::new(-1.0, -2.0 + move2 * -7.0, -3.0); next.control_r.position = Vec3::new(0.0, 4.0, 1.0); next.control.position = Vec3::new( - -1.0 + movement1 * 2.0, - 6.0 + s_a.grip / 1.2 + movement1 * 7.0, - -5.0 + -s_a.grip / 2.0 + movement1 * 8.0, + -1.0 + move1 * 2.0, + 6.0 + s_a.grip / 1.2 + move1 * 7.0, + -5.0 + -s_a.grip / 2.0 + move1 * 8.0, ); - next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + movement2 * 0.4) - * Quaternion::rotation_y(-0.2); - next.control_r.orientation = Quaternion::rotation_x(PI / 2.2 + movement1 * 0.4) + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.4) * Quaternion::rotation_y(-0.2); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.2 + move1 * 0.4) * Quaternion::rotation_y(0.2) * Quaternion::rotation_z(0.0); next.control.orientation = Quaternion::rotation_x(-0.2) - * Quaternion::rotation_y(1.0 + movement1 * -0.4) + * Quaternion::rotation_y(1.0 + move1 * -0.4) * Quaternion::rotation_z(-0.3); - next.head.orientation = Quaternion::rotation_z(movement1 * 0.25); + next.head.orientation = Quaternion::rotation_z(move1 * 0.25); next.shoulder_l.position = Vec3::new( -s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2 - foothorir * 1.0, ); next.shoulder_l.orientation = Quaternion::rotation_x( - movement1 * 0.8 + 1.2 * speednorm + (footrotr * -0.2) * speednorm, + move1 * 0.8 + 1.2 * speednorm + (footrotr * -0.2) * speednorm, ); next.shoulder_r.position = Vec3::new( @@ -189,9 +187,31 @@ impl Animation for ShootAnimation { s_a.shoulder.2 - foothoril * 1.0, ); next.shoulder_r.orientation = Quaternion::rotation_x( - movement1 * 0.8 + 1.2 * speednorm + (footrotl * -0.2) * speednorm, + move1 * 0.8 + 1.2 * speednorm + (footrotl * -0.2) * speednorm, ); }, + Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + next.control_l.position = + Vec3::new(-9.0 + move1 * 6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 10.5); + next.control_r.position = + Vec3::new(9.0 + move1 * -6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 14.5); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5); + next.head.orientation = Quaternion::rotation_x(move1 * -0.3); + }, _ => {}, } diff --git a/voxygen/anim/src/biped_large/wield.rs b/voxygen/anim/src/biped_large/wield.rs index 85f772f671..ab186afc98 100644 --- a/voxygen/anim/src/biped_large/wield.rs +++ b/voxygen/anim/src/biped_large/wield.rs @@ -176,7 +176,7 @@ impl Animation for WieldAnimation { next.control.orientation = Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(-0.1); }, - Some(ToolKind::BowSimple) => { + Some(ToolKind::BowSimple) | Some(ToolKind::Bow) => { next.control_l.position = Vec3::new(-1.0, -2.0, -3.0); next.control_r.position = Vec3::new(0.0, 4.0, 1.0); @@ -231,6 +231,15 @@ impl Animation for WieldAnimation { next.control.orientation = Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(-0.1); }, + Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { + next.control_l.position = Vec3::new(-9.0, 19.0, -13.0); + next.control_r.position = Vec3::new(9.0, 19.0, -13.0); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(-0.15); + next.control_r.orientation = + Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(0.15); + }, Some(ToolKind::Unique(UniqueKind::BeastClaws)) => { next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs index 6f04bb3f3e..b94a22fa9c 100644 --- a/voxygen/anim/src/biped_small/shoot.rs +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -115,7 +115,7 @@ impl Animation for ShootAnimation { * Quaternion::rotation_y(0.5 * speednorm); }, Some(ToolKind::Staff) => { - let (move1base, move2base, move3) = match stage_section { + let (move1base, _move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), @@ -123,7 +123,6 @@ impl Animation for ShootAnimation { }; let pullback = 1.0 - move3; let move1abs = move1base * pullback; - let move2abs = move2base * pullback; next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0); next.control_r.position = Vec3::new( 7.0 + s_a.grip.0 * 2.0 + move1abs * -8.0, diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs index 661e604fca..7d9a50193a 100644 --- a/voxygen/anim/src/biped_small/wield.rs +++ b/voxygen/anim/src/biped_small/wield.rs @@ -100,7 +100,7 @@ impl Animation for WieldAnimation { next.control.orientation = Quaternion::rotation_x(-1.35 + 0.5 * speednorm); }, - Some(ToolKind::Bow) => { + Some(ToolKind::Bow) | Some(ToolKind::BowSimple) => { next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 0.0, 0.0); next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 6.0, -2.0); @@ -123,7 +123,7 @@ impl Animation for WieldAnimation { next.control.orientation = Quaternion::rotation_x(-0.3 + 0.5 * speednorm) * Quaternion::rotation_y(0.5 * speednorm); }, - Some(ToolKind::Staff) => { + Some(ToolKind::Staff) | Some(ToolKind::StaffSimple) => { next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0); next.control_r.position = Vec3::new(7.0 + s_a.grip.0 * 2.0, -4.0, 3.0 + speednorm * -3.0); diff --git a/voxygen/anim/src/character/alpha.rs b/voxygen/anim/src/character/alpha.rs index b8c8e0f5c9..3e7ab18a17 100644 --- a/voxygen/anim/src/character/alpha.rs +++ b/voxygen/anim/src/character/alpha.rs @@ -24,7 +24,7 @@ impl Animation for AlphaAnimation { #[allow(clippy::approx_constant)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, _velocity, _global_time, stage_section): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, @@ -32,8 +32,6 @@ impl Animation for AlphaAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let lab = 1.0; - let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), @@ -41,19 +39,6 @@ impl Animation for AlphaAnimation { _ => (0.0, 0.0, 0.0), }; - let foot = (((1.0) - / (0.2 + 0.8 * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()); - let push = anim_time as f32 * lab as f32 * 4.0; - let slow = (((5.0) / (0.4 + 4.6 * ((anim_time as f32 * lab as f32 * 9.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 9.0).sin()); - let slower = (((1.0) - / (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 4.0).sin()); - next.torso.position = Vec3::new(0.0, 0.0, 0.1) * s_a.scaler; next.torso.orientation = Quaternion::rotation_z(0.0); match active_tool_kind { @@ -86,10 +71,9 @@ impl Animation for AlphaAnimation { ); }, Some(ToolKind::Dagger) => { - next.control_l.position = Vec3::new(-10.0 + push * 5.0, 6.0 + push * 5.0, 2.0); - next.control_l.orientation = Quaternion::rotation_x(-1.4 + slow * 0.4) - * Quaternion::rotation_y(slow * -1.3) - * Quaternion::rotation_z(1.4 + slow * -0.5); + next.control_l.position = Vec3::new(-10.0, 6.0, 2.0); + next.control_l.orientation = + Quaternion::rotation_x(-1.4) * Quaternion::rotation_z(1.4); }, Some(ToolKind::Axe) => { next.main.position = Vec3::new(0.0, 0.0, 0.0); @@ -169,29 +153,6 @@ impl Animation for AlphaAnimation { Quaternion::rotation_x((move1 * 0.4 + move2 * -0.7) * (1.0 - move3)) * Quaternion::rotation_y((move1 * 0.3 + move2 * -0.4) * (1.0 - move3)) * Quaternion::rotation_z((move1 * 0.5 + move2 * -0.5) * (1.0 - move3)); - - if velocity > 0.5 { - next.foot_l.position = Vec3::new(-s_a.foot.0, foot * -6.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(foot * -0.4) - * Quaternion::rotation_z((slower * 0.3).max(0.0)); - - next.foot_r.position = Vec3::new(s_a.foot.0, foot * 6.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(foot * 0.4) - * Quaternion::rotation_z((slower * 0.3).max(0.0)); - next.torso.orientation = Quaternion::rotation_x(-0.15); - } else { - next.foot_l.position = - Vec3::new(-s_a.foot.0, -2.5, s_a.foot.2 + (slower * 2.5).max(0.0)); - next.foot_l.orientation = Quaternion::rotation_x(slower * -0.2 - 0.2) - * Quaternion::rotation_z((slower * 1.0).max(0.0)); - - next.foot_r.position = Vec3::new(s_a.foot.0, 3.5 - slower * 2.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(slower * 0.1) - * Quaternion::rotation_z((slower * 0.5).max(0.0)); - - next.belt.orientation = Quaternion::rotation_x(move1 * -0.2 + move2 * 0.2); - next.shorts.orientation = Quaternion::rotation_x(move1 * -0.3 + move2 * 0.3); - } }, Some(ToolKind::Debug) => { next.hand_l.position = Vec3::new(-7.0, 4.0, 3.0); diff --git a/voxygen/anim/src/character/chargeswing.rs b/voxygen/anim/src/character/chargeswing.rs index 2af043041e..995213e70e 100644 --- a/voxygen/anim/src/character/chargeswing.rs +++ b/voxygen/anim/src/character/chargeswing.rs @@ -37,25 +37,32 @@ impl Animation for ChargeswingAnimation { * ((anim_time as f32 * lab as f32 * 8.0).sin()); // end spin stuff - let (move1, move2, move3, tension) = match stage_section { + let (move1base, move2base, move3, tension, test) = match stage_section { Some(StageSection::Charge) => ( (anim_time as f32).min(1.0), 0.0, 0.0, (anim_time as f32 * 18.0 * lab as f32).sin(), + 0.0, ), - Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0, 0.0), - Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4), 0.0), - _ => (0.0, 0.0, 0.0, 0.0), + Some(StageSection::Swing) => ( + 1.0, + (anim_time as f32).powf(0.25), + 0.0, + 0.0, + (anim_time as f32).powi(4), + ), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4), 0.0, 1.0), + _ => (0.0, 0.0, 0.0, 0.0, 0.0), }; + let move1 = move1base * (1.0 - move3); + let slowrise = test * (1.0 - move3); + + let move2 = move2base * (1.0 - move3); if let Some(ToolKind::Hammer) = active_tool_kind { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new( - s_a.hhl.0, - s_a.hhl.1, - s_a.hhl.2 + (move2 * -8.0) * (1.0 - move3), - ); + next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2 + (move2 * -8.0)); next.hand_l.orientation = Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4); next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2); @@ -63,26 +70,25 @@ impl Animation for ChargeswingAnimation { Quaternion::rotation_x(s_a.hhr.3) * Quaternion::rotation_y(s_a.hhr.4); next.control.position = Vec3::new( - s_a.hc.0 + (move1 * -2.0 + move2 * -3.0) * (1.0 - move3), - s_a.hc.1 + (move1 * 2.0 + move2 * 3.0) * (1.0 - move3), - s_a.hc.2 + (move1 * 2.0 + move2 * 4.0) * (1.0 - move3), + s_a.hc.0 + (move1 * -2.0 + move2 * -8.0), + s_a.hc.1 + (move1 * 2.0 + move2 * 6.0), + s_a.hc.2 + (move1 * -2.0 + slowrise * 8.0), ); - next.control.orientation = Quaternion::rotation_x(s_a.hc.3+(move2*4.0)*(1.0-move3)) - * Quaternion::rotation_y(s_a.hc.4+(tension*0.08+move1 * 0.7+move2*-3.5)*(1.0-move3))//+fire * 0.1 - * Quaternion::rotation_z(s_a.hc.5+(move1 * 0.2+move2*-0.5)*(1.0-move3)); + next.control.orientation = Quaternion::rotation_x(s_a.hc.3 + (move2 * 0.0)) + * Quaternion::rotation_y( + s_a.hc.4 + (tension * 0.08 + move1 * 0.7 + move2 * -1.0 + slowrise * 2.0), + ) + * Quaternion::rotation_z(s_a.hc.5 + (move1 * 0.2 + move2 * -1.0)); next.chest.orientation = - Quaternion::rotation_z(short * 0.04 + (move1 * 2.0 + move2 * -2.5) * (1.0 - move3)); - next.belt.orientation = - Quaternion::rotation_z(short * 0.08 + (move1 * -1.0) * (1.0 - move3)); - next.shorts.orientation = - Quaternion::rotation_z(short * 0.15 + (move1 * -1.0) * (1.0 - move3)); + Quaternion::rotation_z(short * 0.04 + (move1 * 2.0 + move2 * -3.5)); + next.belt.orientation = Quaternion::rotation_z(short * 0.08 + (move1 * -1.0)); + next.shorts.orientation = Quaternion::rotation_z(short * 0.15 + (move1 * -1.0)); next.head.position = Vec3::new( - 0.0 + (move1 * -1.0 + move2 * 2.0) * (1.0 - move3), - s_a.head.0 + (move1 * 1.0) * (1.0 - move3), + 0.0 + (move1 * -1.0 + move2 * 2.0), + s_a.head.0 + (move1 * 1.0), s_a.head.1, ); - next.head.orientation = - Quaternion::rotation_z((move1 * -1.5 + move2 * 2.2) * (1.0 - move3)); + next.head.orientation = Quaternion::rotation_z(move1 * -1.5 + move2 * 3.2); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); } next diff --git a/voxygen/anim/src/golem/alpha.rs b/voxygen/anim/src/golem/alpha.rs index dde2065b89..8f58c6f779 100644 --- a/voxygen/anim/src/golem/alpha.rs +++ b/voxygen/anim/src/golem/alpha.rs @@ -3,7 +3,6 @@ use super::{ GolemSkeleton, SkeletonAttr, }; use common::states::utils::StageSection; -use std::f32::consts::PI; pub struct AlphaAnimation; @@ -21,7 +20,7 @@ impl Animation for AlphaAnimation { (stage_section, global_time, timer): Self::Dependency, anim_time: f64, _rate: &mut f32, - s_a: &SkeletonAttr, + _s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 2753eaa04d..b0c02234f7 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -3,7 +3,7 @@ use common::{ assets::{self, AssetExt, AssetHandle, DotVoxAsset, Ron}, comp::{ biped_large::{self, BodyType as BLBodyType, Species as BLSpecies}, - biped_small::{self, BodyType as BSBodyType, Species as BSSpecies}, + biped_small, bird_medium::{self, BodyType as BMBodyType, Species as BMSpecies}, bird_small, dragon::{self, BodyType as DBodyType, Species as DSpecies}, @@ -356,7 +356,7 @@ make_vox_spec!( armor_back: HumArmorBackSpec = "voxygen.voxel.humanoid_armor_back_manifest", armor_pants: HumArmorPantsSpec = "voxygen.voxel.humanoid_armor_pants_manifest", armor_foot: HumArmorFootSpec = "voxygen.voxel.humanoid_armor_foot_manifest", - main_weapon: HumMainWeaponSpec = "voxygen.voxel.humanoid_main_weapon_manifest", + main_weapon: HumMainWeaponSpec = "voxygen.voxel.biped_weapon_manifest", modular_components: HumModularComponentSpec = "voxygen.voxel.humanoid_modular_component_manifest", armor_lantern: HumArmorLanternSpec = "voxygen.voxel.humanoid_lantern_manifest", armor_glider: HumArmorGliderSpec = "voxygen.voxel.humanoid_glider_manifest", @@ -2487,7 +2487,7 @@ make_vox_spec!( biped_small::Body, struct BipedSmallSpec { armor_foot: BipedSmallArmorFootSpec = "voxygen.voxel.biped_small_armor_foot_manifest", - weapon: BipedSmallWeaponSpec = "voxygen.voxel.biped_small_weapon_manifest", + weapon: BipedSmallWeaponSpec = "voxygen.voxel.biped_weapon_manifest", armor_hand: BipedSmallArmorHandSpec = "voxygen.voxel.biped_small_armor_hand_manifest", armor_chest: BipedSmallArmorChestSpec = "voxygen.voxel.biped_small_armor_chest_manifest", armor_pants: BipedSmallArmorPantsSpec = "voxygen.voxel.biped_small_armor_pants_manifest", @@ -3205,7 +3205,7 @@ make_vox_spec!( struct BipedLargeSpec { central: BipedLargeCentralSpec = "voxygen.voxel.biped_large_central_manifest", lateral: BipedLargeLateralSpec = "voxygen.voxel.biped_large_lateral_manifest", - weapon: BipedLargeWeaponSpec = "voxygen.voxel.biped_large_weapon_manifest", + weapon: BipedLargeWeaponSpec = "voxygen.voxel.biped_weapon_manifest", }, |FigureKey { body, extra }, spec| { const DEFAULT_LOADOUT: super::cache::CharacterCacheKey = super::cache::CharacterCacheKey { diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 5ad3081589..b213f75472 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -3377,8 +3377,10 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, + vel.0, time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, From ce3b2141e1aba367ffcafeff8e0a694964e619c4 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 14 Feb 2021 20:27:28 -0500 Subject: [PATCH 22/36] theropod retrofit, some more moves --- .../abilities/hammersimple/doublestrike.ron | 12 +- assets/common/abilities/spear/dash.ron | 6 +- .../common/abilities/spear/doublestrike.ron | 4 +- assets/voxygen/voxel/npc/horse/male/neck.vox | 2 +- .../voxygen/voxel/npc/mouflon/male/neck.vox | 4 +- .../voxel/npc/mouflon/male/torso_front.vox | 4 +- .../quadruped_medium_central_manifest.ron | 4 +- .../voxel/theropod_lateral_manifest.ron | 8 +- common/src/comp/inventory/loadout_builder.rs | 4 +- voxygen/anim/src/biped_large/alpha.rs | 2 + voxygen/anim/src/biped_large/beta.rs | 143 ++++++++++++++---- voxygen/anim/src/biped_large/run.rs | 5 +- voxygen/anim/src/biped_small/dash.rs | 111 ++++++++++++++ voxygen/anim/src/biped_small/idle.rs | 12 +- voxygen/anim/src/biped_small/mod.rs | 5 +- voxygen/anim/src/biped_small/run.rs | 22 +-- voxygen/anim/src/biped_small/shoot.rs | 8 +- voxygen/anim/src/biped_small/wield.rs | 8 +- voxygen/anim/src/character/run.rs | 2 +- voxygen/anim/src/character/wield.rs | 2 +- voxygen/anim/src/quadruped_low/mod.rs | 2 + voxygen/anim/src/quadruped_medium/feed.rs | 77 ++++++---- voxygen/anim/src/quadruped_medium/mod.rs | 10 +- voxygen/anim/src/quadruped_medium/run.rs | 8 +- voxygen/anim/src/theropod/mod.rs | 8 +- voxygen/anim/src/theropod/run.rs | 90 +++++------ voxygen/src/scene/figure/mod.rs | 46 +++++- 27 files changed, 431 insertions(+), 178 deletions(-) create mode 100644 voxygen/anim/src/biped_small/dash.rs diff --git a/assets/common/abilities/hammersimple/doublestrike.ron b/assets/common/abilities/hammersimple/doublestrike.ron index 0feb79deaa..e0d62fa150 100644 --- a/assets/common/abilities/hammersimple/doublestrike.ron +++ b/assets/common/abilities/hammersimple/doublestrike.ron @@ -6,13 +6,13 @@ ComboMelee( damage_increase: 10, base_poise_damage: 0, poise_damage_increase: 0, - knockback: 8.0, + knockback: 4.0, range: 3.5, angle: 50.0, base_buildup_duration: 0.6, base_swing_duration: 0.08, base_recover_duration: 0.6, - forward_movement: 2.5, + forward_movement: 3.5, ), ( stage: 2, @@ -20,12 +20,12 @@ ComboMelee( damage_increase: 15, base_poise_damage: 0, poise_damage_increase: 0, - knockback: 12.0, - range: 3.5, + knockback: 16.0, + range: 1.5, angle: 30.0, base_buildup_duration: 0.5, - base_swing_duration: 0.1, - base_recover_duration: 0.5, + base_swing_duration: 0.25, + base_recover_duration: 1.2, forward_movement: 2.0, ), ], diff --git a/assets/common/abilities/spear/dash.ron b/assets/common/abilities/spear/dash.ron index 4af6873b5f..b967a3d96d 100644 --- a/assets/common/abilities/spear/dash.ron +++ b/assets/common/abilities/spear/dash.ron @@ -8,9 +8,9 @@ DashMelee( scaled_knockback: 7.0, range: 5.0, angle: 45.0, - energy_drain: 600, - forward_speed: 4.0, - buildup_duration: 0.25, + energy_drain: 0, + forward_speed: 2.0, + buildup_duration: 0.5, charge_duration: 0.6, swing_duration: 0.1, recover_duration: 0.5, diff --git a/assets/common/abilities/spear/doublestrike.ron b/assets/common/abilities/spear/doublestrike.ron index b7035b1dc0..9e8ea282d2 100644 --- a/assets/common/abilities/spear/doublestrike.ron +++ b/assets/common/abilities/spear/doublestrike.ron @@ -12,7 +12,7 @@ ComboMelee( base_buildup_duration: 0.35, base_swing_duration: 0.075, base_recover_duration: 0.4, - forward_movement: 2.5, + forward_movement: 1.0, ), ( stage: 2, @@ -26,7 +26,7 @@ ComboMelee( base_buildup_duration: 0.5, base_swing_duration: 0.1, base_recover_duration: 0.5, - forward_movement: 2.0, + forward_movement: 1.0, ), ], initial_energy_gain: 25, diff --git a/assets/voxygen/voxel/npc/horse/male/neck.vox b/assets/voxygen/voxel/npc/horse/male/neck.vox index 39c2b17862..b1c8068bae 100644 --- a/assets/voxygen/voxel/npc/horse/male/neck.vox +++ b/assets/voxygen/voxel/npc/horse/male/neck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6d847ffad7224ecc9c5dbfa39ca09449fedeccecec98e1cc64d3065391f91ae +oid sha256:505b21fd6d5f55b23a217575168160e9ad296c76dc6ed3e6cfbd43cee4f936bb size 2740 diff --git a/assets/voxygen/voxel/npc/mouflon/male/neck.vox b/assets/voxygen/voxel/npc/mouflon/male/neck.vox index e9b4517a16..ee6cd5262c 100644 --- a/assets/voxygen/voxel/npc/mouflon/male/neck.vox +++ b/assets/voxygen/voxel/npc/mouflon/male/neck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69211337b693d3067ee114b068459afbca3f28e640e995c215860c27d26da06c -size 1944 +oid sha256:f42c372b87f2e1f00af0231b92e1ad191b9798d25ab47a9e29e597c94a5a03cb +size 2112 diff --git a/assets/voxygen/voxel/npc/mouflon/male/torso_front.vox b/assets/voxygen/voxel/npc/mouflon/male/torso_front.vox index 7055aa91e8..e2f21bb390 100644 --- a/assets/voxygen/voxel/npc/mouflon/male/torso_front.vox +++ b/assets/voxygen/voxel/npc/mouflon/male/torso_front.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c010c5681d32bd779dc50a08f26bca9c0167c4634abf7800f88609c38da6802e -size 2864 +oid sha256:3c6900c09e32579031fe03a4e73e3bcfc15e746b99fa5b241c382ffb161882e9 +size 2936 diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index 384717e891..809e0e5947 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -1145,7 +1145,7 @@ central: ("npc.horse.male.head"), ), neck: ( - offset: (-3.0, -6.5, -6.5), + offset: (-3.0, -1.5, -5.5), central: ("npc.horse.male.neck"), ), jaw: ( @@ -1175,7 +1175,7 @@ central: ("npc.horse.male.head"), ), neck: ( - offset: (-3.0, -6.5, -6.5), + offset: (-3.0, -1.5, -5.5), central: ("npc.horse.male.neck"), ), jaw: ( diff --git a/assets/voxygen/voxel/theropod_lateral_manifest.ron b/assets/voxygen/voxel/theropod_lateral_manifest.ron index e7d859dc0b..e94b915411 100644 --- a/assets/voxygen/voxel/theropod_lateral_manifest.ron +++ b/assets/voxygen/voxel/theropod_lateral_manifest.ron @@ -217,7 +217,7 @@ lateral: ("npc.raptor_wood.male.hand_r"), ), leg_l: ( - offset: (-2.5, -3.5, -3.5), + offset: (-5.0, -3.5, -3.5), lateral: ("npc.raptor_wood.male.leg_r"), ), leg_r: ( @@ -243,7 +243,7 @@ lateral: ("npc.raptor_wood.male.hand_r"), ), leg_l: ( - offset: (-2.5, -3.5, -3.5), + offset: (-5.0, -3.5, -3.5), lateral: ("npc.raptor_wood.male.leg_r"), ), leg_r: ( @@ -269,7 +269,7 @@ lateral: ("npc.sunlizard.male.hand_r"), ), leg_l: ( - offset: (-1.5, -2.5, -3.5), + offset: (-3.0, -2.5, -3.5), lateral: ("npc.sunlizard.male.leg_r"), ), leg_r: ( @@ -295,7 +295,7 @@ lateral: ("npc.sunlizard.male.hand_r"), ), leg_l: ( - offset: (-1.5, -2.5, -3.5), + offset: (-3.0, -2.5, -3.5), lateral: ("npc.sunlizard.male.leg_r"), ), leg_r: ( diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 87365e75d9..668a9e1faf 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -412,7 +412,7 @@ impl LoadoutBuilder { "common.items.npc_armor.biped_small.sahagin.pants.sahagin", ))) .belt(Some(Item::new_from_asset_expect( - "common.items.npc_armor.biped_small.sahagin.belt.sahagin", + "common.items.npc_armor.biped_small.sahagin.tail.sahagin", ))) .build(), Haniwa => LoadoutBuilder::new() @@ -451,7 +451,7 @@ impl LoadoutBuilder { "common.items.npc_armor.biped_small.myrmidon.pants.myrmidon", ))) .belt(Some(Item::new_from_asset_expect( - "common.items.npc_armor.biped_small.myrmidon.belt.myrmidon", + "common.items.npc_armor.biped_small.myrmidon.tail.myrmidon", ))) .build(), Guard => LoadoutBuilder::new() diff --git a/voxygen/anim/src/biped_large/alpha.rs b/voxygen/anim/src/biped_large/alpha.rs index 996397736d..058eeedb26 100644 --- a/voxygen/anim/src/biped_large/alpha.rs +++ b/voxygen/anim/src/biped_large/alpha.rs @@ -123,6 +123,8 @@ impl Animation for AlphaAnimation { next.head.orientation = Quaternion::rotation_x(move1 * -0.25) * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); next.upper_torso.orientation = Quaternion::rotation_z(move1 * 0.2 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -0.2 + move2 * 0.2); + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move2 * 0.8) * Quaternion::rotation_y(-0.0); next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move2 * 0.8) diff --git a/voxygen/anim/src/biped_large/beta.rs b/voxygen/anim/src/biped_large/beta.rs index e952d94eae..84e6b3be81 100644 --- a/voxygen/anim/src/biped_large/beta.rs +++ b/voxygen/anim/src/biped_large/beta.rs @@ -2,7 +2,11 @@ use super::{ super::{vek::*, Animation}, BipedLargeSkeleton, SkeletonAttr, }; -use common::{comp::item::ToolKind, states::utils::StageSection}; +use common::{ + comp::item::{ToolKind, UniqueKind}, + states::utils::StageSection, +}; +use std::f32::consts::PI; pub struct BetaAnimation; @@ -10,9 +14,10 @@ impl Animation for BetaAnimation { type Dependency = ( Option, Option, - f32, + Vec3, f64, Option, + f32, ); type Skeleton = BipedLargeSkeleton; @@ -22,48 +27,134 @@ impl Animation for BetaAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_large_beta")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_active_tool_kind, _second_tool_kind, _velocity, _global_time, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { *rate = 1.0; let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); - let (movement1, movement2, movement3) = match stage_section { + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); + + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); + let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; + + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotr * -0.2) * speednorm); + + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm); + next.torso.orientation = Quaternion::rotation_z(0.0); next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4); - next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); - next.control.position = Vec3::new( - s_a.sc.0 + (-1.4 + movement1 * -3.0 + movement2 * -2.0) * (1.0 - movement3), - s_a.sc.1 + (-1.4 + movement1 * 3.0 + movement2 * 3.0) * (1.0 - movement3), - s_a.sc.2 + (10.9 + movement1 * 2.5 * (1.0 - movement3)), - ); - next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + (-1.7) * (1.0 - movement3)) - * Quaternion::rotation_y( - s_a.sc.4 + (0.4 + movement1 * 1.5 + movement2 * -2.5) * (1.0 - movement3), - ) - * Quaternion::rotation_z(s_a.sc.5 + (1.67 + movement2 * 1.57) * (1.0 - movement3)); - next.upper_torso.orientation = Quaternion::rotation_x(0.15) - * Quaternion::rotation_y((-0.1) * (1.0 - movement3)) - * Quaternion::rotation_z( - (0.4 + movement1 * 1.5 + movement2 * -2.5) * (1.0 - movement3), - ); - next.head.orientation = Quaternion::rotation_z((-0.4) * (1.0 - movement3)); + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + match active_tool_kind { + Some(ToolKind::SwordSimple) => { + next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); + next.control_r.position = Vec3::new(0.0, 2.0, -3.0); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.control.position = Vec3::new( + -3.0 + move1 * -4.0 + move2 * 5.0, + 5.0 + s_a.grip / 1.2 + move1 * -4.0 + move2 * 8.0, + -4.0 + -s_a.grip / 2.0 + move2 * -5.0, + ); + next.upper_torso.orientation = + Quaternion::rotation_z(move1base * 0.5 + move2 * -0.7); + next.lower_torso.orientation = + Quaternion::rotation_z(move1base * -0.5 + move2 * 0.7); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(-0.2); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.2 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -1.5) + * Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.0); + }, + Some(ToolKind::HammerSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move2 * -10.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); + + next.control.position = Vec3::new( + 4.0 + move1 * -12.0 + move2 * 20.0, + (s_a.grip / 1.0) + move1 * -3.0 + move2 * 5.0, + (-s_a.grip / 0.8) + move1 * 6.0 + move2 * 8.0, + ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 0.6 + move2 * -1.5); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -0.6 + move2 * 1.5); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.8) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move2 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-1.0 + move1 * -1.5 + move2 * -0.3) + * Quaternion::rotation_y(-1.8 + move1 * -0.8 + move2 * 3.0) + * Quaternion::rotation_z(move1 * -0.8 + move2 * -0.8); + }, + Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { + next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4); + + next.control_l.position = + Vec3::new(-9.0 + move2 * 6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 10.5); + next.control_r.position = + Vec3::new(9.0 + move2 * -6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 14.5); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.3); + }, + _ => {}, + } next } } diff --git a/voxygen/anim/src/biped_large/run.rs b/voxygen/anim/src/biped_large/run.rs index 1e6935796f..0938d31557 100644 --- a/voxygen/anim/src/biped_large/run.rs +++ b/voxygen/anim/src/biped_large/run.rs @@ -49,6 +49,7 @@ impl Animation for RunAnimation { let lab = 0.65 * s_a.tempo; //.65 let speednorm = (speed / 12.0).powf(0.6); //.powf(0.4) + let speednormlow = (speed / 12.0).powf(4.0); //.powf(0.4) let footvertl = (acc_vel * lab as f32 + PI * -0.2).sin() * speednorm; let footvertr = (acc_vel * lab as f32 + PI * -1.2).sin() * speednorm; @@ -421,9 +422,9 @@ impl Animation for RunAnimation { next.lower_torso.orientation = Quaternion::rotation_z(short * 0.05 * speednorm) * Quaternion::rotation_x(0.14 * speednorm); next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_l.orientation = Quaternion::rotation_x(-0.4 * speednorm + slow * 0.1); + next.shoulder_l.orientation = Quaternion::rotation_x(-0.4 * speednormlow + slow * 0.1); next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = Quaternion::rotation_x(-0.4 * speednorm + slow * 0.1); + next.shoulder_r.orientation = Quaternion::rotation_x(-0.4 * speednormlow + slow * 0.1); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); next.hand_l.orientation = Quaternion::rotation_x(-0.4 * speednorm + slow * 0.1); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); diff --git a/voxygen/anim/src/biped_small/dash.rs b/voxygen/anim/src/biped_small/dash.rs new file mode 100644 index 0000000000..4056375a28 --- /dev/null +++ b/voxygen/anim/src/biped_small/dash.rs @@ -0,0 +1,111 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; +use common::states::utils::StageSection; +use std::f32::consts::PI; + +pub struct DashAnimation; + +type DashAnimationDependency = ( + Vec3, + Vec3, + Vec3, + f64, + Vec3, + f32, + Option, + f64, +); + +impl Animation for DashAnimation { + type Dependency = DashAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_dash\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_dash")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + ( + velocity, + _orientation, + _last_ori, + _global_time, + _avg_vel, + _acc_vel, + stage_section, + _timer, + ): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + + //let fastacc = (acc_vel * 2.0).sin(); + let fast = (anim_time as f32 * 10.0).sin(); + let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); + + let speednorm = speed / 9.4; + let speednormcancel = 1.0 - speednorm; + + let (move1base, move2base, move3, move4) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).sqrt(), 0.0, 0.0, 0.0), + Some(StageSection::Charge) => (1.0, (anim_time as f32).powi(4), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powi(4), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move4; + let move1abs = move1base * pullback; + let move2abs = move2base * pullback; + let move3abs = move2base * pullback; + + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.orientation = Quaternion::rotation_x(move1abs * 0.6) + * Quaternion::rotation_z(move1abs * -0.0) + * Quaternion::rotation_y(move1abs * 0.3); + next.chest.orientation = Quaternion::rotation_x(move1abs * -0.8); + + next.pants.orientation = Quaternion::rotation_x(move1abs * -0.2); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0); + + next.control.position = Vec3::new( + -3.0, + s_a.grip.2 + move1abs * -5.0, + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move1abs * 4.0, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 1.5 + move1abs * -0.7 + move3 * 0.7) + * Quaternion::rotation_y(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 1.5 + s_a.grip.0 * 0.2 + move1abs * -0.7 + move3 * 0.7) + * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); + + next.control.orientation = Quaternion::rotation_x(-1.35 + move1abs * 0.6) + * Quaternion::rotation_z(move1abs * 0.2) + * Quaternion::rotation_y(move2abs * 0.0); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + + next + } +} diff --git a/voxygen/anim/src/biped_small/idle.rs b/voxygen/anim/src/biped_small/idle.rs index 2adc278af3..406fcb26f1 100644 --- a/voxygen/anim/src/biped_small/idle.rs +++ b/voxygen/anim/src/biped_small/idle.rs @@ -26,13 +26,13 @@ impl Animation for IdleAnimation { let mut next = (*skeleton).clone(); let slow = (anim_time as f32 * 4.0).sin(); - next.foot_l.scale = Vec3::one() / 13.0; - next.foot_r.scale = Vec3::one() / 13.0; + next.foot_l.scale = Vec3::one() / 11.0; + next.foot_r.scale = Vec3::one() / 11.0; - next.chest.scale = Vec3::one() / 13.0; + next.chest.scale = Vec3::one() / 11.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slow * -0.1); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3) / 13.0; + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3) / 11.0; next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); next.main.position = Vec3::new(2.0, -3.0, -3.0); next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57); @@ -40,8 +40,8 @@ impl Animation for IdleAnimation { next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); - next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2) / 13.0; - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2) / 13.0; + next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2) / 11.0; + next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2) / 11.0; next } diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index e406cae23b..c41d18de86 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -1,4 +1,5 @@ pub mod alpha; +pub mod dash; pub mod idle; pub mod run; pub mod shoot; @@ -6,8 +7,8 @@ pub mod wield; // Reexports pub use self::{ - alpha::AlphaAnimation, idle::IdleAnimation, run::RunAnimation, shoot::ShootAnimation, - wield::WieldAnimation, + alpha::AlphaAnimation, dash::DashAnimation, idle::IdleAnimation, run::RunAnimation, + shoot::ShootAnimation, wield::WieldAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index e68bed822a..90de0045d3 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -85,13 +85,13 @@ impl Animation for RunAnimation { * 0.2, ((global_time + anim_time) as f32 / 18.0) .floor() - .mul(1337.0) + .mul(1137.0) .sin() * 0.1, ); - next.chest.scale = Vec3::one() / 13.0; - next.foot_l.scale = Vec3::one() / 13.0; - next.foot_r.scale = Vec3::one() / 13.0; + next.chest.scale = Vec3::one() / 11.0; + next.foot_l.scale = Vec3::one() / 11.0; + next.foot_r.scale = Vec3::one() / 11.0; next.head.position = Vec3::new(0.0, -1.0 + s_a.head.0, s_a.head.1 + short * 0.1); next.head.orientation = Quaternion::rotation_z(tilt * -2.5 + head_look.x * 0.2 - short * 0.02) @@ -101,7 +101,7 @@ impl Animation for RunAnimation { 0.0, s_a.chest.0, s_a.chest.1 + 1.0 * speednorm + shortalt * -0.8, - ) / 13.0; + ) / 11.0; next.chest.orientation = Quaternion::rotation_z(short * 0.06 + tilt * -0.6) * Quaternion::rotation_y(tilt * 1.6) * Quaternion::rotation_x(shortalter * 0.035 + speednorm * -0.4 + (tilt.abs())); @@ -135,14 +135,14 @@ impl Animation for RunAnimation { next.foot_l.position = Vec3::new( -s_a.foot.0 + footstrafel * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.0 * speednorm + footrotl * -1.5 * speednorm) + + (1.0 - sideabs) * (-1.0 * speednorm + footrotl * -2.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -1.1 * speednorm).max(-1.0))) + side * ((footvertsl * 1.5).max(-1.0)), - ) / 13.0; + ) / 11.0; next.foot_l.orientation = Quaternion::rotation_x( - (1.0 - sideabs) * (-0.2 + foothoril * -1.3 * speednorm) + sideabs * -0.5, + (1.0 - sideabs) * (-0.2 * speednorm + foothoril * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( tilt * 2.0 + side * 0.3 + side * (foothoril * 0.3), ) * Quaternion::rotation_z(side * 0.2); @@ -150,14 +150,14 @@ impl Animation for RunAnimation { next.foot_r.position = Vec3::new( s_a.foot.0 + footstrafer * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.0 * speednorm + footrotr * -1.5 * speednorm) + + (1.0 - sideabs) * (-1.0 * speednorm + footrotr * -2.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -1.1 * speednorm).max(-1.0))) + side * ((footvertsr * -1.5).max(-1.0)), - ) / 13.0; + ) / 11.0; next.foot_r.orientation = Quaternion::rotation_x( - (1.0 - sideabs) * (-0.2 + foothorir * -1.3 * speednorm) + sideabs * -0.5, + (1.0 - sideabs) * (-0.2 * speednorm + foothorir * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( tilt * 2.0 + side * 0.3 + side * (foothorir * 0.3), ) * Quaternion::rotation_z(side * 0.2); diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs index b94a22fa9c..d0dfe3bbe5 100644 --- a/voxygen/anim/src/biped_small/shoot.rs +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -54,10 +54,10 @@ impl Animation for ShootAnimation { let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; - next.foot_l.scale = Vec3::one() / 13.0; - next.foot_r.scale = Vec3::one() / 13.0; + next.foot_l.scale = Vec3::one() / 11.0; + next.foot_r.scale = Vec3::one() / 11.0; - next.chest.scale = Vec3::one() / 13.0; + next.chest.scale = Vec3::one() / 11.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) * Quaternion::rotation_y(fast * 0.07 * speednormcancel); @@ -65,7 +65,7 @@ impl Animation for ShootAnimation { 0.0, s_a.chest.0, s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, - ) / 13.0; + ) / 11.0; next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs index 7d9a50193a..e932475a3a 100644 --- a/voxygen/anim/src/biped_small/wield.rs +++ b/voxygen/anim/src/biped_small/wield.rs @@ -44,10 +44,10 @@ impl Animation for WieldAnimation { let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; - next.foot_l.scale = Vec3::one() / 13.0; - next.foot_r.scale = Vec3::one() / 13.0; + next.foot_l.scale = Vec3::one() / 11.0; + next.foot_r.scale = Vec3::one() / 11.0; - next.chest.scale = Vec3::one() / 13.0; + next.chest.scale = Vec3::one() / 11.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) * Quaternion::rotation_y(fast * 0.07 * speednormcancel); @@ -55,7 +55,7 @@ impl Animation for WieldAnimation { 0.0, s_a.chest.0, s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, - ) / 13.0; + ) / 11.0; next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); diff --git a/voxygen/anim/src/character/run.rs b/voxygen/anim/src/character/run.rs index 6f6de75c29..faad4e37dc 100644 --- a/voxygen/anim/src/character/run.rs +++ b/voxygen/anim/src/character/run.rs @@ -145,7 +145,7 @@ impl Animation for RunAnimation { next.back.orientation = Quaternion::rotation_x(-0.05 + short * 0.02 + noisea * 0.02 + noiseb * 0.02); - next.shorts.position = Vec3::new(0.0, 0.65 + s_a.shorts.0, 0.65 + s_a.shorts.1); + next.shorts.position = Vec3::new(0.0, 0.65 + s_a.shorts.0, 0.65 * speednorm + s_a.shorts.1); next.shorts.orientation = Quaternion::rotation_x(0.2 * speednorm) * Quaternion::rotation_z(short * 0.25 + tilt * -1.5) * Quaternion::rotation_y(tilt * 0.7); diff --git a/voxygen/anim/src/character/wield.rs b/voxygen/anim/src/character/wield.rs index 510d5e8f19..733ea18dd8 100644 --- a/voxygen/anim/src/character/wield.rs +++ b/voxygen/anim/src/character/wield.rs @@ -218,7 +218,7 @@ impl Animation for WieldAnimation { * Quaternion::rotation_y(s_a.ac.4) * Quaternion::rotation_z(s_a.ac.5); }, - Some(ToolKind::Hammer) => { + Some(ToolKind::Hammer) | Some(ToolKind::HammerSimple) => { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2); diff --git a/voxygen/anim/src/quadruped_low/mod.rs b/voxygen/anim/src/quadruped_low/mod.rs index c353af153b..0a9adfa1b9 100644 --- a/voxygen/anim/src/quadruped_low/mod.rs +++ b/voxygen/anim/src/quadruped_low/mod.rs @@ -256,6 +256,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Monitor, _) => (1.1), (Asp, _) => (1.4), (Rocksnapper, _) => (1.4), + (Hakulaq, _) => (1.3), (Pangolin, _) => (1.3), (Maneater, _) => (1.4), (Lavadrake, _) => (1.4), @@ -269,6 +270,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Monitor, _) => (1.4), (Tortoise, _) => (0.7), (Rocksnapper, _) => (0.7), + (Hakulaq, _) => (1.2), (Pangolin, _) => (1.15), (Maneater, _) => (0.9), (Lavadrake, _) => (1.1), diff --git a/voxygen/anim/src/quadruped_medium/feed.rs b/voxygen/anim/src/quadruped_medium/feed.rs index f136d7ef77..eb0f1f1ef8 100644 --- a/voxygen/anim/src/quadruped_medium/feed.rs +++ b/voxygen/anim/src/quadruped_medium/feed.rs @@ -22,13 +22,12 @@ impl Animation for FeedAnimation { s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let slower = (anim_time as f32 * 1.0 + PI).sin(); let slow = (anim_time as f32 * 3.5 + PI).sin(); let fast = (anim_time as f32 * 5.0).sin(); let faster = (anim_time as f32 * 14.0).sin(); - let transition = (anim_time as f32).min(0.4) / 0.4; + let transition = (((anim_time as f32).powf(2.0)).min(1.0)) * s_a.feed.1; let look = Vec2::new( ((global_time + anim_time) as f32 / 8.0) @@ -43,25 +42,21 @@ impl Animation for FeedAnimation { * 0.25, ); - next.neck.scale = Vec3::one() * 1.02; - next.torso_front.scale = Vec3::one() * s_a.scaler / 11.0; - next.torso_back.scale = Vec3::one() * 0.99; - next.neck.scale = Vec3::one() * 1.02; - next.jaw.scale = Vec3::one() * 1.02; - if s_a.feed.0 { - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slower * 0.2); + next.head.position = Vec3::new( + 0.0, + s_a.head.0, + s_a.head.1 + slower * 0.2 + transition * 1.5, + ); next.head.orientation = Quaternion::rotation_z(0.3 * look.x) - * Quaternion::rotation_x( - fast * 0.05 + faster * 0.08 + 0.8 * s_a.feed.1 * transition, - ); + * Quaternion::rotation_x(fast * 0.05 + faster * 0.08 + transition * -0.5); next.neck.position = Vec3::new( 0.0, - s_a.neck.0, - s_a.neck.1 + slower * 0.1 - 4.0 * transition, + s_a.neck.0 + transition * 1.0, + s_a.neck.1 + slower * 0.1 + transition * 1.5, ); - next.neck.orientation = Quaternion::rotation_x(-2.5 * s_a.feed.1 * transition); + next.neck.orientation = Quaternion::rotation_x(transition * -0.5); next.jaw.position = Vec3::new(0.0, s_a.jaw.0 - slower * 0.12, s_a.jaw.1 + slow * 0.2); next.jaw.orientation = Quaternion::rotation_x((fast * 0.18 + faster * 0.26).min(0.0)); @@ -74,48 +69,68 @@ impl Animation for FeedAnimation { next.jaw.position = Vec3::new(0.0, s_a.jaw.0 - slower * 0.12, s_a.jaw.1 + slow * 0.2 + 0.5); - next.jaw.orientation = Quaternion::rotation_x(slow * 0.05 - 0.08); + next.jaw.orientation = + Quaternion::rotation_x(slow * 0.05 * (anim_time as f32).min(1.0) - 0.08); } next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.tail.orientation = Quaternion::rotation_z(0.0 + slow * 0.2 + look.x); - next.torso_front.position = - Vec3::new(0.0, s_a.torso_front.0, s_a.torso_front.1 + slower * 0.3) * s_a.scaler / 11.0; - next.torso_front.orientation = Quaternion::rotation_y(slow * 0.02); + next.torso_front.position = Vec3::new( + 0.0, + s_a.torso_front.0, + s_a.torso_front.1 + slower * 0.3 + transition * -6.0, + ) * s_a.scaler + / 11.0; + next.torso_front.orientation = + Quaternion::rotation_x(transition * -0.7) * Quaternion::rotation_y(slow * 0.02); next.torso_back.position = Vec3::new(0.0, s_a.torso_back.0, s_a.torso_back.1 + slower * 0.2); - next.torso_back.orientation = Quaternion::rotation_y(-slow * 0.005); + next.torso_back.orientation = + Quaternion::rotation_x(transition * 0.5) * Quaternion::rotation_y(-slow * 0.005); next.ears.position = Vec3::new(0.0, s_a.ears.0, s_a.ears.1); next.ears.orientation = Quaternion::rotation_x(0.0 + slower * 0.03); next.leg_fl.position = Vec3::new( -s_a.leg_f.0, - s_a.leg_f.1, - s_a.leg_f.2 + slow * -0.15 + slower * -0.15, + s_a.leg_f.1 + transition * -2.2, + s_a.leg_f.2 + slow * -0.15 + slower * -0.15 + transition * 2.4, ); - next.leg_fl.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_fl.orientation = + Quaternion::rotation_x(transition * 1.0) * Quaternion::rotation_y(slow * -0.02); next.leg_fr.position = Vec3::new( s_a.leg_f.0, - s_a.leg_f.1, - s_a.leg_f.2 + slow * 0.15 + slower * -0.15, + s_a.leg_f.1 + transition * -2.2, + s_a.leg_f.2 + slow * 0.15 + slower * -0.15 + transition * 2.4, ); - next.leg_fr.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_fr.orientation = + Quaternion::rotation_x(transition * 1.0) * Quaternion::rotation_y(slow * -0.02); - next.leg_bl.position = Vec3::new(-s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2 + slower * -0.3); - next.leg_bl.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_bl.position = Vec3::new( + -s_a.leg_b.0, + s_a.leg_b.1, + s_a.leg_b.2 + slower * -0.3 + transition * -1.3, + ); + next.leg_bl.orientation = + Quaternion::rotation_x(transition * 0.2) * Quaternion::rotation_y(slow * -0.02); - next.leg_br.position = Vec3::new(s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2 + slower * -0.3); - next.leg_br.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_br.position = Vec3::new( + s_a.leg_b.0, + s_a.leg_b.1, + s_a.leg_b.2 + slower * -0.3 + transition * -1.3, + ); + next.leg_br.orientation = + Quaternion::rotation_x(transition * 0.2) * Quaternion::rotation_y(slow * -0.02); next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); + next.foot_fl.orientation = Quaternion::rotation_x(transition * -0.3); next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); - + next.foot_fr.orientation = Quaternion::rotation_x(transition * -0.3); next.foot_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2 + slower * -0.2); diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index e1e3622b73..00cf3170f7 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -162,7 +162,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Zebra, _) => (3.0, -2.0), (Antelope, _) => (1.5, 2.5), (Kelpie, _) => (4.0, -1.0), - (Horse, _) => (0.5, 1.5), + (Horse, _) => (4.5, 2.5), (Barghest, _) => (0.5, -2.5), (Cattle, Male) => (0.5, 3.5), (Cattle, Female) => (2.5, 4.0), @@ -192,7 +192,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Zebra, _) => (1.0, 3.5), (Antelope, _) => (0.5, 2.5), (Kelpie, _) => (2.0, 1.0), - (Horse, _) => (1.5, 1.5), + (Horse, _) => (-2.5, -1.5), (Barghest, _) => (0.5, -0.5), (Cattle, Male) => (0.0, 0.0), (Cattle, Female) => (0.0, 0.0), @@ -205,7 +205,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { jaw: match (body.species, body.body_type) { (Grolgar, _) => (7.0, 2.0), (Saber, _) => (2.5, -2.0), - (Tuskram, _) => (5.5, -3.5), + (Tuskram, _) => (7.5, -3.5), (Lion, _) => (3.5, -4.0), (Tarasque, _) => (9.0, -9.5), (Tiger, _) => (3.0, -3.5), @@ -546,11 +546,11 @@ impl<'a> From<&'a Body> for SkeletonAttr { }, feed: match (body.species, body.body_type) { (Tuskram, _) => (true, 0.5), - (Mouflon, _) => (true, 1.0), + (Mouflon, _) => (true, 0.7), (Deer, _) => (true, 1.0), (Hirdrasil, _) => (true, 0.9), (Donkey, _) => (false, 1.0), - (Zebra, _) => (false, 1.0), + (Zebra, _) => (true, 1.0), (Antelope, _) => (false, 0.9), (Kelpie, _) => (false, 1.0), (Horse, _) => (true, 0.85), diff --git a/voxygen/anim/src/quadruped_medium/run.rs b/voxygen/anim/src/quadruped_medium/run.rs index 5bf4d59a5d..06da0d5e0b 100644 --- a/voxygen/anim/src/quadruped_medium/run.rs +++ b/voxygen/anim/src/quadruped_medium/run.rs @@ -26,11 +26,11 @@ impl Animation for RunAnimation { *rate = 1.0; //let increasefreqtest = (((1.0/speed)*3.0).round()).min(5.0); let lab = 0.72; //0.72 - let amplitude = (speed / 24.0).powf(0.4); - let amplitude2 = (speed / 24.0).powf(0.4); - let amplitude3 = (speed / 24.0).powf(0.4); + let amplitude = (speed / 24.0).powf(0.6); + let amplitude2 = (speed / 24.0).powf(0.6); + let amplitude3 = (speed / 24.0).powf(0.6); let speedmult = s_a.tempo; - let canceler = (speed / 24.0).powf(0.4); + let canceler = (speed / 24.0).powf(0.6); //println!("{} test", canceler); let short = (((1.0) diff --git a/voxygen/anim/src/theropod/mod.rs b/voxygen/anim/src/theropod/mod.rs index 3760055e12..200fac9839 100644 --- a/voxygen/anim/src/theropod/mod.rs +++ b/voxygen/anim/src/theropod/mod.rs @@ -186,16 +186,16 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sunlizard, _) => (2.5, 1.5, -0.5), }, leg: match (body.species, body.body_type) { - (Archaeos, _) => (4.5, -3.0, -4.0), - (Odonto, _) => (5.5, -2.5, -4.0), + (Archaeos, _) => (2.5, -3.0, -4.0), + (Odonto, _) => (3.5, -2.5, -4.0), (Sandraptor, _) => (1.5, -2.5, -3.0), (Snowraptor, _) => (1.5, -2.5, -3.0), (Woodraptor, _) => (1.5, -2.5, -3.0), (Sunlizard, _) => (2.5, -2.5, -3.0), }, foot: match (body.species, body.body_type) { - (Archaeos, _) => (1.0, -0.5, -7.0), - (Odonto, _) => (2.0, -6.5, -3.0), + (Archaeos, _) => (3.0, -0.5, -7.0), + (Odonto, _) => (4.0, -6.5, -3.0), (Sandraptor, _) => (2.0, 0.0, -3.0), (Snowraptor, _) => (2.0, 0.0, -3.0), (Woodraptor, _) => (2.0, 0.0, -3.0), diff --git a/voxygen/anim/src/theropod/run.rs b/voxygen/anim/src/theropod/run.rs index e380ea3e97..30088c0505 100644 --- a/voxygen/anim/src/theropod/run.rs +++ b/voxygen/anim/src/theropod/run.rs @@ -6,7 +6,7 @@ use std::f32::consts::PI; pub struct RunAnimation; impl Animation for RunAnimation { - type Dependency = (f32, Vec3, Vec3, f64, Vec3); + type Dependency = (Vec3, Vec3, Vec3, f64, Vec3, f32); type Skeleton = TheropodSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -15,7 +15,7 @@ impl Animation for RunAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_run")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (velocity, orientation, last_ori, _global_time, avg_vel): Self::Dependency, + (velocity, orientation, last_ori, _global_time, avg_vel, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, @@ -24,38 +24,31 @@ impl Animation for RunAnimation { let speed = (Vec2::::from(velocity).magnitude()).min(22.0); *rate = 1.0; - let breathe = (anim_time as f32 * 0.8).sin(); - let topspeed = 18.0; + //let speednorm = speed / 13.0; + let speednorm = (speed / 13.0).powf(0.25); - let canceler = speed / topspeed; - let lab = 0.5; //6 - let amplitude2 = (speed * 1.4 / topspeed).max(0.6); - let amplitude3 = (speed / topspeed).max(0.35); - let speedmult = if speed > 0.0 { - 1.2 * (1.0 * 1.0) - } else { - 0.9 * (1.0 * 1.0) - }; + let speedmult = 1.0; + let lab = 0.6; //6 let short = (((1.0) / (0.72 + 0.28 - * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15 - 0.5) - .sin()) - .powi(2))) + * ((acc_vel * 1.0 * lab as f32 * speedmult + PI * -0.15 - 0.5).sin()) + .powi(2))) .sqrt()) - * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15 - 0.5).sin()); + * ((acc_vel * 1.0 * lab as f32 * speedmult + PI * -0.15 - 0.5).sin()) + * speednorm; // let shortalt = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 3.0 / 8.0 - 0.5).sin(); + (acc_vel * 1.0 * lab as f32 * speedmult + PI * 3.0 / 8.0 - 0.5).sin() * speednorm; //FL - let foot1a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + PI).sin(); //1.5 - let foot1b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + PI).sin(); //1.9 + let foot1a = (acc_vel * 1.0 * lab as f32 * speedmult + 0.0 + PI).sin() * speednorm; //1.5 + let foot1b = (acc_vel * 1.0 * lab as f32 * speedmult + 1.57 + PI).sin() * speednorm; //1.9 //FR - let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult).sin(); //1.2 - let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57).sin(); //1.6 + let foot2a = (acc_vel * 1.0 * lab as f32 * speedmult).sin() * speednorm; //1.2 + let foot2b = (acc_vel * 1.0 * lab as f32 * speedmult + 1.57).sin() * speednorm; //1.6 let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); let tilt = if ::vek::Vec2::new(ori, last_ori) @@ -69,7 +62,7 @@ impl Animation for RunAnimation { } else { 0.0 } * 1.3; - let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()) * speednorm; next.head.scale = Vec3::one() * 1.02; next.neck.scale = Vec3::one() * 0.98; @@ -78,28 +71,27 @@ impl Animation for RunAnimation { next.foot_r.scale = Vec3::one() * 0.96; next.chest_front.scale = Vec3::one() / s_a.scaler; - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + breathe * 0.3); - next.head.orientation = Quaternion::rotation_x(-0.1 + short * -0.05) + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.orientation = Quaternion::rotation_x(-0.1 * speednorm + short * -0.05) * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(shortalt * -0.2 - tilt * 4.5); + * Quaternion::rotation_z(shortalt * -0.2 - tilt * 2.5); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); next.jaw.orientation = Quaternion::rotation_x(short * -0.03); next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1); - next.neck.orientation = Quaternion::rotation_x(-0.1 + short * -0.04) + next.neck.orientation = Quaternion::rotation_x(-0.1 * speednorm + short * -0.04) * Quaternion::rotation_y(tilt * 0.3) - * Quaternion::rotation_z(shortalt * -0.1 - tilt * 4.2); + * Quaternion::rotation_z(shortalt * -0.1 - tilt * 3.2); next.chest_front.position = Vec3::new( 0.0, s_a.chest_front.0, - s_a.chest_front.1 + short * 0.5 + x_tilt * 10.0 * canceler, + s_a.chest_front.1 + short * 0.5 + x_tilt * 10.0 + 0.5 * speednorm, ) / s_a.scaler; - next.chest_front.orientation = - Quaternion::rotation_x(short * 0.07 + x_tilt * (canceler * 6.0).min(1.0)) - * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(shortalt * 0.15 + tilt * -1.5); + next.chest_front.orientation = Quaternion::rotation_x(short * 0.07 + x_tilt) + * Quaternion::rotation_y(tilt * 0.8) + * Quaternion::rotation_z(shortalt * 0.15 + tilt * -1.5); next.chest_back.position = Vec3::new(0.0, s_a.chest_back.0, s_a.chest_back.1); next.chest_back.orientation = Quaternion::rotation_x(short * -0.04) @@ -115,44 +107,44 @@ impl Animation for RunAnimation { * Quaternion::rotation_z(shortalt * -0.2 + tilt * 1.4); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_l.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot2a * 0.3); + next.hand_l.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot2a * 0.3); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot1a * 0.3); + next.hand_r.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot1a * 0.3); next.leg_l.position = Vec3::new( - -s_a.leg.0, - s_a.leg.1 + amplitude3 * foot1b * -1.3, - s_a.leg.2 + amplitude3 * foot1a * 1.0, + -s_a.leg.0 + speednorm * 1.5, + s_a.leg.1 + foot1b * -1.3, + s_a.leg.2 + foot1a * 1.0, ); - next.leg_l.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot1a * 0.15) + next.leg_l.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot1a * 0.15) * Quaternion::rotation_y(tilt * 0.5) * Quaternion::rotation_z(foot1a * -0.3 + tilt * -0.5); next.leg_r.position = Vec3::new( - s_a.leg.0, - s_a.leg.1 + amplitude3 * foot2b * -1.3, - s_a.leg.2 + amplitude3 * foot2a * 1.0, + s_a.leg.0 + speednorm * -1.5, + s_a.leg.1 + foot2b * -1.3, + s_a.leg.2 + foot2a * 1.0, ); - next.leg_r.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot2a * 0.15) + next.leg_r.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot2a * 0.15) * Quaternion::rotation_y(tilt * 0.5) * Quaternion::rotation_z(foot2a * 0.3 + tilt * -0.5); next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + canceler * -1.0 + amplitude3 * foot1b * -2.0, - s_a.foot.2 + canceler * 2.0 + (foot1a * 1.5).max(0.0) * amplitude2, + s_a.foot.1 + foot1b * -2.0, + s_a.foot.2 + speednorm * 0.5 + (foot1a * 1.5).max(0.0), ); - next.foot_l.orientation = Quaternion::rotation_x(-0.3 + amplitude2 * foot1b * -0.35) + next.foot_l.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot1b * -0.35) * Quaternion::rotation_y(tilt * -1.0) * Quaternion::rotation_z(tilt * -0.5); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + canceler * -1.0 + amplitude3 * foot2b * -2.0, - s_a.foot.2 + canceler * 2.0 + (foot2a * 1.5).max(0.0) * amplitude2, + s_a.foot.1 + foot2b * -2.0, + s_a.foot.2 + speednorm * 0.5 + (foot2a * 1.5).max(0.0), ); - next.foot_r.orientation = Quaternion::rotation_x(-0.3 + amplitude2 * foot2b * -0.35) + next.foot_r.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot2b * -0.35) * Quaternion::rotation_y(tilt * -1.0); next diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index b213f75472..30510de597 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -53,7 +53,7 @@ use treeculler::{BVol, BoundingSphere}; use vek::*; const DAMAGE_FADE_COEFFICIENT: f64 = 15.0; -const MOVING_THRESHOLD: f32 = 0.4; +const MOVING_THRESHOLD: f32 = 0.2; const MOVING_THRESHOLD_SQR: f32 = MOVING_THRESHOLD * MOVING_THRESHOLD; /// camera data, figure LOD render distance. @@ -2656,6 +2656,40 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::DashMelee(s) => { + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Charge => { + stage_time / s.static_data.charge_duration.as_secs_f64() + }, + StageSection::Swing => { + stage_time / s.static_data.swing_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + }; + anim::biped_small::DashAnimation::update_skeleton( + &target_base, + ( + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, CharacterState::BasicRanged(s) => { let stage_time = s.timer.as_secs_f64(); @@ -2902,12 +2936,13 @@ impl FigureMgr { (true, true, false) => anim::theropod::RunAnimation::update_skeleton( &TheropodSkeleton::default(), ( - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -3426,13 +3461,15 @@ impl FigureMgr { &mut state_animation_rate, skeleton_attr, ), - 2 => anim::biped_large::SpinAnimation::update_skeleton( + 2 => anim::biped_large::BetaAnimation::update_skeleton( &target_base, ( active_tool_kind, second_tool_kind, + vel.0, time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, @@ -3443,9 +3480,10 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, From 53b0ba286a90783fd891fdec9a13b83d8893aee5 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 16 Feb 2021 00:18:05 -0500 Subject: [PATCH 23/36] Ice particles for Wendigo --- .../{firebomb.ron => frostbomb.ron} | 5 +- .../abilities/weapon_ability_manifest.ron | 2 +- assets/voxygen/shaders/particle-vert.glsl | 19 +++-- common/src/comp/projectile.rs | 42 +++++++++ common/src/event.rs | 1 - common/src/explosion.rs | 3 +- common/sys/src/projectile.rs | 2 - server/src/cmd.rs | 2 +- server/src/events/entity_manipulation.rs | 13 +-- server/src/events/mod.rs | 3 +- server/src/sys/object.rs | 4 +- voxygen/src/audio/sfx/mod.rs | 5 +- voxygen/src/render/pipelines/particle.rs | 1 + voxygen/src/scene/mod.rs | 27 +++--- voxygen/src/scene/particle.rs | 85 ++++++++++++------- 15 files changed, 138 insertions(+), 76 deletions(-) rename assets/common/abilities/unique/wendigomagic/{firebomb.ron => frostbomb.ron} (78%) diff --git a/assets/common/abilities/unique/wendigomagic/firebomb.ron b/assets/common/abilities/unique/wendigomagic/frostbomb.ron similarity index 78% rename from assets/common/abilities/unique/wendigomagic/firebomb.ron rename to assets/common/abilities/unique/wendigomagic/frostbomb.ron index 16444d31a3..9f53c6deb9 100644 --- a/assets/common/abilities/unique/wendigomagic/firebomb.ron +++ b/assets/common/abilities/unique/wendigomagic/frostbomb.ron @@ -2,12 +2,11 @@ BasicRanged( energy_cost: 0, buildup_duration: 0.5, recover_duration: 0.35, - projectile: Fireball( + projectile: Frostball( damage: 100.0, radius: 5.0, - energy_regen: 50, ), - projectile_body: Object(BoltFire), + projectile_body: Object(BoltFire), // TODO: Get ice projectile model /*projectile_light: Some(LightEmitter { col: (1.0, 0.75, 0.11).into(), ..Default::default() diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index 5d08c7c957..91b8b12126 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -93,7 +93,7 @@ abilities: [], ), Unique(WendigoMagic): ( - primary: "common.abilities.unique.wendigomagic.firebomb", + primary: "common.abilities.unique.wendigomagic.frostbomb", secondary: "common.abilities.unique.wendigomagic.singlestrike", skills: [], ), diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index 95cfc1ecaf..f33ece8ede 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -58,6 +58,7 @@ const int FIRE_SHOCKWAVE = 16; const int FIRE_BOWL = 17; const int SNOW = 18; const int EXPLOSION = 19; +const int ICE = 20; // meters per second squared (acceleration) const float earth_gravity = 9.807; @@ -324,7 +325,7 @@ void main() { attr = Attr( spiral_motion(inst_dir, 0.3 * (floor(2 * rand0 + 0.5) - 0.5) * min(linear_scale(10), 1), lifetime / inst_lifespan, 10.0, inst_time), vec3((1.7 - 0.7 * abs(floor(2 * rand0 - 0.5) + 0.5)) * (1.5 + 0.5 * sin(tick.x * 10 - lifetime * 4))), - vec4(vec3(0.4, 1.6 + 0.3 * sin(tick.x * 10 - lifetime * 3 + 4), 1.0 + 0.15 * sin(tick.x * 5 - lifetime * 5)), start_end(1.0, 0.0) /*0.3*/), + vec4(vec3(0.4, 1.6 + 0.3 * sin(tick.x * 10 - lifetime * 3 + 4), 1.0 + 0.15 * sin(tick.x * 5 - lifetime * 5)), 1 /*0.3*/), spin_in_axis(inst_dir, tick.z) ); } else if (inst_mode == ENERGY_NATURE) { @@ -333,7 +334,7 @@ void main() { inst_dir * slow_end(0.03) + spiral_motion(vec3(rand1, rand2, rand3), 0.2 * (rand4 + 1.3) * slow_end(0.02), percent() * 3 * (rand4 + 4.0) + rand0, 1.0, 0.0), vec3(1.0), - vec4(vec3(0, 2.5, 1.5 + rand7 * 0.7), start_end(1.0, 0.0)), + vec4(vec3(0, 2.5, 1.5 + rand7 * 0.7), 1), spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3) ); } else if (inst_mode == FLAMETHROWER) { @@ -341,7 +342,7 @@ void main() { attr = Attr( (inst_dir * slow_end(1.5)) + vec3(rand0, rand1, rand2) * (lifetime * 5 + 0.25), vec3((2.5 * (1 - slow_start(0.3)))), - vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, start_end(1.0, 0.0)), + vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, 1), spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) ); } else if (inst_mode == EXPLOSION) { @@ -349,7 +350,15 @@ void main() { attr = Attr( inst_dir * ((rand0+1.0)/2 + 0.4) * slow_end(2.0) + 0.3 * grav_vel(earth_gravity), vec3((3 * (1 - slow_start(0.1)))), - vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, start_end(1.0, 0.0)), + vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, 1), + spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) + ); + } else if (inst_mode == ICE) { + f_reflect = 0.0; // Ice doesn't reflect to look like magic + attr = Attr( + inst_dir * ((rand0+1.0)/2 + 0.4) * slow_end(2.0) + 0.3 * grav_vel(earth_gravity), + vec3((3 * (1 - slow_start(0.1)))), + vec4(0.2, 1.6 + rand5 * 0.3 - 0.4 * percent(), 3, 1), spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) ); } else if (inst_mode == FIRE_SHOCKWAVE) { @@ -357,7 +366,7 @@ void main() { attr = Attr( vec3(rand0, rand1, lifetime * 10 + rand2), vec3((5 * (1 - slow_start(0.5)))), - vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, start_end(1.0, 0.0)), + vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, 1), spin_in_axis(vec3(rand3, rand4, rand5), rand6) ); } else { diff --git a/common/src/comp/projectile.rs b/common/src/comp/projectile.rs index cd7a6ad56d..86f118cfe8 100644 --- a/common/src/comp/projectile.rs +++ b/common/src/comp/projectile.rs @@ -3,6 +3,7 @@ use crate::{ Attack, AttackDamage, AttackEffect, CombatBuff, CombatEffect, CombatRequirement, Damage, DamageSource, GroupTarget, Knockback, KnockbackDir, }, + comp::item::Reagent, uid::Uid, Explosion, RadiusEffect, }; @@ -49,6 +50,10 @@ pub enum ProjectileConstructor { radius: f32, energy_regen: f32, }, + Frostball { + damage: f32, + radius: f32, + }, Firebolt { damage: f32, energy_regen: f32, @@ -124,6 +129,34 @@ impl ProjectileConstructor { RadiusEffect::TerrainDestruction(2.0), ], radius, + reagent: Some(Reagent::Red), + }; + Projectile { + hit_solid: vec![Effect::Explode(explosion.clone()), Effect::Vanish], + hit_entity: vec![Effect::Explode(explosion), Effect::Vanish], + time_left: Duration::from_secs(10), + owner, + ignore_group: true, + } + }, + Frostball { + damage, + radius, + } => { + let damage = AttackDamage::new( + Damage { + source: DamageSource::Explosion, + value: damage, + }, + Some(GroupTarget::OutOfGroup), + ); + let attack = Attack::default().with_damage(damage); + let explosion = Explosion { + effects: vec![ + RadiusEffect::Attack(attack), + ], + radius, + reagent: Some(Reagent::Blue), }; Projectile { hit_solid: vec![Effect::Explode(explosion.clone()), Effect::Vanish], @@ -173,6 +206,7 @@ impl ProjectileConstructor { let explosion = Explosion { effects: vec![RadiusEffect::Attack(attack)], radius, + reagent: Some(Reagent::Green), }; Projectile { hit_solid: vec![Effect::Explode(explosion.clone()), Effect::Vanish], @@ -219,6 +253,14 @@ impl ProjectileConstructor { *energy_regen *= regen; *radius *= range; }, + Frostball { + ref mut damage, + ref mut radius, + .. + } => { + *damage *= power; + *radius *= range; + }, Firebolt { ref mut damage, ref mut energy_regen, diff --git a/common/src/event.rs b/common/src/event.rs index e528677b50..c38855cd21 100644 --- a/common/src/event.rs +++ b/common/src/event.rs @@ -39,7 +39,6 @@ pub enum ServerEvent { pos: Vec3, explosion: Explosion, owner: Option, - reagent: Option, }, Damage { entity: EcsEntity, diff --git a/common/src/explosion.rs b/common/src/explosion.rs index 04296a856b..692c08e97a 100644 --- a/common/src/explosion.rs +++ b/common/src/explosion.rs @@ -1,10 +1,11 @@ -use crate::{combat::Attack, effect::Effect}; +use crate::{combat::Attack, effect::Effect, comp::item::Reagent}; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct Explosion { pub effects: Vec, pub radius: f32, + pub reagent: Option, } #[derive(Clone, Debug, Serialize, Deserialize)] diff --git a/common/sys/src/projectile.rs b/common/sys/src/projectile.rs index fa7dfa4476..329ad2df36 100644 --- a/common/sys/src/projectile.rs +++ b/common/sys/src/projectile.rs @@ -127,7 +127,6 @@ impl<'a> System<'a> for Sys { pos: pos.0, explosion: e, owner: projectile.owner, - reagent: None, }) }, projectile::Effect::Vanish => { @@ -163,7 +162,6 @@ impl<'a> System<'a> for Sys { pos: pos.0, explosion: e, owner: projectile.owner, - reagent: None, }) }, projectile::Effect::Vanish => { diff --git a/server/src/cmd.rs b/server/src/cmd.rs index 79e3047371..0cd6ed1c7d 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -1374,9 +1374,9 @@ fn handle_explosion( RadiusEffect::TerrainDestruction(power), ], radius: 3.0 * power, + reagent: None, }, owner: ecs.read_storage::().get(target).copied(), - reagent: None, }) }, None => server.notify_client( diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 900ec70fa8..551b524eb2 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -29,7 +29,6 @@ use common::{ }; use common_net::{msg::ServerGeneral, sync::WorldSyncExt}; use common_sys::state::BlockChange; -use comp::item::Reagent; use hashbrown::HashSet; use rand::prelude::*; use specs::{join::Join, saveload::MarkerAllocator, Entity as EcsEntity, WorldExt}; @@ -577,19 +576,13 @@ pub fn handle_explosion( pos: Vec3, explosion: Explosion, owner: Option, - reagent: Option, ) { // Go through all other entities let ecs = &server.state.ecs(); // Add an outcome - // Uses radius as outcome power, makes negative if explosion has healing effect - let outcome_power = explosion.radius - * if explosion.effects.iter().any(|e| matches!(e, RadiusEffect::Attack(a) if a.effects().any(|e| matches!(e.effect(), combat::CombatEffect::Heal(h) if *h > 0.0)))) { - -1.0 - } else { - 1.0 - }; + // Uses radius as outcome power for now + let outcome_power = explosion.radius; ecs.write_resource::>() .push(Outcome::Explosion { pos, @@ -599,7 +592,7 @@ pub fn handle_explosion( .effects .iter() .any(|e| matches!(e, RadiusEffect::Attack(_))), - reagent, + reagent: explosion.reagent, }); let owner_entity = owner.and_then(|uid| { ecs.read_resource::() diff --git a/server/src/events/mod.rs b/server/src/events/mod.rs index a83689be38..f8adcacfa7 100644 --- a/server/src/events/mod.rs +++ b/server/src/events/mod.rs @@ -64,8 +64,7 @@ impl Server { pos, explosion, owner, - reagent, - } => handle_explosion(&self, pos, explosion, owner, reagent), + } => handle_explosion(&self, pos, explosion, owner), ServerEvent::Shoot { entity, dir, diff --git a/server/src/sys/object.rs b/server/src/sys/object.rs index afb3574a0f..d2577c0bbc 100644 --- a/server/src/sys/object.rs +++ b/server/src/sys/object.rs @@ -60,9 +60,9 @@ impl<'a> System<'a> for Sys { RadiusEffect::TerrainDestruction(4.0), ], radius: 12.0, + reagent: None, }, owner: *owner, - reagent: None, }); } }, @@ -87,9 +87,9 @@ impl<'a> System<'a> for Sys { RadiusEffect::TerrainDestruction(4.0), ], radius: 12.0, + reagent: Some(*reagent), }, owner: *owner, - reagent: Some(*reagent), }); } }, diff --git a/voxygen/src/audio/sfx/mod.rs b/voxygen/src/audio/sfx/mod.rs index a4afb5a4bb..47183dd40b 100644 --- a/voxygen/src/audio/sfx/mod.rs +++ b/voxygen/src/audio/sfx/mod.rs @@ -91,7 +91,7 @@ use client::Client; use common::{ assets::{self, AssetExt, AssetHandle}, comp::{ - item::{ItemKind, ToolKind}, + item::{ItemKind, Reagent, ToolKind}, object, Body, CharacterAbilityType, InventoryUpdateEvent, }, outcome::Outcome, @@ -298,9 +298,10 @@ impl SfxMgr { pos, power, is_attack, + reagent, .. } => { - let file_ref = if *is_attack && *power < 0.0 { + let file_ref = if *is_attack && matches!(reagent, Some(Reagent::Green)) { "voxygen.audio.sfx.abilities.heal_bomb" } else { "voxygen.audio.sfx.explosion" diff --git a/voxygen/src/render/pipelines/particle.rs b/voxygen/src/render/pipelines/particle.rs index c5db9acfda..d5e2cee267 100644 --- a/voxygen/src/render/pipelines/particle.rs +++ b/voxygen/src/render/pipelines/particle.rs @@ -116,6 +116,7 @@ pub enum ParticleMode { FireBowl = 17, Snow = 18, Explosion = 19, + Ice = 20, } impl ParticleMode { diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index 339917b173..580eebd820 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -406,9 +406,9 @@ impl Scene { Outcome::Explosion { pos, power, - radius: _, - is_attack: _, + is_attack, reagent, + .. } => self.event_lights.push(EventLight { light: Light::new( *pos, @@ -416,20 +416,19 @@ impl Scene { Some(Reagent::Blue) => Rgb::new(0.15, 0.4, 1.0), Some(Reagent::Green) => Rgb::new(0.0, 1.0, 0.0), Some(Reagent::Purple) => Rgb::new(0.7, 0.0, 1.0), - Some(Reagent::Red) => Rgb::new(1.0, 0.0, 0.0), - Some(Reagent::Yellow) => Rgb::new(1.0, 1.0, 0.0), - None => { - if *power < 0.0 { - Rgb::new(0.0, 1.0, 0.0) - } else { - Rgb::new(1.0, 0.5, 0.0) - } + Some(Reagent::Red) => if *is_attack { + Rgb::new(1.0, 0.5, 0.0) + } else { + Rgb::new(1.0, 0.0, 0.0) }, + Some(Reagent::Yellow) => Rgb::new(1.0, 1.0, 0.0), + None => Rgb::new(1.0, 0.5, 0.0), }, - power.abs() - * match reagent { - Some(_) => 5.0, - None => 2.5, + power + * if *is_attack || reagent.is_none() { + 2.5 + } else { + 5.0 }, ), timeout: match reagent { diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 62da9320a7..95c36b1fe3 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -62,38 +62,59 @@ impl ParticleMgr { reagent, } => { if *is_attack { - if *power < 0.0 { - self.particles.resize_with( - self.particles.len() + (60.0 * power.abs()) as usize, - || { - Particle::new_directed( - Duration::from_secs_f32(rng.gen_range(0.2..3.0)), - time, - ParticleMode::EnergyNature, - *pos, - *pos + Vec3::::zero() - .map(|_| rng.gen_range(-1.0..1.0)) - .normalized() - * rng.gen_range(1.0..*radius), - ) - }, - ); - } else { - self.particles.resize_with( - self.particles.len() + (75.0 * power.abs()) as usize, - || { - Particle::new_directed( - Duration::from_millis(500), - time, - ParticleMode::Explosion, - *pos, - *pos + Vec3::::zero() - .map(|_| rng.gen_range(-1.0..1.0)) - .normalized() - * *radius, - ) - }, - ); + match reagent { + Some(Reagent::Green) => { + self.particles.resize_with( + self.particles.len() + (60.0 * power.abs()) as usize, + || { + Particle::new_directed( + Duration::from_secs_f32(rng.gen_range(0.2..3.0)), + time, + ParticleMode::EnergyNature, + *pos, + *pos + Vec3::::zero() + .map(|_| rng.gen_range(-1.0..1.0)) + .normalized() + * rng.gen_range(1.0..*radius), + ) + }, + ); + }, + Some(Reagent::Red) => { + self.particles.resize_with( + self.particles.len() + (75.0 * power.abs()) as usize, + || { + Particle::new_directed( + Duration::from_millis(500), + time, + ParticleMode::Explosion, + *pos, + *pos + Vec3::::zero() + .map(|_| rng.gen_range(-1.0..1.0)) + .normalized() + * *radius, + ) + }, + ); + }, + Some(Reagent::Blue) => { + self.particles.resize_with( + self.particles.len() + (75.0 * power.abs()) as usize, + || { + Particle::new_directed( + Duration::from_millis(500), + time, + ParticleMode::Ice, + *pos, + *pos + Vec3::::zero() + .map(|_| rng.gen_range(-1.0..1.0)) + .normalized() + * *radius, + ) + }, + ); + }, + _ => {}, } } else { self.particles.resize_with( From 1b9815dc343824e056340a6bf6b5c227397d6dfe Mon Sep 17 00:00:00 2001 From: Snowram Date: Thu, 18 Feb 2021 01:41:34 +0100 Subject: [PATCH 24/36] Adds 3 new npcs, tusk ram new design --- .../unique/quadlowbeam/healingbeam.ron | 14 ++++ .../abilities/unique/tidalclaws/bubbles.ron | 14 ++++ .../abilities/weapon_ability_manifest.ron | 12 ++++ .../items/npc_weapons/unique/quadlowbeam.ron | 16 +++++ .../items/npc_weapons/unique/tidal_claws.ron | 16 +++++ assets/common/npc_names.ron | 14 +++- .../voxel/biped_large_central_manifest.ron | 52 ++++++++++++++ .../voxel/biped_large_lateral_manifest.ron | 68 +++++++++++++++++++ .../voxel/biped_large_weapon_manifest.ron | 4 ++ .../voxygen/voxel/biped_weapon_manifest.ron | 4 ++ .../voxel/fish_small_central_manifest.ron | 20 ++++++ .../voxel/fish_small_lateral_manifest.ron | 28 ++++++-- .../voxel/humanoid_main_weapon_manifest.ron | 4 ++ .../npc/clownfish/male/{fin_r.vox => fin.vox} | 0 .../voxygen/voxel/npc/deadwood/male/chest.vox | 3 + .../voxel/npc/deadwood/male/foot_br.vox | 3 + .../voxel/npc/deadwood/male/foot_fr.vox | 3 + .../voxel/npc/deadwood/male/head_upper.vox | 3 + .../voxygen/voxel/npc/piranha/male/chest.vox | 3 + assets/voxygen/voxel/npc/piranha/male/fin.vox | 3 + .../voxygen/voxel/npc/piranha/male/tail.vox | 3 + .../voxel/npc/tidalwarrior/male/foot_l.vox | 3 + .../voxel/npc/tidalwarrior/male/foot_r.vox | 3 + .../voxel/npc/tidalwarrior/male/hand_l.vox | 3 + .../voxel/npc/tidalwarrior/male/hand_r.vox | 3 + .../voxel/npc/tidalwarrior/male/head.vox | 3 + .../voxel/npc/tidalwarrior/male/leg_l.vox | 3 + .../voxel/npc/tidalwarrior/male/leg_r.vox | 3 + .../npc/tidalwarrior/male/shoulder_l.vox | 3 + .../npc/tidalwarrior/male/shoulder_r.vox | 3 + .../npc/tidalwarrior/male/torso_lower.vox | 3 + .../npc/tidalwarrior/male/torso_upper.vox | 3 + .../voxel/npc/tuskram/male/foot_br.vox | 2 +- .../voxel/npc/tuskram/male/foot_fr.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/head.vox | 4 +- assets/voxygen/voxel/npc/tuskram/male/jaw.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/leg_br.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/leg_fr.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/neck.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/tail.vox | 4 +- .../voxel/npc/tuskram/male/torso_back.vox | 4 +- .../voxel/npc/tuskram/male/torso_front.vox | 4 +- .../voxel/quadruped_low_central_manifest.ron | 52 ++++++++++++++ .../voxel/quadruped_low_lateral_manifest.ron | 36 ++++++++++ .../quadruped_medium_central_manifest.ron | 28 ++++---- .../quadruped_medium_lateral_manifest.ron | 8 +-- common/src/comp/agent.rs | 1 + common/src/comp/body.rs | 5 ++ common/src/comp/body/biped_large.rs | 6 +- common/src/comp/body/fish_small.rs | 5 +- common/src/comp/body/quadruped_low.rs | 6 +- common/src/comp/inventory/item/tool.rs | 2 + common/src/comp/inventory/loadout_builder.rs | 10 +++ common/src/states/utils.rs | 1 + server/src/sys/agent.rs | 3 +- voxygen/anim/src/biped_large/alpha.rs | 25 +++++++ voxygen/anim/src/biped_large/beta.rs | 25 +++++++ voxygen/anim/src/biped_large/mod.rs | 17 +++-- voxygen/anim/src/biped_large/wield.rs | 9 +++ voxygen/anim/src/fish_small/mod.rs | 5 ++ voxygen/anim/src/quadruped_low/mod.rs | 8 +++ voxygen/anim/src/quadruped_medium/mod.rs | 20 +++--- world/src/layer/wildlife.rs | 15 ++-- 63 files changed, 579 insertions(+), 66 deletions(-) create mode 100644 assets/common/abilities/unique/quadlowbeam/healingbeam.ron create mode 100644 assets/common/abilities/unique/tidalclaws/bubbles.ron create mode 100644 assets/common/items/npc_weapons/unique/quadlowbeam.ron create mode 100644 assets/common/items/npc_weapons/unique/tidal_claws.ron rename assets/voxygen/voxel/npc/clownfish/male/{fin_r.vox => fin.vox} (100%) create mode 100644 assets/voxygen/voxel/npc/deadwood/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/deadwood/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/deadwood/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/deadwood/male/head_upper.vox create mode 100644 assets/voxygen/voxel/npc/piranha/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/piranha/male/fin.vox create mode 100644 assets/voxygen/voxel/npc/piranha/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/head.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_l.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_r.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/torso_lower.vox create mode 100644 assets/voxygen/voxel/npc/tidalwarrior/male/torso_upper.vox diff --git a/assets/common/abilities/unique/quadlowbeam/healingbeam.ron b/assets/common/abilities/unique/quadlowbeam/healingbeam.ron new file mode 100644 index 0000000000..3c5822dbb2 --- /dev/null +++ b/assets/common/abilities/unique/quadlowbeam/healingbeam.ron @@ -0,0 +1,14 @@ +BasicBeam( + buildup_duration: 0.25, + recover_duration: 0.25, + beam_duration: 1.0, + base_hps: 60, + base_dps: 60, + tick_rate: 2.0, + range: 25.0, + max_angle: 1.0, + lifesteal_eff: 0.15, + energy_regen: 25, + energy_cost: 50, + energy_drain: 0, +) \ No newline at end of file diff --git a/assets/common/abilities/unique/tidalclaws/bubbles.ron b/assets/common/abilities/unique/tidalclaws/bubbles.ron new file mode 100644 index 0000000000..f8df4454c5 --- /dev/null +++ b/assets/common/abilities/unique/tidalclaws/bubbles.ron @@ -0,0 +1,14 @@ +BasicBeam( + buildup_duration: 0.4, + recover_duration: 0.25, + beam_duration: 0.5, + base_hps: 0, + base_dps: 150, + tick_rate: 3.0, + range: 15.0, + max_angle: 22.5, + lifesteal_eff: 0.0, + energy_regen: 0, + energy_cost: 0, + energy_drain: 0, +) \ No newline at end of file diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index 91b8b12126..18f045cb85 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -97,6 +97,11 @@ secondary: "common.abilities.unique.wendigomagic.singlestrike", skills: [], ), + Unique(TidalClaws): ( + primary: "common.abilities.staff.flamethrower", + secondary: "common.abilities.unique.wendigomagic.singlestrike", + skills: [], + ), Unique(QuadMedQuick): ( primary: "common.abilities.unique.quadmedquick.triplestrike", secondary: "common.abilities.unique.quadmedquick.dash", @@ -151,6 +156,13 @@ secondary: "common.abilities.unique.quadlowbasic.singlestrike", abilities: [], ), + Unique(QuadLowBeam): ( + primary: "common.abilities.unique.quadlowbeam.healingbeam", + secondary: "common.abilities.unique.quadlowbreathe.triplestrike", + skills: [ + "common.abilities.unique.quadlowbreathe.dash", + ], + ), Unique(QuadSmallBasic): ( primary: "common.abilities.unique.quadsmallbasic.singlestrike", secondary: "common.abilities.unique.quadsmallbasic.singlestrike", diff --git a/assets/common/items/npc_weapons/unique/quadlowbeam.ron b/assets/common/items/npc_weapons/unique/quadlowbeam.ron new file mode 100644 index 0000000000..cd8b3bfcc3 --- /dev/null +++ b/assets/common/items/npc_weapons/unique/quadlowbeam.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Quad Small Beam", + description: "testing123", + kind: Tool( + ( + kind: Unique(QuadLowBeam), + stats: ( + equip_time_millis: 10, + power: 1.00, + poise_strength: 1.00, + speed: 1.00, + ), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_weapons/unique/tidal_claws.ron b/assets/common/items/npc_weapons/unique/tidal_claws.ron new file mode 100644 index 0000000000..3fff46aa26 --- /dev/null +++ b/assets/common/items/npc_weapons/unique/tidal_claws.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Tidal Claws", + description: "Snip snap", + kind: Tool( + ( + kind: Unique(TidalClaws), + stats: ( + equip_time_millis: 500, + power: 1.00, + poise_strength: 1.00, + speed: 1.0, + ), + ) + ), + quality: Low, +) diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 86fc867bd4..d8ce61a1a7 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -845,6 +845,10 @@ minotaur: ( keyword: "minotaur", generic: "Minotaur" + ), + tidalwarrior: ( + keyword: "tidalwarrior", + generic: "Tidal Warrior" ) ) ), @@ -982,6 +986,10 @@ clownfish: ( keyword: "clownfish", generic: "Clownfish" + ), + piranha: ( + keyword: "piranha", + generic: "Piranha" ) ) ), @@ -1065,7 +1073,11 @@ basilisk: ( keyword: "basilisk", generic: "Basilisk" - ) + ), + deadwood: ( + keyword: "deadwood", + generic: "Deadwood" + ), ) ) ) diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index 884c1e6b83..665080faac 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -572,4 +572,56 @@ central: ("armor.empty"), ) ), + (Tidalwarrior, Male): ( + head: ( + offset: (-6.5, -6.5, -6.0), + central: ("npc.tidalwarrior.male.head"), + ), + torso_upper: ( + offset: (-9.0, -8.0, -10.5), + central: ("npc.tidalwarrior.male.torso_upper"), + ), + torso_lower: ( + offset: (-8.0, -7.0, -8.0), + central: ("npc.tidalwarrior.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Tidalwarrior, Female): ( + head: ( + offset: (-6.5, -6.5, -6.0), + central: ("npc.tidalwarrior.male.head"), + ), + torso_upper: ( + offset: (-9.0, -8.0, -10.5), + central: ("npc.tidalwarrior.male.torso_upper"), + ), + torso_lower: ( + offset: (-8.0, -7.0, -8.0), + central: ("npc.tidalwarrior.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + 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 cf2759fb4c..0d02c6dd17 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -747,4 +747,72 @@ lateral: ("npc.minotaur.male.foot_r"), ) ), + (Tidalwarrior, Male): ( + shoulder_l: ( + offset: (-5.5, -5.5, -6.5), + lateral: ("npc.tidalwarrior.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-5.5, -5.5, -6.5), + lateral: ("npc.tidalwarrior.male.shoulder_r"), + ), + hand_l: ( + offset: (-6.0, -3.5, -18.0), + lateral: ("npc.tidalwarrior.male.hand_l"), + ), + hand_r: ( + offset: (-6.0, -3.5, -18.0), + lateral: ("npc.tidalwarrior.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -3.0, -3.5), + lateral: ("npc.tidalwarrior.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -3.0, -3.5), + lateral: ("npc.tidalwarrior.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -4.5, -4.5), + lateral: ("npc.tidalwarrior.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -4.5, -4.5), + lateral: ("npc.tidalwarrior.male.foot_r"), + ) + ), + (Tidalwarrior, Female): ( + shoulder_l: ( + offset: (-5.5, -5.5, -6.5), + lateral: ("npc.tidalwarrior.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-5.5, -5.5, -6.5), + lateral: ("npc.tidalwarrior.male.shoulder_r"), + ), + hand_l: ( + offset: (-6.0, -3.5, -18.0), + lateral: ("npc.tidalwarrior.male.hand_l"), + ), + hand_r: ( + offset: (-6.0, -3.5, -18.0), + lateral: ("npc.tidalwarrior.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -3.0, -3.5), + lateral: ("npc.tidalwarrior.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -3.0, -3.5), + lateral: ("npc.tidalwarrior.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -4.5, -4.5), + lateral: ("npc.tidalwarrior.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -4.5, -4.5), + lateral: ("npc.tidalwarrior.male.foot_r"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_large_weapon_manifest.ron b/assets/voxygen/voxel/biped_large_weapon_manifest.ron index 18763ebf10..57b298a8c1 100644 --- a/assets/voxygen/voxel/biped_large_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_large_weapon_manifest.ron @@ -43,6 +43,10 @@ vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), color: None ), + "common.items.npc_weapons.unique.tidal_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), "common.items.npc_weapons.spear.wooden_spear": ( vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), color: None diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron index 7d2bb18bbf..8743711764 100644 --- a/assets/voxygen/voxel/biped_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -749,6 +749,10 @@ vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), color: None ), + "common.items.npc_weapons.unique.tidal_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), "common.items.npc_weapons.spear.wooden_spear": ( vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), color: None diff --git a/assets/voxygen/voxel/fish_small_central_manifest.ron b/assets/voxygen/voxel/fish_small_central_manifest.ron index cd6a16b8f8..eee61b035c 100644 --- a/assets/voxygen/voxel/fish_small_central_manifest.ron +++ b/assets/voxygen/voxel/fish_small_central_manifest.ron @@ -19,4 +19,24 @@ central: ("npc.clownfish.male.tail"), ), ), + (Piranha, Male): ( + chest: ( + offset: (-1.5, -5.5, -5.5), + central: ("npc.piranha.male.chest"), + ), + tail: ( + offset: (-0.5, -5.0, -3.5), + central: ("npc.piranha.male.tail"), + ), + ), + (Piranha, Female): ( + chest: ( + offset: (-1.5, -5.5, -5.5), + central: ("npc.piranha.male.chest"), + ), + tail: ( + offset: (-0.5, -5.0, -3.5), + central: ("npc.piranha.male.tail"), + ), + ), }) diff --git a/assets/voxygen/voxel/fish_small_lateral_manifest.ron b/assets/voxygen/voxel/fish_small_lateral_manifest.ron index 40f3db28b4..05149d8471 100644 --- a/assets/voxygen/voxel/fish_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/fish_small_lateral_manifest.ron @@ -2,21 +2,41 @@ (Clownfish, Male): ( fin_l: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_r"), + lateral: ("npc.clownfish.male.fin"), ), fin_r: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_r"), + lateral: ("npc.clownfish.male.fin"), ), ), (Clownfish, Female): ( fin_l: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_r"), + lateral: ("npc.clownfish.male.fin"), ), fin_r: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_r"), + lateral: ("npc.clownfish.male.fin"), + ), + ), + (Piranha, Male): ( + fin_l: ( + offset: (-0.5, -4.0, -3.0), + lateral: ("npc.piranha.male.fin"), + ), + fin_r: ( + offset: (-0.5, -4.0, -3.0), + lateral: ("npc.piranha.male.fin"), + ), + ), + (Piranha, Female): ( + fin_l: ( + offset: (-0.5, -4.0, -3.0), + lateral: ("npc.piranha.male.fin"), + ), + fin_r: ( + offset: (-0.5, -4.0, -3.0), + lateral: ("npc.piranha.male.fin"), ), ), }) diff --git a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron index 52ebbb4b71..9af474d6cc 100644 --- a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron +++ b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron @@ -973,6 +973,10 @@ vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), color: None ), + "common.items.npc_weapons.unique.tidal_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), //BIPEDSMALL "common.items.npc_weapons.spear.wooden_spear": ( vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), diff --git a/assets/voxygen/voxel/npc/clownfish/male/fin_r.vox b/assets/voxygen/voxel/npc/clownfish/male/fin.vox similarity index 100% rename from assets/voxygen/voxel/npc/clownfish/male/fin_r.vox rename to assets/voxygen/voxel/npc/clownfish/male/fin.vox diff --git a/assets/voxygen/voxel/npc/deadwood/male/chest.vox b/assets/voxygen/voxel/npc/deadwood/male/chest.vox new file mode 100644 index 0000000000..abea5823be --- /dev/null +++ b/assets/voxygen/voxel/npc/deadwood/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a712a0a561ce5f25e55c8409517882ac806bc6d7e1c0cf42015ebf6b0b0db74 +size 7596 diff --git a/assets/voxygen/voxel/npc/deadwood/male/foot_br.vox b/assets/voxygen/voxel/npc/deadwood/male/foot_br.vox new file mode 100644 index 0000000000..1c48fd8aaf --- /dev/null +++ b/assets/voxygen/voxel/npc/deadwood/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72ffc711689ed563783a9ae8a76c8e831bb3e1fad6a73862d68aa9079f683761 +size 1296 diff --git a/assets/voxygen/voxel/npc/deadwood/male/foot_fr.vox b/assets/voxygen/voxel/npc/deadwood/male/foot_fr.vox new file mode 100644 index 0000000000..426f7b1b57 --- /dev/null +++ b/assets/voxygen/voxel/npc/deadwood/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:323fda85b3973ed454299ee4b45795b17a55882a6399e551dd6fabf9c22f0390 +size 1296 diff --git a/assets/voxygen/voxel/npc/deadwood/male/head_upper.vox b/assets/voxygen/voxel/npc/deadwood/male/head_upper.vox new file mode 100644 index 0000000000..77240cb1c2 --- /dev/null +++ b/assets/voxygen/voxel/npc/deadwood/male/head_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b421ad35a8cb9ed14c526c68fd5c30a1757c2e9e2d4f73e78eb0256b139bccc2 +size 2024 diff --git a/assets/voxygen/voxel/npc/piranha/male/chest.vox b/assets/voxygen/voxel/npc/piranha/male/chest.vox new file mode 100644 index 0000000000..fa4a2ca4cf --- /dev/null +++ b/assets/voxygen/voxel/npc/piranha/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2ff496a396db0b9a079bbc9788efd65a5c89b29e0a75a0ea7a41ba577055e2e +size 1948 diff --git a/assets/voxygen/voxel/npc/piranha/male/fin.vox b/assets/voxygen/voxel/npc/piranha/male/fin.vox new file mode 100644 index 0000000000..c379d73970 --- /dev/null +++ b/assets/voxygen/voxel/npc/piranha/male/fin.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fd2c269ba5b0f243b4826158dba749b94985b739ff5f55d505c4b2e9d539938 +size 1136 diff --git a/assets/voxygen/voxel/npc/piranha/male/tail.vox b/assets/voxygen/voxel/npc/piranha/male/tail.vox new file mode 100644 index 0000000000..fc95c03b14 --- /dev/null +++ b/assets/voxygen/voxel/npc/piranha/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d36c1ec0aa899ffdfddfb33a85ceb49a90276fbe7679bbadc6e0cab434ff57d +size 1184 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/foot_l.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/foot_l.vox new file mode 100644 index 0000000000..b1c401c08b --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12f5b4f4bf4d9262add8a193127385d65b71778ba3c1f5591dbd1eaf0280a76c +size 1596 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/foot_r.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/foot_r.vox new file mode 100644 index 0000000000..d6095970a2 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df24149d1597ced0905f0a371d7b09d6434f79663d137e0f7c019ffea4a13d12 +size 1596 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/hand_l.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/hand_l.vox new file mode 100644 index 0000000000..4157ecec16 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9f53b0ec2b560e434d552cc6acc0d7fd9852db2fa1f1cbe6df329ec20f75a2a +size 2868 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/hand_r.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/hand_r.vox new file mode 100644 index 0000000000..1880bff9f7 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69d319413b6d3f9d5bbad064450f5afb7edea68403192c5733a44cc5973dd0cc +size 2868 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/head.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/head.vox new file mode 100644 index 0000000000..58d1812e2e --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7c9cc6282e1074a576f4b47c02f526f0b11ebbdc8426361d47be683708d5a16 +size 3208 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/leg_l.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/leg_l.vox new file mode 100644 index 0000000000..40d0cbfdf5 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01a38ce3ab8eaf09461e0a0e838bc2115e7c2e067e563238927894c25d11aaa4 +size 1544 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/leg_r.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/leg_r.vox new file mode 100644 index 0000000000..203f1a5004 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f17a32a4eaa9110b6cd8f614ebed1f53da9287f7647f29a07ec1d41bb78cdb26 +size 1544 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_l.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_l.vox new file mode 100644 index 0000000000..9a93c6e193 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e1fa059a0dea7e03cd0ba8e3ad05c25bb692b1dc6524a611e71ebd82a9dc811 +size 3212 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_r.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_r.vox new file mode 100644 index 0000000000..2f52d43eb7 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5545474a88fab33102220dd07f77ff3131db873b5f7504120d22016a9c5152e +size 3212 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/torso_lower.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/torso_lower.vox new file mode 100644 index 0000000000..970a9ede47 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b6229161e3ea93f6624294185ad21b53a65f228ae33ab74ad123380c9e59dc3 +size 2904 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/torso_upper.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/torso_upper.vox new file mode 100644 index 0000000000..43fa9397fb --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc681671f33e18cc4aeffd989f461f57d30cb7aecaed64e0903ad986721f89e1 +size 11440 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox index 7b68f3b280..be7779f086 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c47e6b396fed4b4875e11f10c00240c9e97b5e2765feca0edcaf7b6c423aa846 +oid sha256:277a7c1d4c6d0eef4899a4e322d55d00e0f29fa52e8484786d588c8a310d6db4 size 1412 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox index ce7982ae96..74821521c3 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7b14cb13d878d073b982801179873c65d19880975f86d1734ac8729a57ea309 -size 1500 +oid sha256:73b1640d83ec0c42b94f8e09d2957addcadb8a7fee9d19ed122260f3ed3d1e43 +size 1680 diff --git a/assets/voxygen/voxel/npc/tuskram/male/head.vox b/assets/voxygen/voxel/npc/tuskram/male/head.vox index abb51582e5..9e0b4093c3 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/head.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:698bfe87d0c9f6c07a486e0b6b5496f75b748cbd7e0c6f0039b6adb785b6f48c -size 4360 +oid sha256:cfa53f86f7ea69fe0d5b4c1ffb76953d5eed6a8f93750af40c97a305a902246d +size 7360 diff --git a/assets/voxygen/voxel/npc/tuskram/male/jaw.vox b/assets/voxygen/voxel/npc/tuskram/male/jaw.vox index f2d35078a7..e35dd869d0 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/jaw.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/jaw.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:647ef383113a4dc8aa0fddd99ddd0f9881068ac8e2701eb9cc1d190af07ca861 -size 1248 +oid sha256:7e7a9fcb22a4752b78740269ffb52f15b40db063f7eea749aabc1c157a64ad86 +size 1656 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox index 1afa6ac8f9..66ce833749 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f03f866f9d6a001ac1969d6eb4883f49cb6d6e0e6a648964ca10c591ef82c91 -size 1460 +oid sha256:f1319447b4bd7985593853ac4098aa74b8597f3ae87317f22859488366b07b26 +size 1492 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox index 3b7f0d803f..003087c9d2 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f4f35838fa43f23662a44c21eb2d6ef17a26e49ee76a18d187bf0b78c2d6a14 -size 1432 +oid sha256:2829046541f673e04afb6c06c1aad3bcb54c70665d353102e2423d7a8a562250 +size 2048 diff --git a/assets/voxygen/voxel/npc/tuskram/male/neck.vox b/assets/voxygen/voxel/npc/tuskram/male/neck.vox index 860561f6ab..98febc72c4 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/neck.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/neck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e6786377fa59115afdfa3ceb5bd03842501500eb981a78afa010c59d578f4a4 -size 2072 +oid sha256:8ad70fd5ee3ee7be7ed8112dbfd55d3743a5d1cc4a4089da6e745b9b66204727 +size 2756 diff --git a/assets/voxygen/voxel/npc/tuskram/male/tail.vox b/assets/voxygen/voxel/npc/tuskram/male/tail.vox index bfa7174326..fd32b6d22e 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/tail.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d592fa6c1a379566811b417cb6962d5cca18367fb9e52d0ae93408c58cd56e52 -size 1904 +oid sha256:1a3bcd5389cbf08b8575246ca2c3b07fe83adf4be15633baae60394d75f00694 +size 1744 diff --git a/assets/voxygen/voxel/npc/tuskram/male/torso_back.vox b/assets/voxygen/voxel/npc/tuskram/male/torso_back.vox index 9e70367339..9a031106d9 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/torso_back.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/torso_back.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0bce2157ba7b3792b80777dbd36a1b207d062153f79518a62865a138736a3ce -size 2956 +oid sha256:f23be927e2dc7425f2180350db89103da00103ba8726a79c92d806548de50834 +size 4104 diff --git a/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox b/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox index ab7cd73ac8..eac0c834d4 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bfff23a60496a1738f161bd94c2a4b0fd3f55e8da86e49c25bee8994bbe597d6 -size 5572 +oid sha256:7e20498bd84c5e33217e9ef2b4a7e3ff3033a7a3167f55e2abe700e57e9d3e47 +size 8796 diff --git a/assets/voxygen/voxel/quadruped_low_central_manifest.ron b/assets/voxygen/voxel/quadruped_low_central_manifest.ron index 8ece2226a5..1ba0cb245e 100644 --- a/assets/voxygen/voxel/quadruped_low_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_low_central_manifest.ron @@ -676,4 +676,56 @@ central: ("npc.basilisk.male.tail_front"), ), ), + (Deadwood, Male): ( + upper: ( + offset: (-3.5, -3.5, -4.0), + central: ("npc.deadwood.male.head_upper"), + ), + lower: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + chest: ( + offset: (-12.5, -11.0, -9.0), + central: ("npc.deadwood.male.chest"), + ), + tail_rear: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail_front: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Deadwood, Female): ( + upper: ( + offset: (-3.5, -3.5, -4.0), + central: ("npc.deadwood.male.head_upper"), + ), + lower: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + chest: ( + offset: (-12.5, -11.0, -9.0), + central: ("npc.deadwood.male.chest"), + ), + tail_rear: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail_front: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron index 46e13be409..8ea1f198f9 100644 --- a/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron @@ -467,4 +467,40 @@ lateral: ("npc.basilisk.male.foot_br"), ), ), + (Deadwood, Male): ( + front_left: ( + offset: (-5.0, -2.0, -7.0), + lateral: ("npc.deadwood.male.foot_fr"), + ), + front_right: ( + offset: (0.0, -2.0, -7.0), + lateral: ("npc.deadwood.male.foot_fr"), + ), + back_left: ( + offset: (-5.0, -1.0, -7.0), + lateral: ("npc.deadwood.male.foot_br"), + ), + back_right: ( + offset: (0.0, -1.0, -7.0), + lateral: ("npc.deadwood.male.foot_br"), + ), + ), + (Deadwood, Female): ( + front_left: ( + offset: (-5.0, -2.0, -7.0), + lateral: ("npc.deadwood.male.foot_fr"), + ), + front_right: ( + offset: (0.0, -2.0, -7.0), + lateral: ("npc.deadwood.male.foot_fr"), + ), + back_left: ( + offset: (-5.0, -1.0, -7.0), + lateral: ("npc.deadwood.male.foot_br"), + ), + back_right: ( + offset: (0.0, -1.0, -7.0), + lateral: ("npc.deadwood.male.foot_br"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index 809e0e5947..911f175dec 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -121,61 +121,61 @@ ), (Tuskram, Male): ( head: ( - offset: (-10.0, -2.0, -6.5), + offset: (-15.0, -2.0, -10.0), central: ("npc.tuskram.male.head"), ), neck: ( - offset: (-4.0, -2.0, -3.5), + offset: (-4.0, -3.0, -6.0), central: ("npc.tuskram.male.neck"), ), jaw: ( - offset: (-2.0, 0.0, -1.5), + offset: (-5.0, 0.0, -8.0), central: ("npc.tuskram.male.jaw"), ), torso_front: ( - offset: (-6.0, -15.0, -6.5), + offset: (-7.0, -14.0, -8.0), central: ("npc.tuskram.male.torso_front"), ), torso_back: ( - offset: (-4.0, -10.0, -4.5), + offset: (-5.0, -10.0, -5.5), central: ("npc.tuskram.male.torso_back"), ), ears: ( - offset: (-0.5, -0.5, 0.0), + offset: (0.0, 0.0, 0.0), central: ("armor.empty"), ), tail: ( - offset: (-3.0, -7.0, -8.0), + offset: (-3.0, -6.0, -8.0), central: ("npc.tuskram.male.tail"), ), ), (Tuskram, Female): ( head: ( - offset: (-10.0, -2.0, -6.5), + offset: (-15.0, -2.0, -10.0), central: ("npc.tuskram.male.head"), ), neck: ( - offset: (-4.0, -2.0, -3.5), + offset: (-4.0, -3.0, -6.0), central: ("npc.tuskram.male.neck"), ), jaw: ( - offset: (-2.0, 0.0, -1.5), + offset: (-5.0, 0.0, -1.5), central: ("npc.tuskram.male.jaw"), ), torso_front: ( - offset: (-6.0, -15.0, -6.5), + offset: (-7.0, -14.0, -8.0), central: ("npc.tuskram.male.torso_front"), ), torso_back: ( - offset: (-4.0, -10.0, -4.5), + offset: (-5.0, -10.0, -5.5), central: ("npc.tuskram.male.torso_back"), ), ears: ( - offset: (-0.5, -0.5, -0.0), + offset: (0.0, 0.0, 0.0), central: ("armor.empty"), ), tail: ( - offset: (-3.0, -7.0, -8.0), + offset: (-3.0, -6.0, -8.0), central: ("npc.tuskram.male.tail"), ), ), diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index 267c99e886..888954e321 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -137,11 +137,11 @@ ), (Tuskram, Male): ( leg_fl: ( - offset: (-2.0, -2.5, -3.0), + offset: (-2.5, -4.5, -5.0), lateral: ("npc.tuskram.male.leg_fr"), ), leg_fr: ( - offset: (-2.0, -2.5, -3.0), + offset: (-2.5, -4.5, -5.0), lateral: ("npc.tuskram.male.leg_fr"), ), leg_bl: ( @@ -171,11 +171,11 @@ ), (Tuskram, Female): ( leg_fl: ( - offset: (-2.0, -2.5, -3.0), + offset: (-2.5, -4.5, -5.0), lateral: ("npc.tuskram.male.leg_fr"), ), leg_fr: ( - offset: (-2.0, -2.5, -3.0), + offset: (-2.5, -4.5, -5.0), lateral: ("npc.tuskram.male.leg_fr"), ), leg_bl: ( diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 3260c6c09c..ab301d925f 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -25,6 +25,7 @@ pub enum Tactic { TailSlap, QuadLowQuick, QuadLowBasic, + QuadLowBeam, QuadMedJump, QuadMedBasic, Lavadrake, diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 5cf3ccfc72..b813efab29 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -188,6 +188,7 @@ impl Body { quadruped_low::Species::Salamander => 2.4, quadruped_low::Species::Pangolin => 2.0, quadruped_low::Species::Lavadrake => 2.5, + quadruped_low::Species::Deadwood => 0.5, _ => 1.6, }, Body::Theropod(body) => match body.species { @@ -365,6 +366,7 @@ impl Body { biped_large::Species::Troll => 1500, biped_large::Species::Dullahan => 2000, biped_large::Species::Mindflayer => 8000, + biped_large::Species::Tidalwarrior => 2500, _ => 1000, }, Body::BipedSmall(_) => 10000, @@ -392,6 +394,7 @@ impl Body { quadruped_low::Species::Sandshark => 600, quadruped_low::Species::Hakulaq => 400, quadruped_low::Species::Lavadrake => 900, + quadruped_low::Species::Deadwood => 600, _ => 200, }, @@ -461,6 +464,7 @@ impl Body { biped_large::Species::Troll => 60, biped_large::Species::Dullahan => 120, biped_large::Species::Mindflayer => 250, + biped_large::Species::Tidalwarrior => 90, _ => 100, }, Body::BipedSmall(_) => 10, @@ -479,6 +483,7 @@ impl Body { quadruped_low::Species::Maneater => 30, quadruped_low::Species::Sandshark => 40, quadruped_low::Species::Hakulaq => 10, + quadruped_low::Species::Deadwood => 30, _ => 20, }, } diff --git a/common/src/comp/body/biped_large.rs b/common/src/comp/body/biped_large.rs index 737ef7bd62..704c40cfae 100644 --- a/common/src/comp/body/biped_large.rs +++ b/common/src/comp/body/biped_large.rs @@ -45,6 +45,7 @@ make_case_elim!( Slysaurok = 8, Mindflayer = 9, Minotaur = 10, + Tidalwarrior = 11, } ); @@ -64,6 +65,7 @@ pub struct AllSpecies { pub saurok_sly: SpeciesMeta, pub mindflayer: SpeciesMeta, pub minotaur: SpeciesMeta, + pub tidalwarrior: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -83,11 +85,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Slysaurok => &self.saurok_sly, Species::Mindflayer => &self.mindflayer, Species::Minotaur => &self.minotaur, + Species::Tidalwarrior => &self.tidalwarrior, } } } -pub const ALL_SPECIES: [Species; 11] = [ +pub const ALL_SPECIES: [Species; 12] = [ Species::Ogre, Species::Cyclops, Species::Wendigo, @@ -99,6 +102,7 @@ pub const ALL_SPECIES: [Species; 11] = [ Species::Slysaurok, Species::Mindflayer, Species::Minotaur, + Species::Tidalwarrior, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/fish_small.rs b/common/src/comp/body/fish_small.rs index 90c7597436..952a3f5412 100644 --- a/common/src/comp/body/fish_small.rs +++ b/common/src/comp/body/fish_small.rs @@ -35,6 +35,7 @@ make_case_elim!( #[repr(u32)] pub enum Species { Clownfish = 0, + Piranha = 1, } ); @@ -44,6 +45,7 @@ make_case_elim!( #[derive(Clone, Debug, Deserialize)] pub struct AllSpecies { pub clownfish: SpeciesMeta, + pub piranha: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -53,11 +55,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies fn index(&self, &index: &'a Species) -> &Self::Output { match index { Species::Clownfish => &self.clownfish, + Species::Piranha => &self.piranha, } } } -pub const ALL_SPECIES: [Species; 1] = [Species::Clownfish]; +pub const ALL_SPECIES: [Species; 2] = [Species::Clownfish, Species::Piranha]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/common/src/comp/body/quadruped_low.rs b/common/src/comp/body/quadruped_low.rs index 1d2d62367a..f2c14091e2 100644 --- a/common/src/comp/body/quadruped_low.rs +++ b/common/src/comp/body/quadruped_low.rs @@ -47,6 +47,7 @@ make_case_elim!( Hakulaq = 10, Lavadrake = 11, Basilisk = 12, + Deadwood = 13, } ); @@ -68,6 +69,7 @@ pub struct AllSpecies { pub hakulaq: SpeciesMeta, pub lavadrake: SpeciesMeta, pub basilisk: SpeciesMeta, + pub deadwood: 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::Hakulaq => &self.hakulaq, Species::Lavadrake => &self.lavadrake, Species::Basilisk => &self.basilisk, + Species::Deadwood => &self.deadwood, } } } -pub const ALL_SPECIES: [Species; 13] = [ +pub const ALL_SPECIES: [Species; 14] = [ Species::Crocodile, Species::Alligator, Species::Salamander, @@ -107,6 +110,7 @@ pub const ALL_SPECIES: [Species; 13] = [ Species::Hakulaq, Species::Lavadrake, Species::Basilisk, + Species::Deadwood, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 865b11d3b4..91c7ce97da 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -375,6 +375,7 @@ pub enum UniqueKind { StoneGolemFist, BeastClaws, WendigoMagic, + TidalClaws, QuadMedQuick, QuadMedJump, QuadMedHoof, @@ -385,6 +386,7 @@ pub enum UniqueKind { QuadLowTail, QuadLowQuick, QuadLowBasic, + QuadLowBeam, QuadSmallBasic, TheropodBasic, TheropodBird, diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 668a9e1faf..8f37d268f5 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -154,6 +154,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.quadlowbreathe", )); }, + quadruped_low::Species::Deadwood => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.quadlowbeam", + )); + }, _ => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.quadlowbasic", @@ -241,6 +246,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.hammer.cyclops_hammer", )); }, + (biped_large::Species::Tidalwarrior, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.tidal_claws", + )); + }, }, Body::Object(object::Body::Crossbow) => { main_tool = Some(Item::new_from_asset_expect( diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 32f5d3027d..d8635e3eb3 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -91,6 +91,7 @@ impl Body { quadruped_low::Species::Hakulaq => 140.0, quadruped_low::Species::Lavadrake => 100.0, quadruped_low::Species::Basilisk => 120.0, + quadruped_low::Species::Deadwood => 140.0, }, } } diff --git a/server/src/sys/agent.rs b/server/src/sys/agent.rs index 28cccfd9e2..49e1a7151e 100644 --- a/server/src/sys/agent.rs +++ b/server/src/sys/agent.rs @@ -531,6 +531,7 @@ impl<'a> System<'a> for Sys { Tactic::QuadLowBasic }, Some(ToolKind::Unique(UniqueKind::QuadLowBreathe)) => Tactic::Lavadrake, + Some(ToolKind::Unique(UniqueKind::QuadLowBeam)) => Tactic::Lavadrake, Some(ToolKind::Unique(UniqueKind::TheropodBasic)) => Tactic::Theropod, Some(ToolKind::Unique(UniqueKind::TheropodBird)) => Tactic::Theropod, Some(ToolKind::Unique(UniqueKind::ObjectTurret)) => Tactic::Turret, @@ -1349,7 +1350,7 @@ impl<'a> System<'a> for Sys { do_idle = true; } }, - Tactic::Lavadrake => { + Tactic::Lavadrake | Tactic::QuadLowBeam => { if dist_sqrd < (2.5 * min_attack_dist * scale).powi(2) { inputs.move_dir = Vec2::zero(); inputs.secondary.set_state(true); diff --git a/voxygen/anim/src/biped_large/alpha.rs b/voxygen/anim/src/biped_large/alpha.rs index 058eeedb26..5075d295c0 100644 --- a/voxygen/anim/src/biped_large/alpha.rs +++ b/voxygen/anim/src/biped_large/alpha.rs @@ -154,6 +154,31 @@ impl Animation for AlphaAnimation { * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); next.head.orientation = Quaternion::rotation_x(move1 * 0.3); }, + Some(ToolKind::Unique(UniqueKind::TidalClaws)) => { + next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4); + + next.shoulder_l.orientation = Quaternion::rotation_x( + move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm, + ); + next.shoulder_r.orientation = Quaternion::rotation_x( + move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm, + ); + + next.control_l.position = + Vec3::new(-14.0 + move2 * 9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0); + next.control_r.position = + Vec3::new(14.0 + move2 * -9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.3); + }, _ => {}, } next diff --git a/voxygen/anim/src/biped_large/beta.rs b/voxygen/anim/src/biped_large/beta.rs index 84e6b3be81..aa5664d150 100644 --- a/voxygen/anim/src/biped_large/beta.rs +++ b/voxygen/anim/src/biped_large/beta.rs @@ -153,6 +153,31 @@ impl Animation for BetaAnimation { * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); next.head.orientation = Quaternion::rotation_x(move1 * 0.3); }, + Some(ToolKind::Unique(UniqueKind::TidalClaws)) => { + next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4); + + next.shoulder_l.orientation = Quaternion::rotation_x( + move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm, + ); + next.shoulder_r.orientation = Quaternion::rotation_x( + move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm, + ); + + next.control_l.position = + Vec3::new(-14.0 + move2 * 9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0); + next.control_r.position = + Vec3::new(14.0 + move2 * -9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.3); + }, _ => {}, } next diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index 5e4fdfde83..b6d4093dde 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -205,6 +205,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => (6.0, 3.5), (Mindflayer, _) => (5.0, 5.5), (Minotaur, _) => (6.0, 3.0), + (Tidalwarrior, _) => (6.5, 5.0), }, jaw: match (body.species, body.body_type) { (Ogre, _) => (0.0, 0.0), @@ -218,6 +219,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => (1.0, -2.5), (Mindflayer, _) => (0.0, 0.0), (Minotaur, _) => (2.0, -4.0), + (Tidalwarrior, _) => (0.0, 0.0), }, upper_torso: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 27.5), @@ -232,6 +234,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => (3.0, 24.0), (Mindflayer, _) => (0.0, 30.5), (Minotaur, _) => (-1.0, 31.5), + (Tidalwarrior, _) => (-1.0, 25.0), }, lower_torso: match (body.species, body.body_type) { (Ogre, Male) => (1.0, -7.0), @@ -246,6 +249,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => (0.0, -6.0), (Mindflayer, _) => (3.5, -19.5), (Minotaur, _) => (1.5, -8.5), + (Tidalwarrior, _) => (0.0, -9.5), }, tail: match (body.species, body.body_type) { (Werewolf, _) => (-5.5, -2.0), @@ -268,6 +272,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => (7.5, 1.0, 1.5), (Mindflayer, _) => (8.0, 0.5, -1.0), (Minotaur, _) => (10.0, 1.0, -1.0), + (Tidalwarrior, _) => (14.0, -0.5, 2.0), }, hand: match (body.species, body.body_type) { (Ogre, Male) => (14.5, 0.0, -4.0), @@ -282,6 +287,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => (8.0, 1.5, -5.5), (Mindflayer, _) => (9.0, 0.5, -4.5), (Minotaur, _) => (12.5, 0.5, -7.0), + (Tidalwarrior, _) => (15.5, -0.5, -3.0), }, leg: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 0.0, -4.0), @@ -296,6 +302,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => (3.0, 0.5, -4.0), (Mindflayer, _) => (6.0, -2.0, 6.5), (Minotaur, _) => (5.0, 0.0, -10.0), + (Tidalwarrior, _) => (2.5, 0.0, -5.5), }, foot: match (body.species, body.body_type) { (Ogre, Male) => (4.0, 1.0, -12.0), @@ -310,6 +317,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => (3.5, 3.5, -10.0), (Mindflayer, _) => (4.5, 1.5, -7.0), (Minotaur, _) => (6.0, 4.5, -17.5), + (Tidalwarrior, _) => (3.5, 0.5, -10.5), }, scaler: match (body.species, body.body_type) { (Ogre, Male) => 1.4, @@ -324,20 +332,16 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => 1.2, (Mindflayer, _) => 1.5, (Minotaur, _) => 2.0, + (Tidalwarrior, _) => 2.0, }, tempo: match (body.species, body.body_type) { (Ogre, Male) => 0.9, (Ogre, Female) => 0.9, (Cyclops, _) => 0.8, - (Wendigo, _) => 1.0, (Troll, _) => 0.9, (Dullahan, _) => 0.8, - (Werewolf, _) => 1.0, - (Occultsaurok, _) => 1.0, - (Mightysaurok, _) => 1.0, - (Slysaurok, _) => 1.0, - (Mindflayer, _) => 1.0, (Minotaur, _) => 0.8, + _ => 1.0, }, grip: match (body.species, body.body_type) { (Ogre, Male) => 13.0, @@ -352,6 +356,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Slysaurok, _) => 10.0, (Mindflayer, _) => 12.0, (Minotaur, _) => 14.0, + (Tidalwarrior, _) => 14.0, }, shl: match (body.species, body.body_type) { (Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0), diff --git a/voxygen/anim/src/biped_large/wield.rs b/voxygen/anim/src/biped_large/wield.rs index ab186afc98..8a4ddc0f3f 100644 --- a/voxygen/anim/src/biped_large/wield.rs +++ b/voxygen/anim/src/biped_large/wield.rs @@ -240,6 +240,15 @@ impl Animation for WieldAnimation { next.control_r.orientation = Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(0.15); }, + Some(ToolKind::Unique(UniqueKind::TidalClaws)) => { + next.control_l.position = Vec3::new(-14.0, 12.0, -12.0); + next.control_r.position = Vec3::new(14.0, 12.0, -12.0); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(-0.15); + next.control_r.orientation = + Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(0.15); + }, Some(ToolKind::Unique(UniqueKind::BeastClaws)) => { next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); diff --git a/voxygen/anim/src/fish_small/mod.rs b/voxygen/anim/src/fish_small/mod.rs index ccd2d5be42..0a644da947 100644 --- a/voxygen/anim/src/fish_small/mod.rs +++ b/voxygen/anim/src/fish_small/mod.rs @@ -80,18 +80,23 @@ impl<'a> From<&'a Body> for SkeletonAttr { Self { chest: match (body.species, body.body_type) { (Clownfish, _) => (0.0, 5.0), + (Piranha, _) => (0.0, 5.0), }, tail: match (body.species, body.body_type) { (Clownfish, _) => (-7.5, -0.5), + (Piranha, _) => (-5.5, -0.5), }, fin: match (body.species, body.body_type) { (Clownfish, _) => (2.0, 0.5, 1.0), + (Piranha, _) => (2.0, 0.5, -0.5), }, tempo: match (body.species, body.body_type) { (Clownfish, _) => 5.0, + (Piranha, _) => 5.0, }, amplitude: match (body.species, body.body_type) { (Clownfish, _) => 4.0, + (Piranha, _) => 4.0, }, } } diff --git a/voxygen/anim/src/quadruped_low/mod.rs b/voxygen/anim/src/quadruped_low/mod.rs index 0a9adfa1b9..1476a30a1b 100644 --- a/voxygen/anim/src/quadruped_low/mod.rs +++ b/voxygen/anim/src/quadruped_low/mod.rs @@ -132,6 +132,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hakulaq, _) => (8.0, 10.0), (Lavadrake, _) => (7.0, 8.0), (Basilisk, _) => (11.0, 13.5), + (Deadwood, _) => (2.0, -3.0), }, head_lower: match (body.species, body.body_type) { (Crocodile, _) => (8.0, 0.0), @@ -148,6 +149,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hakulaq, _) => (10.5, 1.0), (Lavadrake, _) => (11.5, -6.0), (Basilisk, _) => (8.5, -6.5), + (Deadwood, _) => (0.0, 0.0), }, jaw: match (body.species, body.body_type) { (Crocodile, _) => (2.5, -3.0), @@ -164,6 +166,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hakulaq, _) => (-6.5, -4.0), (Lavadrake, _) => (3.0, -5.0), (Basilisk, _) => (1.5, 1.0), + (Deadwood, _) => (-1.0, 4.0), }, chest: match (body.species, body.body_type) { (Crocodile, _) => (0.0, 5.0), @@ -180,6 +183,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hakulaq, _) => (0.0, 13.5), (Lavadrake, _) => (0.0, 16.5), (Basilisk, _) => (0.0, 16.5), + (Deadwood, _) => (0.0, 12.0), }, tail_rear: match (body.species, body.body_type) { (Crocodile, _) => (-12.5, -1.0), @@ -196,6 +200,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hakulaq, _) => (-9.0, -2.0), (Lavadrake, _) => (-12.0, -2.0), (Basilisk, _) => (-10.0, -3.0), + (Deadwood, _) => (-15.0, 4.0), }, tail_front: match (body.species, body.body_type) { (Crocodile, _) => (-6.0, 0.0), @@ -212,6 +217,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hakulaq, _) => (-6.0, -5.5), (Lavadrake, _) => (-7.0, -4.5), (Basilisk, _) => (-2.5, -4.5), + (Deadwood, _) => (-1.0, 4.0), }, feet_f: match (body.species, body.body_type) { (Crocodile, _) => (3.5, 6.0, -1.0), @@ -228,6 +234,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hakulaq, _) => (4.5, 2.0, -4.5), (Lavadrake, _) => (4.5, 4.0, -6.5), (Basilisk, _) => (6.5, 4.0, -7.5), + (Deadwood, _) => (3.5, 4.0, -5.0), }, feet_b: match (body.species, body.body_type) { (Crocodile, _) => (3.5, -6.0, -1.0), @@ -244,6 +251,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hakulaq, _) => (3.5, -8.0, -4.5), (Lavadrake, _) => (3.5, -8.0, -6.5), (Basilisk, _) => (4.5, -13.0, -7.5), + (Deadwood, _) => (3.5, -6.0, -5.0), }, lean: match (body.species, body.body_type) { (Pangolin, _) => (0.4, 0.0), diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index 00cf3170f7..c3e217f119 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -144,7 +144,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { head: match (body.species, body.body_type) { (Grolgar, _) => (0.0, -1.0), (Saber, _) => (5.0, -3.0), - (Tuskram, _) => (2.0, 1.0), + (Tuskram, _) => (0.0, 0.0), (Lion, _) => (4.5, 2.0), (Tarasque, _) => (-4.0, 3.5), (Tiger, _) => (2.0, 1.0), @@ -205,7 +205,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { jaw: match (body.species, body.body_type) { (Grolgar, _) => (7.0, 2.0), (Saber, _) => (2.5, -2.0), - (Tuskram, _) => (7.5, -3.5), + (Tuskram, _) => (4.0, -5.0), (Lion, _) => (3.5, -4.0), (Tarasque, _) => (9.0, -9.5), (Tiger, _) => (3.0, -3.5), @@ -235,7 +235,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { tail: match (body.species, body.body_type) { (Grolgar, _) => (-11.5, -0.5), (Saber, _) => (-11.0, 0.0), - (Tuskram, _) => (-9.0, 2.0), + (Tuskram, _) => (-8.0, 2.0), (Lion, _) => (-11.0, 1.0), (Tarasque, _) => (-11.0, 0.0), (Tiger, _) => (-13.5, 3.0), @@ -265,7 +265,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { torso_front: match (body.species, body.body_type) { (Grolgar, _) => (10.0, 13.0), (Saber, _) => (14.0, 13.0), - (Tuskram, _) => (10.0, 14.5), + (Tuskram, _) => (10.0, 16.0), (Lion, _) => (10.0, 12.5), (Tarasque, _) => (11.5, 17.5), (Tiger, _) => (10.0, 13.0), @@ -295,7 +295,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { torso_back: match (body.species, body.body_type) { (Grolgar, _) => (-10.0, 1.5), (Saber, _) => (-13.5, 0.0), - (Tuskram, _) => (-12.5, -2.0), + (Tuskram, _) => (-12.0, -2.5), (Lion, _) => (-12.0, -0.5), (Tarasque, _) => (-14.0, -1.0), (Tiger, _) => (-13.0, -0.5), @@ -325,7 +325,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { ears: match (body.species, body.body_type) { (Grolgar, _) => (5.0, 8.0), (Saber, _) => (3.0, 5.5), - (Tuskram, _) => (5.5, 12.0), + (Tuskram, _) => (0.0, 0.0), (Lion, _) => (2.0, 3.5), (Tarasque, _) => (12.0, -3.0), (Tiger, _) => (2.5, 4.0), @@ -355,7 +355,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { leg_f: match (body.species, body.body_type) { (Grolgar, _) => (7.5, -5.5, -1.0), (Saber, _) => (7.0, -4.0, -2.5), - (Tuskram, _) => (6.0, -6.5, -4.0), + (Tuskram, _) => (8.5, -4.5, -2.0), (Lion, _) => (6.5, -6.5, -1.5), (Tarasque, _) => (7.0, -8.0, -6.0), (Tiger, _) => (6.0, -6.0, -1.5), @@ -385,7 +385,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { leg_b: match (body.species, body.body_type) { (Grolgar, _) => (6.0, -6.5, -4.0), (Saber, _) => (6.0, -7.0, -3.5), - (Tuskram, _) => (5.0, -4.5, -2.5), + (Tuskram, _) => (6.0, -5.5, -2.5), (Lion, _) => (6.0, -5.0, -1.5), (Tarasque, _) => (6.0, -6.5, -6.5), (Tiger, _) => (6.0, -7.0, -1.0), @@ -415,7 +415,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { feet_f: match (body.species, body.body_type) { (Grolgar, _) => (0.0, 0.0, -4.0), (Saber, _) => (1.0, -3.5, -2.5), - (Tuskram, _) => (0.5, 0.5, -3.0), + (Tuskram, _) => (-1.0, -1.5, -6.0), (Lion, _) => (0.5, 0.5, -3.5), (Tarasque, _) => (1.0, 0.0, -3.0), (Tiger, _) => (0.5, 0.0, -4.5), @@ -445,7 +445,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { feet_b: match (body.species, body.body_type) { (Grolgar, _) => (0.5, -1.5, -3.0), (Saber, _) => (1.0, -1.0, -1.0), - (Tuskram, _) => (0.5, -1.0, -2.5), + (Tuskram, _) => (0.5, -1.0, -3.0), (Lion, _) => (0.5, -1.0, -3.0), (Tarasque, _) => (1.5, -1.0, -2.5), (Tiger, _) => (0.5, -1.0, -4.0), diff --git a/world/src/layer/wildlife.rs b/world/src/layer/wildlife.rs index 2a81604fed..dc083afe85 100644 --- a/world/src/layer/wildlife.rs +++ b/world/src/layer/wildlife.rs @@ -160,7 +160,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..5) { + .with_body(match rng.gen_range(0..4) { 0 => { bird_medium::Body::random_with(rng, &bird_medium::Species::Eagle).into() }, @@ -202,7 +202,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..3) { + .with_body(match rng.gen_range(0..5) { 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Tarasque, @@ -216,6 +216,10 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( 2 => { theropod::Body::random_with(rng, &theropod::Species::Woodraptor).into() }, + 3 => { + quadruped_low::Body::random_with(rng, &quadruped_low::Species::Deadwood) + .into() + }, _ => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Saber, @@ -665,7 +669,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..2) { + .with_body(match rng.gen_range(0..4) { 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Bonerattler, @@ -806,9 +810,12 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..2) { + .with_body(match rng.gen_range(0..3) { 0 => fish_medium::Body::random_with(rng, &fish_medium::Species::Marlin) .into(), + 1 => { + fish_small::Body::random_with(rng, &fish_small::Species::Piranha).into() + }, _ => fish_small::Body::random_with(rng, &fish_small::Species::Clownfish) .into(), }) From 30af3a4493b32af6498fd37f8e535e3437c19f9b Mon Sep 17 00:00:00 2001 From: jshipsey Date: Wed, 17 Feb 2021 23:08:09 -0500 Subject: [PATCH 25/36] dash, spin, jump changes --- assets/common/items/debug/lantern.ron | 13 +++++++++ voxygen/anim/src/character/dash.rs | 33 +-------------------- voxygen/anim/src/character/jump.rs | 41 ++++++++++++++++++--------- voxygen/anim/src/character/run.rs | 2 +- voxygen/anim/src/character/spin.rs | 10 ++++--- voxygen/src/scene/figure/mod.rs | 1 + 6 files changed, 50 insertions(+), 50 deletions(-) create mode 100644 assets/common/items/debug/lantern.ron diff --git a/assets/common/items/debug/lantern.ron b/assets/common/items/debug/lantern.ron new file mode 100644 index 0000000000..7d27f79c08 --- /dev/null +++ b/assets/common/items/debug/lantern.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Magic Lantern", + description: "Illuminates even the darkest dungeon\nA great monster was slain for this item", + kind: Lantern( + ( + kind: "Blue0", + color: (r: 128, g: 26, b: 255), + strength_thousandths: 8500, + flicker_thousandths: 300, + ), + ), + quality: High, +) diff --git a/voxygen/anim/src/character/dash.rs b/voxygen/anim/src/character/dash.rs index 4edd33f3e7..7b5f1d3e19 100644 --- a/voxygen/anim/src/character/dash.rs +++ b/voxygen/anim/src/character/dash.rs @@ -34,7 +34,7 @@ impl Animation for DashAnimation { let (movement1, movement2, movement3, movement4) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0, 0.0), Some(StageSection::Charge) => (1.0, anim_time as f32, 0.0, 0.0), - Some(StageSection::Swing) => (1.0, 1.0, anim_time as f32, 0.0), + Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(0.01), 0.0), Some(StageSection::Recover) => (1.1, 1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0, 0.0), }; @@ -46,21 +46,6 @@ impl Animation for DashAnimation { fn short(x: f32) -> f32 { (((5.0) / (1.5 + 3.5 * ((x * 5.0).sin()).powi(2))).sqrt()) * ((x * 5.0).sin()) } - fn foothoril(x: f32) -> f32 { (x * 5.0 + PI * 1.45).sin() } - fn foothorir(x: f32) -> f32 { (x * 5.0 + PI * (0.45)).sin() } - - fn footvertl(x: f32) -> f32 { (x * 5.0).sin() } - fn footvertr(x: f32) -> f32 { (x * 5.0 + PI).sin() } - - fn footrotl(x: f32) -> f32 { - (((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 1.4).sin()).powi(2))).sqrt()) - * ((x * 5.0 + PI * 1.4).sin()) - } - - fn footrotr(x: f32) -> f32 { - (((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 0.4).sin()).powi(2))).sqrt()) - * ((x * 5.0 + PI * 0.4).sin()) - } fn shortalt(x: f32) -> f32 { (x * 5.0 + PI / 2.0).sin() } @@ -115,22 +100,6 @@ impl Animation for DashAnimation { next.belt.orientation = Quaternion::rotation_z((short(movement2).min(1.0) * 0.1) * (1.0 - movement4)); - - next.foot_l.position = Vec3::new( - -s_a.foot.0, - s_a.foot.1 + movement1 * -12.0 + foothoril(movement2) * -7.5, - s_a.foot.2 + ((footvertl(movement2) * -4.0).max(-1.0)), - ); - next.foot_l.orientation = - Quaternion::rotation_x(movement1 * -1.0 + footrotl(movement2) * -0.6); - - next.foot_r.position = Vec3::new( - s_a.foot.0, - s_a.foot.1 + foothorir(movement2) * -7.5, - s_a.foot.2 + ((footvertr(movement2) * -4.0).max(-1.0)), - ); - next.foot_r.orientation = Quaternion::rotation_x(-0.6 + footrotr(movement2) * -0.6) - * Quaternion::rotation_z(-0.2); }, _ => {}, } diff --git a/voxygen/anim/src/character/jump.rs b/voxygen/anim/src/character/jump.rs index 76882bbfef..c4c1ae9c08 100644 --- a/voxygen/anim/src/character/jump.rs +++ b/voxygen/anim/src/character/jump.rs @@ -14,6 +14,7 @@ impl Animation for JumpAnimation { (Option, Option), Vec3, Vec3, + Vec3, f64, ); type Skeleton = CharacterSkeleton; @@ -25,7 +26,7 @@ impl Animation for JumpAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, second_tool_kind, hands, orientation, last_ori, global_time): Self::Dependency, + (active_tool_kind, second_tool_kind, hands, velocity, orientation, last_ori, global_time): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, @@ -43,6 +44,9 @@ impl Animation for JumpAnimation { let switch = if random > 0.5 { 1.0 } else { -1.0 }; + let speed = Vec2::::from(velocity).magnitude(); + let speednorm = speed / 10.0; + let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); let tilt = if ::vek::Vec2::new(ori, last_ori) @@ -66,16 +70,27 @@ impl Animation for JumpAnimation { Quaternion::rotation_x(0.25 + slow * 0.04) * Quaternion::rotation_z(tilt * -2.5); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + 1.0); - next.chest.orientation = Quaternion::rotation_z(tilt * -2.0); + next.chest.orientation = + Quaternion::rotation_x(speednorm * -0.3) * Quaternion::rotation_z(tilt * -2.0); - next.belt.position = Vec3::new(0.0, s_a.belt.0, s_a.belt.1); - next.belt.orientation = Quaternion::rotation_z(tilt * 2.0); + next.belt.position = Vec3::new( + 0.0, + s_a.belt.0 + speednorm * 1.2, + s_a.belt.1 + speednorm * 1.0, + ); + next.belt.orientation = + Quaternion::rotation_x(speednorm * 0.3) * Quaternion::rotation_z(tilt * 2.0); next.back.position = Vec3::new(0.0, s_a.back.0, s_a.back.1); next.back.orientation = Quaternion::rotation_z(0.0); - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); - next.shorts.orientation = Quaternion::rotation_z(tilt * 3.0); + next.shorts.position = Vec3::new( + 0.0, + s_a.shorts.0 + speednorm * 3.0, + s_a.shorts.1 + speednorm * 2.0, + ); + next.shorts.orientation = + Quaternion::rotation_x(speednorm * 0.5) * Quaternion::rotation_z(tilt * 3.0); if random > 0.5 { next.hand_l.position = Vec3::new( @@ -106,17 +121,17 @@ impl Animation for JumpAnimation { next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 - 6.0 * switch, - 1.0 + s_a.foot.2 + slow * 1.5, + s_a.foot.1 - 5.0 * switch, + 2.0 + s_a.foot.2 + slow * 1.5, ); - next.foot_l.orientation = Quaternion::rotation_x(-1.2 * switch + slow * -0.2 * switch); + next.foot_l.orientation = Quaternion::rotation_x(-0.8 * switch + slow * -0.2 * switch); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + 6.0 * switch, - 1.0 + s_a.foot.2 + slow * 1.5, + s_a.foot.1 + 5.0 * switch, + 2.0 + s_a.foot.2 + slow * 1.5, ); - next.foot_r.orientation = Quaternion::rotation_x(1.2 * switch + slow * 0.2 * switch); + next.foot_r.orientation = Quaternion::rotation_x(0.8 * switch + slow * 0.2 * switch); next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_l.orientation = Quaternion::rotation_x(0.4 * switch); @@ -178,7 +193,7 @@ impl Animation for JumpAnimation { next.hold.scale = Vec3::one() * 0.0; next.torso.position = Vec3::new(0.0, 0.0, 0.0) * s_a.scaler; - next.torso.orientation = Quaternion::rotation_x(-0.2); + next.torso.orientation = Quaternion::rotation_x(0.0); next.torso.scale = Vec3::one() / 11.0 * s_a.scaler; next.second.scale = match hands { diff --git a/voxygen/anim/src/character/run.rs b/voxygen/anim/src/character/run.rs index faad4e37dc..c2a978bf48 100644 --- a/voxygen/anim/src/character/run.rs +++ b/voxygen/anim/src/character/run.rs @@ -50,7 +50,7 @@ impl Animation for RunAnimation { let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; let impact = (avg_vel.z).max(-8.0); - let speednorm = speed / 9.4; + let speednorm = (speed / 9.4).min(1.5); let lab = 1.0; diff --git a/voxygen/anim/src/character/spin.rs b/voxygen/anim/src/character/spin.rs index 7fd2ddc36c..8799a1e13c 100644 --- a/voxygen/anim/src/character/spin.rs +++ b/voxygen/anim/src/character/spin.rs @@ -57,13 +57,13 @@ impl Animation for SpinAnimation { next.control.position = Vec3::new( s_a.sc.0 + movement1 * 2.0 + movement2 * -12.0 + movement3 * -7.0, - s_a.sc.1 + 8.0 + movement1 * 0.6 + movement2 * -9.0 + movement3 * -10.0, + s_a.sc.1 + 8.0 + movement1 * 0.6 + movement2 * -15.0 + movement3 * -10.0, s_a.sc.2 + 1.0 + movement1 * 0.6 + movement2 * 1.5 + movement3 * -4.0, ); next.control.orientation = Quaternion::rotation_x(-0.5 + s_a.sc.3 + movement1 * -1.2) * Quaternion::rotation_y( - s_a.sc.4 - 0.6 + movement1 * 0.0 + movement2 * -1.3, + s_a.sc.4 - 0.6 + movement1 * 0.0 + movement2 * -1.7, ) * Quaternion::rotation_z(s_a.sc.5 + 0.1 + movement1 * -1.57); next.head.position = Vec3::new( @@ -73,9 +73,11 @@ impl Animation for SpinAnimation { ); next.chest.orientation = Quaternion::rotation_x(movement2 * 0.15) - * Quaternion::rotation_y(movement1 * -0.1 + movement2 * 0.3 + movement3 * -0.1) + * Quaternion::rotation_y( + movement1 * -0.1 + movement2 * 0.15 + movement3 * -0.1, + ) * Quaternion::rotation_z( - -1.0 + movement1 * -0.6 + movement2 * 1.5 + movement3 * 0.5, + -1.0 + movement1 * -0.6 + movement2 * 1.0 + movement3 * 0.5, ); next.belt.orientation = Quaternion::rotation_x(movement1 * 0.1) diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 30510de597..e218e3f700 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -807,6 +807,7 @@ impl FigureMgr { active_tool_kind, second_tool_kind, hands, + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), From 858fbe1a6ce1c8015776f29d1083cbf383202fc3 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sat, 20 Feb 2021 19:32:12 +0100 Subject: [PATCH 26/36] Adds yeti npc --- .../items/npc_weapons/hammer/yeti_hammer.ron | 16 +++++ assets/common/npc_names.ron | 4 ++ .../voxel/biped_large_central_manifest.ron | 52 ++++++++++++++ .../voxel/biped_large_lateral_manifest.ron | 68 +++++++++++++++++++ .../voxel/biped_large_weapon_manifest.ron | 4 ++ .../voxygen/voxel/biped_weapon_manifest.ron | 4 ++ .../voxel/humanoid_main_weapon_manifest.ron | 4 ++ assets/voxygen/voxel/npc/yeti/male/foot_l.vox | 3 + assets/voxygen/voxel/npc/yeti/male/foot_r.vox | 3 + assets/voxygen/voxel/npc/yeti/male/hand_l.vox | 3 + assets/voxygen/voxel/npc/yeti/male/hand_r.vox | 3 + assets/voxygen/voxel/npc/yeti/male/head.vox | 3 + assets/voxygen/voxel/npc/yeti/male/jaw.vox | 3 + assets/voxygen/voxel/npc/yeti/male/leg_l.vox | 3 + assets/voxygen/voxel/npc/yeti/male/leg_r.vox | 3 + .../voxel/npc/yeti/male/shoulder_l.vox | 3 + .../voxel/npc/yeti/male/shoulder_r.vox | 3 + .../voxel/npc/yeti/male/torso_lower.vox | 3 + .../voxel/npc/yeti/male/torso_upper.vox | 3 + .../voxel/weapon/hammer/2hhammer_yeti.vox | 3 + common/src/comp/body.rs | 2 + common/src/comp/body/biped_large.rs | 6 +- common/src/comp/inventory/loadout_builder.rs | 5 ++ voxygen/anim/src/biped_large/jump.rs | 8 +-- voxygen/anim/src/biped_large/mod.rs | 13 ++++ 25 files changed, 220 insertions(+), 5 deletions(-) create mode 100644 assets/common/items/npc_weapons/hammer/yeti_hammer.ron create mode 100644 assets/voxygen/voxel/npc/yeti/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/head.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/shoulder_l.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/shoulder_r.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/torso_lower.vox create mode 100644 assets/voxygen/voxel/npc/yeti/male/torso_upper.vox create mode 100644 assets/voxygen/voxel/weapon/hammer/2hhammer_yeti.vox diff --git a/assets/common/items/npc_weapons/hammer/yeti_hammer.ron b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron new file mode 100644 index 0000000000..b1a1ed7459 --- /dev/null +++ b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Yeti Hammer", + description: "Placeholder", + kind: Tool( + ( + kind: HammerSimple, + stats: ( + equip_time_millis: 500, + power: 1.00, + poise_strength: 1.00, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index d8ce61a1a7..7ef846bdcf 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -849,6 +849,10 @@ tidalwarrior: ( keyword: "tidalwarrior", generic: "Tidal Warrior" + ), + yeti: ( + keyword: "yeti", + generic: "Yeti" ) ) ), diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index 665080faac..53b125df98 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -624,4 +624,56 @@ central: ("armor.empty"), ) ), + (Yeti, Male): ( + head: ( + offset: (-5.5, -4.0, -4.0), + central: ("npc.yeti.male.head"), + ), + torso_upper: ( + offset: (-8.5, -7.5, -8.5), + central: ("npc.yeti.male.torso_upper"), + ), + torso_lower: ( + offset: (-6.5, -5.0, -6.0), + central: ("npc.yeti.male.torso_lower"), + ), + jaw: ( + offset: (-6.5, 0.0, -4.5), + central: ("npc.yeti.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Yeti, Female): ( + head: ( + offset: (-5.5, -4.0, -4.0), + central: ("npc.yeti.male.head"), + ), + torso_upper: ( + offset: (-8.5, -7.5, -8.5), + central: ("npc.yeti.male.torso_upper"), + ), + torso_lower: ( + offset: (-6.5, -5.0, -6.0), + central: ("npc.yeti.male.torso_lower"), + ), + jaw: ( + offset: (-6.5, 0.0, -4.5), + central: ("npc.yeti.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 0d02c6dd17..04d18e2da5 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -815,4 +815,72 @@ lateral: ("npc.tidalwarrior.male.foot_r"), ) ), + (Yeti, Male): ( + shoulder_l: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.yeti.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.yeti.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -4.0, -12.0), + lateral: ("npc.yeti.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -4.0, -12.0), + lateral: ("npc.yeti.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.yeti.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.yeti.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -4.5, -4.0), + lateral: ("npc.yeti.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -4.5, -4.0), + lateral: ("npc.yeti.male.foot_r"), + ) + ), + (Yeti, Female): ( + shoulder_l: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.yeti.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.yeti.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -4.0, -12.0), + lateral: ("npc.yeti.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -4.0, -12.0), + lateral: ("npc.yeti.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.yeti.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.yeti.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -4.5, -4.0), + lateral: ("npc.yeti.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -4.5, -4.0), + lateral: ("npc.yeti.male.foot_r"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_large_weapon_manifest.ron b/assets/voxygen/voxel/biped_large_weapon_manifest.ron index 57b298a8c1..756e8e5db9 100644 --- a/assets/voxygen/voxel/biped_large_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_large_weapon_manifest.ron @@ -63,4 +63,8 @@ vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), color: None ), + "common.items.npc_weapons.hammer.yeti_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_yeti", (-7.5, -7.0, -7.0)), + color: None + ), }) diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron index 8743711764..3fdb9417c6 100644 --- a/assets/voxygen/voxel/biped_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -769,4 +769,8 @@ vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), color: None ), + "common.items.npc_weapons.hammer.yeti_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_yeti", (-7.5, -7.0, -7.0)), + color: None + ), }) diff --git a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron index 9af474d6cc..b1667c6a2a 100644 --- a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron +++ b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron @@ -965,6 +965,10 @@ vox_spec: ("weapon.staff.firestaff_mindflayer", (-5.5, -3.5, -8.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.unique.beast_claws": ( vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), color: None diff --git a/assets/voxygen/voxel/npc/yeti/male/foot_l.vox b/assets/voxygen/voxel/npc/yeti/male/foot_l.vox new file mode 100644 index 0000000000..0a97881c82 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bab38fa9f09022a67131f9ea6d630f3a89c77089469e8a99f15345455696381c +size 2000 diff --git a/assets/voxygen/voxel/npc/yeti/male/foot_r.vox b/assets/voxygen/voxel/npc/yeti/male/foot_r.vox new file mode 100644 index 0000000000..a5327a1299 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4549da86a16646c5faf4c376526a1eafafe620770817254128a8ebd019b7d81 +size 2000 diff --git a/assets/voxygen/voxel/npc/yeti/male/hand_l.vox b/assets/voxygen/voxel/npc/yeti/male/hand_l.vox new file mode 100644 index 0000000000..8ca067444f --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e1f82341337e09aa1c32f5807d6015d24f7eb678da36e5a3c56f2ebb18a26cc +size 3108 diff --git a/assets/voxygen/voxel/npc/yeti/male/hand_r.vox b/assets/voxygen/voxel/npc/yeti/male/hand_r.vox new file mode 100644 index 0000000000..aa1e31acbf --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa1bfd9ebf9ade5f699ab7d73f50b7c3e2b856b10eb41db6381ccb93c958d1e7 +size 3108 diff --git a/assets/voxygen/voxel/npc/yeti/male/head.vox b/assets/voxygen/voxel/npc/yeti/male/head.vox new file mode 100644 index 0000000000..e74b46f7e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7ee1807d0e5b94da3e00851ba31f07eaf74fa238206bc44e366fae2cc85f7f2 +size 2592 diff --git a/assets/voxygen/voxel/npc/yeti/male/jaw.vox b/assets/voxygen/voxel/npc/yeti/male/jaw.vox new file mode 100644 index 0000000000..9d04a0b784 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88c7ebaf331ccfc6a2c3e65063a0b7b668091172d27b15640e664ed5f297bf50 +size 2440 diff --git a/assets/voxygen/voxel/npc/yeti/male/leg_l.vox b/assets/voxygen/voxel/npc/yeti/male/leg_l.vox new file mode 100644 index 0000000000..317ab213e8 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60cefdb33f69a350a754468b58c8c1e3a2c66a4771055f3907b64c9df9fb9e86 +size 1832 diff --git a/assets/voxygen/voxel/npc/yeti/male/leg_r.vox b/assets/voxygen/voxel/npc/yeti/male/leg_r.vox new file mode 100644 index 0000000000..3cf11cfe10 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f42c711d91b7d93346befcedd453dab24ba8bd16e31c62d54ef5800630417433 +size 1832 diff --git a/assets/voxygen/voxel/npc/yeti/male/shoulder_l.vox b/assets/voxygen/voxel/npc/yeti/male/shoulder_l.vox new file mode 100644 index 0000000000..d73b8fd725 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0c4cae6a9f13aad6f1c398fc756a58280d005c09e8c2c6bba3538390a69e75f +size 2336 diff --git a/assets/voxygen/voxel/npc/yeti/male/shoulder_r.vox b/assets/voxygen/voxel/npc/yeti/male/shoulder_r.vox new file mode 100644 index 0000000000..6b9b0c8700 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4303fba193112dbf5d8633531be013354032a5e3d12097af6026bb872c4b87e +size 2336 diff --git a/assets/voxygen/voxel/npc/yeti/male/torso_lower.vox b/assets/voxygen/voxel/npc/yeti/male/torso_lower.vox new file mode 100644 index 0000000000..adb2db45a5 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:083a748c55e916747a4d135c6f2d39086f80d7db82c7fcaf0eae210487ff6c21 +size 2976 diff --git a/assets/voxygen/voxel/npc/yeti/male/torso_upper.vox b/assets/voxygen/voxel/npc/yeti/male/torso_upper.vox new file mode 100644 index 0000000000..015117796d --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fa3a986488dc31bb1c193a49d3ecf03ce978aa4d149a56aeef4267111b73e42 +size 10960 diff --git a/assets/voxygen/voxel/weapon/hammer/2hhammer_yeti.vox b/assets/voxygen/voxel/weapon/hammer/2hhammer_yeti.vox new file mode 100644 index 0000000000..92779ac963 --- /dev/null +++ b/assets/voxygen/voxel/weapon/hammer/2hhammer_yeti.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d8796bf783935984747be7f8ba09b742090b5a63ca052b5158e01ba15dbc53a +size 6064 diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index b813efab29..b779f1a9c1 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -367,6 +367,7 @@ impl Body { biped_large::Species::Dullahan => 2000, biped_large::Species::Mindflayer => 8000, biped_large::Species::Tidalwarrior => 2500, + biped_large::Species::Yeti => 2000, _ => 1000, }, Body::BipedSmall(_) => 10000, @@ -465,6 +466,7 @@ impl Body { biped_large::Species::Dullahan => 120, biped_large::Species::Mindflayer => 250, biped_large::Species::Tidalwarrior => 90, + biped_large::Species::Yeti => 80, _ => 100, }, Body::BipedSmall(_) => 10, diff --git a/common/src/comp/body/biped_large.rs b/common/src/comp/body/biped_large.rs index 704c40cfae..81f8eedc3b 100644 --- a/common/src/comp/body/biped_large.rs +++ b/common/src/comp/body/biped_large.rs @@ -46,6 +46,7 @@ make_case_elim!( Mindflayer = 9, Minotaur = 10, Tidalwarrior = 11, + Yeti = 12, } ); @@ -66,6 +67,7 @@ pub struct AllSpecies { pub mindflayer: SpeciesMeta, pub minotaur: SpeciesMeta, pub tidalwarrior: SpeciesMeta, + pub yeti: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -86,11 +88,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Mindflayer => &self.mindflayer, Species::Minotaur => &self.minotaur, Species::Tidalwarrior => &self.tidalwarrior, + Species::Yeti => &self.yeti, } } } -pub const ALL_SPECIES: [Species; 12] = [ +pub const ALL_SPECIES: [Species; 13] = [ Species::Ogre, Species::Cyclops, Species::Wendigo, @@ -103,6 +106,7 @@ pub const ALL_SPECIES: [Species; 12] = [ Species::Mindflayer, Species::Minotaur, Species::Tidalwarrior, + Species::Yeti, ]; 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 8f37d268f5..3293da63fa 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -251,6 +251,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.tidal_claws", )); }, + (biped_large::Species::Yeti, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.hammer.yeti_hammer", + )); + }, }, Body::Object(object::Body::Crossbow) => { main_tool = Some(Item::new_from_asset_expect( diff --git a/voxygen/anim/src/biped_large/jump.rs b/voxygen/anim/src/biped_large/jump.rs index 6c97b5a660..20021b1f3f 100644 --- a/voxygen/anim/src/biped_large/jump.rs +++ b/voxygen/anim/src/biped_large/jump.rs @@ -60,19 +60,19 @@ impl Animation for JumpAnimation { next.second.scale = Vec3::one() * 0.0; match active_tool_kind { - Some(ToolKind::Bow) => { + Some(ToolKind::BowSimple) => { next.main.position = Vec3::new(-2.0, -5.0, -6.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { next.main.position = Vec3::new(-6.0, -5.0, -12.0); next.main.orientation = Quaternion::rotation_y(0.6) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Sword) => { + Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Hammer) => { + Some(ToolKind::HammerSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index b6d4093dde..dcb42983e7 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -206,6 +206,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => (5.0, 5.5), (Minotaur, _) => (6.0, 3.0), (Tidalwarrior, _) => (6.5, 5.0), + (Yeti, _) => (8.5, 4.0), }, jaw: match (body.species, body.body_type) { (Ogre, _) => (0.0, 0.0), @@ -220,6 +221,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => (0.0, 0.0), (Minotaur, _) => (2.0, -4.0), (Tidalwarrior, _) => (0.0, 0.0), + (Yeti, _) => (-5.0, -5.0), }, upper_torso: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 27.5), @@ -235,6 +237,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => (0.0, 30.5), (Minotaur, _) => (-1.0, 31.5), (Tidalwarrior, _) => (-1.0, 25.0), + (Yeti, _) => (-1.0, 23.5), }, lower_torso: match (body.species, body.body_type) { (Ogre, Male) => (1.0, -7.0), @@ -250,6 +253,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => (3.5, -19.5), (Minotaur, _) => (1.5, -8.5), (Tidalwarrior, _) => (0.0, -9.5), + (Yeti, _) => (0.0, -6.5), }, tail: match (body.species, body.body_type) { (Werewolf, _) => (-5.5, -2.0), @@ -273,6 +277,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => (8.0, 0.5, -1.0), (Minotaur, _) => (10.0, 1.0, -1.0), (Tidalwarrior, _) => (14.0, -0.5, 2.0), + (Yeti, _) => (10.5, 1.0, -2.5), }, hand: match (body.species, body.body_type) { (Ogre, Male) => (14.5, 0.0, -4.0), @@ -288,6 +293,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => (9.0, 0.5, -4.5), (Minotaur, _) => (12.5, 0.5, -7.0), (Tidalwarrior, _) => (15.5, -0.5, -3.0), + (Yeti, _) => (12.0, 1.5, -6.0), }, leg: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 0.0, -4.0), @@ -303,6 +309,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => (6.0, -2.0, 6.5), (Minotaur, _) => (5.0, 0.0, -10.0), (Tidalwarrior, _) => (2.5, 0.0, -5.5), + (Yeti, _) => (4.0, 0.0, -5.5), }, foot: match (body.species, body.body_type) { (Ogre, Male) => (4.0, 1.0, -12.0), @@ -318,6 +325,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => (4.5, 1.5, -7.0), (Minotaur, _) => (6.0, 4.5, -17.5), (Tidalwarrior, _) => (3.5, 0.5, -10.5), + (Yeti, _) => (4.5, 0.5, -12.5), }, scaler: match (body.species, body.body_type) { (Ogre, Male) => 1.4, @@ -333,6 +341,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => 1.5, (Minotaur, _) => 2.0, (Tidalwarrior, _) => 2.0, + (Yeti, _) => 1.5, }, tempo: match (body.species, body.body_type) { (Ogre, Male) => 0.9, @@ -357,6 +366,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mindflayer, _) => 12.0, (Minotaur, _) => 14.0, (Tidalwarrior, _) => 14.0, + (Yeti, _) => 12.5, }, shl: match (body.species, body.body_type) { (Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0), @@ -377,18 +387,21 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Male) => (-9.0, -10.0, 23.0, 1.57, -0.57, 0.0), (Cyclops, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), (Troll, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), + (Yeti, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), _ => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), }, hhr: match (body.species, body.body_type) { (Ogre, Male) => (-5.0, -13.0, 0.0, 1.57, -0.57, 0.0), (Cyclops, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), (Troll, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), + (Yeti, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), _ => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), }, hc: match (body.species, body.body_type) { (Ogre, Male) => (11.5, 9.0, -13.0, -0.57, -1.57, 1.0), (Cyclops, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), (Troll, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), + (Yeti, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), _ => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), }, sthl: match (body.species, body.body_type) { From e06ebf35073c91a26fdf4d60ea16aba4b688c45a Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 20 Feb 2021 15:38:27 -0500 Subject: [PATCH 27/36] initial balance --- .../common/abilities/spear/doublestrike.ron | 4 +- .../abilities/swordsimple/doublestrike.ron | 2 +- .../biped_small/adlet/chest/adlet_bow.ron | 2 +- .../biped_small/adlet/chest/adlet_spear.ron | 2 +- .../biped_small/adlet/foot/adlet.ron | 2 +- .../biped_small/adlet/hand/adlet_bow.ron | 2 +- .../biped_small/adlet/hand/adlet_spear.ron | 2 +- .../biped_small/adlet/head/adlet_bow.ron | 2 +- .../biped_small/adlet/head/adlet_spear.ron | 2 +- .../biped_small/adlet/pants/adlet_bow.ron | 2 +- .../biped_small/adlet/pants/adlet_spear.ron | 2 +- .../biped_small/adlet/tail/adlet.ron | 2 +- .../biped_small/gnarling/foot/gnarling.ron | 2 +- .../biped_small/gnarling/hand/gnarling.ron | 2 +- .../biped_small/gnarling/head/gnarling.ron | 2 +- .../biped_small/gnarling/pants/gnarling.ron | 2 +- .../biped_small/gnarling/tail/gnarling.ron | 2 +- .../biped_small/haniwa/chest/haniwa.ron | 2 +- .../biped_small/haniwa/foot/haniwa.ron | 2 +- .../biped_small/haniwa/hand/haniwa.ron | 2 +- .../biped_small/haniwa/head/haniwa.ron | 2 +- .../biped_small/haniwa/pants/haniwa.ron | 2 +- .../biped_small/myrmidon/chest/myrmidon.ron | 2 +- .../biped_small/myrmidon/foot/myrmidon.ron | 2 +- .../biped_small/myrmidon/hand/myrmidon.ron | 2 +- .../biped_small/myrmidon/head/myrmidon.ron | 2 +- .../biped_small/myrmidon/pants/myrmidon.ron | 2 +- .../biped_small/myrmidon/tail/myrmidon.ron | 2 +- .../biped_small/sahagin/chest/sahagin.ron | 2 +- .../biped_small/sahagin/foot/sahagin.ron | 2 +- .../biped_small/sahagin/hand/sahagin.ron | 2 +- .../biped_small/sahagin/head/sahagin.ron | 2 +- .../biped_small/sahagin/pants/sahagin.ron | 2 +- .../biped_small/sahagin/tail/sahagin.ron | 2 +- .../adlet/adlet_bow.ron} | 6 +- .../adlet/gnoll_staff.ron} | 4 +- .../adlet}/wooden_spear.ron | 4 +- .../biped_small/gnarling/adlet_bow.ron | 16 +++++ .../biped_small/gnarling/gnoll_staff.ron | 16 +++++ .../biped_small/gnarling/wooden_spear.ron | 16 +++++ .../biped_small/haniwa/adlet_bow.ron | 16 +++++ .../biped_small/haniwa/gnoll_staff.ron | 16 +++++ .../biped_small/haniwa/wooden_spear.ron | 16 +++++ .../biped_small/myrmidon/adlet_bow.ron | 16 +++++ .../biped_small/myrmidon/gnoll_staff.ron | 16 +++++ .../biped_small/myrmidon/wooden_spear.ron | 16 +++++ .../biped_small/sahagin/adlet_bow.ron | 16 +++++ .../biped_small/sahagin/gnoll_staff.ron | 16 +++++ .../biped_small/sahagin/wooden_spear.ron | 16 +++++ assets/voxygen/voxel/armor/chest/steel-0.vox | 4 +- .../voxygen/voxel/biped_weapon_manifest.ron | 60 ++++++++++++++++--- .../voxel/humanoid_armor_chest_manifest.ron | 2 +- common/src/comp/body.rs | 9 ++- common/src/comp/projectile.rs | 9 +-- common/src/explosion.rs | 2 +- common/src/states/utils.rs | 17 ++++-- server/src/events/entity_manipulation.rs | 7 +-- voxygen/anim/src/biped_large/alpha.rs | 6 +- voxygen/anim/src/biped_large/dash.rs | 2 +- voxygen/anim/src/biped_large/shoot.rs | 2 +- voxygen/anim/src/biped_small/dash.rs | 1 - voxygen/anim/src/biped_small/idle.rs | 12 ++-- voxygen/anim/src/biped_small/mod.rs | 14 +++++ voxygen/anim/src/biped_small/run.rs | 12 ++-- voxygen/anim/src/biped_small/shoot.rs | 5 +- voxygen/anim/src/biped_small/wield.rs | 5 +- voxygen/anim/src/theropod/run.rs | 2 +- voxygen/src/scene/figure/mod.rs | 31 ++++++++++ voxygen/src/scene/mod.rs | 10 ++-- world/src/site/dungeon/mod.rs | 58 ++++++++++-------- 70 files changed, 420 insertions(+), 126 deletions(-) rename assets/common/items/npc_weapons/{bow/adlet.ron => biped_small/adlet/adlet_bow.ron} (74%) rename assets/common/items/npc_weapons/{staff/gnoll.ron => biped_small/adlet/gnoll_staff.ron} (79%) rename assets/common/items/npc_weapons/{spear => biped_small/adlet}/wooden_spear.ron (79%) create mode 100644 assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron create mode 100644 assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron create mode 100644 assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron create mode 100644 assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron create mode 100644 assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron create mode 100644 assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron create mode 100644 assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron create mode 100644 assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron create mode 100644 assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron create mode 100644 assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron create mode 100644 assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron create mode 100644 assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron diff --git a/assets/common/abilities/spear/doublestrike.ron b/assets/common/abilities/spear/doublestrike.ron index 9e8ea282d2..17516e0fc7 100644 --- a/assets/common/abilities/spear/doublestrike.ron +++ b/assets/common/abilities/spear/doublestrike.ron @@ -29,8 +29,8 @@ ComboMelee( forward_movement: 1.0, ), ], - initial_energy_gain: 25, - max_energy_gain: 175, + initial_energy_gain: 0, + max_energy_gain: 0, energy_increase: 30, speed_increase: 0.0, max_speed_increase: 0.0, diff --git a/assets/common/abilities/swordsimple/doublestrike.ron b/assets/common/abilities/swordsimple/doublestrike.ron index dd14cc0ea1..5d5b94f3d7 100644 --- a/assets/common/abilities/swordsimple/doublestrike.ron +++ b/assets/common/abilities/swordsimple/doublestrike.ron @@ -10,7 +10,7 @@ ComboMelee( range: 3.5, angle: 50.0, base_buildup_duration: 0.4, - base_swing_duration: 0.08, + base_swing_duration: 0.06, base_recover_duration: 0.5, forward_movement: 2.5, ), diff --git a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron index 8d50e8cd6f..e3b8e7a95d 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Chest("AdletBow"), stats: ( - protection: Normal(2.0), + protection: Normal(12.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron index 5043c65e01..56e7a7e85e 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Chest("AdletSpear"), stats: ( - protection: Normal(2.0), + protection: Normal(12.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron b/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron index b3813e1672..9a5802809e 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Foot("Adlet"), stats: ( - protection: Normal(2.0), + protection: Normal(10.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron index 173ea9112f..f03b1cb760 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Hand("AdletBow"), stats: ( - protection: Normal(2.0), + protection: Normal(10.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron index 6193f137b5..556fc13b73 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Hand("AdletSpear"), stats: ( - protection: Normal(2.0), + protection: Normal(10.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron index 5b1a825fea..29c5683ce7 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Head("AdletBow"), stats: ( - protection: Normal(2.0), + protection: Normal(10.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron index 1d17ceea49..ac4cb139a6 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Head("AdletSpear"), stats: ( - protection: Normal(2.0), + protection: Normal(10.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron index 909e590700..1a419f3d0c 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Pants("AdletBow"), stats: ( - protection: Normal(2.0), + protection: Normal(10.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron index 84568b5788..c011d0e957 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Pants("AdletSpear"), stats: ( - protection: Normal(2.0), + protection: Normal(10.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron b/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron index d6578b34a1..849bf4faf4 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Belt("Adlet"), stats: ( - protection: Normal(2.0), + protection: Normal(10.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron index d0e846be89..63c4c6f8f7 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Foot("Gnarling"), stats: ( - protection: Normal(2.0), + protection: Normal(1.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron index e5a67f897c..7e59130587 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Hand("Gnarling"), stats: ( - protection: Normal(2.0), + protection: Normal(1.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron index 0d6184e2b5..2daa5e9d1b 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Head("Gnarling"), stats: ( - protection: Normal(2.0), + protection: Normal(1.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron index aa007ee9f1..1a66f05153 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Pants("Gnarling"), stats: ( - protection: Normal(2.0), + protection: Normal(1.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron index 93580fa7a0..79040d6bbe 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Belt("Gnarling"), stats: ( - protection: Normal(2.0), + protection: Normal(1.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron index f2e0b62719..c8f2a7165c 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Chest("Haniwa"), stats: ( - protection: Normal(2.0), + protection: Normal(28.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron index 522f785fcb..e67d0bdb45 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Foot("Haniwa"), stats: ( - protection: Normal(2.0), + protection: Normal(20.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron index 2922172faa..ffb03d3743 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Hand("Haniwa"), stats: ( - protection: Normal(2.0), + protection: Normal(20.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron index 4f75adb4fa..136ad4afab 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Head("Haniwa"), stats: ( - protection: Normal(2.0), + protection: Normal(20.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron index 9797217e6e..067ba07def 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Pants("Haniwa"), stats: ( - protection: Normal(2.0), + protection: Normal(20.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron index fb38ce7267..51e9883c24 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Chest("Myrmidon"), stats: ( - protection: Normal(2.0), + protection: Normal(36.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron index 061a8b8174..caefbff033 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Foot("Myrmidon"), stats: ( - protection: Normal(2.0), + protection: Normal(25.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron index c04ffd8a42..765aabbb20 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Hand("Myrmidon"), stats: ( - protection: Normal(2.0), + protection: Normal(25.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron index 8da8407ec1..d112267ad6 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Head("Myrmidon"), stats: ( - protection: Normal(2.0), + protection: Normal(25.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron index cc36f30204..d778f0121e 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Pants("Myrmidon"), stats: ( - protection: Normal(2.0), + protection: Normal(25.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron index 7ab5ceddcf..9618d9dd07 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Belt("Myrmidon"), stats: ( - protection: Normal(2.0), + protection: Normal(25.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron index f0757449e6..460472b0f4 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Chest("Sahagin"), stats: ( - protection: Normal(2.0), + protection: Normal(18.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron index 2d67bf980f..4edca658a2 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Foot("Sahagin"), stats: ( - protection: Normal(2.0), + protection: Normal(14.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron index b71a6b8c28..111faf586e 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Hand("Sahagin"), stats: ( - protection: Normal(2.0), + protection: Normal(14.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron index 5d7f9ec81d..67a335b99b 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Head("Sahagin"), stats: ( - protection: Normal(2.0), + protection: Normal(14.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron index f77f30c2a9..c94a17e0a3 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Pants("Sahagin"), stats: ( - protection: Normal(2.0), + protection: Normal(14.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron index d724d593d8..84b87a58c5 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Belt("Sahagin"), stats: ( - protection: Normal(2.0), + protection: Normal(14.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_weapons/bow/adlet.ron b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron similarity index 74% rename from assets/common/items/npc_weapons/bow/adlet.ron rename to assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron index 3513db8ae2..3e81e78618 100644 --- a/assets/common/items/npc_weapons/bow/adlet.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron @@ -5,10 +5,10 @@ ItemDef( ( kind: Bow, stats: ( - equip_time_millis: 200, - power: 0.8, + equip_time_millis: 0, + power: 0.7, poise_strength: 0.8, - speed: 1.0 + speed: 0.5 ), ) ), diff --git a/assets/common/items/npc_weapons/staff/gnoll.ron b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron similarity index 79% rename from assets/common/items/npc_weapons/staff/gnoll.ron rename to assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron index 3bc37ffebe..cd90339733 100644 --- a/assets/common/items/npc_weapons/staff/gnoll.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron @@ -5,8 +5,8 @@ ItemDef( ( kind: Staff, stats: ( - equip_time_millis: 200, - power: 0.8, + equip_time_millis: 0, + power: 0.7, poise_strength: 0.8, speed: 1.0 ), diff --git a/assets/common/items/npc_weapons/spear/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron similarity index 79% rename from assets/common/items/npc_weapons/spear/wooden_spear.ron rename to assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron index 736a72b82f..da8f9e12e4 100644 --- a/assets/common/items/npc_weapons/spear/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron @@ -5,8 +5,8 @@ ItemDef( ( kind: Spear, stats: ( - equip_time_millis: 250, - power: 1.0, + equip_time_millis: 0, + power: 0.7, poise_strength: 0.8, speed: 1.0 ), diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron new file mode 100644 index 0000000000..6000750ab9 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool( + ( + kind: Bow, + stats: ( + equip_time_millis: 0, + power: 0.3, + poise_strength: 0.8, + speed: 0.5 + ), + ) + ), + quality: Moderate, +) diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron new file mode 100644 index 0000000000..ad20b40855 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool( + ( + kind: Staff, + stats: ( + equip_time_millis: 0, + power: 0.3, + poise_strength: 0.8, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron new file mode 100644 index 0000000000..7a6fd69b20 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool( + ( + kind: Spear, + stats: ( + equip_time_millis: 0, + power: 0.3, + poise_strength: 0.8, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron new file mode 100644 index 0000000000..79e6327887 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool( + ( + kind: Bow, + stats: ( + equip_time_millis: 0, + power: 1.4, + poise_strength: 0.8, + speed: 0.5 + ), + ) + ), + quality: Moderate, +) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron new file mode 100644 index 0000000000..e6218218c6 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool( + ( + kind: Staff, + stats: ( + equip_time_millis: 0, + power: 1.4, + poise_strength: 0.8, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron new file mode 100644 index 0000000000..e3e0cca54a --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool( + ( + kind: Spear, + stats: ( + equip_time_millis: 0, + power: 1.4, + poise_strength: 0.8, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron new file mode 100644 index 0000000000..5fe4c41ce2 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool( + ( + kind: Bow, + stats: ( + equip_time_millis: 0, + power: 1.1, + poise_strength: 0.8, + speed: 0.5 + ), + ) + ), + quality: Moderate, +) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron new file mode 100644 index 0000000000..b05aff2e41 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool( + ( + kind: Staff, + stats: ( + equip_time_millis: 0, + power: 1.7, + poise_strength: 0.8, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron new file mode 100644 index 0000000000..f0f4611f15 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool( + ( + kind: Spear, + stats: ( + equip_time_millis: 0, + power: 1.7, + poise_strength: 0.8, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron new file mode 100644 index 0000000000..6000750ab9 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool( + ( + kind: Bow, + stats: ( + equip_time_millis: 0, + power: 0.3, + poise_strength: 0.8, + speed: 0.5 + ), + ) + ), + quality: Moderate, +) diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron new file mode 100644 index 0000000000..0873dcba91 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool( + ( + kind: Staff, + stats: ( + equip_time_millis: 0, + power: 1.1, + poise_strength: 0.8, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron new file mode 100644 index 0000000000..04765d6dc5 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool( + ( + kind: Spear, + stats: ( + equip_time_millis: 0, + power: 1.1, + poise_strength: 0.8, + speed: 1.0 + ), + ) + ), + quality: Low, +) diff --git a/assets/voxygen/voxel/armor/chest/steel-0.vox b/assets/voxygen/voxel/armor/chest/steel-0.vox index caaf374154..583da4e421 100644 --- a/assets/voxygen/voxel/armor/chest/steel-0.vox +++ b/assets/voxygen/voxel/armor/chest/steel-0.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c82339673d8c325662f000e9ee7d192ba4f897cd20a79ebe458307ea78f30d53 -size 46139 +oid sha256:8f5b962ee21300a5af938dacd05db71ed56e13b23ad7fe260948b6c70cfca4f3 +size 3072 diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron index 3fdb9417c6..37213ae4a9 100644 --- a/assets/voxygen/voxel/biped_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -705,6 +705,7 @@ vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)), color: None ), +//BIPEDLARGE "common.items.npc_weapons.hammer.ogre_hammer": ( vox_spec: ("weapon.hammer.2hhammer_ogre", (-5.0, -5.5, -7.0)), color: None @@ -753,19 +754,64 @@ vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), color: None ), - "common.items.npc_weapons.spear.wooden_spear": ( + //BIPEDSMALL + "common.items.npc_weapons.biped_small.gnarling.wooden_spear": ( vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), color: None ), - "common.items.weapon.spear.adlet": ( - vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)), - color: None - ), - "common.items.npc_weapons.bow.adlet": ( + "common.items.npc_weapons.biped_small.gnarling.adlet_bow": ( vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), color: None ), - "common.items.npc_weapons.staff.gnoll": ( + "common.items.npc_weapons.biped_small.gnarling.gnoll_staff": ( + vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.adlet.wooden_spear": ( + vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.biped_small.adlet.adlet_bow": ( + vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.biped_small.adlet.gnoll_staff": ( + vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.wooden_spear": ( + vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.adlet_bow": ( + vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.gnoll_staff": ( + vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.wooden_spear": ( + vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.adlet_bow": ( + vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.gnoll_staff": ( + vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.wooden_spear": ( + vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.adlet_bow": ( + vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.gnoll_staff": ( vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), color: None ), diff --git a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron index 69cbd6a837..73f5a91db1 100644 --- a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron @@ -135,7 +135,7 @@ color: Some((57, 81, 132)) ), "Steel0": ( - vox_spec: ("armor.chest.steel-0", (-5.0, -4.5, 2.0)), + vox_spec: ("armor.chest.steel-0", (-8.0, -4.5, 2.0)), color: None ), "PlateLeather": ( diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index b779f1a9c1..368632c34c 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -370,7 +370,14 @@ impl Body { biped_large::Species::Yeti => 2000, _ => 1000, }, - Body::BipedSmall(_) => 10000, + Body::BipedSmall(biped_small) => match biped_small.species { + biped_small::Species::Gnarling => 300, + biped_small::Species::Adlet => 400, + biped_small::Species::Sahagin => 500, + biped_small::Species::Haniwa => 900, + biped_small::Species::Myrmidon => 1000, + _ => 600, + }, Body::Object(object) => match object { object::Body::TrainingDummy => 10000, object::Body::Crossbow => 800, diff --git a/common/src/comp/projectile.rs b/common/src/comp/projectile.rs index 86f118cfe8..2a4964b239 100644 --- a/common/src/comp/projectile.rs +++ b/common/src/comp/projectile.rs @@ -139,10 +139,7 @@ impl ProjectileConstructor { ignore_group: true, } }, - Frostball { - damage, - radius, - } => { + Frostball { damage, radius } => { let damage = AttackDamage::new( Damage { source: DamageSource::Explosion, @@ -152,9 +149,7 @@ impl ProjectileConstructor { ); let attack = Attack::default().with_damage(damage); let explosion = Explosion { - effects: vec![ - RadiusEffect::Attack(attack), - ], + effects: vec![RadiusEffect::Attack(attack)], radius, reagent: Some(Reagent::Blue), }; diff --git a/common/src/explosion.rs b/common/src/explosion.rs index 692c08e97a..ac5790b976 100644 --- a/common/src/explosion.rs +++ b/common/src/explosion.rs @@ -1,4 +1,4 @@ -use crate::{combat::Attack, effect::Effect, comp::item::Reagent}; +use crate::{combat::Attack, comp::item::Reagent, effect::Effect}; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Serialize, Deserialize)] diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index d8635e3eb3..aa05614175 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -2,7 +2,7 @@ use crate::{ comp::{ inventory::slot::EquipSlot, item::{Hands, ItemKind, Tool, ToolKind}, - quadruped_low, quadruped_medium, +biped_large, biped_small, quadruped_low, quadruped_medium, skills::Skill, theropod, Body, CharacterAbility, CharacterState, LoadoutManip, StateUpdate, }, @@ -67,13 +67,22 @@ impl Body { quadruped_medium::Species::Panda => 90.0, quadruped_medium::Species::Bear => 90.0, }, - Body::BipedSmall(_) => 80.0, - Body::BirdMedium(_) => 80.0, + Body::BipedLarge(body) => match body.species { + biped_large::Species::Slysaurok => 100.0, + biped_large::Species::Occultsaurok => 100.0, + biped_large::Species::Mightysaurok => 100.0, + biped_large::Species::Mindflayer => 90.0, + biped_large::Species::Minotaur => 90.0, + _ => 80.0, + }, Body::BirdMedium(_) => 80.0, Body::FishMedium(_) => 80.0, Body::Dragon(_) => 250.0, Body::BirdSmall(_) => 75.0, Body::FishSmall(_) => 60.0, - Body::BipedLarge(_) => 75.0, + Body::BipedSmall(biped_small) => match biped_small.species { + biped_small::Species::Haniwa => 65.0, + _ => 80.0, + }, Body::Object(_) => 0.0, Body::Golem(_) => 60.0, Body::Theropod(_) => 135.0, diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 551b524eb2..ff03ff7206 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -571,12 +571,7 @@ pub fn handle_respawn(server: &Server, entity: EcsEntity) { } #[allow(clippy::blocks_in_if_conditions)] -pub fn handle_explosion( - server: &Server, - pos: Vec3, - explosion: Explosion, - owner: Option, -) { +pub fn handle_explosion(server: &Server, pos: Vec3, explosion: Explosion, owner: Option) { // Go through all other entities let ecs = &server.state.ecs(); diff --git a/voxygen/anim/src/biped_large/alpha.rs b/voxygen/anim/src/biped_large/alpha.rs index 5075d295c0..1390fbadd4 100644 --- a/voxygen/anim/src/biped_large/alpha.rs +++ b/voxygen/anim/src/biped_large/alpha.rs @@ -96,9 +96,9 @@ impl Animation for AlphaAnimation { -4.0 + -s_a.grip / 2.0 + move2 * -5.0, ); next.upper_torso.orientation = - Quaternion::rotation_z(move1base * 0.5 + move2 * -0.7); + Quaternion::rotation_z(move1 * 0.5 + move2 * -0.7); next.lower_torso.orientation = - Quaternion::rotation_z(move1base * -0.5 + move2 * 0.7); + Quaternion::rotation_z(move1 * -0.5 + move2 * 0.7); next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) * Quaternion::rotation_y(-0.2); @@ -108,7 +108,7 @@ impl Animation for AlphaAnimation { * Quaternion::rotation_z(0.0); next.control.orientation = - Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -1.5) + Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -2.0) * Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.0); }, Some(ToolKind::HammerSimple) => { diff --git a/voxygen/anim/src/biped_large/dash.rs b/voxygen/anim/src/biped_large/dash.rs index 324b32af2c..99e609ccfe 100644 --- a/voxygen/anim/src/biped_large/dash.rs +++ b/voxygen/anim/src/biped_large/dash.rs @@ -25,7 +25,7 @@ impl Animation for DashAnimation { #[allow(clippy::single_match)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, + (_active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, diff --git a/voxygen/anim/src/biped_large/shoot.rs b/voxygen/anim/src/biped_large/shoot.rs index f084b6020c..511dcadc2a 100644 --- a/voxygen/anim/src/biped_large/shoot.rs +++ b/voxygen/anim/src/biped_large/shoot.rs @@ -191,7 +191,7 @@ impl Animation for ShootAnimation { ); }, Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { - let (move1base, move2base, move3) = match stage_section { + let (move1base, _move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), diff --git a/voxygen/anim/src/biped_small/dash.rs b/voxygen/anim/src/biped_small/dash.rs index 4056375a28..4f3944ae39 100644 --- a/voxygen/anim/src/biped_small/dash.rs +++ b/voxygen/anim/src/biped_small/dash.rs @@ -63,7 +63,6 @@ impl Animation for DashAnimation { let pullback = 1.0 - move4; let move1abs = move1base * pullback; let move2abs = move2base * pullback; - let move3abs = move2base * pullback; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); next.head.orientation = Quaternion::rotation_x(move1abs * 0.6) diff --git a/voxygen/anim/src/biped_small/idle.rs b/voxygen/anim/src/biped_small/idle.rs index 406fcb26f1..ffaf43d18e 100644 --- a/voxygen/anim/src/biped_small/idle.rs +++ b/voxygen/anim/src/biped_small/idle.rs @@ -26,13 +26,13 @@ impl Animation for IdleAnimation { let mut next = (*skeleton).clone(); let slow = (anim_time as f32 * 4.0).sin(); - next.foot_l.scale = Vec3::one() / 11.0; - next.foot_r.scale = Vec3::one() / 11.0; + next.foot_l.scale = Vec3::one()*s_a.scaler / 11.0; + next.foot_r.scale = Vec3::one()*s_a.scaler / 11.0; - next.chest.scale = Vec3::one() / 11.0; + next.chest.scale = Vec3::one()*s_a.scaler / 11.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slow * -0.1); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3) / 11.0; + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3)*s_a.scaler / 11.0; next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); next.main.position = Vec3::new(2.0, -3.0, -3.0); next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57); @@ -40,8 +40,8 @@ impl Animation for IdleAnimation { next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); - next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2) / 11.0; - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2) / 11.0; + next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2)*s_a.scaler / 11.0; + next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2)*s_a.scaler / 11.0; next } diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index c41d18de86..8eb9e2cf38 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -75,6 +75,7 @@ pub struct SkeletonAttr { hand: (f32, f32, f32), foot: (f32, f32, f32), grip: (f32, f32, f32), + scaler: f32, } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -98,6 +99,7 @@ impl Default for SkeletonAttr { hand: (0.0, 0.0, 0.0), foot: (0.0, 0.0, 0.0), grip: (0.0, 0.0, 0.0), + scaler: 0.0, } } } @@ -190,6 +192,18 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Haniwa, _) => (0.0, 0.5, 8.0), (Myrmidon, _) => (0.0, 0.0, 8.0), }, + scaler: match (body.species, body.body_type) { + (Gnome, _) => 1.0, + (Sahagin, _) => 1.3, + (Adlet, _) => 1.2, + (Gnarling, _) => 1.0, + (Mandragora, _) => 1.0, + (Kappa, _) => 1.0, + (Cactid, _) => 1.0, + (Gnoll, _) => 1.0, + (Haniwa, _) => 1.4, + (Myrmidon, _) => 1.5, + }, } } } diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index 90de0045d3..9d07b06e6b 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -89,9 +89,9 @@ impl Animation for RunAnimation { .sin() * 0.1, ); - next.chest.scale = Vec3::one() / 11.0; - next.foot_l.scale = Vec3::one() / 11.0; - next.foot_r.scale = Vec3::one() / 11.0; + next.chest.scale = Vec3::one()*s_a.scaler / 11.0; + next.foot_l.scale = Vec3::one()*s_a.scaler / 11.0; + next.foot_r.scale = Vec3::one()*s_a.scaler / 11.0; next.head.position = Vec3::new(0.0, -1.0 + s_a.head.0, s_a.head.1 + short * 0.1); next.head.orientation = Quaternion::rotation_z(tilt * -2.5 + head_look.x * 0.2 - short * 0.02) @@ -101,7 +101,7 @@ impl Animation for RunAnimation { 0.0, s_a.chest.0, s_a.chest.1 + 1.0 * speednorm + shortalt * -0.8, - ) / 11.0; + )*s_a.scaler / 11.0; next.chest.orientation = Quaternion::rotation_z(short * 0.06 + tilt * -0.6) * Quaternion::rotation_y(tilt * 1.6) * Quaternion::rotation_x(shortalter * 0.035 + speednorm * -0.4 + (tilt.abs())); @@ -140,7 +140,7 @@ impl Animation for RunAnimation { s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -1.1 * speednorm).max(-1.0))) + side * ((footvertsl * 1.5).max(-1.0)), - ) / 11.0; + )*s_a.scaler / 11.0; next.foot_l.orientation = Quaternion::rotation_x( (1.0 - sideabs) * (-0.2 * speednorm + foothoril * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( @@ -155,7 +155,7 @@ impl Animation for RunAnimation { s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -1.1 * speednorm).max(-1.0))) + side * ((footvertsr * -1.5).max(-1.0)), - ) / 11.0; + )*s_a.scaler / 11.0; next.foot_r.orientation = Quaternion::rotation_x( (1.0 - sideabs) * (-0.2 * speednorm + foothorir * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs index d0dfe3bbe5..c2674da52e 100644 --- a/voxygen/anim/src/biped_small/shoot.rs +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -54,10 +54,7 @@ impl Animation for ShootAnimation { let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; - next.foot_l.scale = Vec3::one() / 11.0; - next.foot_r.scale = Vec3::one() / 11.0; - next.chest.scale = Vec3::one() / 11.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) * Quaternion::rotation_y(fast * 0.07 * speednormcancel); @@ -65,7 +62,7 @@ impl Animation for ShootAnimation { 0.0, s_a.chest.0, s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, - ) / 11.0; + )*s_a.scaler / 11.0; next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs index e932475a3a..f332fbedea 100644 --- a/voxygen/anim/src/biped_small/wield.rs +++ b/voxygen/anim/src/biped_small/wield.rs @@ -44,10 +44,7 @@ impl Animation for WieldAnimation { let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; - next.foot_l.scale = Vec3::one() / 11.0; - next.foot_r.scale = Vec3::one() / 11.0; - next.chest.scale = Vec3::one() / 11.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) * Quaternion::rotation_y(fast * 0.07 * speednormcancel); @@ -55,7 +52,7 @@ impl Animation for WieldAnimation { 0.0, s_a.chest.0, s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, - ) / 11.0; + )*s_a.scaler / 11.0; next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); diff --git a/voxygen/anim/src/theropod/run.rs b/voxygen/anim/src/theropod/run.rs index 30088c0505..c70e1a2511 100644 --- a/voxygen/anim/src/theropod/run.rs +++ b/voxygen/anim/src/theropod/run.rs @@ -16,7 +16,7 @@ impl Animation for RunAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, (velocity, orientation, last_ori, _global_time, avg_vel, acc_vel): Self::Dependency, - anim_time: f64, + _anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index e218e3f700..de93152b66 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2691,6 +2691,37 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::ChargedRanged(s) => { + let stage_time = s.timer.as_secs_f64(); + + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + + _ => 0.0, + }; + anim::biped_small::ShootAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + vel.0, + ori, + state.last_ori, + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, CharacterState::BasicRanged(s) => { let stage_time = s.timer.as_secs_f64(); diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index 580eebd820..331537515d 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -416,10 +416,12 @@ impl Scene { Some(Reagent::Blue) => Rgb::new(0.15, 0.4, 1.0), Some(Reagent::Green) => Rgb::new(0.0, 1.0, 0.0), Some(Reagent::Purple) => Rgb::new(0.7, 0.0, 1.0), - Some(Reagent::Red) => if *is_attack { - Rgb::new(1.0, 0.5, 0.0) - } else { - Rgb::new(1.0, 0.0, 0.0) + Some(Reagent::Red) => { + if *is_attack { + Rgb::new(1.0, 0.5, 0.0) + } else { + Rgb::new(1.0, 0.0, 0.0) + } }, Some(Reagent::Yellow) => Rgb::new(1.0, 1.0, 0.0), None => Rgb::new(1.0, 0.5, 0.0), diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index f1e0217fe6..fc5531fd67 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -619,10 +619,12 @@ impl Floor { ) .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..3) { - 0 => "common.items.npc_weapons.spear.wooden_spear", - 1 => "common.items.npc_weapons.staff.gnoll", - _ => "common.items.npc_weapons.bow.adlet", + match dynamic_rng.gen_range(0..5) { + 0 => "common.items.npc_weapons.biped_small.gnarling.wooden_spear", + 1 => "common.items.npc_weapons.biped_small.gnarling.wooden_spear", + 2 => "common.items.npc_weapons.biped_small.gnarling.wooden_spear", + 3 => "common.items.npc_weapons.biped_small.gnarling.gnoll_staff", + _ => "common.items.npc_weapons.biped_small.gnarling.adlet_bow", }, )), 1 => entity @@ -639,10 +641,12 @@ impl Floor { ) .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..3) { - 0 => "common.items.npc_weapons.spear.wooden_spear", - 1 => "common.items.npc_weapons.staff.gnoll", - _ => "common.items.npc_weapons.bow.adlet", + match dynamic_rng.gen_range(0..5) { + 0 => "common.items.npc_weapons.biped_small.adlet.wooden_spear", + 1 => "common.items.npc_weapons.biped_small.adlet.wooden_spear", + 2 => "common.items.npc_weapons.biped_small.adlet.wooden_spear", + 3 => "common.items.npc_weapons.biped_small.adlet.gnoll_staff", + _ => "common.items.npc_weapons.biped_small.adlet.adlet_bow", }, )), 2 => entity @@ -659,12 +663,14 @@ impl Floor { ) .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..3) { - 0 => "common.items.npc_weapons.spear.wooden_spear", - 1 => "common.items.npc_weapons.staff.gnoll", - _ => "common.items.npc_weapons.bow.adlet", - }, - )), + match dynamic_rng.gen_range(0..5) { + 0 => "common.items.npc_weapons.biped_small.sahagin.wooden_spear", + 1 => "common.items.npc_weapons.biped_small.sahagin.wooden_spear", + 2 => "common.items.npc_weapons.biped_small.sahagin.wooden_spear", + 3 => "common.items.npc_weapons.biped_small.sahagin.gnoll_staff", + _ => "common.items.npc_weapons.biped_small.sahagin.adlet_bow", + }, + )), 3 => entity .with_body(comp::Body::BipedSmall( comp::biped_small::Body::random_with( @@ -679,10 +685,12 @@ impl Floor { ) .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..3) { - 0 => "common.items.npc_weapons.spear.wooden_spear", - 1 => "common.items.npc_weapons.staff.gnoll", - _ => "common.items.npc_weapons.bow.adlet", + match dynamic_rng.gen_range(0..5) { + 0 => "common.items.npc_weapons.biped_small.haniwa.wooden_spear", + 1 => "common.items.npc_weapons.biped_small.haniwa.wooden_spear", + 2 => "common.items.npc_weapons.biped_small.haniwa.wooden_spear", + 3 => "common.items.npc_weapons.biped_small.haniwa.gnoll_staff", + _ => "common.items.npc_weapons.biped_small.haniwa.adlet_bow", }, )), 4 => entity @@ -699,12 +707,14 @@ impl Floor { ) .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..3) { - 0 => "common.items.npc_weapons.spear.wooden_spear", - 1 => "common.items.npc_weapons.staff.gnoll", - _ => "common.items.npc_weapons.bow.adlet", - }, - )), + match dynamic_rng.gen_range(0..5) { + 0 => "common.items.npc_weapons.biped_small.myrmidon.wooden_spear", + 1 => "common.items.npc_weapons.biped_small.myrmidon.wooden_spear", + 2 => "common.items.npc_weapons.biped_small.myrmidon.wooden_spear", + 3 => "common.items.npc_weapons.biped_small.myrmidon.gnoll_staff", + _ => "common.items.npc_weapons.biped_small.myrmidon.adlet_bow", + }, + )), 5 => match dynamic_rng.gen_range(0..6) { 0 => entity .with_body(comp::Body::BipedSmall( From 79ec9115f59e641946d0749a18d54ed9f10baaef Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 20 Feb 2021 16:56:10 -0500 Subject: [PATCH 28/36] rebase, yeti in dungeon --- .../abilities/weapon_ability_manifest.ron | 18 +-- .../items/armor/belt/plate_leather_0.ron | 1 + .../items/armor/chest/plate_leather_0.ron | 1 + .../items/armor/foot/plate_leather_0.ron | 1 + .../items/armor/hand/plate_leather_0.ron | 1 + .../items/armor/pants/plate_leather_0.ron | 1 + .../items/armor/shoulder/plate_leather_0.ron | 1 + .../biped_small/adlet/chest/adlet_bow.ron | 1 + .../biped_small/adlet/chest/adlet_spear.ron | 1 + .../biped_small/adlet/foot/adlet.ron | 1 + .../biped_small/adlet/hand/adlet_bow.ron | 1 + .../biped_small/adlet/hand/adlet_spear.ron | 1 + .../biped_small/adlet/head/adlet_bow.ron | 1 + .../biped_small/adlet/head/adlet_spear.ron | 1 + .../biped_small/adlet/pants/adlet_bow.ron | 1 + .../biped_small/adlet/pants/adlet_spear.ron | 1 + .../biped_small/adlet/tail/adlet.ron | 1 + .../biped_small/gnarling/chest/gnarling.ron | 1 + .../biped_small/gnarling/foot/gnarling.ron | 1 + .../biped_small/gnarling/hand/gnarling.ron | 1 + .../biped_small/gnarling/head/gnarling.ron | 1 + .../biped_small/gnarling/pants/gnarling.ron | 1 + .../biped_small/gnarling/tail/gnarling.ron | 1 + .../biped_small/haniwa/chest/haniwa.ron | 1 + .../biped_small/haniwa/foot/haniwa.ron | 1 + .../biped_small/haniwa/hand/haniwa.ron | 1 + .../biped_small/haniwa/head/haniwa.ron | 1 + .../biped_small/haniwa/pants/haniwa.ron | 1 + .../biped_small/kappa/chest/kappa.ron | 1 + .../biped_small/kappa/foot/kappa.ron | 1 + .../biped_small/kappa/hand/kappa.ron | 1 + .../biped_small/kappa/head/kappa.ron | 1 + .../biped_small/kappa/pants/kappa.ron | 1 + .../biped_small/kappa/tail/kappa.ron | 1 + .../biped_small/myrmidon/chest/myrmidon.ron | 1 + .../biped_small/myrmidon/foot/myrmidon.ron | 1 + .../biped_small/myrmidon/hand/myrmidon.ron | 1 + .../biped_small/myrmidon/head/myrmidon.ron | 1 + .../biped_small/myrmidon/pants/myrmidon.ron | 1 + .../biped_small/myrmidon/tail/myrmidon.ron | 1 + .../biped_small/sahagin/chest/sahagin.ron | 1 + .../biped_small/sahagin/foot/sahagin.ron | 1 + .../biped_small/sahagin/hand/sahagin.ron | 1 + .../biped_small/sahagin/head/sahagin.ron | 1 + .../biped_small/sahagin/pants/sahagin.ron | 1 + .../biped_small/sahagin/tail/sahagin.ron | 1 + .../biped_small/adlet/adlet_bow.ron | 4 +- .../biped_small/adlet/gnoll_staff.ron | 4 +- .../biped_small/adlet/wooden_spear.ron | 4 +- .../biped_small/gnarling/adlet_bow.ron | 4 +- .../biped_small/gnarling/gnoll_staff.ron | 4 +- .../biped_small/gnarling/wooden_spear.ron | 4 +- .../biped_small/haniwa/adlet_bow.ron | 4 +- .../biped_small/haniwa/gnoll_staff.ron | 4 +- .../biped_small/haniwa/wooden_spear.ron | 2 + .../biped_small/myrmidon/adlet_bow.ron | 2 + .../biped_small/myrmidon/gnoll_staff.ron | 2 + .../biped_small/myrmidon/wooden_spear.ron | 4 +- .../biped_small/sahagin/adlet_bow.ron | 2 + .../biped_small/sahagin/gnoll_staff.ron | 4 +- .../biped_small/sahagin/wooden_spear.ron | 4 +- .../items/npc_weapons/hammer/yeti_hammer.ron | 4 +- .../npc_weapons/unique/stone_golems_fist.ron | 2 +- .../items/npc_weapons/unique/tidal_claws.ron | 2 + .../npc_weapons/unique/wendigo_magic.ron | 2 + common/src/states/utils.rs | 6 +- voxygen/anim/src/biped_large/alpha.rs | 6 +- voxygen/anim/src/biped_small/idle.rs | 13 +- voxygen/anim/src/biped_small/run.rs | 15 +- voxygen/anim/src/biped_small/shoot.rs | 4 +- voxygen/anim/src/biped_small/wield.rs | 4 +- voxygen/src/scene/figure/mod.rs | 64 +++++---- world/src/site/dungeon/mod.rs | 133 +++++++++++++----- 73 files changed, 269 insertions(+), 101 deletions(-) diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index 18f045cb85..2da91688d4 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -32,30 +32,30 @@ Spear: ( primary: "common.abilities.spear.doublestrike", secondary: "common.abilities.spear.dash", - skills: [], + abilities: [], ), HammerSimple: ( primary: "common.abilities.hammersimple.doublestrike", secondary: "common.abilities.hammersimple.doublestrike", - skills: [], + abilities: [], ), SwordSimple: ( primary: "common.abilities.swordsimple.doublestrike", secondary: "common.abilities.swordsimple.dash", - skills: [ + abilities: [ ], ), StaffSimple: ( primary: "common.abilities.staffsimple.firebomb", secondary: "common.abilities.staffsimple.firebomb", - skills: [], + abilities: [], ), BowSimple: ( primary: "common.abilities.bowsimple.basic", secondary: "common.abilities.bowsimple.basic", - skills: [ + abilities: [ ], ), Staff: ( @@ -95,12 +95,12 @@ Unique(WendigoMagic): ( primary: "common.abilities.unique.wendigomagic.frostbomb", secondary: "common.abilities.unique.wendigomagic.singlestrike", - skills: [], + abilities: [], ), Unique(TidalClaws): ( primary: "common.abilities.staff.flamethrower", secondary: "common.abilities.unique.wendigomagic.singlestrike", - skills: [], + abilities: [], ), Unique(QuadMedQuick): ( primary: "common.abilities.unique.quadmedquick.triplestrike", @@ -159,8 +159,8 @@ Unique(QuadLowBeam): ( primary: "common.abilities.unique.quadlowbeam.healingbeam", secondary: "common.abilities.unique.quadlowbreathe.triplestrike", - skills: [ - "common.abilities.unique.quadlowbreathe.dash", + abilities: [ + (None, "common.abilities.unique.quadlowbreathe.dash"), ], ), Unique(QuadSmallBasic): ( diff --git a/assets/common/items/armor/belt/plate_leather_0.ron b/assets/common/items/armor/belt/plate_leather_0.ron index f4cd29068b..0478cd0930 100644 --- a/assets/common/items/armor/belt/plate_leather_0.ron +++ b/assets/common/items/armor/belt/plate_leather_0.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Moderate, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/armor/chest/plate_leather_0.ron b/assets/common/items/armor/chest/plate_leather_0.ron index 95319d2496..418bb7a532 100644 --- a/assets/common/items/armor/chest/plate_leather_0.ron +++ b/assets/common/items/armor/chest/plate_leather_0.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: High, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/armor/foot/plate_leather_0.ron b/assets/common/items/armor/foot/plate_leather_0.ron index 8cc46f984f..79df40ad5d 100644 --- a/assets/common/items/armor/foot/plate_leather_0.ron +++ b/assets/common/items/armor/foot/plate_leather_0.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: High, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/armor/hand/plate_leather_0.ron b/assets/common/items/armor/hand/plate_leather_0.ron index 175ea986bc..dac425fb98 100644 --- a/assets/common/items/armor/hand/plate_leather_0.ron +++ b/assets/common/items/armor/hand/plate_leather_0.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Moderate, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/armor/pants/plate_leather_0.ron b/assets/common/items/armor/pants/plate_leather_0.ron index b18198aee1..0ba0823495 100644 --- a/assets/common/items/armor/pants/plate_leather_0.ron +++ b/assets/common/items/armor/pants/plate_leather_0.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Moderate, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/plate_leather_0.ron b/assets/common/items/armor/shoulder/plate_leather_0.ron index 0a52263a84..f01b48eb91 100644 --- a/assets/common/items/armor/shoulder/plate_leather_0.ron +++ b/assets/common/items/armor/shoulder/plate_leather_0.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Moderate, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron index e3b8e7a95d..8f9d7b1e3c 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron index 56e7a7e85e..32e9cf138e 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron b/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron index 9a5802809e..238195dfd2 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron index f03b1cb760..f4dea6f36b 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron index 556fc13b73..6176a32a5e 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron index 29c5683ce7..a3e444510e 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron index ac4cb139a6..88e0597aee 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron index 1a419f3d0c..1f1db8648e 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron index c011d0e957..89caf74ba7 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron b/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron index 849bf4faf4..514356d9a1 100644 --- a/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron +++ b/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/chest/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/chest/gnarling.ron index 425108bbdd..33e0a3f95d 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/chest/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/chest/gnarling.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron index 63c4c6f8f7..e8e8930a9f 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron index 7e59130587..517bf843d2 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron index 2daa5e9d1b..f92c5ae5c7 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron index 1a66f05153..8faadbde6c 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron index 79040d6bbe..e35e45d7f2 100644 --- a/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron +++ b/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron index c8f2a7165c..26ad008754 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron index e67d0bdb45..fe1f7aa7a5 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron index ffb03d3743..8d201e984f 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron index 136ad4afab..f5fb003079 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron index 067ba07def..8fc066005e 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/chest/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/chest/kappa.ron index bce32a19f0..b0f700ea5b 100644 --- a/assets/common/items/npc_armor/biped_small/kappa/chest/kappa.ron +++ b/assets/common/items/npc_armor/biped_small/kappa/chest/kappa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/foot/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/foot/kappa.ron index cf364f12eb..45f99913ce 100644 --- a/assets/common/items/npc_armor/biped_small/kappa/foot/kappa.ron +++ b/assets/common/items/npc_armor/biped_small/kappa/foot/kappa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/hand/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/hand/kappa.ron index d0c56560d4..bf3f6a9cb1 100644 --- a/assets/common/items/npc_armor/biped_small/kappa/hand/kappa.ron +++ b/assets/common/items/npc_armor/biped_small/kappa/hand/kappa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron index 0ff22d8e1e..ad80961c42 100644 --- a/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron +++ b/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/pants/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/pants/kappa.ron index 9a9ffc2846..8dd3fe9087 100644 --- a/assets/common/items/npc_armor/biped_small/kappa/pants/kappa.ron +++ b/assets/common/items/npc_armor/biped_small/kappa/pants/kappa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron index 2a65ad930b..a05d85356d 100644 --- a/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron +++ b/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron index 51e9883c24..06ec1ec5ef 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron index caefbff033..4c78a77279 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron index 765aabbb20..87506fe835 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron index d112267ad6..de64307376 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron index d778f0121e..e6e5eaacb8 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron index 9618d9dd07..9662f9291d 100644 --- a/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron +++ b/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron index 460472b0f4..7792d4a6b4 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron index 4edca658a2..3583b1055b 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron index 111faf586e..b2ee494ea7 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron index 67a335b99b..e6c8e5b94a 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron index c94a17e0a3..a63f3b0b7e 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron index 84b87a58c5..3ea6c9515f 100644 --- a/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron +++ b/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron @@ -9,4 +9,5 @@ ItemDef( ), )), quality: Low, + tags: [], ) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron index 3e81e78618..a57eea2f77 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron @@ -3,7 +3,8 @@ ItemDef( description: "Strips of leather are wrapped around the handle.", kind: Tool( ( - kind: Bow, + kind: Bow, + hands: Two, stats: ( equip_time_millis: 0, power: 0.7, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Moderate, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron index cd90339733..508bc02a5f 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron @@ -3,7 +3,8 @@ ItemDef( description: "eekum bokum", kind: Tool( ( - kind: Staff, + kind: Staff, + hands: Two, stats: ( equip_time_millis: 0, power: 0.7, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron index da8f9e12e4..30304e3046 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron @@ -3,7 +3,8 @@ ItemDef( description: "Testing", kind: Tool( ( - kind: Spear, + kind: Spear, + hands: Two, stats: ( equip_time_millis: 0, power: 0.7, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron index 6000750ab9..4bb10ee6d3 100644 --- a/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron @@ -3,7 +3,8 @@ ItemDef( description: "Strips of leather are wrapped around the handle.", kind: Tool( ( - kind: Bow, + kind: Bow, + hands: Two, stats: ( equip_time_millis: 0, power: 0.3, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Moderate, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron index ad20b40855..eecaa95204 100644 --- a/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron @@ -3,7 +3,8 @@ ItemDef( description: "eekum bokum", kind: Tool( ( - kind: Staff, + kind: Staff, + hands: Two, stats: ( equip_time_millis: 0, power: 0.3, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron index 7a6fd69b20..0182898eaa 100644 --- a/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron @@ -3,7 +3,8 @@ ItemDef( description: "Testing", kind: Tool( ( - kind: Spear, + kind: Spear, + hands: Two, stats: ( equip_time_millis: 0, power: 0.3, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron index 79e6327887..c03cb13276 100644 --- a/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron @@ -3,7 +3,8 @@ ItemDef( description: "Strips of leather are wrapped around the handle.", kind: Tool( ( - kind: Bow, + kind: Bow, + hands: Two, stats: ( equip_time_millis: 0, power: 1.4, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Moderate, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron index e6218218c6..1bd2aaace0 100644 --- a/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron @@ -3,7 +3,8 @@ ItemDef( description: "eekum bokum", kind: Tool( ( - kind: Staff, + kind: Staff, + hands: Two, stats: ( equip_time_millis: 0, power: 1.4, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron index e3e0cca54a..c794a37d0c 100644 --- a/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron @@ -4,6 +4,7 @@ ItemDef( kind: Tool( ( kind: Spear, + hands: Two, stats: ( equip_time_millis: 0, power: 1.4, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron index 5fe4c41ce2..15739db4f0 100644 --- a/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron @@ -4,6 +4,7 @@ ItemDef( kind: Tool( ( kind: Bow, + hands: Two, stats: ( equip_time_millis: 0, power: 1.1, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Moderate, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron index b05aff2e41..cf7cc36be2 100644 --- a/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron @@ -4,6 +4,7 @@ ItemDef( kind: Tool( ( kind: Staff, + hands: Two, stats: ( equip_time_millis: 0, power: 1.7, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron index f0f4611f15..c7e97fe844 100644 --- a/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron @@ -3,7 +3,8 @@ ItemDef( description: "Testing", kind: Tool( ( - kind: Spear, + kind: Spear, + hands: Two, stats: ( equip_time_millis: 0, power: 1.7, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron index 6000750ab9..1064b2360d 100644 --- a/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron @@ -4,6 +4,7 @@ ItemDef( kind: Tool( ( kind: Bow, + hands: Two, stats: ( equip_time_millis: 0, power: 0.3, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Moderate, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron index 0873dcba91..8b4dd83c70 100644 --- a/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron @@ -3,7 +3,8 @@ ItemDef( description: "eekum bokum", kind: Tool( ( - kind: Staff, + kind: Staff, + hands: Two, stats: ( equip_time_millis: 0, power: 1.1, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron index 04765d6dc5..f1e5c4444b 100644 --- a/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron @@ -3,7 +3,8 @@ ItemDef( description: "Testing", kind: Tool( ( - kind: Spear, + kind: Spear, + hands: Two, stats: ( equip_time_millis: 0, power: 1.1, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/hammer/yeti_hammer.ron b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron index b1a1ed7459..4966529aeb 100644 --- a/assets/common/items/npc_weapons/hammer/yeti_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron @@ -3,7 +3,8 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: HammerSimple, + kind: HammerSimple, + hands: Two, stats: ( equip_time_millis: 500, power: 1.00, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/unique/stone_golems_fist.ron b/assets/common/items/npc_weapons/unique/stone_golems_fist.ron index 6b75281246..1f811801a9 100644 --- a/assets/common/items/npc_weapons/unique/stone_golems_fist.ron +++ b/assets/common/items/npc_weapons/unique/stone_golems_fist.ron @@ -6,7 +6,7 @@ ItemDef( kind: Unique(StoneGolemFist), hands: Two, stats: Direct(( - equip_time_millis: 500, + equip_time_millis: 1, power: 1.00, poise_strength: 1.00, speed: 1.0 diff --git a/assets/common/items/npc_weapons/unique/tidal_claws.ron b/assets/common/items/npc_weapons/unique/tidal_claws.ron index 3fff46aa26..9dc06103ad 100644 --- a/assets/common/items/npc_weapons/unique/tidal_claws.ron +++ b/assets/common/items/npc_weapons/unique/tidal_claws.ron @@ -4,6 +4,7 @@ ItemDef( kind: Tool( ( kind: Unique(TidalClaws), + hands: Two, stats: ( equip_time_millis: 500, power: 1.00, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/assets/common/items/npc_weapons/unique/wendigo_magic.ron b/assets/common/items/npc_weapons/unique/wendigo_magic.ron index c60905f9b1..4778a42655 100644 --- a/assets/common/items/npc_weapons/unique/wendigo_magic.ron +++ b/assets/common/items/npc_weapons/unique/wendigo_magic.ron @@ -4,6 +4,7 @@ ItemDef( kind: Tool( ( kind: Unique(WendigoMagic), + hands: Two, stats: ( equip_time_millis: 500, power: 1.00, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index aa05614175..046a54042b 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -1,8 +1,9 @@ use crate::{ comp::{ + biped_large, biped_small, inventory::slot::EquipSlot, item::{Hands, ItemKind, Tool, ToolKind}, -biped_large, biped_small, quadruped_low, quadruped_medium, + quadruped_low, quadruped_medium, skills::Skill, theropod, Body, CharacterAbility, CharacterState, LoadoutManip, StateUpdate, }, @@ -74,7 +75,8 @@ impl Body { biped_large::Species::Mindflayer => 90.0, biped_large::Species::Minotaur => 90.0, _ => 80.0, - }, Body::BirdMedium(_) => 80.0, + }, + Body::BirdMedium(_) => 80.0, Body::FishMedium(_) => 80.0, Body::Dragon(_) => 250.0, Body::BirdSmall(_) => 75.0, diff --git a/voxygen/anim/src/biped_large/alpha.rs b/voxygen/anim/src/biped_large/alpha.rs index 1390fbadd4..9a9a368fc6 100644 --- a/voxygen/anim/src/biped_large/alpha.rs +++ b/voxygen/anim/src/biped_large/alpha.rs @@ -95,10 +95,8 @@ impl Animation for AlphaAnimation { 5.0 + s_a.grip / 1.2 + move1 * -4.0 + move2 * 8.0, -4.0 + -s_a.grip / 2.0 + move2 * -5.0, ); - next.upper_torso.orientation = - Quaternion::rotation_z(move1 * 0.5 + move2 * -0.7); - next.lower_torso.orientation = - Quaternion::rotation_z(move1 * -0.5 + move2 * 0.7); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 0.5 + move2 * -0.7); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -0.5 + move2 * 0.7); next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) * Quaternion::rotation_y(-0.2); diff --git a/voxygen/anim/src/biped_small/idle.rs b/voxygen/anim/src/biped_small/idle.rs index ffaf43d18e..740114c55c 100644 --- a/voxygen/anim/src/biped_small/idle.rs +++ b/voxygen/anim/src/biped_small/idle.rs @@ -26,13 +26,14 @@ impl Animation for IdleAnimation { let mut next = (*skeleton).clone(); let slow = (anim_time as f32 * 4.0).sin(); - next.foot_l.scale = Vec3::one()*s_a.scaler / 11.0; - next.foot_r.scale = Vec3::one()*s_a.scaler / 11.0; + next.foot_l.scale = Vec3::one() * s_a.scaler / 11.0; + next.foot_r.scale = Vec3::one() * s_a.scaler / 11.0; - next.chest.scale = Vec3::one()*s_a.scaler / 11.0; + next.chest.scale = Vec3::one() * s_a.scaler / 11.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slow * -0.1); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3)*s_a.scaler / 11.0; + next.chest.position = + Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3) * s_a.scaler / 11.0; next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); next.main.position = Vec3::new(2.0, -3.0, -3.0); next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57); @@ -40,8 +41,8 @@ impl Animation for IdleAnimation { next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); - next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2)*s_a.scaler / 11.0; - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2)*s_a.scaler / 11.0; + next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2) * s_a.scaler / 11.0; + next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2) * s_a.scaler / 11.0; next } diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index 9d07b06e6b..e35ccc52fe 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -89,9 +89,9 @@ impl Animation for RunAnimation { .sin() * 0.1, ); - next.chest.scale = Vec3::one()*s_a.scaler / 11.0; - next.foot_l.scale = Vec3::one()*s_a.scaler / 11.0; - next.foot_r.scale = Vec3::one()*s_a.scaler / 11.0; + next.chest.scale = Vec3::one() * s_a.scaler / 11.0; + next.foot_l.scale = Vec3::one() * s_a.scaler / 11.0; + next.foot_r.scale = Vec3::one() * s_a.scaler / 11.0; next.head.position = Vec3::new(0.0, -1.0 + s_a.head.0, s_a.head.1 + short * 0.1); next.head.orientation = Quaternion::rotation_z(tilt * -2.5 + head_look.x * 0.2 - short * 0.02) @@ -101,7 +101,8 @@ impl Animation for RunAnimation { 0.0, s_a.chest.0, s_a.chest.1 + 1.0 * speednorm + shortalt * -0.8, - )*s_a.scaler / 11.0; + ) * s_a.scaler + / 11.0; next.chest.orientation = Quaternion::rotation_z(short * 0.06 + tilt * -0.6) * Quaternion::rotation_y(tilt * 1.6) * Quaternion::rotation_x(shortalter * 0.035 + speednorm * -0.4 + (tilt.abs())); @@ -140,7 +141,8 @@ impl Animation for RunAnimation { s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -1.1 * speednorm).max(-1.0))) + side * ((footvertsl * 1.5).max(-1.0)), - )*s_a.scaler / 11.0; + ) * s_a.scaler + / 11.0; next.foot_l.orientation = Quaternion::rotation_x( (1.0 - sideabs) * (-0.2 * speednorm + foothoril * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( @@ -155,7 +157,8 @@ impl Animation for RunAnimation { s_a.foot.2 + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -1.1 * speednorm).max(-1.0))) + side * ((footvertsr * -1.5).max(-1.0)), - )*s_a.scaler / 11.0; + ) * s_a.scaler + / 11.0; next.foot_r.orientation = Quaternion::rotation_x( (1.0 - sideabs) * (-0.2 * speednorm + foothorir * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs index c2674da52e..cae4e56b07 100644 --- a/voxygen/anim/src/biped_small/shoot.rs +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -54,7 +54,6 @@ impl Animation for ShootAnimation { let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) * Quaternion::rotation_y(fast * 0.07 * speednormcancel); @@ -62,7 +61,8 @@ impl Animation for ShootAnimation { 0.0, s_a.chest.0, s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, - )*s_a.scaler / 11.0; + ) * s_a.scaler + / 11.0; next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs index f332fbedea..28a02adb50 100644 --- a/voxygen/anim/src/biped_small/wield.rs +++ b/voxygen/anim/src/biped_small/wield.rs @@ -44,7 +44,6 @@ impl Animation for WieldAnimation { let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) * Quaternion::rotation_y(fast * 0.07 * speednormcancel); @@ -52,7 +51,8 @@ impl Animation for WieldAnimation { 0.0, s_a.chest.0, s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, - )*s_a.scaler / 11.0; + ) * s_a.scaler + / 11.0; next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index de93152b66..fcdbd9fdb8 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1516,7 +1516,6 @@ impl FigureMgr { time, state.avg_vel, state.acc_vel, - ), state.state_time, &mut state_animation_rate, @@ -1534,7 +1533,6 @@ impl FigureMgr { time, state.avg_vel, state.acc_vel, - ), state.state_time, &mut state_animation_rate, @@ -2050,7 +2048,6 @@ impl FigureMgr { time, state.avg_vel, state.acc_vel, - ), state.state_time, &mut state_animation_rate, @@ -2067,7 +2064,6 @@ impl FigureMgr { time, state.avg_vel, state.acc_vel, - ), state.state_time, &mut state_animation_rate, @@ -2580,7 +2576,13 @@ impl FigureMgr { // Idle (true, false, false) => anim::biped_small::IdleAnimation::update_skeleton( &BipedSmallSkeleton::default(), - (vel.0, ori, state.last_ori, time, state.avg_vel), + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, @@ -2590,8 +2592,8 @@ impl FigureMgr { &BipedSmallSkeleton::default(), ( vel.0, - ori, - state.last_ori, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, state.acc_vel, @@ -2605,8 +2607,8 @@ impl FigureMgr { &BipedSmallSkeleton::default(), ( vel.0, - ori, - state.last_ori, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, state.acc_vel, @@ -2620,8 +2622,8 @@ impl FigureMgr { &BipedSmallSkeleton::default(), ( vel.0, - ori, - state.last_ori, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, state.acc_vel, @@ -2632,7 +2634,13 @@ impl FigureMgr { ), _ => anim::biped_small::IdleAnimation::update_skeleton( &BipedSmallSkeleton::default(), - (vel.0, ori, state.last_ori, time, state.avg_vel), + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, @@ -2646,8 +2654,8 @@ impl FigureMgr { ( active_tool_kind, vel.0, - ori, - state.last_ori, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, state.acc_vel, @@ -2678,8 +2686,8 @@ impl FigureMgr { &target_base, ( vel.0, - ori, - state.last_ori, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, state.acc_vel, @@ -2709,8 +2717,8 @@ impl FigureMgr { ( active_tool_kind, vel.0, - ori, - state.last_ori, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, state.acc_vel, @@ -2740,8 +2748,8 @@ impl FigureMgr { ( active_tool_kind, vel.0, - ori, - state.last_ori, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, state.acc_vel, @@ -2782,8 +2790,8 @@ impl FigureMgr { &target_base, ( vel.0, - ori, - state.last_ori, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, state.acc_vel, @@ -2798,8 +2806,8 @@ impl FigureMgr { &target_base, ( vel.0, - ori, - state.last_ori, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, state.acc_vel, @@ -3732,7 +3740,13 @@ impl FigureMgr { // In air (false, _, false) => anim::golem::RunAnimation::update_skeleton( &GolemSkeleton::default(), - (vel.0, ori, state.last_ori, time, state.acc_vel), + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index fc5531fd67..ad2cbe9964 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -620,11 +620,26 @@ impl Floor { .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..5) { - 0 => "common.items.npc_weapons.biped_small.gnarling.wooden_spear", - 1 => "common.items.npc_weapons.biped_small.gnarling.wooden_spear", - 2 => "common.items.npc_weapons.biped_small.gnarling.wooden_spear", - 3 => "common.items.npc_weapons.biped_small.gnarling.gnoll_staff", - _ => "common.items.npc_weapons.biped_small.gnarling.adlet_bow", + 0 => { + "common.items.npc_weapons.biped_small.gnarling.\ + wooden_spear" + }, + 1 => { + "common.items.npc_weapons.biped_small.gnarling.\ + wooden_spear" + }, + 2 => { + "common.items.npc_weapons.biped_small.gnarling.\ + wooden_spear" + }, + 3 => { + "common.items.npc_weapons.biped_small.gnarling.\ + gnoll_staff" + }, + _ => { + "common.items.npc_weapons.biped_small.gnarling.\ + adlet_bow" + }, }, )), 1 => entity @@ -642,10 +657,21 @@ impl Floor { .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..5) { - 0 => "common.items.npc_weapons.biped_small.adlet.wooden_spear", - 1 => "common.items.npc_weapons.biped_small.adlet.wooden_spear", - 2 => "common.items.npc_weapons.biped_small.adlet.wooden_spear", - 3 => "common.items.npc_weapons.biped_small.adlet.gnoll_staff", + 0 => { + "common.items.npc_weapons.biped_small.adlet.\ + wooden_spear" + }, + 1 => { + "common.items.npc_weapons.biped_small.adlet.\ + wooden_spear" + }, + 2 => { + "common.items.npc_weapons.biped_small.adlet.\ + wooden_spear" + }, + 3 => { + "common.items.npc_weapons.biped_small.adlet.gnoll_staff" + }, _ => "common.items.npc_weapons.biped_small.adlet.adlet_bow", }, )), @@ -663,14 +689,28 @@ impl Floor { ) .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..5) { - 0 => "common.items.npc_weapons.biped_small.sahagin.wooden_spear", - 1 => "common.items.npc_weapons.biped_small.sahagin.wooden_spear", - 2 => "common.items.npc_weapons.biped_small.sahagin.wooden_spear", - 3 => "common.items.npc_weapons.biped_small.sahagin.gnoll_staff", - _ => "common.items.npc_weapons.biped_small.sahagin.adlet_bow", + match dynamic_rng.gen_range(0..5) { + 0 => { + "common.items.npc_weapons.biped_small.sahagin.\ + wooden_spear" }, - )), + 1 => { + "common.items.npc_weapons.biped_small.sahagin.\ + wooden_spear" + }, + 2 => { + "common.items.npc_weapons.biped_small.sahagin.\ + wooden_spear" + }, + 3 => { + "common.items.npc_weapons.biped_small.sahagin.\ + gnoll_staff" + }, + _ => { + "common.items.npc_weapons.biped_small.sahagin.adlet_bow" + }, + }, + )), 3 => entity .with_body(comp::Body::BipedSmall( comp::biped_small::Body::random_with( @@ -686,11 +726,25 @@ impl Floor { .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..5) { - 0 => "common.items.npc_weapons.biped_small.haniwa.wooden_spear", - 1 => "common.items.npc_weapons.biped_small.haniwa.wooden_spear", - 2 => "common.items.npc_weapons.biped_small.haniwa.wooden_spear", - 3 => "common.items.npc_weapons.biped_small.haniwa.gnoll_staff", - _ => "common.items.npc_weapons.biped_small.haniwa.adlet_bow", + 0 => { + "common.items.npc_weapons.biped_small.haniwa.\ + wooden_spear" + }, + 1 => { + "common.items.npc_weapons.biped_small.haniwa.\ + wooden_spear" + }, + 2 => { + "common.items.npc_weapons.biped_small.haniwa.\ + wooden_spear" + }, + 3 => { + "common.items.npc_weapons.biped_small.haniwa.\ + gnoll_staff" + }, + _ => { + "common.items.npc_weapons.biped_small.haniwa.adlet_bow" + }, }, )), 4 => entity @@ -707,14 +761,29 @@ impl Floor { ) .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..5) { - 0 => "common.items.npc_weapons.biped_small.myrmidon.wooden_spear", - 1 => "common.items.npc_weapons.biped_small.myrmidon.wooden_spear", - 2 => "common.items.npc_weapons.biped_small.myrmidon.wooden_spear", - 3 => "common.items.npc_weapons.biped_small.myrmidon.gnoll_staff", - _ => "common.items.npc_weapons.biped_small.myrmidon.adlet_bow", + match dynamic_rng.gen_range(0..5) { + 0 => { + "common.items.npc_weapons.biped_small.myrmidon.\ + wooden_spear" }, - )), + 1 => { + "common.items.npc_weapons.biped_small.myrmidon.\ + wooden_spear" + }, + 2 => { + "common.items.npc_weapons.biped_small.myrmidon.\ + wooden_spear" + }, + 3 => { + "common.items.npc_weapons.biped_small.myrmidon.\ + gnoll_staff" + }, + _ => { + "common.items.npc_weapons.biped_small.myrmidon.\ + adlet_bow" + }, + }, + )), 5 => match dynamic_rng.gen_range(0..6) { 0 => entity .with_body(comp::Body::BipedSmall( @@ -838,13 +907,13 @@ impl Floor { ], 1 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Theropod( - comp::theropod::Body::random_with( + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( dynamic_rng, - &comp::theropod::Species::Odonto, + &comp::biped_large::Species::Yeti, ), )) - .with_name("Odonto".to_string()) + .with_name("Yeti".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 2 => vec![ From 417f4638ed9d98ee2efa1f096f0a6c77c7455a9e Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 21 Feb 2021 00:39:35 -0500 Subject: [PATCH 29/36] balance pass 2 --- assets/common/abilities/axe/doublestrike.ron | 6 +++--- assets/common/abilities/hammer/singlestrike.ron | 4 ++-- .../common/abilities/staffsimple/flamethrower.ron | 14 ++++++++++++++ assets/common/abilities/sword/triplestrike.ron | 4 ++-- .../common/abilities/weapon_ability_manifest.ron | 2 +- .../npc_armor/biped_small/haniwa/chest/haniwa.ron | 2 +- .../npc_armor/biped_small/haniwa/foot/haniwa.ron | 2 +- .../npc_armor/biped_small/haniwa/hand/haniwa.ron | 2 +- .../npc_armor/biped_small/haniwa/head/haniwa.ron | 2 +- .../npc_armor/biped_small/haniwa/pants/haniwa.ron | 2 +- .../npc_weapons/biped_small/adlet/adlet_bow.ron | 2 +- .../npc_weapons/biped_small/adlet/gnoll_staff.ron | 4 ++-- .../npc_weapons/biped_small/gnarling/adlet_bow.ron | 2 +- .../biped_small/gnarling/gnoll_staff.ron | 4 ++-- .../npc_weapons/biped_small/haniwa/adlet_bow.ron | 4 ++-- .../npc_weapons/biped_small/haniwa/gnoll_staff.ron | 6 +++--- .../biped_small/myrmidon/gnoll_staff.ron | 4 ++-- .../npc_weapons/biped_small/sahagin/adlet_bow.ron | 4 ++-- .../biped_small/sahagin/gnoll_staff.ron | 4 ++-- .../items/npc_weapons/hammer/yeti_hammer.ron | 4 ++-- .../items/npc_weapons/unique/quadlowbeam.ron | 2 ++ common/src/comp/body.rs | 4 ++-- common/src/event.rs | 2 +- server/src/events/entity_manipulation.rs | 1 + server/src/sys/agent.rs | 3 +++ voxygen/anim/src/biped_small/alpha.rs | 2 +- voxygen/anim/src/biped_small/shoot.rs | 2 +- voxygen/anim/src/character/mod.rs | 2 +- voxygen/src/scene/figure/load.rs | 2 +- world/src/site/dungeon/mod.rs | 3 --- 30 files changed, 59 insertions(+), 42 deletions(-) create mode 100644 assets/common/abilities/staffsimple/flamethrower.ron diff --git a/assets/common/abilities/axe/doublestrike.ron b/assets/common/abilities/axe/doublestrike.ron index f1668fe86c..09f55a7eb4 100644 --- a/assets/common/abilities/axe/doublestrike.ron +++ b/assets/common/abilities/axe/doublestrike.ron @@ -9,9 +9,9 @@ ComboMelee( knockback: 8.0, range: 3.5, angle: 50.0, - base_buildup_duration: 0.3, + base_buildup_duration: 0.2, base_swing_duration: 0.075, - base_recover_duration: 0.3, + base_recover_duration: 0.15, forward_movement: 0.5, ), ( @@ -23,7 +23,7 @@ ComboMelee( knockback: 12.0, range: 3.5, angle: 30.0, - base_buildup_duration: 0.4, + base_buildup_duration: 0.25, base_swing_duration: 0.1, base_recover_duration: 0.4, forward_movement: 0.25, diff --git a/assets/common/abilities/hammer/singlestrike.ron b/assets/common/abilities/hammer/singlestrike.ron index 3d6d64cda5..6462b08599 100644 --- a/assets/common/abilities/hammer/singlestrike.ron +++ b/assets/common/abilities/hammer/singlestrike.ron @@ -1,14 +1,14 @@ ComboMelee( stage_data: [( stage: 1, - base_damage: 130, + base_damage: 150, damage_increase: 10, base_poise_damage: 0, poise_damage_increase: 0, knockback: 10.0, range: 4.5, angle: 50.0, - base_buildup_duration: 0.4, + base_buildup_duration: 0.3, base_swing_duration: 0.1, base_recover_duration: 0.2, forward_movement: 0.0, diff --git a/assets/common/abilities/staffsimple/flamethrower.ron b/assets/common/abilities/staffsimple/flamethrower.ron new file mode 100644 index 0000000000..99ac486041 --- /dev/null +++ b/assets/common/abilities/staffsimple/flamethrower.ron @@ -0,0 +1,14 @@ +BasicBeam( + buildup_duration: 0.25, + recover_duration: 0.25, + beam_duration: 1.0, + base_hps: 0, + base_dps: 150, + tick_rate: 3.0, + range: 20.0, + max_angle: 0.1, + lifesteal_eff: 0.0, + energy_regen: 0, + energy_cost: 1, + energy_drain: 350, +) diff --git a/assets/common/abilities/sword/triplestrike.ron b/assets/common/abilities/sword/triplestrike.ron index 4482f80182..ba9a689c71 100644 --- a/assets/common/abilities/sword/triplestrike.ron +++ b/assets/common/abilities/sword/triplestrike.ron @@ -11,7 +11,7 @@ ComboMelee( angle: 30.0, base_buildup_duration: 0.2, base_swing_duration: 0.075, - base_recover_duration: 0.2, + base_recover_duration: 0.1, forward_movement: 0.5, ), ( @@ -23,7 +23,7 @@ ComboMelee( knockback: 12.0, range: 3.5, angle: 40.0, - base_buildup_duration: 0.15, + base_buildup_duration: 0.1, base_swing_duration: 0.1, base_recover_duration: 0.3, forward_movement: 0.0, diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index 2da91688d4..db9f089447 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -49,7 +49,7 @@ ), StaffSimple: ( primary: "common.abilities.staffsimple.firebomb", - secondary: "common.abilities.staffsimple.firebomb", + secondary: "common.abilities.staffsimple.flamethrower", abilities: [], ), BowSimple: ( diff --git a/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron index 26ad008754..f1c8cae036 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Chest("Haniwa"), stats: ( - protection: Normal(28.0), + protection: Normal(23.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron index fe1f7aa7a5..9184b2f94a 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Foot("Haniwa"), stats: ( - protection: Normal(20.0), + protection: Normal(17.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron index 8d201e984f..f4a9dba2fd 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Hand("Haniwa"), stats: ( - protection: Normal(20.0), + protection: Normal(17.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron index f5fb003079..482d9566b2 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Head("Haniwa"), stats: ( - protection: Normal(20.0), + protection: Normal(17.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron index 8fc066005e..0cd5e96f71 100644 --- a/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron +++ b/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Pants("Haniwa"), stats: ( - protection: Normal(20.0), + protection: Normal(17.0), poise_resilience: Normal(1.0), ), )), diff --git a/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron index a57eea2f77..e0e5f9ee14 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron @@ -9,7 +9,7 @@ ItemDef( equip_time_millis: 0, power: 0.7, poise_strength: 0.8, - speed: 0.5 + speed: 0.3 ), ) ), diff --git a/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron index 508bc02a5f..44661cb2f6 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron @@ -3,13 +3,13 @@ ItemDef( description: "eekum bokum", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: ( equip_time_millis: 0, power: 0.7, poise_strength: 0.8, - speed: 1.0 + speed: 0.5 ), ) ), diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron index 4bb10ee6d3..03bc224c53 100644 --- a/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron @@ -9,7 +9,7 @@ ItemDef( equip_time_millis: 0, power: 0.3, poise_strength: 0.8, - speed: 0.5 + speed: 0.7 ), ) ), diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron index eecaa95204..6c8dbbecf7 100644 --- a/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron @@ -3,13 +3,13 @@ ItemDef( description: "eekum bokum", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: ( equip_time_millis: 0, power: 0.3, poise_strength: 0.8, - speed: 1.0 + speed: 0.8 ), ) ), diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron index c03cb13276..6bb840c1f6 100644 --- a/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron @@ -7,9 +7,9 @@ ItemDef( hands: Two, stats: ( equip_time_millis: 0, - power: 1.4, + power: 1.6, poise_strength: 0.8, - speed: 0.5 + speed: 0.3 ), ) ), diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron index 1bd2aaace0..c1682cff49 100644 --- a/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron @@ -3,13 +3,13 @@ ItemDef( description: "eekum bokum", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: ( equip_time_millis: 0, - power: 1.4, + power: 1.8, poise_strength: 0.8, - speed: 1.0 + speed: 0.6 ), ) ), diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron index cf7cc36be2..c0f890b546 100644 --- a/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron @@ -3,13 +3,13 @@ ItemDef( description: "eekum bokum", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: ( equip_time_millis: 0, power: 1.7, poise_strength: 0.8, - speed: 1.0 + speed: 0.7 ), ) ), diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron index 1064b2360d..7312c4e987 100644 --- a/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron @@ -7,9 +7,9 @@ ItemDef( hands: Two, stats: ( equip_time_millis: 0, - power: 0.3, + power: 1.1, poise_strength: 0.8, - speed: 0.5 + speed: 0.3 ), ) ), diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron index 8b4dd83c70..412f505250 100644 --- a/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron @@ -3,13 +3,13 @@ ItemDef( description: "eekum bokum", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: ( equip_time_millis: 0, power: 1.1, poise_strength: 0.8, - speed: 1.0 + speed: 0.8 ), ) ), diff --git a/assets/common/items/npc_weapons/hammer/yeti_hammer.ron b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron index 4966529aeb..ce90851af9 100644 --- a/assets/common/items/npc_weapons/hammer/yeti_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron @@ -6,8 +6,8 @@ ItemDef( kind: HammerSimple, hands: Two, stats: ( - equip_time_millis: 500, - power: 1.00, + equip_time_millis: 0, + power: 2.0, poise_strength: 1.00, speed: 1.0 ), diff --git a/assets/common/items/npc_weapons/unique/quadlowbeam.ron b/assets/common/items/npc_weapons/unique/quadlowbeam.ron index cd8b3bfcc3..c46bb03d52 100644 --- a/assets/common/items/npc_weapons/unique/quadlowbeam.ron +++ b/assets/common/items/npc_weapons/unique/quadlowbeam.ron @@ -4,6 +4,7 @@ ItemDef( kind: Tool( ( kind: Unique(QuadLowBeam), + hands: Two, stats: ( equip_time_millis: 10, power: 1.00, @@ -13,4 +14,5 @@ ItemDef( ) ), quality: Low, + tags: [], ) diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 368632c34c..84351dc58d 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -374,8 +374,8 @@ impl Body { biped_small::Species::Gnarling => 300, biped_small::Species::Adlet => 400, biped_small::Species::Sahagin => 500, - biped_small::Species::Haniwa => 900, - biped_small::Species::Myrmidon => 1000, + biped_small::Species::Haniwa => 700, + biped_small::Species::Myrmidon => 800, _ => 600, }, Body::Object(object) => match object { diff --git a/common/src/event.rs b/common/src/event.rs index c38855cd21..0a73cfa947 100644 --- a/common/src/event.rs +++ b/common/src/event.rs @@ -9,7 +9,7 @@ use crate::{ }; use comp::{ invite::{InviteKind, InviteResponse}, - item::{Item, Reagent}, + item::Item, Ori, Pos, }; use specs::Entity as EcsEntity; diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index ff03ff7206..c3aa3a8298 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -447,6 +447,7 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc let _ = state .create_object(comp::Pos(pos.0 + Vec3::unit_z() * 0.25), match old_body { Some(common::comp::Body::Humanoid(_)) => object::Body::Pouch, + Some(common::comp::Body::BipedSmall(_)) => object::Body::Pouch, Some(common::comp::Body::Golem(_)) => object::Body::Chest, Some(common::comp::Body::BipedLarge(_)) | Some(common::comp::Body::QuadrupedLow(_)) => object::Body::MeatDrop, diff --git a/server/src/sys/agent.rs b/server/src/sys/agent.rs index 49e1a7151e..f9e6d3e433 100644 --- a/server/src/sys/agent.rs +++ b/server/src/sys/agent.rs @@ -497,8 +497,11 @@ impl<'a> System<'a> for Sys { }) { Some(ToolKind::Bow) => Tactic::Bow, Some(ToolKind::Staff) => Tactic::Staff, + Some(ToolKind::StaffSimple) => Tactic::Staff, Some(ToolKind::Hammer) => Tactic::Hammer, Some(ToolKind::Sword) => Tactic::Sword, + Some(ToolKind::Spear) => Tactic::Sword, + Some(ToolKind::SwordSimple) => Tactic::Sword, Some(ToolKind::Axe) => Tactic::Axe, Some(ToolKind::Unique(UniqueKind::StoneGolemFist)) => { Tactic::StoneGolemBoss diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs index 3d183e3bbc..317a85ac7a 100644 --- a/voxygen/anim/src/biped_small/alpha.rs +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -52,7 +52,7 @@ impl Animation for AlphaAnimation { let speednorm = speed / 9.4; let speednormcancel = 1.0 - speednorm; - + let anim_time = anim_time.min(1.0); let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).sqrt(), 0.0, 0.0), Some(StageSection::Swing) => (1.0, (anim_time as f32).powi(4), 0.0), diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs index cae4e56b07..20a96336d8 100644 --- a/voxygen/anim/src/biped_small/shoot.rs +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -111,7 +111,7 @@ impl Animation for ShootAnimation { next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * 0.4) * Quaternion::rotation_y(0.5 * speednorm); }, - Some(ToolKind::Staff) => { + Some(ToolKind::Staff) | Some(ToolKind::StaffSimple) => { let (move1base, _move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), diff --git a/voxygen/anim/src/character/mod.rs b/voxygen/anim/src/character/mod.rs index 36e2cae0c4..135d142d46 100644 --- a/voxygen/anim/src/character/mod.rs +++ b/voxygen/anim/src/character/mod.rs @@ -117,7 +117,7 @@ impl Skeleton for CharacterSkeleton { make_bone(control_mat * hand_l_mat * Mat4::::from(self.hold)), ]; // NOTE: lantern_mat.cols.w = lantern_mat * Vec4::unit_w() - (head_mat * lantern_mat.cols.w).xyz() + (lantern_mat.cols.w / 13.0).xyz() } } diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index b0c02234f7..d4cf724d16 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -2495,7 +2495,7 @@ make_vox_spec!( armor_tail: BipedSmallArmorTailSpec = "voxygen.voxel.biped_small_armor_tail_manifest", }, - |FigureKey { body, extra }, spec| { + |FigureKey { body: _, extra }, spec| { const DEFAULT_LOADOUT: super::cache::CharacterCacheKey = super::cache::CharacterCacheKey { third_person: None, tool: None, diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index ad2cbe9964..bccec64ed9 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -883,7 +883,6 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::Outcast, ) - .with_scale(2.0) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..6) { 0 => "common.items.weapons.axe.worn_iron_axe-0", @@ -927,7 +926,6 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::Bandit ) - .with_scale(2.0) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..6) { 0 => "common.items.weapons.axe.steel_axe-0", @@ -1138,7 +1136,6 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::CultistAcolyte ) - .with_scale(2.0) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..6) { 0 => "common.items.weapons.axe.malachite_axe-0", From 16a44cd532492366a345420a8f10c9dbafece82e Mon Sep 17 00:00:00 2001 From: jshipsey Date: Mon, 22 Feb 2021 01:04:45 -0500 Subject: [PATCH 30/36] minotaur moves, added claygolem --- assets/common/abilities/axesimple/dash.ron | 19 ++ .../abilities/axesimple/doublestrike.ron | 39 +++++ assets/common/abilities/spear/dash.ron | 2 +- .../abilities/staffsimple/flamethrower.ron | 4 +- .../abilities/weapon_ability_manifest.ron | 6 +- .../items/npc_weapons/axe/minotaur_axe.ron | 18 ++ .../npc_weapons/staff/mindflayer_staff.ron | 2 +- assets/common/npc_names.ron | 4 + .../voxygen/voxel/biped_weapon_manifest.ron | 4 + .../voxygen/voxel/golem_central_manifest.ron | 36 ++++ .../voxygen/voxel/golem_lateral_manifest.ron | 68 ++++++++ .../voxel/npc/claygolem/male/chest_lower.vox | 3 + .../voxel/npc/claygolem/male/chest_upper.vox | 3 + .../voxel/npc/claygolem/male/foot_l.vox | 3 + .../voxel/npc/claygolem/male/foot_r.vox | 3 + .../voxel/npc/claygolem/male/hand_l.vox | 3 + .../voxel/npc/claygolem/male/hand_r.vox | 3 + .../voxygen/voxel/npc/claygolem/male/head.vox | 3 + .../voxel/npc/claygolem/male/leg_l.vox | 3 + .../voxel/npc/claygolem/male/leg_r.vox | 3 + .../voxel/npc/claygolem/male/shoulder_l.vox | 3 + .../voxel/npc/claygolem/male/shoulder_r.vox | 3 + .../voxygen/voxel/npc/minotaur/male/axe.vox | 3 - .../voxygen/voxel/weapon/axe/minotaur_axe.vox | 3 + common/src/comp/body.rs | 6 + common/src/comp/body/golem.rs | 5 +- common/src/comp/inventory/item/tool.rs | 1 + common/src/comp/inventory/loadout_builder.rs | 7 +- common/src/states/utils.rs | 2 +- server/src/persistence/json_models.rs | 2 + server/src/sys/agent.rs | 1 + voxygen/anim/src/biped_large/alpha.rs | 25 +++ voxygen/anim/src/biped_large/beam.rs | 163 +++++++++--------- voxygen/anim/src/biped_large/beta.rs | 27 ++- voxygen/anim/src/biped_large/dash.rs | 82 ++++++--- voxygen/anim/src/biped_large/idle.rs | 2 +- voxygen/anim/src/biped_large/jump.rs | 2 +- voxygen/anim/src/biped_large/mod.rs | 2 +- voxygen/anim/src/biped_large/run.rs | 6 +- voxygen/anim/src/biped_large/shoot.rs | 21 ++- voxygen/anim/src/biped_large/wield.rs | 2 +- voxygen/anim/src/character/alpha.rs | 4 +- voxygen/anim/src/character/wield.rs | 2 +- voxygen/anim/src/golem/mod.rs | 10 ++ voxygen/src/hud/util.rs | 1 + voxygen/src/scene/figure/mod.rs | 3 +- world/src/site/dungeon/mod.rs | 4 +- 47 files changed, 477 insertions(+), 144 deletions(-) create mode 100644 assets/common/abilities/axesimple/dash.ron create mode 100644 assets/common/abilities/axesimple/doublestrike.ron create mode 100644 assets/common/items/npc_weapons/axe/minotaur_axe.ron create mode 100644 assets/voxygen/voxel/npc/claygolem/male/chest_lower.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/chest_upper.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/head.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/shoulder_l.vox create mode 100644 assets/voxygen/voxel/npc/claygolem/male/shoulder_r.vox delete mode 100644 assets/voxygen/voxel/npc/minotaur/male/axe.vox create mode 100644 assets/voxygen/voxel/weapon/axe/minotaur_axe.vox diff --git a/assets/common/abilities/axesimple/dash.ron b/assets/common/abilities/axesimple/dash.ron new file mode 100644 index 0000000000..b034b17b0c --- /dev/null +++ b/assets/common/abilities/axesimple/dash.ron @@ -0,0 +1,19 @@ +DashMelee( + energy_cost: 0, + base_damage: 80, + scaled_damage: 160, + base_poise_damage: 0, + scaled_poise_damage: 0, + base_knockback: 8.0, + scaled_knockback: 7.0, + range: 3.0, + angle: 15.0, + energy_drain: 0, + forward_speed: 3.0, + buildup_duration: 0.5, + charge_duration: 3.0, + swing_duration: 0.35, + recover_duration: 1.2, + infinite_charge: true, + is_interruptible: true, +) diff --git a/assets/common/abilities/axesimple/doublestrike.ron b/assets/common/abilities/axesimple/doublestrike.ron new file mode 100644 index 0000000000..a48212625a --- /dev/null +++ b/assets/common/abilities/axesimple/doublestrike.ron @@ -0,0 +1,39 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 90, + damage_increase: 10, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 4.0, + range: 3.5, + angle: 50.0, + base_buildup_duration: 0.6, + base_swing_duration: 0.12, + base_recover_duration: 0.6, + forward_movement: 3.5, + ), + ( + stage: 2, + base_damage: 130, + damage_increase: 15, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 16.0, + range: 5.5, + angle: 15.0, + base_buildup_duration: 0.5, + base_swing_duration: 0.15, + base_recover_duration: 1.2, + forward_movement: 4.5, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) \ No newline at end of file diff --git a/assets/common/abilities/spear/dash.ron b/assets/common/abilities/spear/dash.ron index b967a3d96d..39999a70b1 100644 --- a/assets/common/abilities/spear/dash.ron +++ b/assets/common/abilities/spear/dash.ron @@ -11,7 +11,7 @@ DashMelee( energy_drain: 0, forward_speed: 2.0, buildup_duration: 0.5, - charge_duration: 0.6, + charge_duration: 1.0, swing_duration: 0.1, recover_duration: 0.5, infinite_charge: true, diff --git a/assets/common/abilities/staffsimple/flamethrower.ron b/assets/common/abilities/staffsimple/flamethrower.ron index 99ac486041..6145e64192 100644 --- a/assets/common/abilities/staffsimple/flamethrower.ron +++ b/assets/common/abilities/staffsimple/flamethrower.ron @@ -1,6 +1,6 @@ BasicBeam( - buildup_duration: 0.25, - recover_duration: 0.25, + buildup_duration: 0.5, + recover_duration: 0.5, beam_duration: 1.0, base_hps: 0, base_dps: 150, diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index db9f089447..7d13b63a8f 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -39,7 +39,11 @@ primary: "common.abilities.hammersimple.doublestrike", secondary: "common.abilities.hammersimple.doublestrike", abilities: [], - + ), + AxeSimple: ( + primary: "common.abilities.axesimple.doublestrike", + secondary: "common.abilities.axesimple.dash", + abilities: [], ), SwordSimple: ( primary: "common.abilities.swordsimple.doublestrike", diff --git a/assets/common/items/npc_weapons/axe/minotaur_axe.ron b/assets/common/items/npc_weapons/axe/minotaur_axe.ron new file mode 100644 index 0000000000..2be8c68b62 --- /dev/null +++ b/assets/common/items/npc_weapons/axe/minotaur_axe.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Minotaur Axe", + description: "Placeholder", + kind: Tool( + ( + kind: AxeSimple, + hands: Two, + stats: ( + equip_time_millis: 500, + power: 1.8, + poise_strength: 1.00, + speed: 1.0 + ), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/staff/mindflayer_staff.ron b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron index 257e19af95..d371f99043 100644 --- a/assets/common/items/npc_weapons/staff/mindflayer_staff.ron +++ b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron @@ -6,7 +6,7 @@ ItemDef( kind: StaffSimple, hands: Two, stats: Direct(( - equip_time_millis: 300, + equip_time_millis: 1, power: 3.0, poise_strength: 1.00, speed: 1.5, diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 7ef846bdcf..d39ab78c06 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -871,6 +871,10 @@ treant: ( keyword: "treant", generic: "Treant" + ), + claygolem: ( + keyword: "claygolem", + generic: "ClayGolem" ) ) ), diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron index 37213ae4a9..abdf5c61b2 100644 --- a/assets/voxygen/voxel/biped_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -754,6 +754,10 @@ vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), color: None ), + "common.items.npc_weapons.axe.minotaur_axe": ( + vox_spec: ("weapon.axe.minotaur_axe", (-2.5, -9.0, -6.0)), + color: None + ), //BIPEDSMALL "common.items.npc_weapons.biped_small.gnarling.wooden_spear": ( vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), diff --git a/assets/voxygen/voxel/golem_central_manifest.ron b/assets/voxygen/voxel/golem_central_manifest.ron index 593ef28bab..10ab717d32 100644 --- a/assets/voxygen/voxel/golem_central_manifest.ron +++ b/assets/voxygen/voxel/golem_central_manifest.ron @@ -71,4 +71,40 @@ central: ("npc.treant.male.chest_lower"), ), ), + (ClayGolem, Male): ( + head: ( + offset: (-10.5, -6.0, -5.0), + central: ("npc.claygolem.male.head"), + ), + jaw: ( + offset: (-9.5, 0.0, -3.0), + central: ("armor.empty"), + ), + torso_upper: ( + offset: (-9.5, -7.0, -6.5), + central: ("npc.claygolem.male.chest_upper"), + ), + torso_lower: ( + offset: (-9.5, -7.0, -8.0), + central: ("npc.claygolem.male.chest_lower"), + ), + ), + (ClayGolem, Female): ( + head: ( + offset: (-10.5, -6.0, -5.0), + central: ("npc.claygolem.male.head"), + ), + jaw: ( + offset: (-9.5, 0.0, -3.0), + central: ("armor.empty"), + ), + torso_upper: ( + offset: (-9.5, -7.0, -6.5), + central: ("npc.claygolem.male.chest_upper"), + ), + torso_lower: ( + offset: (-9.5, -7.0, -8.0), + central: ("npc.claygolem.male.chest_lower"), + ), + ), }) diff --git a/assets/voxygen/voxel/golem_lateral_manifest.ron b/assets/voxygen/voxel/golem_lateral_manifest.ron index 07de63f088..72f3858875 100644 --- a/assets/voxygen/voxel/golem_lateral_manifest.ron +++ b/assets/voxygen/voxel/golem_lateral_manifest.ron @@ -135,4 +135,72 @@ lateral: ("npc.treant.male.foot_r"), ) ), + (ClayGolem, Male): ( + shoulder_l: ( + offset: (-13.0, -3.5, -6.5), + lateral: ("npc.claygolem.male.shoulder_l"), + ), + shoulder_r: ( + offset: (0.0, -3.5, -6.5), + lateral: ("npc.claygolem.male.shoulder_r"), + ), + hand_l: ( + offset: (-7.5, -6.5, -17.0), + lateral: ("npc.claygolem.male.hand_l"), + ), + hand_r: ( + offset: (-7.5, -6.5, -17.0), + lateral: ("npc.claygolem.male.hand_r"), + ), + leg_l: ( + offset: (-8.0, -4.0, -10.0), + lateral: ("npc.claygolem.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -4.0, -10.0), + lateral: ("npc.claygolem.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -3.0, -7.0), + lateral: ("npc.claygolem.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -3.0, -7.0), + lateral: ("npc.claygolem.male.foot_r"), + ) + ), + (ClayGolem, Female): ( + shoulder_l: ( + offset: (-13.0, -3.5, -6.5), + lateral: ("npc.claygolem.male.shoulder_l"), + ), + shoulder_r: ( + offset: (0.0, -3.5, -6.5), + lateral: ("npc.claygolem.male.shoulder_r"), + ), + hand_l: ( + offset: (-7.5, -6.5, -17.0), + lateral: ("npc.claygolem.male.hand_l"), + ), + hand_r: ( + offset: (-7.5, -6.5, -17.0), + lateral: ("npc.claygolem.male.hand_r"), + ), + leg_l: ( + offset: (-8.0, -4.0, -10.0), + lateral: ("npc.claygolem.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -4.0, -10.0), + lateral: ("npc.claygolem.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -3.0, -7.0), + lateral: ("npc.claygolem.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -3.0, -7.0), + lateral: ("npc.claygolem.male.foot_r"), + ) + ), }) diff --git a/assets/voxygen/voxel/npc/claygolem/male/chest_lower.vox b/assets/voxygen/voxel/npc/claygolem/male/chest_lower.vox new file mode 100644 index 0000000000..f824ccaf3c --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/chest_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dca6b3f3e6332c8ccc8f74ada817f49455f22cc1d7fc3b9160724c640683e30 +size 4296 diff --git a/assets/voxygen/voxel/npc/claygolem/male/chest_upper.vox b/assets/voxygen/voxel/npc/claygolem/male/chest_upper.vox new file mode 100644 index 0000000000..cda6204277 --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/chest_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acde4ee60302a74e7eadc83f175e5cd9b031ff02156f1b77c3fe3ed6eb6e50af +size 8580 diff --git a/assets/voxygen/voxel/npc/claygolem/male/foot_l.vox b/assets/voxygen/voxel/npc/claygolem/male/foot_l.vox new file mode 100644 index 0000000000..72be607431 --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fc0a37df9773373e4205368c52a930a814a074d4e6ca40962667ff8bc1dbd9a +size 1496 diff --git a/assets/voxygen/voxel/npc/claygolem/male/foot_r.vox b/assets/voxygen/voxel/npc/claygolem/male/foot_r.vox new file mode 100644 index 0000000000..2dd4ef60ba --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:086485f9857e6849bc0d975643939cdbed604599bb250609440d726538f2a46b +size 1496 diff --git a/assets/voxygen/voxel/npc/claygolem/male/hand_l.vox b/assets/voxygen/voxel/npc/claygolem/male/hand_l.vox new file mode 100644 index 0000000000..73a978f3e4 --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00587c52fe927a8da630605b86bad70a7fa868c0bc22201fcf7df045b12ddc82 +size 4984 diff --git a/assets/voxygen/voxel/npc/claygolem/male/hand_r.vox b/assets/voxygen/voxel/npc/claygolem/male/hand_r.vox new file mode 100644 index 0000000000..15f30f4ccc --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4cdae61f46ecb3db585aec3eb0244583e3f98906cad76f83c88dd266fe06feb +size 4984 diff --git a/assets/voxygen/voxel/npc/claygolem/male/head.vox b/assets/voxygen/voxel/npc/claygolem/male/head.vox new file mode 100644 index 0000000000..4448e17a4b --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0496ea5c90559b681246f5c641d2a2dfadaf7705eb79b7f2c9a38c3060c866c1 +size 6656 diff --git a/assets/voxygen/voxel/npc/claygolem/male/leg_l.vox b/assets/voxygen/voxel/npc/claygolem/male/leg_l.vox new file mode 100644 index 0000000000..a4291fa96e --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5f9f90f81f28ebe40b8facb53f0dbef286c007a8899c252106ccb2f4e6db1f0 +size 2480 diff --git a/assets/voxygen/voxel/npc/claygolem/male/leg_r.vox b/assets/voxygen/voxel/npc/claygolem/male/leg_r.vox new file mode 100644 index 0000000000..3474bd445d --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f94e1f7e77e7c5ce5db144d61ee683c2dea3606c53b0a2e2e539cd863d105118 +size 2480 diff --git a/assets/voxygen/voxel/npc/claygolem/male/shoulder_l.vox b/assets/voxygen/voxel/npc/claygolem/male/shoulder_l.vox new file mode 100644 index 0000000000..76d045a4c4 --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ddb180e26cf2b52023c492e9306e6f1669fa8bbbc0fc14a9423d4cf49e8c4f6 +size 2764 diff --git a/assets/voxygen/voxel/npc/claygolem/male/shoulder_r.vox b/assets/voxygen/voxel/npc/claygolem/male/shoulder_r.vox new file mode 100644 index 0000000000..474d6cc5aa --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c5d744e727212f236c063999029e7c3fc8db57944f9ce781f5b5fa540d8afd5 +size 2764 diff --git a/assets/voxygen/voxel/npc/minotaur/male/axe.vox b/assets/voxygen/voxel/npc/minotaur/male/axe.vox deleted file mode 100644 index ba51b0efc3..0000000000 --- a/assets/voxygen/voxel/npc/minotaur/male/axe.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:81c825d278f673f3b214dd9772faf5d3fab9f69a4dba2ec320a23369140dcd23 -size 3460 diff --git a/assets/voxygen/voxel/weapon/axe/minotaur_axe.vox b/assets/voxygen/voxel/weapon/axe/minotaur_axe.vox new file mode 100644 index 0000000000..f8c4cd5649 --- /dev/null +++ b/assets/voxygen/voxel/weapon/axe/minotaur_axe.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e9b3f271457750c4e6d86fd23554322c15439b9583e23322b6143ef1cee86cf +size 3652 diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 84351dc58d..9028eb536e 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -368,6 +368,7 @@ impl Body { biped_large::Species::Mindflayer => 8000, biped_large::Species::Tidalwarrior => 2500, biped_large::Species::Yeti => 2000, + biped_large::Species::Minotaur => 5000, _ => 1000, }, Body::BipedSmall(biped_small) => match biped_small.species { @@ -383,7 +384,12 @@ impl Body { object::Body::Crossbow => 800, _ => 10000, }, +<<<<<<< HEAD Body::Golem(_) => 2740, +======= + Body::Object(_) => 10000, + Body::Golem(_) => 3000, +>>>>>>> minotaur moves, added claygolem Body::Theropod(theropod) => match theropod.species { theropod::Species::Archaeos => 3000, theropod::Species::Odonto => 2700, diff --git a/common/src/comp/body/golem.rs b/common/src/comp/body/golem.rs index 2c01ed3914..a0549a5595 100644 --- a/common/src/comp/body/golem.rs +++ b/common/src/comp/body/golem.rs @@ -36,6 +36,7 @@ make_case_elim!( pub enum Species { StoneGolem = 0, Treant = 1, + ClayGolem = 2, } ); @@ -46,6 +47,7 @@ make_case_elim!( pub struct AllSpecies { pub stonegolem: SpeciesMeta, pub treant: SpeciesMeta, + pub claygolem: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -56,11 +58,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies match index { Species::StoneGolem => &self.stonegolem, Species::Treant => &self.treant, + Species::ClayGolem => &self.claygolem, } } } -pub const ALL_SPECIES: [Species; 2] = [Species::StoneGolem, Species::Treant]; +pub const ALL_SPECIES: [Species; 3] = [Species::StoneGolem, Species::Treant, Species::ClayGolem]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 91c7ce97da..4be2ed070a 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -22,6 +22,7 @@ pub enum ToolKind { SwordSimple, StaffSimple, BowSimple, + AxeSimple, Bow, Dagger, Staff, diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 3293da63fa..18e3d1b250 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -88,6 +88,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.stone_golems_fist", )); }, + golem::Species::ClayGolem => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.stone_golems_fist", + )); + }, _ => {}, }, Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { @@ -243,7 +248,7 @@ impl LoadoutBuilder { }, (biped_large::Species::Minotaur, _) => { main_tool = Some(Item::new_from_asset_expect( - "common.items.npc_weapons.hammer.cyclops_hammer", + "common.items.npc_weapons.axe.minotaur_axe", )); }, (biped_large::Species::Tidalwarrior, _) => { diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 046a54042b..532668e59b 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -136,7 +136,7 @@ impl Body { Body::Dragon(_) => 5.0, Body::BirdSmall(_) => 35.0, Body::FishSmall(_) => 10.0, - Body::BipedLarge(_) => 12.0, + Body::BipedLarge(_) => 8.0, Body::BipedSmall(_) => 12.0, Body::Object(_) => 10.0, Body::Golem(_) => 8.0, diff --git a/server/src/persistence/json_models.rs b/server/src/persistence/json_models.rs index 5088bf79db..0ddfa0269c 100644 --- a/server/src/persistence/json_models.rs +++ b/server/src/persistence/json_models.rs @@ -145,6 +145,7 @@ pub fn skill_to_db_string(skill: comp::skills::Skill) -> String { | UnlockGroup(SkillGroupKind::Weapon(ToolKind::HammerSimple)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::StaffSimple)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::BowSimple)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::AxeSimple)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::SwordSimple)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Debug)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Farming)) @@ -285,6 +286,7 @@ pub fn skill_group_to_db_string(skill_group: comp::skills::SkillGroupKind) -> St | Weapon(ToolKind::HammerSimple) | Weapon(ToolKind::StaffSimple) | Weapon(ToolKind::BowSimple) + | Weapon(ToolKind::AxeSimple) | Weapon(ToolKind::SwordSimple) | Weapon(ToolKind::Debug) | Weapon(ToolKind::Farming) diff --git a/server/src/sys/agent.rs b/server/src/sys/agent.rs index f9e6d3e433..7866861455 100644 --- a/server/src/sys/agent.rs +++ b/server/src/sys/agent.rs @@ -502,6 +502,7 @@ impl<'a> System<'a> for Sys { Some(ToolKind::Sword) => Tactic::Sword, Some(ToolKind::Spear) => Tactic::Sword, Some(ToolKind::SwordSimple) => Tactic::Sword, + Some(ToolKind::AxeSimple) => Tactic::Sword, Some(ToolKind::Axe) => Tactic::Axe, Some(ToolKind::Unique(UniqueKind::StoneGolemFist)) => { Tactic::StoneGolemBoss diff --git a/voxygen/anim/src/biped_large/alpha.rs b/voxygen/anim/src/biped_large/alpha.rs index 9a9a368fc6..3ccdc2c8ec 100644 --- a/voxygen/anim/src/biped_large/alpha.rs +++ b/voxygen/anim/src/biped_large/alpha.rs @@ -134,6 +134,31 @@ impl Animation for AlphaAnimation { * Quaternion::rotation_y(-1.8 + move1 * -0.8 + move2 * 3.0) * Quaternion::rotation_z(move1 * -0.8 + move2 * -0.8); }, + Some(ToolKind::AxeSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move2 * -10.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); + + next.control.position = Vec3::new( + 4.0 + move1 * -12.0 + move2 * 28.0, + (s_a.grip / 1.0) + move1 * -3.0 + move2 * -5.0, + (-s_a.grip / 0.8) + move1 * 2.0 + move2 * 8.0, + ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 0.6 + move2 * -0.9); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -0.6 + move2 * 0.9); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.8) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move2 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-1.0 + move1 * -0.5 + move2 * -0.3) + * Quaternion::rotation_y(-1.8 + move1 * -0.4 + move2 * 3.5) + * Quaternion::rotation_z(move1 * -1.0 + move2 * -1.5); + }, Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); diff --git a/voxygen/anim/src/biped_large/beam.rs b/voxygen/anim/src/biped_large/beam.rs index 0fa4a173f3..0c0d034666 100644 --- a/voxygen/anim/src/biped_large/beam.rs +++ b/voxygen/anim/src/biped_large/beam.rs @@ -12,8 +12,9 @@ impl Animation for BeamAnimation { Option, Option, f64, - f32, + Vec3, Option, + f32, ); type Skeleton = BipedLargeSkeleton; @@ -24,7 +25,7 @@ impl Animation for BeamAnimation { #[allow(clippy::single_match)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, _global_time, velocity, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, _global_time, velocity, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, @@ -32,95 +33,89 @@ impl Animation for BeamAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3) = match stage_section { - Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), - Some(StageSection::Cast) => (1.0, anim_time as f32, 0.0), - Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), - _ => (0.0, 0.0, 0.0), - }; + let speed = Vec2::::from(velocity).magnitude(); + + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()) + * speednorm; + + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()) + * speednorm; + + next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); + next.jaw.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.sthl.3) * Quaternion::rotation_y(s_a.sthl.4); - next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthl.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); - next.control.position = Vec3::new(-4.0, 7.0, 4.0); - next.control.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(0.15) - * Quaternion::rotation_z(0.0); + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); match active_tool_kind { - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { - next.control.position = Vec3::new( - s_a.stc.0 + (movement1 * 26.0) * (1.0 - movement3), - s_a.stc.1 + (movement1 + (movement2 * 8.0).sin() * 2.0) * (1.0 - movement3), - s_a.stc.2 + (movement1 * 16.0) * (1.0 - movement3), - ); - next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement1 * -0.8) * (1.0 - movement3)) - * Quaternion::rotation_y( - s_a.stc.4 - + (movement1 * -1.4 + (movement2 * 16.0).sin() * 0.07) - * (1.0 - movement3), - ) - * Quaternion::rotation_z( - (movement1 * -1.7 + (movement2 * 8.0 + PI / 4.0).sin() * 0.3) - * (1.0 - movement3), - ); - next.head.orientation = Quaternion::rotation_x(0.0); - - next.hand_l.position = Vec3::new( - 0.0 + (movement1 * -1.0 + (movement2 * 8.0).sin() * 3.5) * (1.0 - movement3), - 0.0 + (movement1 * -8.0 - + (movement2 * 8.0).sin() * -2.0 - + (movement2 * 16.0).sin() * -1.5) - * (1.0 - movement3), - 0.0 + (movement1 * 19.0 + (movement2 * 8.0 + PI / 2.0).sin() * 3.5) - * (1.0 - movement3), - ); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.sthr.3 + (movement1 * -0.3) * (1.0 - movement3)) - * Quaternion::rotation_y( - (movement1 * -1.1 + (movement2 * 8.0 + PI / 2.0).sin() * -0.3) - * (1.0 - movement3), - ) - * Quaternion::rotation_z((movement1 * -2.8) * (1.0 - movement3)); - - next.shoulder_l.orientation = Quaternion::rotation_z(0.2) - * Quaternion::rotation_x( - (movement1 * 0.6 + (movement2 * 8.0 + PI / 2.0).sin() * -0.1) - * (1.0 - movement3), - ); - - next.shoulder_r.orientation = Quaternion::rotation_z(-0.2) - * Quaternion::rotation_x( - (movement1 * 1.1 + (movement2 * 8.0 + PI / 2.0).sin() * -0.1) - * (1.0 - movement3), - ); - - if velocity < 0.5 { - next.head.orientation = - Quaternion::rotation_z(movement1 * -0.5 + (movement2 * 16.0).sin() * 0.05); - - next.foot_l.position = - Vec3::new(-s_a.foot.0, s_a.foot.1 + movement1 * -3.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(movement1 * -0.5) - * Quaternion::rotation_z(movement1 * 0.5); - - next.foot_r.position = - Vec3::new(s_a.foot.0, s_a.foot.1 + movement1 * 4.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_z(movement1 * 0.5); - next.upper_torso.orientation = - Quaternion::rotation_x(movement1 * -0.2 + (movement2 * 8.0).sin() * 0.01) - * Quaternion::rotation_z(movement1 * 0.1); - next.lower_torso.orientation = Quaternion::rotation_x(movement1 * 0.05) - * Quaternion::rotation_z(movement1 * -0.2); - } else { + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { + let (move1base, move2shake, _move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ( + ((anim_time as f32).powf(0.25)).min(1.0), + (anim_time as f32 * 10.0 + PI).sin(), + (anim_time as f32 * 10.0 + PI).sin(), + 0.0, + ), + Some(StageSection::Cast) => ( + 1.0, + (anim_time as f32 * 10.0 + PI).sin(), + (anim_time as f32).powf(0.25), + 0.0, + ), + Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0, 0.0), }; + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + next.control_l.position = Vec3::new(-1.0, 3.0, 12.0); + next.control_r.position = + Vec3::new(1.0 + move1 * 5.0, 2.0 + move1 * 1.0, 2.0 + move1 * 8.0); + + next.control.position = Vec3::new( + -3.0 + move1 * 5.0, + 3.0 + s_a.grip / 1.2 + move1 * 5.0 + move2shake * 1.0, + -11.0 + -s_a.grip / 2.0 + move1 * -4.0, + ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.2); + next.jaw.orientation = Quaternion::rotation_x(0.0); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.5); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.5 + move1 * 0.4) + * Quaternion::rotation_y(0.5) + * Quaternion::rotation_z(move1 * 1.2 + move2shake * 0.5); + + next.control.orientation = Quaternion::rotation_x(-0.2 + move1 * -0.2) + * Quaternion::rotation_y(-0.1 + move1 * -0.4); + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(move1 * 0.2 + 0.3 + 0.8 * speednorm + (footrotr * -0.2)); + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.2 + 0.3 + 0.6 * speednorm + (footrotl * -0.2)); + next.torso.orientation = Quaternion::rotation_x(move1 * -0.1); + next.torso.position = Vec3::new(0.0, 0.0, move1 * 1.0); }, _ => {}, } diff --git a/voxygen/anim/src/biped_large/beta.rs b/voxygen/anim/src/biped_large/beta.rs index aa5664d150..a517b7559b 100644 --- a/voxygen/anim/src/biped_large/beta.rs +++ b/voxygen/anim/src/biped_large/beta.rs @@ -50,7 +50,7 @@ impl Animation for BetaAnimation { let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), - Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(6)), _ => (0.0, 0.0, 0.0), }; let pullback = 1.0 - move3; @@ -135,6 +135,31 @@ impl Animation for BetaAnimation { * Quaternion::rotation_y(-1.8 + move1 * -0.8 + move2 * 3.0) * Quaternion::rotation_z(move1 * -0.8 + move2 * -0.8); }, + Some(ToolKind::AxeSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move2 * -10.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); + + next.control.position = Vec3::new( + 4.0 + move1 * -18.0 + move2 * 20.0, + (s_a.grip / 1.0) + move1 * -3.0 + move2 * 12.0, + (-s_a.grip / 0.8) + move1 * -2.0 + move2 * 4.0, + ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.9 + move2 * 0.6); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 1.2 + move2 * -1.0); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -1.2 + move2 * 1.0); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.8) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move2 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-1.0 + move1 * 0.0 + move2 * -0.8) + * Quaternion::rotation_y(-1.8 + move1 * 3.0 + move2 * -0.9) + * Quaternion::rotation_z(move1 * -0.2 + move2 * -1.5); + }, Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); diff --git a/voxygen/anim/src/biped_large/dash.rs b/voxygen/anim/src/biped_large/dash.rs index 99e609ccfe..7c7ba9b28c 100644 --- a/voxygen/anim/src/biped_large/dash.rs +++ b/voxygen/anim/src/biped_large/dash.rs @@ -25,7 +25,7 @@ impl Animation for DashAnimation { #[allow(clippy::single_match)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, + (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, @@ -57,7 +57,7 @@ impl Animation for DashAnimation { let (move1base, move2base, move3base, move4) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0, 0.0), Some(StageSection::Charge) => (1.0, ((anim_time as f32).powf(4.0)).min(1.0), 0.0, 0.0), - Some(StageSection::Swing) => (1.0, 1.0, anim_time as f32, 0.0), + Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(4.0), 0.0), Some(StageSection::Recover) => (1.1, 1.0, 1.0, (anim_time as f32).powf(4.0)), _ => (0.0, 0.0, 0.0, 0.0), }; @@ -82,30 +82,64 @@ impl Animation for DashAnimation { next.shoulder_r.orientation = Quaternion::rotation_x(0.6 * speednorm + (footrotl * -0.2) * speednorm); next.torso.orientation = Quaternion::rotation_z(0.0); + match active_tool_kind { + Some(ToolKind::SwordSimple) => { + next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); + next.control_r.position = Vec3::new(0.0, 2.0, -3.0); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.control.position = Vec3::new( + -3.0 + move1 * -2.0 + move2 * 2.0, + 5.0 + s_a.grip / 1.2 + move1 * -4.0 + move2 * 2.0 + move3 * 8.0, + -4.0 + -s_a.grip / 2.0 + move2 * -5.0 + move3 * 5.0, + ); + next.upper_torso.orientation = Quaternion::rotation_x(move2 * -0.2 + move3 * 0.2) + * Quaternion::rotation_z(move1 * 0.8 + move3 * -0.7); + next.lower_torso.orientation = Quaternion::rotation_x(move2 * 0.2 + move3 * -0.2) + * Quaternion::rotation_z(move1 * -0.8 + move3 * 0.7); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(-0.2); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.2 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); - next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); - next.control_r.position = Vec3::new(0.0, 2.0, -3.0); - next.head.orientation = Quaternion::rotation_x(move1 * -0.25) - * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); - next.control.position = Vec3::new( - -3.0 + move1 * -2.0 + move2 * 2.0, - 5.0 + s_a.grip / 1.2 + move1 * -4.0 + move2 * 2.0 + move3 * 8.0, - -4.0 + -s_a.grip / 2.0 + move2 * -5.0 + move3 * 5.0, - ); - next.upper_torso.orientation = Quaternion::rotation_x(move2 * -0.2 + move3 * 0.2) - * Quaternion::rotation_z(move1 * 0.8 + move3 * -0.7); - next.lower_torso.orientation = Quaternion::rotation_x(move2 * 0.2 + move3 * -0.2) - * Quaternion::rotation_z(move1 * -0.8 + move3 * 0.7); - next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) - * Quaternion::rotation_y(-0.2); - next.control_r.orientation = Quaternion::rotation_x(PI / 2.2 + move1 * -0.5 + move2 * 1.5) - * Quaternion::rotation_y(0.2) - * Quaternion::rotation_z(0.0); + next.control.orientation = + Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -1.5 + move3 * -0.2) + * Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.5 + move3 * -1.0) + * Quaternion::rotation_z(-move3 * -1.5); + }, + Some(ToolKind::AxeSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move3 * -10.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); - next.control.orientation = - Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -1.5 + move3 * -0.2) - * Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.5 + move3 * -1.0) - * Quaternion::rotation_z(-move3 * -1.5); + next.control.position = Vec3::new( + 4.0 + move1 * -3.0 + move3 * -8.0, + (s_a.grip / 1.0) + move1 * -1.0 + move3 * 12.0, + (-s_a.grip / 0.8) + move1 * 2.0 + move3 * -6.0, + ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.5 + move3 * 0.5) + * Quaternion::rotation_z(move1 * 0.3 + move3 * 0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.4 + move3 * 0.9) + * Quaternion::rotation_z(move1 * 0.6 + move3 * -1.5); + next.lower_torso.orientation = Quaternion::rotation_y(move1 * -0.2 + move3 * -0.1) + * Quaternion::rotation_x(move1 * 0.4 + move3 * -0.7) + * Quaternion::rotation_z(move1 * -0.6 + move3 * 1.6); + + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move3 * 0.8) + * Quaternion::rotation_y(move1 * 0.7); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move3 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-1.0 + move1 * -0.2 + move3 * -1.1) + * Quaternion::rotation_y(-1.8 + move1 * -0.2 + move3 * 1.5) + * Quaternion::rotation_z(move1 * -0.8 + move3 * -1.5); + }, + _ => {}, + } next } diff --git a/voxygen/anim/src/biped_large/idle.rs b/voxygen/anim/src/biped_large/idle.rs index 773e368dc1..ab32350116 100644 --- a/voxygen/anim/src/biped_large/idle.rs +++ b/voxygen/anim/src/biped_large/idle.rs @@ -103,7 +103,7 @@ impl Animation for IdleAnimation { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::HammerSimple) => { + Some(ToolKind::HammerSimple) | Some(ToolKind::AxeSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, diff --git a/voxygen/anim/src/biped_large/jump.rs b/voxygen/anim/src/biped_large/jump.rs index 20021b1f3f..023db4fe62 100644 --- a/voxygen/anim/src/biped_large/jump.rs +++ b/voxygen/anim/src/biped_large/jump.rs @@ -72,7 +72,7 @@ impl Animation for JumpAnimation { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::HammerSimple) => { + Some(ToolKind::HammerSimple) | Some(ToolKind::AxeSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index dcb42983e7..250479dfcd 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -193,7 +193,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { use comp::biped_large::{BodyType::*, Species::*}; Self { head: match (body.species, body.body_type) { - (Ogre, Male) => (3.0, 9.0), + (Ogre, Male) => (5.0, 6.0), (Ogre, Female) => (1.0, 7.5), (Cyclops, _) => (4.5, 7.5), (Wendigo, _) => (3.0, 7.5), diff --git a/voxygen/anim/src/biped_large/run.rs b/voxygen/anim/src/biped_large/run.rs index 0938d31557..931258474c 100644 --- a/voxygen/anim/src/biped_large/run.rs +++ b/voxygen/anim/src/biped_large/run.rs @@ -309,7 +309,7 @@ impl Animation for RunAnimation { next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::HammerSimple) => { + Some(ToolKind::HammerSimple) | Some(ToolKind::AxeSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); @@ -327,7 +327,7 @@ impl Animation for RunAnimation { s_a.shoulder.2 - foothorir * 1.5, ); next.shoulder_l.orientation = - Quaternion::rotation_x(0.6 * speednorm + (footrotr * -0.8) * speednorm) + Quaternion::rotation_x(0.6 * speednormlow + (footrotr * -0.8) * speednorm) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(0.0); @@ -337,7 +337,7 @@ impl Animation for RunAnimation { s_a.shoulder.2 - foothoril * 1.5, ); next.shoulder_r.orientation = - Quaternion::rotation_x(0.6 * speednorm + (footrotl * -0.8) * speednorm) + Quaternion::rotation_x(0.6 * speednormlow + (footrotl * -0.8) * speednorm) * Quaternion::rotation_y(0.0); next.hand_l.position = Vec3::new( diff --git a/voxygen/anim/src/biped_large/shoot.rs b/voxygen/anim/src/biped_large/shoot.rs index 511dcadc2a..a4b5c94976 100644 --- a/voxygen/anim/src/biped_large/shoot.rs +++ b/voxygen/anim/src/biped_large/shoot.rs @@ -55,11 +55,13 @@ impl Animation for ShootAnimation { let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; let footrotl = (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) - * ((acc_vel * lab as f32 + PI * 1.4).sin()); + * ((acc_vel * lab as f32 + PI * 1.4).sin()) + * speednorm; let footrotr = (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) - * ((acc_vel * lab as f32 + PI * 0.4).sin()); + * ((acc_vel * lab as f32 + PI * 0.4).sin()) + * speednorm; next.shoulder_l.position = Vec3::new( -s_a.shoulder.0, @@ -139,9 +141,8 @@ impl Animation for ShootAnimation { s_a.shoulder.1, s_a.shoulder.2 - foothoril * 1.0, ); - next.shoulder_r.orientation = Quaternion::rotation_x( - move1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm, - ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2)); }, Some(ToolKind::BowSimple) => { let (move1base, move2base, move3) = match stage_section { @@ -177,18 +178,16 @@ impl Animation for ShootAnimation { s_a.shoulder.1, s_a.shoulder.2 - foothorir * 1.0, ); - next.shoulder_l.orientation = Quaternion::rotation_x( - move1 * 0.8 + 1.2 * speednorm + (footrotr * -0.2) * speednorm, - ); + next.shoulder_l.orientation = + Quaternion::rotation_x(move1 * 0.8 + 1.2 * speednorm + (footrotr * -0.2)); next.shoulder_r.position = Vec3::new( s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2 - foothoril * 1.0, ); - next.shoulder_r.orientation = Quaternion::rotation_x( - move1 * 0.8 + 1.2 * speednorm + (footrotl * -0.2) * speednorm, - ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.8 + 1.2 * speednorm + (footrotl * -0.2)); }, Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { let (move1base, _move2base, move3) = match stage_section { diff --git a/voxygen/anim/src/biped_large/wield.rs b/voxygen/anim/src/biped_large/wield.rs index 8a4ddc0f3f..b7bf517c64 100644 --- a/voxygen/anim/src/biped_large/wield.rs +++ b/voxygen/anim/src/biped_large/wield.rs @@ -196,7 +196,7 @@ impl Animation for WieldAnimation { * Quaternion::rotation_y(1.0) * Quaternion::rotation_z(-0.3); }, - Some(ToolKind::HammerSimple) => { + Some(ToolKind::HammerSimple) | Some(ToolKind::AxeSimple) => { next.control_l.position = Vec3::new(-1.0, 2.0, 12.0); next.control_r.position = Vec3::new(1.0, 2.0, -2.0); diff --git a/voxygen/anim/src/character/alpha.rs b/voxygen/anim/src/character/alpha.rs index 3e7ab18a17..fe776d6c1d 100644 --- a/voxygen/anim/src/character/alpha.rs +++ b/voxygen/anim/src/character/alpha.rs @@ -42,7 +42,7 @@ impl Animation for AlphaAnimation { next.torso.position = Vec3::new(0.0, 0.0, 0.1) * s_a.scaler; next.torso.orientation = Quaternion::rotation_z(0.0); match active_tool_kind { - Some(ToolKind::Sword) => { + Some(ToolKind::Sword) | Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); @@ -116,7 +116,7 @@ impl Animation for AlphaAnimation { next.head.orientation = Quaternion::rotation_z(0.0 + move1 * -1.5 + move2 * 2.5 + move3 * -1.0); }, - Some(ToolKind::Hammer) => { + Some(ToolKind::Hammer) | Some(ToolKind::HammerSimple) => { let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), diff --git a/voxygen/anim/src/character/wield.rs b/voxygen/anim/src/character/wield.rs index 733ea18dd8..5082ab4866 100644 --- a/voxygen/anim/src/character/wield.rs +++ b/voxygen/anim/src/character/wield.rs @@ -143,7 +143,7 @@ impl Animation for WieldAnimation { next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); } match active_tool_kind { - Some(ToolKind::Sword) => { + Some(ToolKind::Sword) | Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); diff --git a/voxygen/anim/src/golem/mod.rs b/voxygen/anim/src/golem/mod.rs index 93703771ad..919cda89cf 100644 --- a/voxygen/anim/src/golem/mod.rs +++ b/voxygen/anim/src/golem/mod.rs @@ -120,42 +120,52 @@ impl<'a> From<&'a Body> for SkeletonAttr { head: match (body.species, body.body_type) { (StoneGolem, _) => (0.0, 2.0), (Treant, _) => (18.0, -8.0), + (ClayGolem, _) => (2.0, 9.0), }, jaw: match (body.species, body.body_type) { (StoneGolem, _) => (0.0, 0.0), (Treant, _) => (-6.5, -1.0), + (ClayGolem, _) => (0.0, 0.0), }, upper_torso: match (body.species, body.body_type) { (StoneGolem, _) => (0.0, 34.5), (Treant, _) => (0.0, 28.5), + (ClayGolem, _) => (0.0, 26.5), }, lower_torso: match (body.species, body.body_type) { (StoneGolem, _) => (0.0, -10.5), (Treant, _) => (0.0, -10.5), + (ClayGolem, _) => (0.0, -4.5), }, shoulder: match (body.species, body.body_type) { (StoneGolem, _) => (8.0, -1.5, 4.0), (Treant, _) => (8.0, 4.5, -3.0), + (ClayGolem, _) => (8.0, 4.5, 3.0), }, hand: match (body.species, body.body_type) { (StoneGolem, _) => (12.5, -1.0, -7.0), (Treant, _) => (8.5, -1.0, -7.0), + (ClayGolem, _) => (8.5, -1.0, -7.0), }, leg: match (body.species, body.body_type) { (StoneGolem, _) => (4.0, 0.0, -3.5), (Treant, _) => (2.0, 9.5, -1.0), + (ClayGolem, _) => (1.0, 0.5, -6.0), }, foot: match (body.species, body.body_type) { (StoneGolem, _) => (3.5, 0.5, -9.5), (Treant, _) => (3.5, -5.0, -8.5), + (ClayGolem, _) => (3.5, -1.0, -8.5), }, scaler: match (body.species, body.body_type) { (StoneGolem, _) => 1.8, (Treant, _) => 1.8, + (ClayGolem, _) => 1.8, }, tempo: match (body.species, body.body_type) { (StoneGolem, _) => 1.0, (Treant, _) => 1.0, + (ClayGolem, _) => 1.0, }, } } diff --git a/voxygen/src/hud/util.rs b/voxygen/src/hud/util.rs index 8f3981e3a5..0056771305 100644 --- a/voxygen/src/hud/util.rs +++ b/voxygen/src/hud/util.rs @@ -157,6 +157,7 @@ fn tool_desc(tool: &Tool, components: &[Item], msm: &MaterialStatManifest, desc: ToolKind::HammerSimple => "HammerSimple", ToolKind::SwordSimple => "SwordSimple", ToolKind::StaffSimple => "StaffSimple", + ToolKind::AxeSimple => "AxeSimple", ToolKind::BowSimple => "BowSimple", ToolKind::Unique(_) => "Unique", ToolKind::Debug => "Debug", diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index fcdbd9fdb8..99304d69ad 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -3653,8 +3653,9 @@ impl FigureMgr { active_tool_kind, second_tool_kind, time, - vel.0.magnitude(), + vel.0, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index bccec64ed9..cd9ef17fca 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -942,10 +942,10 @@ impl Floor { .with_body(comp::Body::Golem( comp::golem::Body::random_with( dynamic_rng, - &comp::golem::Species::StoneGolem, + &comp::golem::Species::ClayGolem, ), )) - .with_name("Stonework Defender".to_string()) + .with_name("Clay Golem".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 4 => vec![ From 51bc74b2a5defb0a60e4c06dd8766f007ba4d0ae Mon Sep 17 00:00:00 2001 From: jshipsey Date: Tue, 23 Feb 2021 10:19:57 -0500 Subject: [PATCH 31/36] visual weapon variation, adjust minotaur dash, keyframed golem quake --- assets/common/abilities/axesimple/dash.ron | 2 +- .../common/abilities/staff/fireshockwave.ron | 2 +- .../unique/stonegolemfist/shockwave.ron | 10 +- .../voxel/biped_small_weapon_manifest.ron | 60 +++++++-- .../voxygen/voxel/biped_weapon_manifest.ron | 122 +++++++++--------- .../weapon/{ => biped_small}/bow/adlet.vox | 0 .../voxel/weapon/biped_small/bow/haniwa.vox | 3 + .../voxel/weapon/biped_small/bow/myrmidon.vox | 3 + .../voxel/weapon/biped_small/bow/sahagin.vox | 3 + .../weapon/{ => biped_small}/spear/adlet.vox | 0 .../voxel/weapon/biped_small/spear/haniwa.vox | 3 + .../weapon/biped_small/spear/myrmidon.vox | 3 + .../{ => biped_small}/spear/sahagin.vox | 0 .../weapon/{ => biped_small}/staff/gnoll.vox | 0 .../weapon/biped_small/staff/sahagin.vox | 3 + common/src/states/shockwave.rs | 2 +- common/src/states/utils.rs | 13 +- voxygen/anim/src/biped_large/dash.rs | 20 +-- voxygen/anim/src/golem/idle.rs | 15 +-- voxygen/anim/src/golem/run.rs | 12 +- voxygen/anim/src/golem/shockwave.rs | 82 +++++------- voxygen/anim/src/quadruped_small/mod.rs | 4 +- voxygen/src/scene/figure/mod.rs | 19 ++- 23 files changed, 217 insertions(+), 164 deletions(-) rename assets/voxygen/voxel/weapon/{ => biped_small}/bow/adlet.vox (100%) create mode 100644 assets/voxygen/voxel/weapon/biped_small/bow/haniwa.vox create mode 100644 assets/voxygen/voxel/weapon/biped_small/bow/myrmidon.vox create mode 100644 assets/voxygen/voxel/weapon/biped_small/bow/sahagin.vox rename assets/voxygen/voxel/weapon/{ => biped_small}/spear/adlet.vox (100%) create mode 100644 assets/voxygen/voxel/weapon/biped_small/spear/haniwa.vox create mode 100644 assets/voxygen/voxel/weapon/biped_small/spear/myrmidon.vox rename assets/voxygen/voxel/weapon/{ => biped_small}/spear/sahagin.vox (100%) rename assets/voxygen/voxel/weapon/{ => biped_small}/staff/gnoll.vox (100%) create mode 100644 assets/voxygen/voxel/weapon/biped_small/staff/sahagin.vox diff --git a/assets/common/abilities/axesimple/dash.ron b/assets/common/abilities/axesimple/dash.ron index b034b17b0c..425bb21a9e 100644 --- a/assets/common/abilities/axesimple/dash.ron +++ b/assets/common/abilities/axesimple/dash.ron @@ -6,7 +6,7 @@ DashMelee( scaled_poise_damage: 0, base_knockback: 8.0, scaled_knockback: 7.0, - range: 3.0, + range: 2.0, angle: 15.0, energy_drain: 0, forward_speed: 3.0, diff --git a/assets/common/abilities/staff/fireshockwave.ron b/assets/common/abilities/staff/fireshockwave.ron index 962c821700..e7e1f67a0f 100644 --- a/assets/common/abilities/staff/fireshockwave.ron +++ b/assets/common/abilities/staff/fireshockwave.ron @@ -2,7 +2,7 @@ Shockwave( energy_cost: 600, buildup_duration: 0.7, swing_duration: 0.1, - recover_duration: 0.3, + recover_duration: 0.2, damage: 200, poise_damage: 0, knockback: ( strength: 25.0, direction: Away), diff --git a/assets/common/abilities/unique/stonegolemfist/shockwave.ron b/assets/common/abilities/unique/stonegolemfist/shockwave.ron index e17d266d1a..d6f315fdab 100644 --- a/assets/common/abilities/unique/stonegolemfist/shockwave.ron +++ b/assets/common/abilities/unique/stonegolemfist/shockwave.ron @@ -1,14 +1,14 @@ Shockwave( energy_cost: 0, - buildup_duration: 0.5, - swing_duration: 0.2, - recover_duration: 0.8, + buildup_duration: 1.5, + swing_duration: 0.15, + recover_duration: 1.8, damage: 500, poise_damage: 0, knockback: (strength: 40.0, direction: TowardsUp), - shockwave_angle: 90.0, + shockwave_angle: 100.0, shockwave_vertical_angle: 90.0, - shockwave_speed: 50.0, + shockwave_speed: 65.0, shockwave_duration: 1.0, requires_ground: true, move_efficiency: 0.05, diff --git a/assets/voxygen/voxel/biped_small_weapon_manifest.ron b/assets/voxygen/voxel/biped_small_weapon_manifest.ron index 6343b4d50f..a2ab75963e 100644 --- a/assets/voxygen/voxel/biped_small_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_small_weapon_manifest.ron @@ -1,18 +1,62 @@ ({ - "common.items.npc_weapons.spear.wooden_spear": ( - vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + "common.items.npc_weapons.biped_small.adlet.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.adlet", (-1.5, -3.0, -5.0)), color: None ), - "common.items.weapon.spear.adlet": ( - vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)), + "common.items.npc_weapons.biped_small.adlet.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), color: None ), - "common.items.npc_weapons.bow.adlet": ( - vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + "common.items.npc_weapons.biped_small.adlet.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.adlet", (-0.5, -3.0, -4.0)), color: None ), - "common.items.npc_weapons.staff.gnoll": ( - vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + "common.items.npc_weapons.biped_small.gnarling.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.adlet", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.biped_small.gnarling.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.gnarling.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.adlet", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.sahagin", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.sahagin", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.haniwa", (-0.5, -4.5, -10.5)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.haniwa", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.myrmidon", (-0.5, -5.0, -10.5)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.myrmidon", (-0.5, -2.0, -4.0)), color: None ), }) diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron index abdf5c61b2..0be85c1c27 100644 --- a/assets/voxygen/voxel/biped_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -758,69 +758,69 @@ vox_spec: ("weapon.axe.minotaur_axe", (-2.5, -9.0, -6.0)), color: None ), - //BIPEDSMALL - "common.items.npc_weapons.biped_small.gnarling.wooden_spear": ( - vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), - color: None - ), - "common.items.npc_weapons.biped_small.gnarling.adlet_bow": ( - vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), - color: None - ), - "common.items.npc_weapons.biped_small.gnarling.gnoll_staff": ( - vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.adlet.wooden_spear": ( - vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), - color: None - ), - "common.items.npc_weapons.biped_small.adlet.adlet_bow": ( - vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), - color: None - ), - "common.items.npc_weapons.biped_small.adlet.gnoll_staff": ( - vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.sahagin.wooden_spear": ( - vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), - color: None - ), - "common.items.npc_weapons.biped_small.sahagin.adlet_bow": ( - vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), - color: None - ), - "common.items.npc_weapons.biped_small.sahagin.gnoll_staff": ( - vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.haniwa.wooden_spear": ( - vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), - color: None - ), - "common.items.npc_weapons.biped_small.haniwa.adlet_bow": ( - vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), - color: None - ), - "common.items.npc_weapons.biped_small.haniwa.gnoll_staff": ( - vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.myrmidon.wooden_spear": ( - vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), - color: None - ), - "common.items.npc_weapons.biped_small.myrmidon.adlet_bow": ( - vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), - color: None - ), - "common.items.npc_weapons.biped_small.myrmidon.gnoll_staff": ( - vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), - color: None - ), "common.items.npc_weapons.hammer.yeti_hammer": ( vox_spec: ("weapon.hammer.2hhammer_yeti", (-7.5, -7.0, -7.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)), + color: None + ), + "common.items.npc_weapons.biped_small.adlet.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.adlet.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.adlet", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.gnarling.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.adlet", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.biped_small.gnarling.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.gnarling.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.adlet", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.sahagin", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.sahagin", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.haniwa", (-0.5, -4.5, -10.5)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.haniwa", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.myrmidon", (-0.5, -5.0, -10.5)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.myrmidon", (-0.5, -2.0, -4.0)), + color: None + ), }) diff --git a/assets/voxygen/voxel/weapon/bow/adlet.vox b/assets/voxygen/voxel/weapon/biped_small/bow/adlet.vox similarity index 100% rename from assets/voxygen/voxel/weapon/bow/adlet.vox rename to assets/voxygen/voxel/weapon/biped_small/bow/adlet.vox diff --git a/assets/voxygen/voxel/weapon/biped_small/bow/haniwa.vox b/assets/voxygen/voxel/weapon/biped_small/bow/haniwa.vox new file mode 100644 index 0000000000..ab4eb277cf --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/bow/haniwa.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efd4f043a8d15c315102bac1a7266a403cd692390d0ca1214eeedbf7791e5fab +size 1392 diff --git a/assets/voxygen/voxel/weapon/biped_small/bow/myrmidon.vox b/assets/voxygen/voxel/weapon/biped_small/bow/myrmidon.vox new file mode 100644 index 0000000000..f745ea163f --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/bow/myrmidon.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:deae7f15861e22ae34e05b1a0f9827dcdac4eab0e776add388abab489bf4187e +size 1372 diff --git a/assets/voxygen/voxel/weapon/biped_small/bow/sahagin.vox b/assets/voxygen/voxel/weapon/biped_small/bow/sahagin.vox new file mode 100644 index 0000000000..fbfc69f519 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/bow/sahagin.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fb76f44481d3dbecbbd2a9c74e98850699368e58807e1fbe2f9e67c921a8c9b +size 1356 diff --git a/assets/voxygen/voxel/weapon/spear/adlet.vox b/assets/voxygen/voxel/weapon/biped_small/spear/adlet.vox similarity index 100% rename from assets/voxygen/voxel/weapon/spear/adlet.vox rename to assets/voxygen/voxel/weapon/biped_small/spear/adlet.vox diff --git a/assets/voxygen/voxel/weapon/biped_small/spear/haniwa.vox b/assets/voxygen/voxel/weapon/biped_small/spear/haniwa.vox new file mode 100644 index 0000000000..5a304c7947 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/spear/haniwa.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6dbd0b99fee569fd7d8226db102143fa3e6477a2144741540435d0ac74db974 +size 1352 diff --git a/assets/voxygen/voxel/weapon/biped_small/spear/myrmidon.vox b/assets/voxygen/voxel/weapon/biped_small/spear/myrmidon.vox new file mode 100644 index 0000000000..f33aa0ef48 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/spear/myrmidon.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3c906a2c6240593003108d6594ec6c3c564bb198009954a840b168518eb5380 +size 1340 diff --git a/assets/voxygen/voxel/weapon/spear/sahagin.vox b/assets/voxygen/voxel/weapon/biped_small/spear/sahagin.vox similarity index 100% rename from assets/voxygen/voxel/weapon/spear/sahagin.vox rename to assets/voxygen/voxel/weapon/biped_small/spear/sahagin.vox diff --git a/assets/voxygen/voxel/weapon/staff/gnoll.vox b/assets/voxygen/voxel/weapon/biped_small/staff/gnoll.vox similarity index 100% rename from assets/voxygen/voxel/weapon/staff/gnoll.vox rename to assets/voxygen/voxel/weapon/biped_small/staff/gnoll.vox diff --git a/assets/voxygen/voxel/weapon/biped_small/staff/sahagin.vox b/assets/voxygen/voxel/weapon/biped_small/staff/sahagin.vox new file mode 100644 index 0000000000..ea9227af42 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/staff/sahagin.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:148e3b6c9f16281d557663304e921b86ae9699917b163798b48f8bf5d2c6dc88 +size 1332 diff --git a/common/src/states/shockwave.rs b/common/src/states/shockwave.rs index 42d80b0216..8cf88ef4e6 100644 --- a/common/src/states/shockwave.rs +++ b/common/src/states/shockwave.rs @@ -147,7 +147,7 @@ impl CharacterBehavior for Data { } }, StageSection::Recover => { - if self.timer < self.static_data.swing_duration { + if self.timer < self.static_data.recover_duration { // Recovers update.character = CharacterState::Shockwave(Data { timer: self diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 532668e59b..6223f5ebc6 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -3,7 +3,7 @@ use crate::{ biped_large, biped_small, inventory::slot::EquipSlot, item::{Hands, ItemKind, Tool, ToolKind}, - quadruped_low, quadruped_medium, + quadruped_low, quadruped_medium, quadruped_small, skills::Skill, theropod, Body, CharacterAbility, CharacterState, LoadoutManip, StateUpdate, }, @@ -38,7 +38,16 @@ impl Body { pub fn base_accel(&self) -> f32 { match self { Body::Humanoid(_) => 100.0, - Body::QuadrupedSmall(_) => 125.0, + Body::QuadrupedSmall(body) => match body.species { + quadruped_small::Species::Turtle => 30.0, + quadruped_small::Species::Axolotl => 70.0, + quadruped_small::Species::Pig => 70.0, + quadruped_small::Species::Sheep => 70.0, + quadruped_small::Species::Cat => 70.0, + quadruped_small::Species::Truffler => 70.0, + quadruped_small::Species::Fungome => 70.0, + _ => 125.0, + }, Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { quadruped_medium::Species::Grolgar => 110.0, quadruped_medium::Species::Saber => 180.0, diff --git a/voxygen/anim/src/biped_large/dash.rs b/voxygen/anim/src/biped_large/dash.rs index 7c7ba9b28c..4de15fdb23 100644 --- a/voxygen/anim/src/biped_large/dash.rs +++ b/voxygen/anim/src/biped_large/dash.rs @@ -111,32 +111,32 @@ impl Animation for DashAnimation { * Quaternion::rotation_z(-move3 * -1.5); }, Some(ToolKind::AxeSimple) => { - next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move3 * -10.0); + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move3 * 3.0); next.control_r.position = Vec3::new(1.0, 2.0, -2.0); next.control.position = Vec3::new( - 4.0 + move1 * -3.0 + move3 * -8.0, - (s_a.grip / 1.0) + move1 * -1.0 + move3 * 12.0, - (-s_a.grip / 0.8) + move1 * 2.0 + move3 * -6.0, + 4.0 + move1 * -3.0 + move3 * -5.0, + (s_a.grip / 1.0) + move1 * -1.0 + move3 * 1.0 + footrotl * 2.0, + (-s_a.grip / 0.8) + move1 * 2.0 + move3 * -3.0, ); next.head.orientation = Quaternion::rotation_x(move1 * -0.5 + move3 * 0.5) * Quaternion::rotation_z(move1 * 0.3 + move3 * 0.3); next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.4 + move3 * 0.9) * Quaternion::rotation_z(move1 * 0.6 + move3 * -1.5); next.lower_torso.orientation = Quaternion::rotation_y(move1 * -0.2 + move3 * -0.1) - * Quaternion::rotation_x(move1 * 0.4 + move3 * -0.7) + * Quaternion::rotation_x(move1 * 0.4 + move3 * -0.7 + footrotr * 0.1) * Quaternion::rotation_z(move1 * -0.6 + move3 * 1.6); - next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move3 * 0.8) + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move3 * 0.3) * Quaternion::rotation_y(move1 * 0.7); - next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move3 * 0.8) + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move3 * -0.2) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(0.0); next.control.orientation = - Quaternion::rotation_x(-1.0 + move1 * -0.2 + move3 * -1.1) - * Quaternion::rotation_y(-1.8 + move1 * -0.2 + move3 * 1.5) - * Quaternion::rotation_z(move1 * -0.8 + move3 * -1.5); + Quaternion::rotation_x(-1.0 + move1 * -0.2 + move3 * -0.2) + * Quaternion::rotation_y(-1.8 + move1 * -0.2 + move3 * -0.2) + * Quaternion::rotation_z(move1 * -0.8 + move3 * -0.1); }, _ => {}, } diff --git a/voxygen/anim/src/golem/idle.rs b/voxygen/anim/src/golem/idle.rs index 5f8744a771..98d2d82ce3 100644 --- a/voxygen/anim/src/golem/idle.rs +++ b/voxygen/anim/src/golem/idle.rs @@ -57,38 +57,31 @@ impl Animation for IdleAnimation { next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + breathe * 0.5) * s_a.scaler / 8.0; - next.upper_torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1 + breathe * -0.2); - next.lower_torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); + next.shoulder_l.orientation = Quaternion::rotation_x(-0.2); next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); + next.shoulder_r.orientation = Quaternion::rotation_x(-0.2); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + breathe * 0.6); - next.hand_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.2); + next.hand_l.orientation = Quaternion::rotation_x(0.2); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + breathe * 0.6); - next.hand_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.2); + next.hand_r.orientation = Quaternion::rotation_x(0.2); next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + breathe * -0.2) * 1.02; - next.leg_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + breathe * -0.2) * 1.02; - next.leg_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2 + breathe * -0.2); - next.foot_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2 + breathe * -0.2); - next.foot_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.torso.position = Vec3::new(0.0, 0.0, 0.0); - next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next } } diff --git a/voxygen/anim/src/golem/run.rs b/voxygen/anim/src/golem/run.rs index 1bd3c46881..7c584c8dc6 100644 --- a/voxygen/anim/src/golem/run.rs +++ b/voxygen/anim/src/golem/run.rs @@ -92,22 +92,22 @@ impl Animation for RunAnimation { next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_l.orientation = Quaternion::rotation_z(footrotl * 0.07) * Quaternion::rotation_y(0.15) - * Quaternion::rotation_x(footrotl * -0.25); + * Quaternion::rotation_x(-0.2 + footrotl * -0.25); next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_r.orientation = Quaternion::rotation_z(footrotr * -0.07) * Quaternion::rotation_y(-0.15 * speednorm) - * Quaternion::rotation_x(footrotr * -0.25); + * Quaternion::rotation_x(-0.2 + footrotr * -0.25); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); next.hand_l.orientation = Quaternion::rotation_x(0.3 + footrotl * -0.06) - * Quaternion::rotation_y(0.1) - * Quaternion::rotation_z(-0.35 + footrotl * -0.1); + * Quaternion::rotation_y(0.1 * speednorm) + * Quaternion::rotation_z(-0.35 * speednorm + footrotl * -0.1); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); next.hand_r.orientation = Quaternion::rotation_x(0.3 + footrotr * -0.06) - * Quaternion::rotation_y(-0.1) - * Quaternion::rotation_z(0.35 + footrotr * 0.1); + * Quaternion::rotation_y(-0.1 * speednorm) + * Quaternion::rotation_z(0.35 * speednorm + footrotr * 0.1); next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2) * 1.02; next.leg_l.orientation = Quaternion::rotation_x(footrotl * 0.3) diff --git a/voxygen/anim/src/golem/shockwave.rs b/voxygen/anim/src/golem/shockwave.rs index eda067608a..5f5ef09bee 100644 --- a/voxygen/anim/src/golem/shockwave.rs +++ b/voxygen/anim/src/golem/shockwave.rs @@ -2,12 +2,13 @@ use super::{ super::{vek::*, Animation}, GolemSkeleton, SkeletonAttr, }; +use common::states::utils::StageSection; use std::f32::consts::PI; pub struct ShockwaveAnimation; impl Animation for ShockwaveAnimation { - type Dependency = (f32, f64); + type Dependency = (Option, f32, f64); type Skeleton = GolemSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,86 +18,61 @@ impl Animation for ShockwaveAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (velocity, _global_time): Self::Dependency, + (stage_section, velocity, _global_time): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let lab = 1.0; - let breathe = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); - let twist = anim_time as f32 * lab as f32 * 2.5; + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), + Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(2.0)), + _ => (0.0, 0.0, 0.0), + }; + + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; - let slower = (((1.0) - / (0.00001 - + 0.9999 * ((anim_time as f32 * lab as f32 * 2.0 - 0.5 * PI).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 2.0 - 0.5 * PI).sin()) - + 1.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = - Quaternion::rotation_z((-twist * 2.0).max(-PI)) * Quaternion::rotation_x(0.0); + next.head.orientation = Quaternion::rotation_z(move1 * -PI); - next.upper_torso.position = Vec3::new( - 0.0, - s_a.upper_torso.0, - s_a.upper_torso.1 + slower * -3.0 + breathe * 1.0, - ) * s_a.scaler - / 8.0; - next.upper_torso.orientation = - Quaternion::rotation_z((twist * 2.0).min(PI)) * Quaternion::rotation_x(0.0); + next.upper_torso.position = + Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + move2 * -5.0) * s_a.scaler / 8.0; + next.upper_torso.orientation = Quaternion::rotation_z(move1 * -PI); next.lower_torso.position = - Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1 + slower * 1.0); - next.lower_torso.orientation = - Quaternion::rotation_z((-twist * 2.0).max(-PI)) * Quaternion::rotation_x(0.0); + Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1 + move2 * 2.0); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * PI); next.shoulder_l.position = Vec3::new( -s_a.shoulder.0 - 2.0, s_a.shoulder.1, - s_a.shoulder.2 - slower * 1.0, + s_a.shoulder.2 + move2 * -1.0, ); - next.shoulder_l.orientation = Quaternion::rotation_y(0.6 + slower * -0.3); + next.shoulder_l.orientation = Quaternion::rotation_y(move1 * 1.0 + move2 * -1.2); next.shoulder_r.position = Vec3::new( s_a.shoulder.0 + 2.0, s_a.shoulder.1, - s_a.shoulder.2 - slower * 1.0, + s_a.shoulder.2 + move2 * -1.0, ); - next.shoulder_r.orientation = Quaternion::rotation_y(-0.6 + slower * 0.3); + next.shoulder_r.orientation = Quaternion::rotation_y(move1 * -1.0 + move2 * 1.2); - next.hand_l.position = Vec3::new( - -s_a.hand.0 - 1.0, - s_a.hand.1, - s_a.hand.2 - slower * 0.5 + breathe * -1.0, - ); - next.hand_l.orientation = Quaternion::rotation_y(-0.6 + slower * 0.3); + next.hand_l.orientation = Quaternion::rotation_y(move1 * -1.0 + move2 * 1.2); - next.hand_r.position = Vec3::new( - s_a.hand.0 + 1.0, - s_a.hand.1, - s_a.hand.2 - slower * 0.5 + breathe * -1.0, - ); next.hand_r.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_y(0.6 + slower * -0.3); + Quaternion::rotation_z(0.0) * Quaternion::rotation_y(move1 * 1.0 + move2 * -1.2); if velocity < 0.5 { - next.leg_l.position = - Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + slower * -0.5) * 1.02; + next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + move2 * 2.0) * 1.02; - next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + slower * -0.5) * 1.02; + next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + move2 * 2.0) * 1.02; - next.foot_l.position = Vec3::new( - -s_a.foot.0, - s_a.foot.1, - s_a.foot.2 + slower * 2.5 + breathe * -1.0, - ); + next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2 + move2); - next.foot_r.position = Vec3::new( - s_a.foot.0, - s_a.foot.1, - s_a.foot.2 + slower * 2.5 + breathe * -1.0, - ); + next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2 + move2); } else { } next diff --git a/voxygen/anim/src/quadruped_small/mod.rs b/voxygen/anim/src/quadruped_small/mod.rs index 2c5637bf2f..322d5d4ccc 100644 --- a/voxygen/anim/src/quadruped_small/mod.rs +++ b/voxygen/anim/src/quadruped_small/mod.rs @@ -281,7 +281,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rat, _) => (1.0), (Axolotl, _) => (1.2), (Gecko, _) => (1.1), - (Turtle, _) => (0.9), + (Turtle, _) => (3.0), (Squirrel, _) => (1.15), (Porcupine, _) => (1.2), (Beaver, _) => (1.2), @@ -357,7 +357,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Frog, _) => (0.7), (Axolotl, _) => (0.8), (Gecko, _) => (0.8), - (Turtle, _) => (0.7), + (Turtle, _) => (0.5), (Fungome, _) => (0.7), (Hare, _) => (1.2), _ => (1.0), diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 99304d69ad..0cf66bbbbc 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -3795,11 +3795,24 @@ impl FigureMgr { skeleton_attr, ) }, - CharacterState::Shockwave(_) => { + CharacterState::Shockwave(s) => { + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Swing => { + stage_time / s.static_data.swing_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + }; anim::golem::ShockwaveAnimation::update_skeleton( &target_base, - (vel.0.magnitude(), time), - state.state_time, + (Some(s.stage_section), vel.0.magnitude(), time), + stage_progress, &mut state_animation_rate, skeleton_attr, ) From 17112926e7feafa7a3b8b743e994846ae62eeb8c Mon Sep 17 00:00:00 2001 From: Snowram Date: Thu, 25 Feb 2021 00:12:31 +0100 Subject: [PATCH 32/36] Adds harvester npc --- .../npc_weapons/hammer/harvester_scythe.ron | 18 +++++ assets/common/npc_names.ron | 4 ++ .../voxel/biped_large_central_manifest.ron | 52 ++++++++++++++ .../voxel/biped_large_lateral_manifest.ron | 68 +++++++++++++++++++ .../voxygen/voxel/biped_weapon_manifest.ron | 6 +- .../voxel/npc/harvester/male/foot_l.vox | 3 + .../voxel/npc/harvester/male/foot_r.vox | 3 + .../voxel/npc/harvester/male/hand_l.vox | 3 + .../voxel/npc/harvester/male/hand_r.vox | 3 + .../voxygen/voxel/npc/harvester/male/head.vox | 3 + .../voxygen/voxel/npc/harvester/male/jaw.vox | 3 + .../voxel/npc/harvester/male/leg_l.vox | 3 + .../voxel/npc/harvester/male/leg_r.vox | 3 + .../voxel/npc/harvester/male/shoulder_l.vox | 3 + .../voxel/npc/harvester/male/shoulder_r.vox | 3 + .../voxel/npc/harvester/male/torso_lower.vox | 3 + .../voxel/npc/harvester/male/torso_upper.vox | 3 + .../voxel/weapon/axe/2haxe_harvester.vox | 3 + .../{minotaur_axe.vox => 2haxe_minotaur.vox} | 0 .../weapon/hammer/2hhammer_harvester.vox | 3 + common/src/comp/body.rs | 2 + common/src/comp/body/biped_large.rs | 6 +- common/src/comp/inventory/loadout_builder.rs | 5 ++ voxygen/anim/src/biped_large/mod.rs | 10 +++ 24 files changed, 211 insertions(+), 2 deletions(-) create mode 100644 assets/common/items/npc_weapons/hammer/harvester_scythe.ron create mode 100644 assets/voxygen/voxel/npc/harvester/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/head.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/shoulder_l.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/shoulder_r.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/torso_lower.vox create mode 100644 assets/voxygen/voxel/npc/harvester/male/torso_upper.vox create mode 100644 assets/voxygen/voxel/weapon/axe/2haxe_harvester.vox rename assets/voxygen/voxel/weapon/axe/{minotaur_axe.vox => 2haxe_minotaur.vox} (100%) create mode 100644 assets/voxygen/voxel/weapon/hammer/2hhammer_harvester.vox 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..ceadedce98 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66c62818da575ee679d8b412020acd0712db4ead0d536fbd859ed136ccb96c45 +size 1520 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..d8cb72195e --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29b5ebd1f01b0a81bdc7e6a9daff04733bb458484764f3ded6d24e69498c8674 +size 1520 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..3c5347d95b --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92288a2ef56814da9561017357e842fac00a81bc7cacb701c44374544877e235 +size 1532 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..f885947f16 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b70eadf22fb6ccdd0af18bd4651b20e2af256a8d0f8453d77d1619bdcc546ec1 +size 1528 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..012839b8c0 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f823d38356d788cfbc48e55149240ebe2ee701113439165b0ecf36e8d621ed14 +size 4456 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..8e07bb596b --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44df94e3b9d45a47cc6070f29f768a0ec61b091e31770063b69543650da1d76f +size 1432 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..29d6e42117 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d333126dc845dd4be5e998b796014f031cdf6a96fe9c7e40f6d019073668955 +size 1344 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..c70e33118b --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89302f1e2b333840284ab72803046896d25635cdb17fa931a8ae4e188b922626 +size 1344 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..9a652f07e9 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f28ee288aa9569e16ab618c510a09ac2f19cbd53258d29a1e670e59afc150d9 +size 1536 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..aea540cf10 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b18c8ae695a4de75f9b6bf0f5bb0e237406c93ff4f00032119ed433b54c30efc +size 1536 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..9d55e81964 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1101f6cba8a5f5dd723a4d9fc7e63e98e5c8926febd871a9264623804c413e31 +size 1796 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..d5add8c65c --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:631efe29bed08671214a1e220e0a527ffae85480a0934ce587f2f518c6690f79 +size 3664 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..c907ecb366 --- /dev/null +++ b/assets/voxygen/voxel/weapon/axe/2haxe_harvester.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b596bf9dd399b158bf996e12d75b15846be3adb2d07bb3467131d8dc7d2766b7 +size 1788 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..c907ecb366 --- /dev/null +++ b/assets/voxygen/voxel/weapon/hammer/2hhammer_harvester.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b596bf9dd399b158bf996e12d75b15846be3adb2d07bb3467131d8dc7d2766b7 +size 1788 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), From 0a353576dc9cbb2564feb29cb59bedb1892caab6 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 25 Feb 2021 01:27:55 -0500 Subject: [PATCH 33/36] address comments --- .../unique/stonegolemfist/singlestrike.ron | 2 +- .../voxel/npc/haniwa/male/HaniwaSoldier-7.vox | 3 --- common/src/comp/inventory/item/tool.rs | 2 +- common/src/comp/inventory/loadout_builder.rs | 4 ++-- voxygen/anim/src/biped_large/run.rs | 22 +++++++++---------- voxygen/anim/src/biped_small/alpha.rs | 1 - voxygen/anim/src/biped_small/dash.rs | 1 - voxygen/anim/src/biped_small/run.rs | 1 - voxygen/anim/src/character/leapmelee.rs | 2 -- voxygen/anim/src/golem/run.rs | 4 ++-- voxygen/anim/src/quadruped_medium/run.rs | 4 +--- 11 files changed, 18 insertions(+), 28 deletions(-) delete mode 100644 assets/voxygen/voxel/npc/haniwa/male/HaniwaSoldier-7.vox diff --git a/assets/common/abilities/unique/stonegolemfist/singlestrike.ron b/assets/common/abilities/unique/stonegolemfist/singlestrike.ron index 7b728bc18c..07c68c1aea 100644 --- a/assets/common/abilities/unique/stonegolemfist/singlestrike.ron +++ b/assets/common/abilities/unique/stonegolemfist/singlestrike.ron @@ -2,7 +2,7 @@ ComboMelee( stage_data: [ ( stage: 1, - base_damage: 100, + base_damage: 300, damage_increase: 0, base_poise_damage: 0, poise_damage_increase: 0, diff --git a/assets/voxygen/voxel/npc/haniwa/male/HaniwaSoldier-7.vox b/assets/voxygen/voxel/npc/haniwa/male/HaniwaSoldier-7.vox deleted file mode 100644 index 5a304c7947..0000000000 --- a/assets/voxygen/voxel/npc/haniwa/male/HaniwaSoldier-7.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6dbd0b99fee569fd7d8226db102143fa3e6477a2144741540435d0ac74db974 -size 1352 diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 4be2ed070a..4da97fee69 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -18,7 +18,7 @@ pub enum ToolKind { Sword, Axe, Hammer, - HammerSimple, + HammerSimple, //simple tools utilized by small/large biped variants, to simplify movesets SwordSimple, StaffSimple, BowSimple, diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 7131840b60..f4467f9980 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -333,7 +333,7 @@ impl LoadoutBuilder { "common.items.npc_armor.biped_small.adlet.tail.adlet", ))) .build(), - Some(ToolKind::Spear) | Some(ToolKind::Staff) => LoadoutBuilder::new() + Some(ToolKind::Spear) | Some(ToolKind::StaffSimple) => LoadoutBuilder::new() .active_item(active_item) .head(Some(Item::new_from_asset_expect( "common.items.npc_armor.biped_small.adlet.head.adlet_spear", @@ -378,7 +378,7 @@ impl LoadoutBuilder { "common.items.npc_armor.biped_small.gnarling.tail.gnarling", ))) .build(), - Some(ToolKind::Staff) => LoadoutBuilder::new() + Some(ToolKind::StaffSimple) => LoadoutBuilder::new() .active_item(active_item) .head(Some(Item::new_from_asset_expect( "common.items.npc_armor.biped_small.gnarling.head.gnarling", diff --git a/voxygen/anim/src/biped_large/run.rs b/voxygen/anim/src/biped_large/run.rs index 931258474c..0cb9948bc4 100644 --- a/voxygen/anim/src/biped_large/run.rs +++ b/voxygen/anim/src/biped_large/run.rs @@ -47,9 +47,9 @@ impl Animation for RunAnimation { *rate = 1.0; - let lab = 0.65 * s_a.tempo; //.65 - let speednorm = (speed / 12.0).powf(0.6); //.powf(0.4) - let speednormlow = (speed / 12.0).powf(4.0); //.powf(0.4) + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.6); + let speednormlow = (speed / 12.0).powf(4.0); let footvertl = (acc_vel * lab as f32 + PI * -0.2).sin() * speednorm; let footvertr = (acc_vel * lab as f32 + PI * -1.2).sin() * speednorm; @@ -91,17 +91,17 @@ impl Animation for RunAnimation { let shift4 = speedadjust - PI * 3.0 / 4.0 + speedadjust * PI / 2.0; //FL - let foot1a = (acc_vel * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift1).sin(); //1.5 - let foot1b = (acc_vel * lab as f32 * speedmult + 1.1 + canceler * 0.05 + shift1).sin(); //1.9 + let foot1a = (acc_vel * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift1).sin(); + let foot1b = (acc_vel * lab as f32 * speedmult + 1.1 + canceler * 0.05 + shift1).sin(); //FR - let foot2a = (acc_vel * lab as f32 * speedmult + shift2).sin(); //1.2 - let foot2b = (acc_vel * lab as f32 * speedmult + 1.1 + shift2).sin(); //1.6 + let foot2a = (acc_vel * lab as f32 * speedmult + shift2).sin(); + let foot2b = (acc_vel * lab as f32 * speedmult + 1.1 + shift2).sin(); //BL - let foot3a = (acc_vel * lab as f32 * speedmult + shift3).sin(); //0.0 - let foot3b = (acc_vel * lab as f32 * speedmult + 0.3 + shift3).sin(); //0.4 + let foot3a = (acc_vel * lab as f32 * speedmult + shift3).sin(); + let foot3b = (acc_vel * lab as f32 * speedmult + 0.3 + shift3).sin(); //BR - let foot4a = (acc_vel * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift4).sin(); //0.3 - let foot4b = (acc_vel * lab as f32 * speedmult + 1.57 + canceler * 0.05 + shift4).sin(); //0.7 + let foot4a = (acc_vel * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift4).sin(); + let foot4b = (acc_vel * lab as f32 * speedmult + 1.57 + canceler * 0.05 + shift4).sin(); // let slow = (acc_vel * lab as f32 * speedmult + PI).sin(); diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs index 317a85ac7a..a642217e63 100644 --- a/voxygen/anim/src/biped_small/alpha.rs +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -46,7 +46,6 @@ impl Animation for AlphaAnimation { let mut next = (*skeleton).clone(); let speed = Vec2::::from(velocity).magnitude(); - //let fastacc = (acc_vel * 2.0).sin(); let fast = (anim_time as f32 * 10.0).sin(); let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); diff --git a/voxygen/anim/src/biped_small/dash.rs b/voxygen/anim/src/biped_small/dash.rs index 4f3944ae39..c3e325b9d8 100644 --- a/voxygen/anim/src/biped_small/dash.rs +++ b/voxygen/anim/src/biped_small/dash.rs @@ -46,7 +46,6 @@ impl Animation for DashAnimation { let mut next = (*skeleton).clone(); let speed = Vec2::::from(velocity).magnitude(); - //let fastacc = (acc_vel * 2.0).sin(); let fast = (anim_time as f32 * 10.0).sin(); let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index e35ccc52fe..4f799aad08 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -75,7 +75,6 @@ impl Animation for RunAnimation { } else { 0.0 } * 1.3; - //println!("speednorm {} ",side); let head_look = Vec2::new( ((global_time + anim_time) as f32 / 18.0) diff --git a/voxygen/anim/src/character/leapmelee.rs b/voxygen/anim/src/character/leapmelee.rs index a07fb06b75..0a45c738b3 100644 --- a/voxygen/anim/src/character/leapmelee.rs +++ b/voxygen/anim/src/character/leapmelee.rs @@ -66,8 +66,6 @@ impl Animation for LeapAnimation { * Quaternion::rotation_y(0.0 + move2 * -0.1) * Quaternion::rotation_z(move1 * -0.4 + move2 * -0.2 + move3 * 0.6); - //next.hand_l.position = Vec3::new(-12.0 + move3 * 10.0, 0.0, 0.0); - next.foot_l.position = Vec3::new( -s_a.foot.0, s_a.foot.1 + move3 * 13.0, diff --git a/voxygen/anim/src/golem/run.rs b/voxygen/anim/src/golem/run.rs index 7c584c8dc6..7365851001 100644 --- a/voxygen/anim/src/golem/run.rs +++ b/voxygen/anim/src/golem/run.rs @@ -25,8 +25,8 @@ impl Animation for RunAnimation { let mut next = (*skeleton).clone(); let speed = Vec2::::from(velocity).magnitude(); - let lab = 0.45 * s_a.tempo; //.65 - let speednorm = (speed / 7.0).powf(0.6); //.powf(0.4) + let lab = 0.45 * s_a.tempo; + let speednorm = (speed / 7.0).powf(0.6); let foothoril = (((1.0) / (0.4 + (0.6) * ((acc_vel * 2.0 * lab as f32 + PI * 1.4).sin()).powi(2))) .sqrt()) diff --git a/voxygen/anim/src/quadruped_medium/run.rs b/voxygen/anim/src/quadruped_medium/run.rs index 06da0d5e0b..827099f754 100644 --- a/voxygen/anim/src/quadruped_medium/run.rs +++ b/voxygen/anim/src/quadruped_medium/run.rs @@ -24,14 +24,12 @@ impl Animation for RunAnimation { let mut next = (*skeleton).clone(); let speed = (Vec2::::from(velocity).magnitude()).min(24.0); *rate = 1.0; - //let increasefreqtest = (((1.0/speed)*3.0).round()).min(5.0); - let lab = 0.72; //0.72 + let lab = 0.72; let amplitude = (speed / 24.0).powf(0.6); let amplitude2 = (speed / 24.0).powf(0.6); let amplitude3 = (speed / 24.0).powf(0.6); let speedmult = s_a.tempo; let canceler = (speed / 24.0).powf(0.6); - //println!("{} test", canceler); let short = (((1.0) / (0.72 From 8d316aac8c6f89d4ba27f5ec5ebb83c82224f83e Mon Sep 17 00:00:00 2001 From: jshipsey Date: Fri, 26 Feb 2021 01:19:46 -0500 Subject: [PATCH 34/36] feedback adjustments --- common/src/comp/body.rs | 9 +- common/src/comp/inventory/item/modular.rs | 60 +++++--- common/src/comp/inventory/item/tool.rs | 6 + common/src/comp/inventory/loadout_builder.rs | 6 +- common/src/comp/mod.rs | 6 +- common/src/states/utils.rs | 2 +- server/src/sys/agent.rs | 1 + world/src/site/dungeon/mod.rs | 136 +++++-------------- 8 files changed, 85 insertions(+), 141 deletions(-) diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 8aa0853c95..9e595d1b67 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -378,19 +378,14 @@ impl Body { biped_small::Species::Sahagin => 500, biped_small::Species::Haniwa => 700, biped_small::Species::Myrmidon => 800, - _ => 600, - }, + _ => 600, + }, Body::Object(object) => match object { object::Body::TrainingDummy => 10000, object::Body::Crossbow => 800, _ => 10000, }, -<<<<<<< HEAD Body::Golem(_) => 2740, -======= - Body::Object(_) => 10000, - Body::Golem(_) => 3000, ->>>>>>> minotaur moves, added claygolem Body::Theropod(theropod) => match theropod.species { theropod::Species::Archaeos => 3000, theropod::Species::Odonto => 2700, diff --git a/common/src/comp/inventory/item/modular.rs b/common/src/comp/inventory/item/modular.rs index b7239145b9..89f2d7eff4 100644 --- a/common/src/comp/inventory/item/modular.rs +++ b/common/src/comp/inventory/item/modular.rs @@ -36,14 +36,15 @@ impl TagExampleInfo for ModularComponentTag { fn name(&self) -> &'static str { match self.modkind { ModularComponentKind::Damage => match self.toolkind { - ToolKind::Sword => "sword blade", - ToolKind::Axe => "axe head", - ToolKind::Hammer => "hammer head", - ToolKind::Bow => "bow limbs", + ToolKind::Sword | ToolKind::SwordSimple => "sword blade", + ToolKind::Axe | ToolKind::AxeSimple => "axe head", + ToolKind::Hammer | ToolKind::HammerSimple => "hammer head", + ToolKind::Bow | ToolKind::BowSimple => "bow limbs", ToolKind::Dagger => "dagger blade", - ToolKind::Staff => "staff head", + ToolKind::Staff | ToolKind::StaffSimple => "staff head", ToolKind::Sceptre => "sceptre head", // TODO: naming + ToolKind::Spear => "spear damage component", ToolKind::Shield => "shield damage component", ToolKind::Unique(_) => "unique damage component", ToolKind::Debug => "debug damage component", @@ -51,14 +52,15 @@ impl TagExampleInfo for ModularComponentTag { ToolKind::Empty => "empty damage component", }, ModularComponentKind::Held => match self.toolkind { - ToolKind::Sword => "sword hilt", - ToolKind::Axe => "axe shaft", - ToolKind::Hammer => "hammer shaft", - ToolKind::Bow => "bow riser", + ToolKind::Sword | ToolKind::SwordSimple => "sword hilt", + ToolKind::Axe | ToolKind::AxeSimple => "axe shaft", + ToolKind::Hammer | ToolKind::HammerSimple => "hammer shaft", + ToolKind::Bow | ToolKind::BowSimple => "bow riser", ToolKind::Dagger => "dagger grip", - ToolKind::Staff => "staff shaft", + ToolKind::Staff | ToolKind::StaffSimple => "staff shaft", ToolKind::Sceptre => "sceptre shaft", // TODO: naming + ToolKind::Spear => "spear held component", ToolKind::Shield => "shield held component", ToolKind::Unique(_) => "unique held component", ToolKind::Debug => "debug held component", @@ -71,28 +73,46 @@ impl TagExampleInfo for ModularComponentTag { fn exemplar_identifier(&self) -> &'static str { match self.modkind { ModularComponentKind::Damage => match self.toolkind { - ToolKind::Sword => "common.items.tag_examples.modular.damage.sword", - ToolKind::Axe => "common.items.tag_examples.modular.damage.axe", - ToolKind::Hammer => "common.items.tag_examples.modular.damage.hammer", - ToolKind::Bow => "common.items.tag_examples.modular.damage.bow", + ToolKind::Sword | ToolKind::SwordSimple => { + "common.items.tag_examples.modular.damage.sword" + }, + ToolKind::Axe | ToolKind::AxeSimple => { + "common.items.tag_examples.modular.damage.axe" + }, + ToolKind::Hammer | ToolKind::HammerSimple => { + "common.items.tag_examples.modular.damage.hammer" + }, + ToolKind::Bow | ToolKind::BowSimple => { + "common.items.tag_examples.modular.damage.bow" + }, ToolKind::Dagger => "common.items.tag_examples.modular.damage.dagger", - ToolKind::Staff => "common.items.tag_examples.modular.damage.staff", + ToolKind::Staff | ToolKind::StaffSimple => { + "common.items.tag_examples.modular.damage.staff" + }, ToolKind::Sceptre => "common.items.tag_examples.modular.damage.sceptre", ToolKind::Shield => "common.items.tag_examples.modular.damage.shield", + ToolKind::Spear => "common.items.tag_examples.modular.damage.spear", ToolKind::Unique(_) => "common.items.tag_examples.modular.damage.unique", ToolKind::Debug => "common.items.tag_examples.modular.damage.debug", ToolKind::Farming => "common.items.tag_examples.modular.damage.farming", ToolKind::Empty => "common.items.tag_examples.modular.damage.empty", }, ModularComponentKind::Held => match self.toolkind { - ToolKind::Sword => "common.items.tag_examples.modular.held.sword", - ToolKind::Axe => "common.items.tag_examples.modular.held.axe", - ToolKind::Hammer => "common.items.tag_examples.modular.held.hammer", - ToolKind::Bow => "common.items.tag_examples.modular.held.bow", + ToolKind::Sword | ToolKind::SwordSimple => { + "common.items.tag_examples.modular.held.sword" + }, + ToolKind::Axe | ToolKind::AxeSimple => "common.items.tag_examples.modular.held.axe", + ToolKind::Hammer | ToolKind::HammerSimple => { + "common.items.tag_examples.modular.held.hammer" + }, + ToolKind::Bow | ToolKind::BowSimple => "common.items.tag_examples.modular.held.bow", ToolKind::Dagger => "common.items.tag_examples.modular.held.dagger", - ToolKind::Staff => "common.items.tag_examples.modular.held.staff", + ToolKind::Staff | ToolKind::StaffSimple => { + "common.items.tag_examples.modular.held.staff" + }, ToolKind::Sceptre => "common.items.tag_examples.modular.held.sceptre", ToolKind::Shield => "common.items.tag_examples.modular.held.shield", + ToolKind::Spear => "common.items.tag_examples.modular.held.spear", ToolKind::Unique(_) => "common.items.tag_examples.modular.held.unique", ToolKind::Debug => "common.items.tag_examples.modular.held.debug", ToolKind::Farming => "common.items.tag_examples.modular.held.farming", diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 4da97fee69..55bc5f7139 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -40,11 +40,17 @@ impl ToolKind { pub fn identifier_name(&self) -> &'static str { match self { ToolKind::Sword => "sword", + ToolKind::SwordSimple => "simple sword", ToolKind::Axe => "axe", + ToolKind::AxeSimple => "simple axe", ToolKind::Hammer => "hammer", + ToolKind::HammerSimple => "simple hammer", ToolKind::Bow => "bow", + ToolKind::BowSimple => "simple bow", ToolKind::Dagger => "dagger", ToolKind::Staff => "staff", + ToolKind::StaffSimple => "simple staff", + ToolKind::Spear => "spear", ToolKind::Sceptre => "sceptre", ToolKind::Shield => "shield", ToolKind::Unique(_) => "unique", diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index f4467f9980..242f696139 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -121,11 +121,7 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.quadmedjump", )); }, - quadruped_medium::Species::Tuskram - | quadruped_medium::Species::Roshwalr - | quadruped_medium::Species::Highland - | quadruped_medium::Species::Yak - | quadruped_medium::Species::Cattle => { + quadruped_medium::Species::Tuskram | quadruped_medium::Species::Roshwalr => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.quadmedcharge", )); diff --git a/common/src/comp/mod.rs b/common/src/comp/mod.rs index e9b10c2cf4..38d1694b52 100644 --- a/common/src/comp/mod.rs +++ b/common/src/comp/mod.rs @@ -46,9 +46,9 @@ pub use self::{ aura::{Aura, AuraChange, AuraKind, Auras}, beam::{Beam, BeamSegment}, body::{ - biped_large, biped_small, bird_medium, bird_small, dragon, fish_medium, fish_small, golem, humanoid, - object, quadruped_low, quadruped_medium, quadruped_small, theropod, AllBodies, Body, - BodyData, + biped_large, biped_small, bird_medium, bird_small, dragon, fish_medium, fish_small, golem, + humanoid, object, quadruped_low, quadruped_medium, quadruped_small, theropod, AllBodies, + Body, BodyData, }, buff::{ Buff, BuffCategory, BuffChange, BuffData, BuffEffect, BuffId, BuffKind, BuffSource, Buffs, diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 6223f5ebc6..51e1623403 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -93,7 +93,7 @@ impl Body { Body::BipedSmall(biped_small) => match biped_small.species { biped_small::Species::Haniwa => 65.0, _ => 80.0, - }, + }, Body::Object(_) => 0.0, Body::Golem(_) => 60.0, Body::Theropod(_) => 135.0, diff --git a/server/src/sys/agent.rs b/server/src/sys/agent.rs index 7866861455..a78fd6d75f 100644 --- a/server/src/sys/agent.rs +++ b/server/src/sys/agent.rs @@ -496,6 +496,7 @@ impl<'a> System<'a> for Sys { } }) { Some(ToolKind::Bow) => Tactic::Bow, + Some(ToolKind::BowSimple) => Tactic::Bow, Some(ToolKind::Staff) => Tactic::Staff, Some(ToolKind::StaffSimple) => Tactic::Staff, Some(ToolKind::Hammer) => Tactic::Hammer, diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index cd9ef17fca..a59ec1ce0a 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -619,26 +619,18 @@ impl Floor { ) .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..5) { + match dynamic_rng.gen_range(0..3) { 0 => { "common.items.npc_weapons.biped_small.gnarling.\ - wooden_spear" + adlet_bow" }, 1 => { - "common.items.npc_weapons.biped_small.gnarling.\ - wooden_spear" - }, - 2 => { - "common.items.npc_weapons.biped_small.gnarling.\ - wooden_spear" - }, - 3 => { "common.items.npc_weapons.biped_small.gnarling.\ gnoll_staff" }, _ => { "common.items.npc_weapons.biped_small.gnarling.\ - adlet_bow" + wooden_spear" }, }, )), @@ -656,23 +648,15 @@ impl Floor { ) .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..5) { - 0 => { - "common.items.npc_weapons.biped_small.adlet.\ - wooden_spear" - }, + match dynamic_rng.gen_range(0..3) { + 0 => "common.items.npc_weapons.biped_small.adlet.adlet_bow", 1 => { - "common.items.npc_weapons.biped_small.adlet.\ - wooden_spear" - }, - 2 => { - "common.items.npc_weapons.biped_small.adlet.\ - wooden_spear" - }, - 3 => { "common.items.npc_weapons.biped_small.adlet.gnoll_staff" }, - _ => "common.items.npc_weapons.biped_small.adlet.adlet_bow", + _ => { + "common.items.npc_weapons.biped_small.adlet.\ + wooden_spear" + }, }, )), 2 => entity @@ -689,25 +673,17 @@ impl Floor { ) .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..5) { + match dynamic_rng.gen_range(0..3) { 0 => { - "common.items.npc_weapons.biped_small.sahagin.\ - wooden_spear" + "common.items.npc_weapons.biped_small.sahagin.adlet_bow" }, 1 => { - "common.items.npc_weapons.biped_small.sahagin.\ - wooden_spear" - }, - 2 => { - "common.items.npc_weapons.biped_small.sahagin.\ - wooden_spear" - }, - 3 => { "common.items.npc_weapons.biped_small.sahagin.\ gnoll_staff" }, _ => { - "common.items.npc_weapons.biped_small.sahagin.adlet_bow" + "common.items.npc_weapons.biped_small.sahagin.\ + wooden_spear" }, }, )), @@ -725,25 +701,17 @@ impl Floor { ) .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..5) { + match dynamic_rng.gen_range(0..3) { 0 => { - "common.items.npc_weapons.biped_small.haniwa.\ - wooden_spear" + "common.items.npc_weapons.biped_small.haniwa.adlet_bow" }, 1 => { - "common.items.npc_weapons.biped_small.haniwa.\ - wooden_spear" - }, - 2 => { - "common.items.npc_weapons.biped_small.haniwa.\ - wooden_spear" - }, - 3 => { "common.items.npc_weapons.biped_small.haniwa.\ gnoll_staff" }, _ => { - "common.items.npc_weapons.biped_small.haniwa.adlet_bow" + "common.items.npc_weapons.biped_small.haniwa.\ + wooden_spear" }, }, )), @@ -761,26 +729,18 @@ impl Floor { ) .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..5) { + match dynamic_rng.gen_range(0..3) { 0 => { "common.items.npc_weapons.biped_small.myrmidon.\ - wooden_spear" + adlet_bow" }, 1 => { - "common.items.npc_weapons.biped_small.myrmidon.\ - wooden_spear" - }, - 2 => { - "common.items.npc_weapons.biped_small.myrmidon.\ - wooden_spear" - }, - 3 => { "common.items.npc_weapons.biped_small.myrmidon.\ gnoll_staff" }, _ => { "common.items.npc_weapons.biped_small.myrmidon.\ - adlet_bow" + wooden_spear" }, }, )), @@ -872,36 +832,13 @@ impl Floor { let entity = match room.difficulty { 0 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Humanoid( - comp::humanoid::Body::random(), - )) - .with_name("Outcast Leader".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_loadout_config( - loadout_builder::LoadoutConfig::Outcast, - ) - .with_skillset_config( - common::skillset_builder::SkillSetConfig::Outcast, - ) - .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.worn_iron_axe-0", - 1..=2 => "common.items.weapons.sword.steel-8", - 3 => { - "common.items.weapons.hammer.worn_iron_hammer-0" - }, - 4 => "common.items.weapons.staff.bone_staff", - _ => "common.items.weapons.bow.hardwood-3", - }, - )), - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::QuadrupedMedium( - comp::quadruped_medium::Body::random_with( + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( dynamic_rng, - &comp::quadruped_medium::Species::Tarasque, + &comp::biped_large::Species::Harvester, ), )) - .with_name("Tarasque".to_string()) + .with_name("Harvester".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 1 => vec![ @@ -917,25 +854,14 @@ impl Floor { ], 2 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Humanoid( - comp::humanoid::Body::random() + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Tidalwarrior, + ), )) - .with_name("Bandit Captain".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_loadout_config(loadout_builder::LoadoutConfig::Bandit) - .with_skillset_config( - common::skillset_builder::SkillSetConfig::Bandit - ) - .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.steel_axe-0", - 1..=2 => "common.items.weapons.sword.steel-2", - 3 => "common.items.weapons.hammer.cobalt_hammer-0", - 4 => "common.items.weapons.staff.amethyst_staff", - _ => "common.items.weapons.bow.bone-1", - }, - ),); - 2 + .with_name("Tidal Warrior".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 3 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) From 238fcaf5f16db11329d2a4be17cf1d8f5061eabe Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 26 Feb 2021 14:32:22 -0500 Subject: [PATCH 35/36] Particle rebase fixes --- .../abilities/staffsimple/flamethrower.ron | 1 + .../unique/quadlowbeam/healingbeam.ron | 1 + .../items/npc_weapons/axe/minotaur_axe.ron | 4 +- .../biped_small/adlet/adlet_bow.ron | 4 +- .../biped_small/adlet/gnoll_staff.ron | 4 +- .../biped_small/adlet/wooden_spear.ron | 4 +- .../biped_small/gnarling/adlet_bow.ron | 4 +- .../biped_small/gnarling/gnoll_staff.ron | 4 +- .../biped_small/gnarling/wooden_spear.ron | 4 +- .../biped_small/haniwa/adlet_bow.ron | 10 +- .../biped_small/haniwa/gnoll_staff.ron | 10 +- .../biped_small/haniwa/wooden_spear.ron | 10 +- .../biped_small/myrmidon/adlet_bow.ron | 4 +- .../biped_small/myrmidon/gnoll_staff.ron | 4 +- .../biped_small/myrmidon/wooden_spear.ron | 4 +- .../biped_small/sahagin/adlet_bow.ron | 4 +- .../biped_small/sahagin/gnoll_staff.ron | 4 +- .../biped_small/sahagin/wooden_spear.ron | 4 +- .../items/npc_weapons/hammer/yeti_hammer.ron | 4 +- .../items/npc_weapons/unique/tidal_claws.ron | 4 +- .../npc_weapons/unique/wendigo_magic.ron | 4 +- common/src/states/basic_beam.rs | 24 ++-- voxygen/src/scene/figure/load.rs | 42 +++---- voxygen/src/scene/figure/mod.rs | 2 +- voxygen/src/scene/particle.rs | 113 +++++++++--------- world/src/site/dungeon/mod.rs | 10 +- 26 files changed, 139 insertions(+), 148 deletions(-) diff --git a/assets/common/abilities/staffsimple/flamethrower.ron b/assets/common/abilities/staffsimple/flamethrower.ron index 6145e64192..905372944f 100644 --- a/assets/common/abilities/staffsimple/flamethrower.ron +++ b/assets/common/abilities/staffsimple/flamethrower.ron @@ -11,4 +11,5 @@ BasicBeam( energy_regen: 0, energy_cost: 1, energy_drain: 350, + orientation_behavior: Normal, ) diff --git a/assets/common/abilities/unique/quadlowbeam/healingbeam.ron b/assets/common/abilities/unique/quadlowbeam/healingbeam.ron index 3c5822dbb2..8b6b235b6f 100644 --- a/assets/common/abilities/unique/quadlowbeam/healingbeam.ron +++ b/assets/common/abilities/unique/quadlowbeam/healingbeam.ron @@ -11,4 +11,5 @@ BasicBeam( energy_regen: 25, energy_cost: 50, energy_drain: 0, + orientation_behavior: Normal, ) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/axe/minotaur_axe.ron b/assets/common/items/npc_weapons/axe/minotaur_axe.ron index 2be8c68b62..81fc250ae6 100644 --- a/assets/common/items/npc_weapons/axe/minotaur_axe.ron +++ b/assets/common/items/npc_weapons/axe/minotaur_axe.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: AxeSimple, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 500, power: 1.8, poise_strength: 1.00, speed: 1.0 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron index e0e5f9ee14..4e0dc79778 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Bow, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 0.7, poise_strength: 0.8, speed: 0.3 - ), + )), ) ), quality: Moderate, diff --git a/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron index 44661cb2f6..181c5d8382 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: StaffSimple, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 0.7, poise_strength: 0.8, speed: 0.5 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron index 30304e3046..a78f795b25 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Spear, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 0.7, poise_strength: 0.8, speed: 1.0 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron index 03bc224c53..d7c6609b52 100644 --- a/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Bow, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 0.3, poise_strength: 0.8, speed: 0.7 - ), + )), ) ), quality: Moderate, diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron index 6c8dbbecf7..f3fdc1f4da 100644 --- a/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: StaffSimple, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 0.3, poise_strength: 0.8, speed: 0.8 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron index 0182898eaa..82f65af672 100644 --- a/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Spear, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 0.3, poise_strength: 0.8, speed: 1.0 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron index 6bb840c1f6..02abadbeb0 100644 --- a/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron @@ -1,18 +1,16 @@ ItemDef( name: "Adlet Bow", description: "Strips of leather are wrapped around the handle.", - kind: Tool( - ( + kind: Tool(( kind: Bow, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 1.6, poise_strength: 0.8, speed: 0.3 - ), - ) - ), + )), + )), quality: Moderate, tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron index c1682cff49..1dcbea0401 100644 --- a/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron @@ -1,18 +1,16 @@ ItemDef( name: "Gnoll Staff", description: "eekum bokum", - kind: Tool( - ( + kind: Tool(( kind: StaffSimple, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 1.8, poise_strength: 0.8, speed: 0.6 - ), - ) - ), + )), + )), quality: Low, tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron index c794a37d0c..6b8c622c64 100644 --- a/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron @@ -1,18 +1,16 @@ ItemDef( name: "Wooden Spear", description: "Testing", - kind: Tool( - ( + kind: Tool(( kind: Spear, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 1.4, poise_strength: 0.8, speed: 1.0 - ), - ) - ), + )), + )), quality: Low, tags: [], ) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron index 15739db4f0..a0d0238b80 100644 --- a/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Bow, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 1.1, poise_strength: 0.8, speed: 0.5 - ), + )), ) ), quality: Moderate, diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron index c0f890b546..ce0a8d0dea 100644 --- a/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: StaffSimple, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 1.7, poise_strength: 0.8, speed: 0.7 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron index c7e97fe844..2894c9f361 100644 --- a/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Spear, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 1.7, poise_strength: 0.8, speed: 1.0 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron index 7312c4e987..ce348f0f10 100644 --- a/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron +++ b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Bow, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 1.1, poise_strength: 0.8, speed: 0.3 - ), + )), ) ), quality: Moderate, diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron index 412f505250..435ac291ff 100644 --- a/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron +++ b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: StaffSimple, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 1.1, poise_strength: 0.8, speed: 0.8 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron index f1e5c4444b..b346ba2068 100644 --- a/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron +++ b/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Spear, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 1.1, poise_strength: 0.8, speed: 1.0 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/hammer/yeti_hammer.ron b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron index ce90851af9..bc8bdd9f16 100644 --- a/assets/common/items/npc_weapons/hammer/yeti_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: HammerSimple, hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 0, power: 2.0, poise_strength: 1.00, speed: 1.0 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/unique/tidal_claws.ron b/assets/common/items/npc_weapons/unique/tidal_claws.ron index 9dc06103ad..4d8bf64ec5 100644 --- a/assets/common/items/npc_weapons/unique/tidal_claws.ron +++ b/assets/common/items/npc_weapons/unique/tidal_claws.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Unique(TidalClaws), hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 500, power: 1.00, poise_strength: 1.00, speed: 1.0, - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/unique/wendigo_magic.ron b/assets/common/items/npc_weapons/unique/wendigo_magic.ron index 4778a42655..3892f757d0 100644 --- a/assets/common/items/npc_weapons/unique/wendigo_magic.ron +++ b/assets/common/items/npc_weapons/unique/wendigo_magic.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Unique(WendigoMagic), hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 500, power: 1.00, poise_strength: 1.00, speed: 1.0, - ), + )), ) ), quality: Low, diff --git a/common/src/states/basic_beam.rs b/common/src/states/basic_beam.rs index 3a740dcb22..844d6b9d11 100644 --- a/common/src/states/basic_beam.rs +++ b/common/src/states/basic_beam.rs @@ -163,20 +163,16 @@ impl CharacterBehavior for Data { }; // Gets offsets let body_offsets = match data.body { - Body::Humanoid(_) => { - Vec3::new( - data.body.radius() + 2.0 * data.inputs.look_dir.x, - data.body.radius() + 2.0 * data.inputs.look_dir.y, - data.body.eye_height(), - ) * 0.55 - }, - _ => { - Vec3::new( - data.body.radius() * 3.0 * data.inputs.look_dir.x, - data.body.radius() * 3.0 * data.inputs.look_dir.y, - data.body.eye_height(), - ) * 0.55 - }, + Body::Humanoid(_) => Vec3::new( + (data.body.radius() + 2.0) * data.inputs.look_dir.x, + (data.body.radius() + 2.0) * data.inputs.look_dir.y, + data.body.eye_height() * 0.55, + ), + _ => Vec3::new( + (data.body.radius() + 3.0) * data.inputs.look_dir.x, + (data.body.radius() + 3.0) * data.inputs.look_dir.y, + data.body.eye_height() * 0.55, + ), }; let pos = Pos(data.pos.0 + body_offsets); // Create beam segment diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index d4cf724d16..6aca80bb7f 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -1219,7 +1219,7 @@ impl QuadrupedSmallLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.left_front.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.left_front.lateral.0, true); (lateral, Vec3::from(spec.left_front.offset)) } @@ -1251,7 +1251,7 @@ impl QuadrupedSmallLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.left_back.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.left_back.lateral.0, true); (lateral, Vec3::from(spec.left_back.offset)) } @@ -1511,7 +1511,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.leg_fl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.leg_fl.lateral.0, true); (lateral, Vec3::from(spec.leg_fl.offset)) } @@ -1543,7 +1543,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.leg_bl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.leg_bl.lateral.0, true); (lateral, Vec3::from(spec.leg_bl.offset)) } @@ -1575,7 +1575,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.foot_fl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_fl.lateral.0, true); (lateral, Vec3::from(spec.foot_fl.offset)) } @@ -1607,7 +1607,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.foot_bl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_bl.lateral.0, true); (lateral, Vec3::from(spec.foot_bl.offset)) } @@ -1771,7 +1771,7 @@ impl BirdMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.wing_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.wing_l.lateral.0, true); (lateral, Vec3::from(spec.wing_l.offset)) } @@ -1803,7 +1803,7 @@ impl BirdMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.foot_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_l.lateral.0, true); (lateral, Vec3::from(spec.foot_l.offset)) } @@ -2052,7 +2052,7 @@ impl TheropodLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.hand_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.hand_l.lateral.0, true); (lateral, Vec3::from(spec.hand_l.offset)) } @@ -2084,7 +2084,7 @@ impl TheropodLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.leg_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.leg_l.lateral.0, true); (lateral, Vec3::from(spec.leg_l.offset)) } @@ -2116,7 +2116,7 @@ impl TheropodLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.foot_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_l.lateral.0, true); (lateral, Vec3::from(spec.foot_l.offset)) } @@ -2310,7 +2310,7 @@ impl FishMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.fin_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.fin_l.lateral.0, true); (lateral, Vec3::from(spec.fin_l.offset)) } @@ -2445,7 +2445,7 @@ impl FishSmallLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.fin_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.fin_l.lateral.0, true); (lateral, Vec3::from(spec.fin_l.offset)) } @@ -2536,7 +2536,7 @@ make_vox_spec!( }), tool.and_then(|tool| tool.active.as_ref()).map(|tool| { spec.weapon.read().0.mesh_main( - tool, + &tool.name, false, ) }), @@ -2662,7 +2662,7 @@ impl BipedSmallArmorHandSpec { }; let hand_segment = if flipped { - graceful_load_segment_flipped(&spec.left.vox_spec.0) + graceful_load_segment_flipped(&spec.left.vox_spec.0, true) } else { graceful_load_segment(&spec.right.vox_spec.0) }; @@ -2694,7 +2694,7 @@ impl BipedSmallArmorFootSpec { }; let foot_segment = if flipped { - graceful_load_segment_flipped(&spec.left.vox_spec.0) + graceful_load_segment_flipped(&spec.left.vox_spec.0, true) } else { graceful_load_segment(&spec.right.vox_spec.0) }; @@ -2723,7 +2723,7 @@ impl BipedSmallWeaponSpec { }; let tool_kind_segment = if flipped { - graceful_load_segment_flipped(&spec.vox_spec.0) + graceful_load_segment_flipped(&spec.vox_spec.0, true) } else { graceful_load_segment(&spec.vox_spec.0) }; @@ -3244,7 +3244,7 @@ make_vox_spec!( )), tool.and_then(|tool| tool.active.as_ref()).map(|tool| { spec.weapon.read().0.mesh_main( - tool, + &tool.name, false, ) }), @@ -3526,7 +3526,7 @@ impl BipedLargeWeaponSpec { }; let tool_kind_segment = if flipped { - graceful_load_segment_flipped(&spec.vox_spec.0) + graceful_load_segment_flipped(&spec.vox_spec.0, true) } else { graceful_load_segment(&spec.vox_spec.0) }; @@ -4043,7 +4043,7 @@ impl QuadrupedLowLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.front_left.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.front_left.lateral.0, true); (lateral, Vec3::from(spec.front_left.offset)) } @@ -4075,7 +4075,7 @@ impl QuadrupedLowLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment_flipped(&spec.back_left.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.back_left.lateral.0, true); (lateral, Vec3::from(spec.back_left.offset)) } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 0cf66bbbbc..68cde78921 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2548,7 +2548,7 @@ impl FigureMgr { tick, player_camera_mode, player_character_state, - scene_data.thread_pool, + scene_data.runtime, ); let state = self diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 95c36b1fe3..efd3d3de8e 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -399,7 +399,7 @@ impl ParticleMgr { .join() .filter(|(_, _, b)| b.creation.map_or(true, |c| (c + dt as f64) >= time)) { -// + // let range = beam.properties.speed * beam.properties.duration.as_secs_f32(); if beam .properties @@ -410,65 +410,64 @@ impl ParticleMgr { // Emit a light when using healing lights.push(Light::new(pos.0, Rgb::new(0.1, 1.0, 0.15), 1.0)); for i in 0..self.scheduler.heartbeats(Duration::from_millis(1)) { - self.particles.push(Particle::new_beam( + self.particles.push(Particle::new_directed( beam.properties.duration, time + i as f64 / 1000.0, ParticleMode::HealingBeam, pos.0, pos.0 + *ori.look_dir() * range, )); -// - if let CharacterState::BasicBeam(b) = character_state { - let particle_ori = b.particle_ori.unwrap_or_else(|| ori.look_vec()); - if b.stage_section == StageSection::Cast { - if b.static_data.base_hps > 0.0 { - // Emit a light when using healing - lights.push(Light::new(pos.0 + b.offset, Rgb::new(0.1, 1.0, 0.15), 1.0)); - for i in 0..self.scheduler.heartbeats(Duration::from_millis(1)) { - self.particles.push(Particle::new_directed( - b.static_data.beam_duration, - time + i as f64 / 1000.0, - ParticleMode::HealingBeam, - pos.0 + particle_ori * 0.5 + b.offset, - pos.0 + particle_ori * b.static_data.range + b.offset, - )); - } - } else { - let mut rng = thread_rng(); - let (from, to) = (Vec3::::unit_z(), particle_ori); - let m = Mat3::::rotation_from_to_3d(from, to); - // Emit a light when using flames - lights.push(Light::new( - pos.0 + b.offset, - Rgb::new(1.0, 0.25, 0.05).map(|e| e * rng.gen_range(0.8..1.2)), - 2.0, - )); - self.particles.resize_with( - self.particles.len() - + 2 * usize::from( - self.scheduler.heartbeats(Duration::from_millis(1)), - ), - || { - let phi: f32 = - rng.gen_range(0.0..b.static_data.max_angle.to_radians()); - let theta: f32 = rng.gen_range(0.0..2.0 * PI); - let offset_z = Vec3::new( - phi.sin() * theta.cos(), - phi.sin() * theta.sin(), - phi.cos(), - ); - let random_ori = offset_z * m * Vec3::new(-1.0, -1.0, 1.0); - Particle::new_directed( - b.static_data.beam_duration, - time, - ParticleMode::FlameThrower, - pos.0 + random_ori * 0.5 + b.offset, - pos.0 + random_ori * b.static_data.range + b.offset, - ) - }, - ); - } -// + /* + if let CharacterState::BasicBeam(b) = character_state { + if b.stage_section == StageSection::Cast { + if b.static_data.base_hps > 0.0 {// + // Emit a light when using healing + lights.push(Light::new(pos.0 + b.offset, Rgb::new(0.1, 1.0, 0.15), 1.0)); + for i in 0..self.scheduler.heartbeats(Duration::from_millis(1)) { + self.particles.push(Particle::new_directed( + b.static_data.beam_duration, + time + i as f64 / 1000.0, + ParticleMode::HealingBeam, + pos.0 + particle_ori * 0.5 + b.offset, + pos.0 + particle_ori * b.static_data.range + b.offset, + )); + } + } else { + let mut rng = thread_rng(); + let (from, to) = (Vec3::::unit_z(), particle_ori); + let m = Mat3::::rotation_from_to_3d(from, to); + // Emit a light when using flames + lights.push(Light::new( + pos.0 + b.offset, + Rgb::new(1.0, 0.25, 0.05).map(|e| e * rng.gen_range(0.8..1.2)), + 2.0, + )); + self.particles.resize_with( + self.particles.len() + + 2 * usize::from( + self.scheduler.heartbeats(Duration::from_millis(1)), + ), + || { + let phi: f32 = + rng.gen_range(0.0..b.static_data.max_angle.to_radians()); + let theta: f32 = rng.gen_range(0.0..2.0 * PI); + let offset_z = Vec3::new( + phi.sin() * theta.cos(), + phi.sin() * theta.sin(), + phi.cos(), + ); + let random_ori = offset_z * m * Vec3::new(-1.0, -1.0, 1.0); + Particle::new_directed( + b.static_data.beam_duration, + time, + ParticleMode::FlameThrower, + pos.0 + random_ori * 0.5 + b.offset, + pos.0 + random_ori * b.static_data.range + b.offset, + ) + }, + ); + } + */ } } else { let mut rng = thread_rng(); @@ -484,16 +483,16 @@ impl ParticleMgr { self.particles.len() + 2 * usize::from(self.scheduler.heartbeats(Duration::from_millis(1))), || { - let phi: f32 = rng.gen_range(0.0..beam.properties.angle.to_radians()); + let phi: f32 = rng.gen_range(0.0..beam.properties.angle); let theta: f32 = rng.gen_range(0.0..2.0 * PI); let offset_z = Vec3::new(phi.sin() * theta.cos(), phi.sin() * theta.sin(), phi.cos()); let random_ori = offset_z * m * Vec3::new(-1.0, -1.0, 1.0); - Particle::new_beam( + Particle::new_directed( beam.properties.duration, time, ParticleMode::FlameThrower, - pos.0 + random_ori, + pos.0, /* + random_ori */ pos.0 + random_ori * range, ) }, diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index a59ec1ce0a..0d332df7e2 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -619,7 +619,7 @@ impl Floor { ) .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..3) { + match dynamic_rng.gen_range(0..5) { 0 => { "common.items.npc_weapons.biped_small.gnarling.\ adlet_bow" @@ -648,7 +648,7 @@ impl Floor { ) .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..3) { + match dynamic_rng.gen_range(0..5) { 0 => "common.items.npc_weapons.biped_small.adlet.adlet_bow", 1 => { "common.items.npc_weapons.biped_small.adlet.gnoll_staff" @@ -673,7 +673,7 @@ impl Floor { ) .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..3) { + match dynamic_rng.gen_range(0..5) { 0 => { "common.items.npc_weapons.biped_small.sahagin.adlet_bow" }, @@ -701,7 +701,7 @@ impl Floor { ) .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..3) { + match dynamic_rng.gen_range(0..5) { 0 => { "common.items.npc_weapons.biped_small.haniwa.adlet_bow" }, @@ -729,7 +729,7 @@ impl Floor { ) .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..3) { + match dynamic_rng.gen_range(0..5) { 0 => { "common.items.npc_weapons.biped_small.myrmidon.\ adlet_bow" From 16720a68260da02c130313f0d55bf4f9a518d336 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 27 Feb 2021 01:41:14 -0500 Subject: [PATCH 36/36] weapon/manifest tweaks --- CHANGELOG.md | 3 + assets/common/items/debug/lantern.ron | 13 - .../npc_weapons/hammer/harvester_scythe.ron | 8 +- .../items/npc_weapons/unique/quadlowbeam.ron | 4 +- .../loot_tables/loot_table_mindflayer.ron | 4 +- assets/voxygen/item_image_manifest.ron | 25 + .../voxel/biped_large_weapon_manifest.ron | 70 -- .../voxel/biped_small_weapon_manifest.ron | 62 -- .../voxygen/voxel/biped_weapon_manifest.ron | 651 ++++++++++++------ voxygen/anim/src/biped_small/run.rs | 2 +- voxygen/anim/src/character/run.rs | 8 +- voxygen/anim/src/character/spin.rs | 2 +- voxygen/anim/src/quadruped_medium/mod.rs | 21 +- world/src/site/dungeon/mod.rs | 4 +- 14 files changed, 496 insertions(+), 381 deletions(-) delete mode 100644 assets/common/items/debug/lantern.ron delete mode 100644 assets/voxygen/voxel/biped_large_weapon_manifest.ron delete mode 100644 assets/voxygen/voxel/biped_small_weapon_manifest.ron diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e0e3836de..a10efd77ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Support for modular weapons. - Saturation buff (healing from food) now queues - Coral reefs, kelp forests, and seagrass +- Talk animation +- New bosses in 5 lower dungeons += New enemies in 5 lower dungeons ### Changed diff --git a/assets/common/items/debug/lantern.ron b/assets/common/items/debug/lantern.ron deleted file mode 100644 index 7d27f79c08..0000000000 --- a/assets/common/items/debug/lantern.ron +++ /dev/null @@ -1,13 +0,0 @@ -ItemDef( - name: "Magic Lantern", - description: "Illuminates even the darkest dungeon\nA great monster was slain for this item", - kind: Lantern( - ( - kind: "Blue0", - color: (r: 128, g: 26, b: 255), - strength_thousandths: 8500, - flicker_thousandths: 300, - ), - ), - quality: High, -) diff --git a/assets/common/items/npc_weapons/hammer/harvester_scythe.ron b/assets/common/items/npc_weapons/hammer/harvester_scythe.ron index d048830d32..cd37197f19 100644 --- a/assets/common/items/npc_weapons/hammer/harvester_scythe.ron +++ b/assets/common/items/npc_weapons/hammer/harvester_scythe.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: HammerSimple, hands: Two, - stats: ( - equip_time_millis: 500, - power: 1.00, + stats: Direct(( + equip_time_millis: 1, + power: 1.6, poise_strength: 1.00, speed: 1.0 - ), + )), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/unique/quadlowbeam.ron b/assets/common/items/npc_weapons/unique/quadlowbeam.ron index c46bb03d52..1fd8921aad 100644 --- a/assets/common/items/npc_weapons/unique/quadlowbeam.ron +++ b/assets/common/items/npc_weapons/unique/quadlowbeam.ron @@ -5,12 +5,12 @@ ItemDef( ( kind: Unique(QuadLowBeam), hands: Two, - stats: ( + stats: Direct(( equip_time_millis: 10, power: 1.00, poise_strength: 1.00, speed: 1.00, - ), + )), ) ), quality: Low, diff --git a/assets/common/loot_tables/loot_table_mindflayer.ron b/assets/common/loot_tables/loot_table_mindflayer.ron index 1f8469c089..7d5da8547c 100644 --- a/assets/common/loot_tables/loot_table_mindflayer.ron +++ b/assets/common/loot_tables/loot_table_mindflayer.ron @@ -12,8 +12,8 @@ (1, "common.items.weapons.hammer.cultist_purp_2h-0"), (1, "common.items.weapons.sword.cultist"), (0.25, "common.items.crafting_ing.mindflayer_bag_damaged"), - (0.01, "common.items.weapons.sceptre.root_evil"), + (0.2, "common.items.weapons.sceptre.root_evil"), // misc (1, "common.items.boss_drops.lantern"), - (0.1, "common.items.glider.glider_purp"), + (0.25, "common.items.glider.glider_purp"), ] diff --git a/assets/voxygen/item_image_manifest.ron b/assets/voxygen/item_image_manifest.ron index b54af98e32..c2e670c504 100644 --- a/assets/voxygen/item_image_manifest.ron +++ b/assets/voxygen/item_image_manifest.ron @@ -1207,6 +1207,31 @@ "voxel.armor.shoulder.steel_right-0", (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, ), + //PlateLeather0 Armor + Armor(Chest("PlateLeather")): VoxTrans( + "voxel.armor.chest.plate_leather", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Pants("PlateLeather")): VoxTrans( + "voxel.armor.pants.plate_leather-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Belt("PlateLeather")): VoxTrans( + "voxel.armor.belt.plate_leather-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.8, + ), + Armor(Foot("PlateLeather")): VoxTrans( + "voxel.armor.foot.plate_leather", + (0.0, 0.0, 0.0), (-95.0, 140.0, 0.0), 1.1, + ), + Armor(Hand("PlateLeather")): VoxTrans( + "voxel.armor.hand.plate_leather_right-0", + (0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0, + ), + Armor(Shoulder("PlateLeather")): VoxTrans( + "voxel.armor.shoulder.plate_leather_right-0", + (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, + ), //Leather0 Armor Armor(Chest("Leather0")): VoxTrans( "voxel.armor.chest.leather-0", diff --git a/assets/voxygen/voxel/biped_large_weapon_manifest.ron b/assets/voxygen/voxel/biped_large_weapon_manifest.ron deleted file mode 100644 index 756e8e5db9..0000000000 --- a/assets/voxygen/voxel/biped_large_weapon_manifest.ron +++ /dev/null @@ -1,70 +0,0 @@ -({ - "common.items.npc_weapons.hammer.ogre_hammer": ( - vox_spec: ("weapon.hammer.2hhammer_ogre", (-5.0, -5.5, -7.0)), - color: None - ), - "common.items.npc_weapons.staff.ogre_staff": ( - vox_spec: ("weapon.staff.firestaff_ogre", (-2.5, -5.5, -6.0)), - color: None - ), - "common.items.npc_weapons.hammer.cyclops_hammer": ( - vox_spec: ("weapon.hammer.2hhammer_cyclops-0", (-5.0, -6.5, -7.0)), - color: None - ), - "common.items.npc_weapons.hammer.troll_hammer": ( - vox_spec: ("weapon.hammer.2hhammer_troll", (-4.0, -6.0, -7.0)), - color: None - ), - "common.items.npc_weapons.sword.dullahan_sword": ( - vox_spec: ("weapon.sword.greatsword_2h_dullahan", (-1.5, -9.0, -10.0)), - color: None - ), - "common.items.npc_weapons.staff.saurok_staff": ( - vox_spec: ("weapon.staff.firestaff_saurok", (-3.0, -3.0, -6.0)), - color: None - ), - "common.items.npc_weapons.sword.saurok_sword": ( - vox_spec: ("weapon.sword.long_2h_saurok", (-1.5, -4.0, -5.0)), - color: None - ), - "common.items.npc_weapons.bow.saurok_bow": ( - vox_spec: ("weapon.bow.longbow_saurok", (-1.5, -4.0, -16.5)), - color: None - ), - "common.items.npc_weapons.staff.mindflayer_staff": ( - vox_spec: ("weapon.staff.firestaff_mindflayer", (-5.5, -3.5, -8.0)), - color: None - ), - "common.items.npc_weapons.unique.beast_claws": ( - vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), - color: None - ), - "common.items.npc_weapons.unique.wendigo_magic": ( - vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), - color: None - ), - "common.items.npc_weapons.unique.tidal_claws": ( - vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), - color: None - ), - "common.items.npc_weapons.spear.wooden_spear": ( - vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), - color: None - ), - "common.items.weapon.spear.adlet": ( - vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)), - color: None - ), - "common.items.npc_weapons.bow.adlet": ( - vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), - color: None - ), - "common.items.npc_weapons.staff.gnoll": ( - vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), - color: None - ), - "common.items.npc_weapons.hammer.yeti_hammer": ( - vox_spec: ("weapon.hammer.2hhammer_yeti", (-7.5, -7.0, -7.0)), - color: None - ), -}) diff --git a/assets/voxygen/voxel/biped_small_weapon_manifest.ron b/assets/voxygen/voxel/biped_small_weapon_manifest.ron deleted file mode 100644 index a2ab75963e..0000000000 --- a/assets/voxygen/voxel/biped_small_weapon_manifest.ron +++ /dev/null @@ -1,62 +0,0 @@ -({ - "common.items.npc_weapons.biped_small.adlet.adlet_bow": ( - vox_spec: ("weapon.biped_small.bow.adlet", (-1.5, -3.0, -5.0)), - color: None - ), - "common.items.npc_weapons.biped_small.adlet.gnoll_staff": ( - vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.adlet.wooden_spear": ( - vox_spec: ("weapon.biped_small.spear.adlet", (-0.5, -3.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.gnarling.adlet_bow": ( - vox_spec: ("weapon.biped_small.bow.adlet", (-1.5, -3.0, -5.0)), - color: None - ), - "common.items.npc_weapons.biped_small.gnarling.gnoll_staff": ( - vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.gnarling.wooden_spear": ( - vox_spec: ("weapon.biped_small.spear.adlet", (-0.5, -3.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.sahagin.adlet_bow": ( - vox_spec: ("weapon.biped_small.bow.sahagin", (-0.5, -5.5, -9.5)), - color: None - ), - "common.items.npc_weapons.biped_small.sahagin.gnoll_staff": ( - vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.sahagin.wooden_spear": ( - vox_spec: ("weapon.biped_small.spear.sahagin", (-0.5, -3.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.haniwa.adlet_bow": ( - vox_spec: ("weapon.biped_small.bow.haniwa", (-0.5, -4.5, -10.5)), - color: None - ), - "common.items.npc_weapons.biped_small.haniwa.gnoll_staff": ( - vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.haniwa.wooden_spear": ( - vox_spec: ("weapon.biped_small.spear.haniwa", (-0.5, -3.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.myrmidon.adlet_bow": ( - vox_spec: ("weapon.biped_small.bow.myrmidon", (-0.5, -5.0, -10.5)), - color: None - ), - "common.items.npc_weapons.biped_small.myrmidon.gnoll_staff": ( - vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), - color: None - ), - "common.items.npc_weapons.biped_small.myrmidon.wooden_spear": ( - vox_spec: ("weapon.biped_small.spear.myrmidon", (-0.5, -2.0, -4.0)), - color: None - ), -}) diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron index 05959366fc..78a5dfd0c8 100644 --- a/assets/voxygen/voxel/biped_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -1,203 +1,260 @@ ({ //Swords - "common.items.weapons.sword.starter_sword": ( - vox_spec: ("weapon.sword.rusty_2h", (-1.5, -6.5, -4.0)), + "common.items.weapons.sword.bloodsteel-0": ( + vox_spec: ("weapon.sword.bloodsteel-0", (-1.5, -4.5, -4.0)), color: None ), - "common.items.npc_weapons.sword.starter_sword": ( - vox_spec: ("weapon.sword.rusty_2h", (-1.5, -6.5, -4.0)), + "common.items.weapons.sword.bloodsteel-1": ( + vox_spec: ("weapon.sword.bloodsteel-1", (-2.5, -3.0, -5.5)), color: None ), - "common.items.weapons.sword.wood_sword": ( - vox_spec: ("weapon.sword.wood_ore_2h", (-1.5, -6.5, -4.0)), + "common.items.weapons.sword.bloodsteel-2": ( + vox_spec: ("weapon.sword.bloodsteel-2", (-1.5, -3.5, -4.0)), color: None ), - "common.items.weapons.sword.zweihander_sword_0": ( - vox_spec: ("weapon.sword.zweihander_2h-0", (-1.5, -6.5, -4.0)), + "common.items.weapons.sword.bronze-0": ( + vox_spec: ("weapon.sword.bronze-0", (-1.5, -3.0, -4.0)), color: None ), - "common.items.npc_weapons.sword.zweihander_sword_0": ( - vox_spec: ("weapon.sword.zweihander_2h-0", (-1.5, -6.5, -4.0)), + "common.items.weapons.sword.bronze-1": ( + vox_spec: ("weapon.sword.bronze-1", (-1.5, -3.0, -4.0)), color: None ), - "common.items.weapons.sword.short_sword_0": ( - vox_spec: ("weapon.sword.short_2h-0", (-1.5, -6.5, -1.0)), + "common.items.weapons.sword.bronze-2": ( + vox_spec: ("weapon.sword.bronze-2", (-1.5, -3.0, -4.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_dam-0": ( - vox_spec: ("weapon.sword.greatsword_2h_dam-0", (-1.0, -4.5, -6.5)), + "common.items.weapons.sword.caladbolg": ( + vox_spec: ("weapon.sword.caladbolg", (-1.5, -5.5, -4.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_dam-1": ( - vox_spec: ("weapon.sword.greatsword_2h_dam-1", (-1.0, -4.5, -6.5)), + "common.items.weapons.sword.cobalt-0": ( + vox_spec: ("weapon.sword.cobalt-0", (-1.5, -5.0, -4.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_dam-2": ( - vox_spec: ("weapon.sword.greatsword_2h_dam-2", (-1.0, -4.5, -6.5)), + "common.items.weapons.sword.cobalt-1": ( + vox_spec: ("weapon.sword.cobalt-1", (-1.5, -6.0, -5.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_simple-0": ( - vox_spec: ("weapon.sword.greatsword_2h_simple-0", (-1.0, -4.5, -6.5)), + "common.items.weapons.sword.cobalt-2": ( + vox_spec: ("weapon.sword.cobalt-2", (-1.5, -5.0, -4.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_simple-1": ( - vox_spec: ("weapon.sword.greatsword_2h_simple-1", (-1.0, -4.5, -6.5)), + "common.items.weapons.sword.cobalt-3": ( + vox_spec: ("weapon.sword.cobalt-3", (-1.5, -4.0, -4.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_simple-2": ( - vox_spec: ("weapon.sword.greatsword_2h_simple-2", (-1.0, -4.5, -6.5)), + "common.items.weapons.sword.cultist": ( + vox_spec: ("weapon.sword.cultist", (-1.5, -4.0, -6.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_orn-0": ( - vox_spec: ("weapon.sword.greatsword_2h_orn-0", (-1.0, -4.5, -7.5)), + "common.items.weapons.sword.frost-0": ( + vox_spec: ("weapon.sword.frost-0", (-1.5, -5.5, -5.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_orn-1": ( - vox_spec: ("weapon.sword.greatsword_2h_orn-1", (-1.0, -4.5, -7.5)), + "common.items.weapons.sword.frost-1": ( + vox_spec: ("weapon.sword.frost-1", (-1.5, -5.5, -5.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_orn-2": ( - vox_spec: ("weapon.sword.greatsword_2h_orn-2", (-1.0, -4.5, -7.5)), + "common.items.weapons.sword.iron-0": ( + vox_spec: ("weapon.sword.iron-0", (-1.5, -3.5, -4.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_fine-0": ( - vox_spec: ("weapon.sword.greatsword_2h_fine-0", (-2.0, -6.5, -8.0)), + "common.items.weapons.sword.iron-1": ( + vox_spec: ("weapon.sword.iron-1", (-1.5, -5.0, -5.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_fine-1": ( - vox_spec: ("weapon.sword.greatsword_2h_fine-1", (-2.0, -6.5, -8.0)), + "common.items.weapons.sword.iron-2": ( + vox_spec: ("weapon.sword.iron-2", (-1.5, -5.0, -4.0)), color: None ), - "common.items.weapons.sword.greatsword_2h_fine-2": ( - vox_spec: ("weapon.sword.greatsword_2h_fine-2", (-2.0, -6.5, -8.0)), + "common.items.weapons.sword.iron-3": ( + vox_spec: ("weapon.sword.iron-3", (-1.5, -4.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_dam-0": ( - vox_spec: ("weapon.sword.long_2h_dam-0", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.iron-4": ( + vox_spec: ("weapon.sword.iron-4", (-1.5, -4.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_dam-1": ( - vox_spec: ("weapon.sword.long_2h_dam-1", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.iron-5": ( + vox_spec: ("weapon.sword.iron-5", (-1.5, -4.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_dam-2": ( - vox_spec: ("weapon.sword.long_2h_dam-2", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.iron-6": ( + vox_spec: ("weapon.sword.iron-6", (-1.5, -5.0, -5.0)), color: None ), - "common.items.weapons.sword.long_2h_dam-3": ( - vox_spec: ("weapon.sword.long_2h_dam-3", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.iron-7": ( + vox_spec: ("weapon.sword.iron-7", (-2.0, -6.0, -5.0)), color: None ), - "common.items.weapons.sword.long_2h_dam-4": ( - vox_spec: ("weapon.sword.long_2h_dam-4", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.iron-8": ( + vox_spec: ("weapon.sword.iron-8", (-2.0, -5.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_dam-5": ( - vox_spec: ("weapon.sword.long_2h_dam-5", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.iron-9": ( + vox_spec: ("weapon.sword.iron-9", (-1.5, -2.5, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_simple-0": ( - vox_spec: ("weapon.sword.long_2h_simple-0", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.iron-10": ( + vox_spec: ("weapon.sword.iron-10", (-1.5, -4.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_simple-1": ( - vox_spec: ("weapon.sword.long_2h_simple-1", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.starter": ( + vox_spec: ("weapon.sword.starter", (-1.5, -4.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_simple-2": ( - vox_spec: ("weapon.sword.long_2h_simple-2", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.steel-0": ( + vox_spec: ("weapon.sword.steel-0", (-1.5, -5.0, -5.0)), color: None ), - "common.items.weapons.sword.long_2h_simple-3": ( - vox_spec: ("weapon.sword.long_2h_simple-3", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.steel-1": ( + vox_spec: ("weapon.sword.steel-1", (-1.5, -4.0, -5.0)), color: None ), - "common.items.weapons.sword.long_2h_simple-4": ( - vox_spec: ("weapon.sword.long_2h_simple-4", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.steel-2": ( + vox_spec: ("weapon.sword.steel-2", (-1.5, -6.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_simple-5": ( - vox_spec: ("weapon.sword.long_2h_simple-5", (-1.0, -3.5, -5.0)), + "common.items.weapons.sword.steel-3": ( + vox_spec: ("weapon.sword.steel-3", (-1.5, -4.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_orn-0": ( - vox_spec: ("weapon.sword.long_2h_orn-0", (-1.0, -3.5, -6.0)), + "common.items.weapons.sword.steel-4": ( + vox_spec: ("weapon.sword.steel-4", (-1.5, -5.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_orn-1": ( - vox_spec: ("weapon.sword.long_2h_orn-1", (-1.0, -3.5, -6.0)), + "common.items.weapons.sword.steel-5": ( + vox_spec: ("weapon.sword.steel-5", (-1.5, -2.5, -5.0)), color: None ), - "common.items.weapons.sword.long_2h_orn-2": ( - vox_spec: ("weapon.sword.long_2h_orn-2", (-1.0, -3.5, -6.0)), + "common.items.weapons.sword.steel-6": ( + vox_spec: ("weapon.sword.steel-6", (-1.5, -5.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_orn-3": ( - vox_spec: ("weapon.sword.long_2h_orn-3", (-1.0, -3.5, -6.0)), + "common.items.weapons.sword.steel-7": ( + vox_spec: ("weapon.sword.steel-7", (-1.5, -5.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_orn-4": ( - vox_spec: ("weapon.sword.long_2h_orn-4", (-1.0, -3.5, -6.0)), + "common.items.weapons.sword.steel-8": ( + vox_spec: ("weapon.sword.steel-8", (-1.5, -5.0, -5.0)), color: None ), - "common.items.weapons.sword.long_2h_orn-5": ( - vox_spec: ("weapon.sword.long_2h_orn-5", (-1.0, -3.5, -6.0)), + "common.items.weapons.sword.stone-0": ( + vox_spec: ("weapon.sword.stone-0", (-2.5, -4.0, -5.0)), color: None ), - "common.items.weapons.sword.long_2h_fine-0": ( - vox_spec: ("weapon.sword.long_2h_fine-0", (-2.0, -4.5, -6.0)), + "common.items.weapons.sword.stone-1": ( + vox_spec: ("weapon.sword.stone-1", (-1.5, -4.0, -5.0)), color: None ), - "common.items.weapons.sword.long_2h_fine-1": ( - vox_spec: ("weapon.sword.long_2h_fine-1", (-2.0, -4.5, -6.0)), + "common.items.weapons.sword.stone-2": ( + vox_spec: ("weapon.sword.stone-2", (-1.5, -4.0, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_fine-2": ( - vox_spec: ("weapon.sword.long_2h_fine-2", (-2.0, -4.5, -6.0)), + "common.items.weapons.sword.wood-0": ( + vox_spec: ("weapon.sword.wood-0", (-1.5, -3.5, -4.0)), color: None ), - "common.items.weapons.sword.long_2h_fine-3": ( - vox_spec: ("weapon.sword.long_2h_fine-3", (-2.0, -4.5, -6.0)), + "common.items.weapons.sword.wood-1": ( + vox_spec: ("weapon.sword.wood-1", (-1.5, -5.0, -5.0)), color: None ), - "common.items.weapons.sword.long_2h_fine-4": ( - vox_spec: ("weapon.sword.long_2h_fine-4", (-2.0, -4.5, -6.0)), + "common.items.weapons.sword.wood-2": ( + vox_spec: ("weapon.sword.wood-2", (-1.5, -6.5, -3.0)), color: None ), - "common.items.weapons.sword.long_2h_fine-5": ( - vox_spec: ("weapon.sword.long_2h_fine-5", (-2.0, -4.5, -6.0)), + // 1h Swords + "common.items.weapons.sword_1h.bloodsteel-0": ( + vox_spec: ("weapon.sword_1h.bloodsteel-0", (-2.0, -4.5, -7.5)), color: None ), - "common.items.weapons.sword.cultist_purp_2h-0": ( - vox_spec: ("weapon.sword.cultist_purp_2h-0", (-2.0, -4.5, -7.5)), + "common.items.weapons.sword_1h.bloodsteel-1": ( + vox_spec: ("weapon.sword_1h.bloodsteel-1", (-2.0, -4.5, -7.5)), color: None ), - "common.items.npc_weapons.sword.cultist_purp_2h-0": ( - vox_spec: ("weapon.sword.cultist_purp_2h-0", (-2.0, -4.5, -7.5)), + "common.items.weapons.sword_1h.bloodsteel-2": ( + vox_spec: ("weapon.sword_1h.bloodsteel-2", (-2.0, -4.5, -7.5)), color: None ), - "common.items.debug.cultist_purp_2h_boss-0": ( - vox_spec: ("weapon.sword.cultist_purp_2h-0", (-2.0, -4.5, -7.5)), + "common.items.weapons.sword_1h.bronze-0": ( + vox_spec: ("weapon.sword_1h.bronze-0", (-2.0, -4.5, -7.5)), color: None ), - "common.items.npc_weapons.sword.cultist_purp_2h_boss-0": ( - vox_spec: ("weapon.sword.cultist_purp_2h-0", (-2.0, -4.5, -7.5)), + "common.items.weapons.sword_1h.bronze-1": ( + vox_spec: ("weapon.sword_1h.bronze-1", (-2.0, -4.5, -7.5)), color: None ), - "common.items.weapons.sword.frost_cleaver_2h-0": ( - vox_spec: ("weapon.sword.frost_cleaver-0", (-2.0, -4.5, -7.5)), + "common.items.weapons.sword_1h.bronze-2": ( + vox_spec: ("weapon.sword_1h.bronze-2", (-2.0, -4.5, -7.5)), color: None ), - "common.items.weapons.sword.frost_cleaver_2h-1": ( - vox_spec: ("weapon.sword.frost_cleaver-1", (-2.0, -4.5, -7.5)), + "common.items.weapons.sword_1h.cobalt-0": ( + vox_spec: ("weapon.sword_1h.cobalt-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.cobalt-1": ( + vox_spec: ("weapon.sword_1h.cobalt-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.cobalt-2": ( + vox_spec: ("weapon.sword_1h.cobalt-2", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.cobalt-3": ( + vox_spec: ("weapon.sword_1h.cobalt-3", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-0": ( + vox_spec: ("weapon.sword_1h.iron-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-1": ( + vox_spec: ("weapon.sword_1h.iron-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-2": ( + vox_spec: ("weapon.sword_1h.iron-2", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-3": ( + vox_spec: ("weapon.sword_1h.iron-3", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-4": ( + vox_spec: ("weapon.sword_1h.iron-4", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.obsidian-0": ( + vox_spec: ("weapon.sword_1h.obsidian-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.orichalcum-0": ( + vox_spec: ("weapon.sword_1h.orichalcum-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.orichalcum-1": ( + vox_spec: ("weapon.sword_1h.orichalcum-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.steel-0": ( + vox_spec: ("weapon.sword_1h.steel-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.steel-1": ( + vox_spec: ("weapon.sword_1h.steel-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.steel-2": ( + vox_spec: ("weapon.sword_1h.steel-2", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.steel-3": ( + vox_spec: ("weapon.sword_1h.steel-3", (-2.0, -4.5, -7.5)), color: None ), // Axes - "common.items.npc_weapons.axe.starter_axe": ( - vox_spec: ("weapon.axe.2haxe_rusty", (-1.5, -5.0, -4.0)), - color: None - ), "common.items.weapons.axe.starter_axe": ( - vox_spec: ("weapon.axe.2haxe_rusty", (-1.5, -5.0, -4.0)), + vox_spec: ("weapon.axe.2haxe_rusty", (-1.5, -7.0, -4.0)), color: None ), "common.items.weapons.axe.orc_axe-0": ( @@ -205,7 +262,7 @@ color: None ), "common.items.weapons.axe.worn_iron_axe-0": ( - vox_spec: ("weapon.axe.2haxe_worn_iron-0", (-1.5, -3.0, -4.0)), + vox_spec: ("weapon.axe.2haxe_worn_iron-0", (-1.5, -5.0, -4.0)), color: None ), "common.items.weapons.axe.worn_iron_axe-1": ( @@ -221,55 +278,59 @@ color: None ), "common.items.weapons.axe.worn_iron_axe-4": ( - vox_spec: ("weapon.axe.2haxe_worn_iron-4", (-1.5, -4.0, -5.5)), + vox_spec: ("weapon.axe.2haxe_worn_iron-4", (-1.5, -6.0, -5.5)), color: None ), "common.items.weapons.axe.bronze_axe-0": ( - vox_spec: ("weapon.axe.2haxe_bronze-0", (-1.5, -4.0, -4.5)), + vox_spec: ("weapon.axe.2haxe_bronze-0", (-1.5, -7.0, -4.5)), color: None ), "common.items.weapons.axe.bronze_axe-1": ( - vox_spec: ("weapon.axe.2haxe_bronze-1", (-1.5, -3.0, -5.5)), + vox_spec: ("weapon.axe.2haxe_bronze-1", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.axe.bronze_axe-2": ( + vox_spec: ("weapon.axe.2haxe_bronze-2", (-1.5, -8.0, -4.0)), color: None ), "common.items.weapons.axe.iron_axe-0": ( - vox_spec: ("weapon.axe.2haxe_iron-0", (-1.5, -5.0, -5.5)), + vox_spec: ("weapon.axe.2haxe_iron-0", (-1.5, -7.0, -5.5)), color: None ), "common.items.weapons.axe.iron_axe-1": ( - vox_spec: ("weapon.axe.2haxe_iron-1", (-1.5, -5.0, -5.5)), + vox_spec: ("weapon.axe.2haxe_iron-1", (-1.5, -7.0, -5.5)), color: None ), "common.items.weapons.axe.iron_axe-2": ( - vox_spec: ("weapon.axe.2haxe_iron-2", (-1.5, -5.0, -5.5)), + vox_spec: ("weapon.axe.2haxe_iron-2", (-1.5, -7.0, -5.5)), color: None ), "common.items.weapons.axe.iron_axe-3": ( - vox_spec: ("weapon.axe.2haxe_iron-3", (-1.5, -6.0, -6.5)), + vox_spec: ("weapon.axe.2haxe_iron-3", (-1.5, -8.0, -6.5)), color: None ), "common.items.weapons.axe.iron_axe-4": ( - vox_spec: ("weapon.axe.2haxe_iron-4", (-1.5, -6.0, -5.5)), + vox_spec: ("weapon.axe.2haxe_iron-4", (-1.5, -7.0, -5.5)), color: None ), "common.items.weapons.axe.iron_axe-5": ( - vox_spec: ("weapon.axe.2haxe_iron-5", (-1.5, -6.0, -5.0)), + vox_spec: ("weapon.axe.2haxe_iron-5", (-1.5, -7.0, -5.0)), color: None ), "common.items.weapons.axe.iron_axe-6": ( - vox_spec: ("weapon.axe.2haxe_iron-6", (-1.5, -5.0, -6.0)), + vox_spec: ("weapon.axe.2haxe_iron-6", (-1.5, -7.0, -6.0)), color: None ), "common.items.weapons.axe.iron_axe-7": ( - vox_spec: ("weapon.axe.2haxe_iron-7", (-1.5, -5.0, -5.0)), + vox_spec: ("weapon.axe.2haxe_iron-7", (-1.5, -7.0, -5.0)), color: None ), "common.items.weapons.axe.iron_axe-8": ( - vox_spec: ("weapon.axe.2haxe_iron-8", (-1.5, -5.0, -5.0)), + vox_spec: ("weapon.axe.2haxe_iron-8", (-1.5, -7.0, -5.0)), color: None ), "common.items.weapons.axe.iron_axe-9": ( - vox_spec: ("weapon.axe.2haxe_iron-9", (-1.5, -4.0, -5.0)), + vox_spec: ("weapon.axe.2haxe_iron-9", (-1.5, -6.0, -5.0)), color: None ), "common.items.weapons.axe.steel_axe-0": ( @@ -277,27 +338,27 @@ color: None ), "common.items.weapons.axe.steel_axe-1": ( - vox_spec: ("weapon.axe.2haxe_steel-1", (-1.5, -7.0, -5.5)), + vox_spec: ("weapon.axe.2haxe_steel-1", (-1.5, -8.0, -5.5)), color: None ), "common.items.weapons.axe.steel_axe-2": ( - vox_spec: ("weapon.axe.2haxe_steel-2", (-1.5, -3.5, -3.5)), + vox_spec: ("weapon.axe.2haxe_steel-2", (-1.5, -9.0, -3.5)), color: None ), "common.items.weapons.axe.steel_axe-3": ( - vox_spec: ("weapon.axe.2haxe_steel-3", (-1.5, -4.0, -6.0)), + vox_spec: ("weapon.axe.2haxe_steel-3", (-1.5, -5.5, -6.0)), color: None ), "common.items.weapons.axe.steel_axe-4": ( - vox_spec: ("weapon.axe.2haxe_steel-4", (-1.5, -4.0, -5.5)), + vox_spec: ("weapon.axe.2haxe_steel-4", (-1.5, -6.0, -5.5)), color: None ), "common.items.weapons.axe.steel_axe-5": ( - vox_spec: ("weapon.axe.2haxe_steel-5", (-1.5, -5.5, -5.5)), + vox_spec: ("weapon.axe.2haxe_steel-5", (-1.5, -8.0, -5.5)), color: None ), "common.items.weapons.axe.steel_axe-6": ( - vox_spec: ("weapon.axe.2haxe_steel-6", (-1.5, -4.0, -4.0)), + vox_spec: ("weapon.axe.2haxe_steel-6", (-1.5, -6.0, -4.0)), color: None ), "common.items.weapons.axe.bloodsteel_axe-0": ( @@ -305,23 +366,100 @@ color: None ), "common.items.weapons.axe.bloodsteel_axe-1": ( - vox_spec: ("weapon.axe.2haxe_bloodsteel-1", (-1.5, -5.5, -5.0)), + vox_spec: ("weapon.axe.2haxe_bloodsteel-1", (-1.5, -7.0, -5.0)), color: None ), "common.items.weapons.axe.bloodsteel_axe-2": ( - vox_spec: ("weapon.axe.2haxe_bloodsteel-2", (-1.5, -5.0, -4.0)), + vox_spec: ("weapon.axe.2haxe_bloodsteel-2", (-1.5, -8.0, -4.0)), color: None ), "common.items.weapons.axe.cobalt_axe-0": ( - vox_spec: ("weapon.axe.2haxe_cobalt-0", (-1.5, -5.0, -5.5)), + vox_spec: ("weapon.axe.2haxe_cobalt-0", (-1.5, -7.0, -5.5)), color: None ), - "common.items.npc_weapons.axe.malachite_axe-0": ( - vox_spec: ("weapon.axe.2haxe_malachite-0", (-1.5, -5.0, -6.0)), + "common.items.weapons.axe.cobalt_axe-1": ( + vox_spec: ("weapon.axe.2haxe_cobalt-1", (-1.5, -8.0, -5.5)), color: None ), "common.items.weapons.axe.malachite_axe-0": ( - vox_spec: ("weapon.axe.2haxe_malachite-0", (-1.5, -5.0, -6.0)), + vox_spec: ("weapon.axe.2haxe_malachite-0", (-1.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.axe.parashu": ( + vox_spec: ("weapon.axe.parashu", (-1.5, -12.0, -6.0)), + color: None + ), + // 1h Axes + "common.items.weapons.axe_1h.bloodsteel-0": ( + vox_spec: ("weapon.axe_1h.bloodsteel-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.bloodsteel-1": ( + vox_spec: ("weapon.axe_1h.bloodsteel-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.bronze-0": ( + vox_spec: ("weapon.axe_1h.bronze-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.bronze-1": ( + vox_spec: ("weapon.axe_1h.bronze-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.cobalt-0": ( + vox_spec: ("weapon.axe_1h.cobalt-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.cobalt-1": ( + vox_spec: ("weapon.axe_1h.cobalt-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.iron-0": ( + vox_spec: ("weapon.axe_1h.iron-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.iron-1": ( + vox_spec: ("weapon.axe_1h.iron-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.iron-2": ( + vox_spec: ("weapon.axe_1h.iron-2", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.iron-3": ( + vox_spec: ("weapon.axe_1h.iron-3", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.orichalcum-0": ( + vox_spec: ("weapon.axe_1h.orichalcum-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.steel-0": ( + vox_spec: ("weapon.axe_1h.steel-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.steel-1": ( + vox_spec: ("weapon.axe_1h.steel-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.steel-2": ( + vox_spec: ("weapon.axe_1h.steel-2", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.stone-0": ( + vox_spec: ("weapon.axe_1h.stone-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.stone-1": ( + vox_spec: ("weapon.axe_1h.stone-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.wood-0": ( + vox_spec: ("weapon.axe_1h.wood-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.wood-1": ( + vox_spec: ("weapon.axe_1h.wood-1", (-1.5, -5.0, -6.0)), color: None ), // Hammers @@ -333,10 +471,6 @@ vox_spec: ("weapon.hammer.2hhammer_rusty", (-2.5, -5.5, -4.5)), color: None ), - "common.items.npc_weapons.hammer.starter_hammer": ( - vox_spec: ("weapon.hammer.2hhammer_rusty", (-2.5, -5.5, -4.5)), - color: None - ), "common.items.weapons.hammer.wood_hammer-0": ( vox_spec: ("weapon.hammer.2hhammer_wood-0", (-3.5, -5.5, -4.5)), color: None @@ -469,20 +603,81 @@ vox_spec: ("weapon.hammer.cult_purp-0", (-3.5, -4.5, -5.0)), color: None ), - "common.items.npc_weapons.hammer.cultist_purp_2h-0": ( - vox_spec: ("weapon.hammer.cult_purp-0", (-3.5, -4.5, -5.0)), - color: None - ), /*"Craftsman": ( //TODO This should be a 1h hammer! vox_spec: ("weapon.hammer.craftsman", (-2.0, -5.0, -5.5)), color: None ),*/ - // Daggers - "common.items.weapons.dagger.starter_dagger": ( - vox_spec: ("weapon.dagger.dagger_rusty", (-1.5, -3.0, -3.0)), + // 1h Hammers + "common.items.weapons.hammer_1h.bloodsteel-0": ( + vox_spec: ("weapon.hammer_1h.bloodsteel-0", (-1.5, -5.0, -6.0)), color: None ), - "common.items.npc_weapons.dagger.starter_dagger": ( + "common.items.weapons.hammer_1h.bloodsteel-1": ( + vox_spec: ("weapon.hammer_1h.bloodsteel-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.bronze-0": ( + vox_spec: ("weapon.hammer_1h.bronze-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.bronze-1": ( + vox_spec: ("weapon.hammer_1h.bronze-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.cobalt-0": ( + vox_spec: ("weapon.hammer_1h.cobalt-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.cobalt-1": ( + vox_spec: ("weapon.hammer_1h.cobalt-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.iron-0": ( + vox_spec: ("weapon.hammer_1h.iron-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.iron-1": ( + vox_spec: ("weapon.hammer_1h.iron-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.iron-2": ( + vox_spec: ("weapon.hammer_1h.iron-2", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.orichalcum-0": ( + vox_spec: ("weapon.hammer_1h.orichalcum-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.steel-0": ( + vox_spec: ("weapon.hammer_1h.steel-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.steel-1": ( + vox_spec: ("weapon.hammer_1h.steel-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.steel-2": ( + vox_spec: ("weapon.hammer_1h.steel-2", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.stone-0": ( + vox_spec: ("weapon.hammer_1h.stone-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.stone-1": ( + vox_spec: ("weapon.hammer_1h.stone-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.wood-0": ( + vox_spec: ("weapon.hammer_1h.wood-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.wood-1": ( + vox_spec: ("weapon.hammer_1h.wood-1", (-1.5, -5.0, -6.0)), + color: None + ), + // Daggers + "common.items.weapons.dagger.starter_dagger": ( vox_spec: ("weapon.dagger.dagger_rusty", (-1.5, -3.0, -3.0)), color: None ), @@ -499,57 +694,129 @@ vox_spec: ("weapon.shield.wood-0", (-2.5, -5.5, -5.5)), color: None ), - "common.items.npc_weapons.shield.shield_1": ( - vox_spec: ("weapon.shield.wood-0", (-2.5, -5.5, -5.5)), - color: None - ), // Bows - "common.items.weapons.bow.starter_bow": ( - vox_spec: ("weapon.bow.shortbow_starter", (-0.5, -3.0, -8.5)), + "common.items.weapons.bow.bone-0": ( + vox_spec: ("weapon.bow.bone-0", (-0.5, -5.5, -12.5)), color: None ), - "common.items.weapons.bow.wood_shortbow-0": ( - vox_spec: ("weapon.bow.shortbow_wood-0", (-0.5, -3.0, -9.5)), + "common.items.weapons.bow.bone-1": ( + vox_spec: ("weapon.bow.bone-1", (-1.5, -4.5, -15.5)), color: None ), - "common.items.weapons.bow.wood_shortbow-1": ( - vox_spec: ("weapon.bow.shortbow_wood-1", (-0.5, -3.5, -9.5)), + "common.items.weapons.bow.bone-2": ( + vox_spec: ("weapon.bow.bone-2", (-1.5, -5.5, -13.0)), color: None ), - "common.items.weapons.bow.leafy_shortbow-0": ( - vox_spec: ("weapon.bow.shortbow_leafy-0", (-0.5, -4.5, -9.0)), + "common.items.weapons.bow.bone-3": ( + vox_spec: ("weapon.bow.bone-3", (-1.5, -5.0, -12.5)), color: None ), - "common.items.weapons.bow.wood_longbow-0": ( - vox_spec: ("weapon.bow.longbow_wood-0", (-0.5, -3.5, -12.5)), + "common.items.weapons.bow.eldwood-0": ( + vox_spec: ("weapon.bow.eldwood-0", (-1.5, -4.0, -12.5)), color: None ), - "common.items.weapons.bow.wood_longbow-1": ( - vox_spec: ("weapon.bow.longbow_wood-1", (-1.5, -3.5, -12.5)), + "common.items.weapons.bow.eldwood-1": ( + vox_spec: ("weapon.bow.eldwood-1", (-1.5, -5.5, -12.5)), color: None ), - "common.items.weapons.bow.leafy_longbow-0": ( - vox_spec: ("weapon.bow.longbow_leafy-0", (-1.5, -4.5, -12.5)), + "common.items.weapons.bow.eldwood-2": ( + vox_spec: ("weapon.bow.eldwood-2", (-1.5, -4.5, -12.5)), color: None ), - "common.items.weapons.bow.horn_longbow-0": ( - vox_spec: ("weapon.bow.longbow_horn-0", (-1.5, -4.5, -17.5)), + "common.items.weapons.bow.frostwood-0": ( + vox_spec: ("weapon.bow.frostwood-0", (-1.5, -6.0, -13.5)), color: None ), - "common.items.npc_weapons.bow.horn_longbow-0": ( - vox_spec: ("weapon.bow.longbow_horn-0", (-1.5, -4.5, -17.5)), + "common.items.weapons.bow.frostwood-1": ( + vox_spec: ("weapon.bow.frostwood-1", (-1.5, -5.0, -12.5)), color: None ), - "common.items.weapons.bow.iron_longbow-0": ( - vox_spec: ("weapon.bow.longbow_iron-0", (-1.5, -4.0, -16.0)), + "common.items.weapons.bow.frostwood-2": ( + vox_spec: ("weapon.bow.frostwood-2", (-1.5, -4.5, -12.5)), color: None ), - "common.items.weapons.bow.rare_longbow": ( - vox_spec: ("weapon.bow.longbow_rare", (-1.5, -5.0, -13.5)), + "common.items.weapons.bow.hardwood-0": ( + vox_spec: ("weapon.bow.hardwood-0", (-1.5, -4.0, -12.0)), color: None ), - "common.items.weapons.bow.nature_ore_longbow-0": ( - vox_spec: ("weapon.bow.longbow_ore_nature-0", (-1.5, -4.0, -15.0)), + "common.items.weapons.bow.hardwood-1": ( + vox_spec: ("weapon.bow.hardwood-1", (-1.5, -4.5, -12.5)), + color: None + ), + "common.items.weapons.bow.hardwood-2": ( + vox_spec: ("weapon.bow.hardwood-2", (-1.5, -6.0, -12.5)), + color: None + ), + "common.items.weapons.bow.hardwood-3": ( + vox_spec: ("weapon.bow.hardwood-3", (-0.5, -4.0, -11.0)), + color: None + ), + "common.items.weapons.bow.hardwood-4": ( + vox_spec: ("weapon.bow.hardwood-4", (-0.5, -3.5, -12.5)), + color: None + ), + "common.items.weapons.bow.hardwood-5": ( + vox_spec: ("weapon.bow.hardwood-5", (-1.5, -5.0, -13.5)), + color: None + ), + "common.items.weapons.bow.metal-0": ( + vox_spec: ("weapon.bow.metal-0", (-0.5, -6.0, -13.5)), + color: None + ), + "common.items.weapons.bow.metal-1": ( + vox_spec: ("weapon.bow.metal-1", (-1.5, -5.0, -13.5)), + color: None + ), + "common.items.weapons.bow.metal-2": ( + vox_spec: ("weapon.bow.metal-2", (-1.5, -4.0, -11.5)), + color: None + ), + "common.items.weapons.bow.metal-3": ( + vox_spec: ("weapon.bow.metal-3", (-1.5, -5.5, -15.0)), + color: None + ), + "common.items.weapons.bow.metal-4": ( + vox_spec: ("weapon.bow.metal-4", (-1.5, -4.0, -15.0)), + color: None + ), + "common.items.weapons.bow.rawwood-0": ( + vox_spec: ("weapon.bow.rawwood-0", (-1.5, -4.0, -12.5)), + color: None + ), + "common.items.weapons.bow.rawwood-1": ( + vox_spec: ("weapon.bow.rawwood-1", (-1.5, -4.0, -12.5)), + color: None + ), + "common.items.weapons.bow.sagitta": ( + vox_spec: ("weapon.bow.sagitta", (-1.5, -7.0, -12.5)), + color: None + ), + "common.items.weapons.bow.starter": ( + vox_spec: ("weapon.bow.starter", (-0.5, -3.0, -8.5)), + color: None + ), + "common.items.weapons.bow.velorite": ( + vox_spec: ("weapon.bow.velorite", (-1.5, -4.0, -15.0)), + color: None + ), + "common.items.weapons.bow.wood-0": ( + vox_spec: ("weapon.bow.wood-0", (-0.5, -5.0, -11.0)), + color: None + ), + "common.items.weapons.bow.wood-1": ( + vox_spec: ("weapon.bow.wood-1", (-0.5, -4.5, -12.5)), + color: None + ), + "common.items.weapons.bow.wood-2": ( + vox_spec: ("weapon.bow.wood-2", (-0.5, -3.5, -11.0)), + color: None + ), + "common.items.weapons.bow.wood-3": ( + vox_spec: ("weapon.bow.wood-3", (-0.5, -3.5, -12.5)), + color: None + ), + "common.items.weapons.bow.wood-4": ( + vox_spec: ("weapon.bow.wood-4", (-0.5, -4.5, -11.5)), color: None ), // Farming Equipment @@ -585,38 +852,6 @@ vox_spec: ("weapon.tool.shovel_gold", (-1.0, -2.5, -4.0)), color: None ), - "common.items.npc_weapons.tool.broom": ( - vox_spec: ("weapon.tool.broom-0", (-1.5, -4.0, -4.0)), - color: None - ), - "common.items.npc_weapons.tool.hoe": ( - vox_spec: ("weapon.tool.hoe_green", (-2.5, -4.5, -4.0)), - color: None - ), - "common.items.npc_weapons.tool.pitchfork": ( - vox_spec: ("weapon.tool.pitchfork-0", (-1.0, -3.5, -4.0)), - color: None - ), - "common.items.npc_weapons.tool.fishing_rod": ( - vox_spec: ("weapon.tool.fishing_rod_blue-0", (-2.5, -4.5, -4.0)), - color: None - ), - "common.items.npc_weapons.tool.rake": ( - vox_spec: ("weapon.tool.rake-0", (-1.0, -5.5, -4.0)), - color: None - ), - "common.items.npc_weapons.tool.pickaxe": ( - vox_spec: ("weapon.tool.pickaxe_green-0", (-1.5, -7.5, -4.0)), - color: None - ), - "common.items.npc_weapons.tool.shovel-0": ( - vox_spec: ("weapon.tool.shovel_green", (-1.0, -2.5, -4.0)), - color: None - ), - "common.items.npc_weapons.tool.shovel-1": ( - vox_spec: ("weapon.tool.shovel_gold", (-1.0, -2.5, -4.0)), - color: None - ), // Staves "common.items.weapons.staff.staff_1": ( vox_spec: ("weapon.staff.firestaff_starter", (-1.5, -3.0, -3.0)), @@ -630,10 +865,6 @@ vox_spec: ("weapon.staff.firestaff_bone", (-1.5, -2.5, -3.0)), color: None ), - "common.items.npc_weapons.staff.bone_staff": ( - vox_spec: ("weapon.staff.firestaff_bone", (-1.5, -2.5, -3.0)), - color: None - ), "common.items.weapons.staff.amethyst_staff": ( vox_spec: ("weapon.staff.firestaff_amethyst", (-1.5, -4.0, -4.0)), color: None @@ -642,10 +873,6 @@ vox_spec: ("weapon.staff.firestaff_cultist", (-2.5, -2.5, -4.0)), color: None ), - "common.items.npc_weapons.staff.cultist_staff": ( - vox_spec: ("weapon.staff.firestaff_cultist", (-2.5, -2.5, -4.0)), - color: None - ), // Healing sceptre "common.items.weapons.sceptre.starter_sceptre": ( vox_spec: ("weapon.sceptre.wood-simple", (-1.5, -2.5, -6.0)), @@ -684,16 +911,12 @@ color: None ), // Misc - "common.items.debug.boost": ( + "common.items.debug.admin_stick": ( vox_spec: ("weapon.tool.broom_belzeshrub_purple", (-3.0, -4.0, -4.0)), color: None ), - "common.items.debug.possess": ( - vox_spec: ("weapon.tool.broom_belzeshrub_purple", (-3.0, -4.0, -4.0)), - color: None - ), - "common.items.debug.cultist_purp_2h_boss-0": ( - vox_spec: ("weapon.sword.frost_cleaver-1", (-2.0, -4.5, -7.5)), + "common.items.debug.admin_sword": ( + vox_spec: ("weapon.sword.frost-1", (-2.0, -4.5, -7.5)), color: None ), // Misc diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs index 4f799aad08..c6110aece5 100644 --- a/voxygen/anim/src/biped_small/run.rs +++ b/voxygen/anim/src/biped_small/run.rs @@ -27,7 +27,7 @@ impl Animation for RunAnimation { let mut next = (*skeleton).clone(); let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; - let speednorm = speed / 9.4; + let speednorm = (speed / 9.4).powf(0.4); let lab = 1.0; diff --git a/voxygen/anim/src/character/run.rs b/voxygen/anim/src/character/run.rs index c2a978bf48..3c6621976d 100644 --- a/voxygen/anim/src/character/run.rs +++ b/voxygen/anim/src/character/run.rs @@ -50,7 +50,7 @@ impl Animation for RunAnimation { let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; let impact = (avg_vel.z).max(-8.0); - let speednorm = (speed / 9.4).min(1.5); + let speednorm = (speed / 9.4).powf(0.6); let lab = 1.0; @@ -159,7 +159,11 @@ impl Animation for RunAnimation { Quaternion::rotation_x(0.6 * speednorm + (footrotr * -1.2) * speednorm) * Quaternion::rotation_y(footrotr * 0.4 * speednorm); - next.hand_r.position = -next.hand_l.position; + next.hand_r.position = Vec3::new( + s_a.hand.0 + foothoril * 1.3 * speednorm, + 3.0 * speednorm + s_a.hand.1 + foothoril * -7.0 * speednorm, + 1.5 * speednorm + s_a.hand.2 - foothoril * 5.5 * speednorm, + ); next.hand_r.orientation = Quaternion::rotation_x(0.6 * speednorm + (footrotl * -1.2) * speednorm) * Quaternion::rotation_y(footrotl * -0.4 * speednorm); diff --git a/voxygen/anim/src/character/spin.rs b/voxygen/anim/src/character/spin.rs index 8799a1e13c..fcbe305d22 100644 --- a/voxygen/anim/src/character/spin.rs +++ b/voxygen/anim/src/character/spin.rs @@ -65,7 +65,7 @@ impl Animation for SpinAnimation { * Quaternion::rotation_y( s_a.sc.4 - 0.6 + movement1 * 0.0 + movement2 * -1.7, ) - * Quaternion::rotation_z(s_a.sc.5 + 0.1 + movement1 * -1.57); + * Quaternion::rotation_z(s_a.sc.5 + 0.1 + movement1 * 1.57); next.head.position = Vec3::new( 0.0 + 2.0 + movement2 * -2.0, 2.0 + movement2 * -2.0 + s_a.head.0, diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index c3e217f119..6e8a02bcae 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -434,8 +434,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Kelpie, _) => (-0.5, 0.5, -4.5), (Horse, _) => (-0.5, 0.5, -5.0), (Barghest, _) => (2.0, 2.5, -6.0), - (Cattle, Male) => (-2.5, 1.0, -5.0), - (Cattle, Female) => (-1.5, 0.5, -5.5), + (Cattle, Male) => (-0.5, 1.0, -5.0), + (Cattle, Female) => (-0.5, 0.5, -5.5), (Darkhound, _) => (0.0, 0.5, -4.0), (Highland, _) => (-0.5, 0.5, -4.5), (Yak, _) => (-0.5, 0.0, -5.0), @@ -481,11 +481,17 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tiger, _) => (1.2), (Catoblepas, _) => (1.3), (Roshwalr, _) => (1.2), - (Barghest, _) => (1.3), - (Cattle, _) => (1.9), - (Highland, _) => (1.9), - (Bear, _) => (1.9), - (Yak, _) => (1.9), + (Barghest, _) => (1.5), + (Antelope, _) => (1.2), + (Kelpie, _) => (1.3), + (Donkey, _) => (1.2), + (Horse, _) => (1.4), + (Zebra, _) => (1.3), + (Cattle, _) => (1.7), + (Highland, _) => (1.7), + (Bear, _) => (1.7), + (Yak, _) => (1.7), + (Camel, _) => (1.4), _ => (1.0), }, startangle: match (body.species, body.body_type) { @@ -523,6 +529,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Highland, _) => (0.8), (Bear, _) => (0.8), (Yak, _) => (0.8), + (Camel, _) => (1.8), _ => (1.0), }, spring: match (body.species, body.body_type) { diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index 0d332df7e2..34430cdd3a 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -746,9 +746,7 @@ impl Floor { )), 5 => match dynamic_rng.gen_range(0..6) { 0 => entity - .with_body(comp::Body::BipedSmall( - comp::biped_small::Body::random(), - )) + .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_name("Cultist Warlock") .with_loadout_config(loadout_builder::LoadoutConfig::Warlock) .with_skillset_config(