diff --git a/assets/common/npc_names.json b/assets/common/npc_names.json index 02b904a488..1491b3f0b6 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -529,6 +529,10 @@ "troll": { "keyword": "troll", "generic": "Troll" + }, + "dullahan": { + "keyword": "dullahan", + "generic": "Dullahan" } } }, diff --git a/assets/voxygen/voxel/biped_large_center_manifest.ron b/assets/voxygen/voxel/biped_large_center_manifest.ron index 78447fca21..55fc0ecc34 100644 --- a/assets/voxygen/voxel/biped_large_center_manifest.ron +++ b/assets/voxygen/voxel/biped_large_center_manifest.ron @@ -143,4 +143,43 @@ center: ("armor.empty"), ) ), + + + (Dullahan, Male): ( + head: ( + offset: (-8.0, -5.0, -6.0), + center: ("armor.empty"), + ), + torso_upper: ( + offset: (-9.0, -7.5, -7.0), + center: ("npc.dullahan.male.torso_upper"), + ), + torso_lower: ( + offset: (-8.0, -6.0, -9.0), + center: ("npc.dullahan.male.torso_lower"), + ), + main: ( + offset: (-1.5, -9.0, -10.0), + center: ("npc.dullahan.male.sword"), + ) + ), + + (Dullahan, Female): ( + head: ( + offset: (-8.0, -5.0, -6.0), + center: ("armor.empty"), + ), + torso_upper: ( + offset: (-9.0, -7.5, -7.0), + center: ("npc.dullahan.male.torso_upper"), + ), + torso_lower: ( + offset: (-8.0, -6.0, -9.0), + center: ("npc.dullahan.male.torso_lower"), + ), + main: ( + offset: (-1.5, -9.0, -10.0), + center: ("npc.dullahan.male.sword"), + ) + ), }) diff --git a/assets/voxygen/voxel/biped_large_lateral_manifest.ron b/assets/voxygen/voxel/biped_large_lateral_manifest.ron index f93a9bdf5c..2393b04181 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -1,274 +1,342 @@ -({ - (Ogre, Male): ( - shoulder_l: ( - offset: (-4.0, -5.5, -4.0), - lateral: ("armor.empty"), - ), - shoulder_r: ( - offset: (-4.0, -5.5, -4.0), - lateral: ("npc.ogre.male.shoulder_r"), - ), - hand_l: ( - offset: (-2.5, -2.5, -11.0), - lateral: ("npc.ogre.male.hand_l"), - ), - hand_r: ( - offset: (-2.5, -2.5, -11.0), - lateral: ("npc.ogre.male.hand_r"), - ), - leg_l: ( - offset: (-6.0, -3.5, -7.0), - lateral: ("npc.ogre.male.leg_l"), - ), - leg_r: ( - offset: (0.0, -3.5, -7.0), - lateral: ("npc.ogre.male.leg_r"), - ), - foot_l: ( - offset: (-3.0, -5.0, -2.5), - lateral: ("npc.ogre.male.foot_l"), - ), - foot_r: ( - offset: (-3.0, -5.0, -2.5), - lateral: ("npc.ogre.male.foot_r"), - ) - ), - (Ogre, Female): ( - shoulder_l: ( - offset: (-4.0, -5.5, -4.0), - lateral: ("armor.empty"), - ), - shoulder_r: ( - offset: (-4.0, -5.5, -4.0), - lateral: ("npc.ogre.male.shoulder_r"), - ), - hand_l: ( - offset: (-2.5, -2.5, -11.0), - lateral: ("npc.ogre.male.hand_l"), - ), - hand_r: ( - offset: (-2.5, -2.5, -11.0), - lateral: ("npc.ogre.male.hand_r"), - ), - leg_l: ( - offset: (-6.0, -3.5, -7.0), - lateral: ("npc.ogre.male.leg_l"), - ), - leg_r: ( - offset: (0.0, -3.5, -7.0), - lateral: ("npc.ogre.male.leg_r"), - ), - foot_l: ( - offset: (-3.0, -5.0, -2.5), - lateral: ("npc.ogre.male.foot_l"), - ), - foot_r: ( - offset: (-3.0, -5.0, -2.5), - lateral: ("npc.ogre.male.foot_r"), - ) - ), - (Cyclops, Male): ( - shoulder_l: ( - offset: (-3.0, -4.0, -5.0), - lateral: ("npc.cyclops.male.shoulder_l"), - ), - shoulder_r: ( - offset: (-3.0, -4.0, -5.0), - lateral: ("npc.cyclops.male.shoulder_r"), - ), - hand_l: ( - offset: (-3.5, -3.5, -14.0), - lateral: ("npc.cyclops.male.hand_l"), - ), - hand_r: ( - offset: (-3.5, -3.5, -14.0), - lateral: ("npc.cyclops.male.hand_r"), - ), - leg_l: ( - offset: (-6.0, -3.5, -7.0), - lateral: ("npc.cyclops.male.leg_l"), - ), - leg_r: ( - offset: (0.0, -3.5, -7.0), - lateral: ("npc.cyclops.male.leg_r"), - ), - foot_l: ( - offset: (-3.0, -5.0, -5.0), - lateral: ("npc.cyclops.male.foot_l"), - ), - foot_r: ( - offset: (-3.0, -5.0, -5.0), - lateral: ("npc.cyclops.male.foot_r"), - ) - ), - (Cyclops, Female): ( - shoulder_l: ( - offset: (-3.0, -4.0, -5.0), - lateral: ("npc.cyclops.male.shoulder_l"), - ), - shoulder_r: ( - offset: (-3.0, -4.0, -5.0), - lateral: ("npc.cyclops.male.shoulder_r"), - ), - hand_l: ( - offset: (-3.5, -3.5, -14.0), - lateral: ("npc.cyclops.male.hand_l"), - ), - hand_r: ( - offset: (-3.5, -3.5, -14.0), - lateral: ("npc.cyclops.male.hand_r"), - ), - leg_l: ( - offset: (-6.0, -3.5, -7.0), - lateral: ("npc.cyclops.male.leg_l"), - ), - leg_r: ( - offset: (0.0, -3.5, -7.0), - lateral: ("npc.cyclops.male.leg_r"), - ), - foot_l: ( - offset: (-3.0, -5.0, -5.0), - lateral: ("npc.cyclops.male.foot_l"), - ), - foot_r: ( - offset: (-3.0, -5.0, -5.0), - lateral: ("npc.cyclops.male.foot_r"), - ) - ), - (Wendigo, Male): ( - shoulder_l: ( - offset: (-3.0, -4.0, -5.0), - lateral: ("npc.wendigo.male.shoulder_l"), - ), - shoulder_r: ( - offset: (-3.0, -4.0, -5.0), - lateral: ("npc.wendigo.male.shoulder_r"), - ), - hand_l: ( - offset: (-4.0, -3.5, -18.0), - lateral: ("npc.wendigo.male.hand_l"), - ), - hand_r: ( - offset: (-4.0, -3.5, -18.0), - lateral: ("npc.wendigo.male.hand_r"), - ), - leg_l: ( - offset: (-4.0, -2.5, -9.0), - lateral: ("npc.wendigo.male.leg_l"), - ), - leg_r: ( - offset: (0.0, -2.5, -9.0), - lateral: ("npc.wendigo.male.leg_r"), - ), - foot_l: ( - offset: (-4.0, -5.0, -5.5), - lateral: ("npc.wendigo.male.foot_l"), - ), - foot_r: ( - offset: (-4.0, -5.0, -5.5), - lateral: ("npc.wendigo.male.foot_r"), - ) - ), - (Wendigo, Female): ( - shoulder_l: ( - offset: (-3.0, -4.0, -5.0), - lateral: ("npc.wendigo.male.shoulder_l"), - ), - shoulder_r: ( - offset: (-3.0, -4.0, -5.0), - lateral: ("npc.wendigo.male.shoulder_r"), - ), - hand_l: ( - offset: (-4.0, -3.5, -18.0), - lateral: ("npc.wendigo.male.hand_l"), - ), - hand_r: ( - offset: (-4.0, -3.5, -18.0), - lateral: ("npc.wendigo.male.hand_r"), - ), - leg_l: ( - offset: (-4.0, -2.5, -9.0), - lateral: ("npc.wendigo.male.leg_l"), - ), - leg_r: ( - offset: (0.0, -2.5, -9.0), - lateral: ("npc.wendigo.male.leg_r"), - ), - foot_l: ( - offset: (-4.0, -5.0, -5.5), - lateral: ("npc.wendigo.male.foot_l"), - ), - foot_r: ( - offset: (-4.0, -5.0, -5.5), - lateral: ("npc.wendigo.male.foot_r"), - ) - ), - (Troll, Male): ( - shoulder_l: ( - offset: (-5.0, -4.5, -7.0), - lateral: ("npc.troll.male.shoulder_l"), - ), - shoulder_r: ( - offset: (-5.0, -4.5, -7.0), - lateral: ("npc.troll.male.shoulder_r"), - ), - hand_l: ( - offset: (-3.5, -4.0, -15.0), - lateral: ("npc.troll.male.hand_l"), - ), - hand_r: ( - offset: (-3.5, -4.0, -15.0), - lateral: ("npc.troll.male.hand_r"), - ), - leg_l: ( - offset: (-3.0, -2.5, -4.5), - lateral: ("npc.troll.male.leg_l"), - ), - leg_r: ( - offset: (-3.0, -2.5, -4.5), - lateral: ("npc.troll.male.leg_r"), - ), - foot_l: ( - offset: (-3.0, -5.0, -2.5), - lateral: ("npc.troll.male.foot_l"), - ), - foot_r: ( - offset: (-3.0, -5.0, -2.5), - lateral: ("npc.troll.male.foot_r"), - ) - ), - (Troll, Female): ( - shoulder_l: ( - offset: (-5.0, -4.5, -7.0), - lateral: ("npc.troll.male.shoulder_l"), - ), - shoulder_r: ( - offset: (-5.0, -4.5, -7.0), - lateral: ("npc.troll.male.shoulder_r"), - ), - hand_l: ( - offset: (-3.5, -4.0, -15.0), - lateral: ("npc.troll.male.hand_l"), - ), - hand_r: ( - offset: (-3.5, -4.0, -15.0), - lateral: ("npc.troll.male.hand_r"), - ), - leg_l: ( - offset: (-3.0, -2.5, -4.5), - lateral: ("npc.troll.male.leg_l"), - ), - leg_r: ( - offset: (-3.0, -2.5, -4.5), - lateral: ("npc.troll.male.leg_r"), - ), - foot_l: ( - offset: (-3.0, -5.0, -2.5), - lateral: ("npc.troll.male.foot_l"), - ), - foot_r: ( - offset: (-3.0, -5.0, -2.5), - lateral: ("npc.troll.male.foot_r"), - ) - ), -}) +({ + (Ogre, Male): ( + shoulder_l: ( + offset: (-4.0, -5.5, -4.0), + lateral: ("armor.empty"), + ), + shoulder_r: ( + offset: (-4.0, -5.5, -4.0), + lateral: ("npc.ogre.male.shoulder_r"), + ), + hand_l: ( + offset: (-2.5, -2.5, -11.0), + lateral: ("npc.ogre.male.hand_l"), + ), + hand_r: ( + offset: (-2.5, -2.5, -11.0), + lateral: ("npc.ogre.male.hand_r"), + ), + leg_l: ( + offset: (-6.0, -3.5, -7.0), + lateral: ("npc.ogre.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -3.5, -7.0), + lateral: ("npc.ogre.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.ogre.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.ogre.male.foot_r"), + ), + ), + (Ogre, Female): ( + shoulder_l: ( + offset: (-4.0, -5.5, -4.0), + lateral: ("armor.empty"), + ), + shoulder_r: ( + offset: (-4.0, -5.5, -4.0), + lateral: ("npc.ogre.male.shoulder_r"), + ), + hand_l: ( + offset: (-2.5, -2.5, -11.0), + lateral: ("npc.ogre.male.hand_l"), + ), + hand_r: ( + offset: (-2.5, -2.5, -11.0), + lateral: ("npc.ogre.male.hand_r"), + ), + leg_l: ( + offset: (-6.0, -3.5, -7.0), + lateral: ("npc.ogre.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -3.5, -7.0), + lateral: ("npc.ogre.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.ogre.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.ogre.male.foot_r"), + ), + ), + (Cyclops, Male): ( + shoulder_l: ( + offset: (-3.0, -4.0, -5.0), + lateral: ("npc.cyclops.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.0, -4.0, -5.0), + lateral: ("npc.cyclops.male.shoulder_r"), + ), + hand_l: ( + offset: (-3.5, -3.5, -14.0), + lateral: ("npc.cyclops.male.hand_l"), + ), + hand_r: ( + offset: (-3.5, -3.5, -14.0), + lateral: ("npc.cyclops.male.hand_r"), + ), + leg_l: ( + offset: (-6.0, -3.5, -7.0), + lateral: ("npc.cyclops.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -3.5, -7.0), + lateral: ("npc.cyclops.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -5.0), + lateral: ("npc.cyclops.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -5.0), + lateral: ("npc.cyclops.male.foot_r"), + ), + ), + (Cyclops, Female): ( + shoulder_l: ( + offset: (-3.0, -4.0, -5.0), + lateral: ("npc.cyclops.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.0, -4.0, -5.0), + lateral: ("npc.cyclops.male.shoulder_r"), + ), + hand_l: ( + offset: (-3.5, -3.5, -14.0), + lateral: ("npc.cyclops.male.hand_l"), + ), + hand_r: ( + offset: (-3.5, -3.5, -14.0), + lateral: ("npc.cyclops.male.hand_r"), + ), + leg_l: ( + offset: (-6.0, -3.5, -7.0), + lateral: ("npc.cyclops.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -3.5, -7.0), + lateral: ("npc.cyclops.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -5.0), + lateral: ("npc.cyclops.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -5.0), + lateral: ("npc.cyclops.male.foot_r"), + ), + ), + (Wendigo, Male): ( + shoulder_l: ( + offset: (-3.0, -4.0, -5.0), + lateral: ("npc.wendigo.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.0, -4.0, -5.0), + lateral: ("npc.wendigo.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -3.5, -18.0), + lateral: ("npc.wendigo.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -3.5, -18.0), + lateral: ("npc.wendigo.male.hand_r"), + ), + leg_l: ( + offset: (-4.0, -2.5, -9.0), + lateral: ("npc.wendigo.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -2.5, -9.0), + lateral: ("npc.wendigo.male.leg_r"), + ), + foot_l: ( + offset: (-4.0, -5.0, -5.5), + lateral: ("npc.wendigo.male.foot_l"), + ), + foot_r: ( + offset: (-4.0, -5.0, -5.5), + lateral: ("npc.wendigo.male.foot_r"), + ), + ), + (Wendigo, Female): ( + shoulder_l: ( + offset: (-3.0, -4.0, -5.0), + lateral: ("npc.wendigo.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.0, -4.0, -5.0), + lateral: ("npc.wendigo.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -3.5, -18.0), + lateral: ("npc.wendigo.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -3.5, -18.0), + lateral: ("npc.wendigo.male.hand_r"), + ), + leg_l: ( + offset: (-4.0, -2.5, -9.0), + lateral: ("npc.wendigo.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -2.5, -9.0), + lateral: ("npc.wendigo.male.leg_r"), + ), + foot_l: ( + offset: (-4.0, -5.0, -5.5), + lateral: ("npc.wendigo.male.foot_l"), + ), + foot_r: ( + offset: (-4.0, -5.0, -5.5), + lateral: ("npc.wendigo.male.foot_r"), + ), + ), + (Troll, Male): ( + shoulder_l: ( + offset: (-5.0, -4.5, -7.0), + lateral: ("npc.troll.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-5.0, -4.5, -7.0), + lateral: ("npc.troll.male.shoulder_r"), + ), + hand_l: ( + offset: (-3.5, -4.0, -15.0), + lateral: ("npc.troll.male.hand_l"), + ), + hand_r: ( + offset: (-3.5, -4.0, -15.0), + lateral: ("npc.troll.male.hand_r"), + ), + leg_l: ( + offset: (-3.0, -2.5, -4.5), + lateral: ("npc.troll.male.leg_l"), + ), + leg_r: ( + offset: (-3.0, -2.5, -4.5), + lateral: ("npc.troll.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll.male.foot_r"), + ), + ), + (Troll, Female): ( + shoulder_l: ( + offset: (-5.0, -4.5, -7.0), + lateral: ("npc.troll.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-5.0, -4.5, -7.0), + lateral: ("npc.troll.male.shoulder_r"), + ), + hand_l: ( + offset: (-3.5, -4.0, -15.0), + lateral: ("npc.troll.male.hand_l"), + ), + hand_r: ( + offset: (-3.5, -4.0, -15.0), + lateral: ("npc.troll.male.hand_r"), + ), + leg_l: ( + offset: (-3.0, -2.5, -4.5), + lateral: ("npc.troll.male.leg_l"), + ), + leg_r: ( + offset: (-3.0, -2.5, -4.5), + lateral: ("npc.troll.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll.male.foot_r"), + ), + ), + (Dullahan, Male): ( + shoulder_l: ( + offset: (-7.5, -5.5, -6.0), + lateral: ("npc.dullahan.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-7.5, -5.5, -6.0), + lateral: ("npc.dullahan.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.5, -4.5, -15.0), + lateral: ("npc.dullahan.male.hand_l"), + ), + hand_r: ( + offset: (-4.5, -4.5, -15.0), + lateral: ("npc.dullahan.male.hand_r"), + ), + leg_l: ( + offset: (-6.0, -3.0, -7.0), + lateral: ("npc.dullahan.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -3.0, -7.0), + lateral: ("npc.dullahan.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -8.0), + lateral: ("npc.dullahan.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -8.0), + lateral: ("npc.dullahan.male.foot_r"), + ), + ), + (Dullahan, Female): ( + shoulder_l: ( + offset: (-7.5, -5.5, -6.0), + lateral: ("npc.dullahan.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-7.5, -5.5, -6.0), + lateral: ("npc.dullahan.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.5, -4.5, -15.0), + lateral: ("npc.dullahan.male.hand_l"), + ), + hand_r: ( + offset: (-4.5, -4.5, -15.0), + lateral: ("npc.dullahan.male.hand_r"), + ), + leg_l: ( + offset: (-6.0, -3.0, -7.0), + lateral: ("npc.dullahan.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -3.0, -7.0), + lateral: ("npc.dullahan.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -8.0), + lateral: ("npc.dullahan.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -8.0), + lateral: ("npc.dullahan.male.foot_r"), + ), + ), +}) diff --git a/assets/voxygen/voxel/npc/dullahan/male/foot_l.vox b/assets/voxygen/voxel/npc/dullahan/male/foot_l.vox new file mode 100644 index 0000000000..e31d07f249 --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45ed57d20891b571e637f7733f1de5187c35590f1e6446349b5b5e0ed58188bd +size 2104 diff --git a/assets/voxygen/voxel/npc/dullahan/male/foot_r.vox b/assets/voxygen/voxel/npc/dullahan/male/foot_r.vox new file mode 100644 index 0000000000..b774989bc3 --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f209474f4c97e8c89d087d89c7508d9cca64aa10e40498727e9db6cb7fa26448 +size 2104 diff --git a/assets/voxygen/voxel/npc/dullahan/male/hand_l.vox b/assets/voxygen/voxel/npc/dullahan/male/hand_l.vox new file mode 100644 index 0000000000..b6fa334608 --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef08b43313df6e0eb2d3c20553a1fef64e8bb5496a3fe80b86b4e6a980fa8129 +size 28870 diff --git a/assets/voxygen/voxel/npc/dullahan/male/hand_r.vox b/assets/voxygen/voxel/npc/dullahan/male/hand_r.vox new file mode 100644 index 0000000000..f3d1567d54 --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7968ca6bb7f3ba3963e93e14164678d22c4bd70810df8088f1717b49e07fc01 +size 2736 diff --git a/assets/voxygen/voxel/npc/dullahan/male/leg_l.vox b/assets/voxygen/voxel/npc/dullahan/male/leg_l.vox new file mode 100644 index 0000000000..6bb2545e17 --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7776c82525285f481e789bf7544f6647d8c90fc06d490ece5598e4d36c43492 +size 1616 diff --git a/assets/voxygen/voxel/npc/dullahan/male/leg_r.vox b/assets/voxygen/voxel/npc/dullahan/male/leg_r.vox new file mode 100644 index 0000000000..dd652eeb34 --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7366ce3eb27b267966b575c0dfcc108b127bbcc12d7d11f38ed38fe301490305 +size 1616 diff --git a/assets/voxygen/voxel/npc/dullahan/male/shoulder_l.vox b/assets/voxygen/voxel/npc/dullahan/male/shoulder_l.vox new file mode 100644 index 0000000000..dea14d4cc7 --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5531f231f085a09641abdf48222b1921cbda67bcbb9af228a0523ce57c17b10 +size 2836 diff --git a/assets/voxygen/voxel/npc/dullahan/male/shoulder_r.vox b/assets/voxygen/voxel/npc/dullahan/male/shoulder_r.vox new file mode 100644 index 0000000000..7742a4563a --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57690de57732dd9535e23872f4a78b1edb7525ee96fe0198434ec23706838d51 +size 2836 diff --git a/assets/voxygen/voxel/npc/dullahan/male/sword.vox b/assets/voxygen/voxel/npc/dullahan/male/sword.vox new file mode 100644 index 0000000000..20e851d954 --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/sword.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd8042dc7589277f76062e6db323a433606f197e512200a4d84c87d90532688e +size 2584 diff --git a/assets/voxygen/voxel/npc/dullahan/male/torso_lower.vox b/assets/voxygen/voxel/npc/dullahan/male/torso_lower.vox new file mode 100644 index 0000000000..97d2d75c16 --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:317c7c1f69a44001fec8e5470340b0f4845d6b2f6120d0cfe937cd7941ad649e +size 2752 diff --git a/assets/voxygen/voxel/npc/dullahan/male/torso_upper.vox b/assets/voxygen/voxel/npc/dullahan/male/torso_upper.vox new file mode 100644 index 0000000000..fc166bd88d --- /dev/null +++ b/assets/voxygen/voxel/npc/dullahan/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3342b8e93bf6712c179c426621774eb8cd728ad434eeb02d010734fea8219d9e +size 6680 diff --git a/common/src/comp/body/biped_large.rs b/common/src/comp/body/biped_large.rs index 5b90048c59..d8ba2a9f95 100644 --- a/common/src/comp/body/biped_large.rs +++ b/common/src/comp/body/biped_large.rs @@ -32,6 +32,7 @@ pub enum Species { Cyclops = 1, Wendigo = 2, Troll = 3, + Dullahan = 4, } /// Data representing per-species generic data. @@ -43,6 +44,7 @@ pub struct AllSpecies { pub cyclops: SpeciesMeta, pub wendigo: SpeciesMeta, pub troll: SpeciesMeta, + pub dullahan: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -55,15 +57,17 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Cyclops => &self.cyclops, Species::Wendigo => &self.wendigo, Species::Troll => &self.troll, + Species::Dullahan => &self.dullahan, } } } -pub const ALL_SPECIES: [Species; 4] = [ +pub const ALL_SPECIES: [Species; 5] = [ Species::Ogre, Species::Cyclops, Species::Wendigo, Species::Troll, + Species::Dullahan, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/voxygen/src/anim/src/biped_large/mod.rs b/voxygen/src/anim/src/biped_large/mod.rs index e3f9432623..6af323397f 100644 --- a/voxygen/src/anim/src/biped_large/mod.rs +++ b/voxygen/src/anim/src/biped_large/mod.rs @@ -141,42 +141,49 @@ impl<'a> From<&'a comp::biped_large::Body> for SkeletonAttr { (Cyclops, _) => (4.5, 7.5), (Wendigo, _) => (3.0, 13.5), (Troll, _) => (6.0, 10.0), + (Dullahan, _) => (3.0, 6.0), }, upper_torso: match (body.species, body.body_type) { (Ogre, _) => (0.0, 19.0), (Cyclops, _) => (-2.0, 27.0), (Wendigo, _) => (-1.0, 29.0), (Troll, _) => (-1.0, 27.5), + (Dullahan, _) => (0.0, 29.0), }, lower_torso: match (body.species, body.body_type) { (Ogre, _) => (1.0, -5.5), (Cyclops, _) => (1.0, -4.5), (Wendigo, _) => (-1.5, -6.0), (Troll, _) => (1.0, -10.5), + (Dullahan, _) => (0.0, -6.5), }, shoulder: match (body.species, body.body_type) { (Ogre, _) => (6.1, 0.5, 2.5), (Cyclops, _) => (9.5, 2.5, 2.5), (Wendigo, _) => (9.0, 0.5, -0.5), (Troll, _) => (11.0, 0.5, -2.5), + (Dullahan, _) => (14.0, 0.5, 4.5), }, hand: match (body.species, body.body_type) { (Ogre, _) => (10.5, -1.0, -0.5), (Cyclops, _) => (10.0, 2.0, -0.5), (Wendigo, _) => (12.0, 0.0, -0.5), (Troll, _) => (11.5, 0.0, -1.5), + (Dullahan, _) => (14.5, 0.0, -2.5), }, leg: match (body.species, body.body_type) { (Ogre, _) => (0.0, 0.0, 0.0), (Cyclops, _) => (0.0, 0.0, -5.0), (Wendigo, _) => (2.0, 2.0, -2.5), (Troll, _) => (5.0, 0.0, -6.0), + (Dullahan, _) => (0.0, 0.0, -5.0), }, foot: match (body.species, body.body_type) { (Ogre, _) => (4.0, 2.5, 2.5), (Cyclops, _) => (4.0, 0.5, 5.0), (Wendigo, _) => (5.0, 0.5, 6.0), (Troll, _) => (6.0, 0.5, 4.0), + (Dullahan, _) => (4.0, 2.5, 8.0), }, } } diff --git a/voxygen/src/anim/src/critter/jump.rs b/voxygen/src/anim/src/critter/jump.rs index 8279d321bb..bb82953d97 100644 --- a/voxygen/src/anim/src/critter/jump.rs +++ b/voxygen/src/anim/src/critter/jump.rs @@ -21,6 +21,8 @@ impl Animation for JumpAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let wave = (_anim_time as f32 * 1.0).sin(); + next.head.offset = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); next.head.ori = Quaternion::rotation_z(0.8) * Quaternion::rotation_x(0.5); next.head.scale = Vec3::one(); @@ -30,11 +32,11 @@ impl Animation for JumpAnimation { next.chest.scale = Vec3::one() / 18.0; next.feet_f.offset = Vec3::new(0.0, skeleton_attr.feet_f.0, skeleton_attr.feet_f.1); - next.feet_f.ori = Quaternion::rotation_z(0.0); + next.feet_f.ori = Quaternion::rotation_x(wave * 0.4); next.feet_f.scale = Vec3::one(); next.feet_b.offset = Vec3::new(0.0, skeleton_attr.feet_b.0, skeleton_attr.feet_b.1); - next.feet_b.ori = Quaternion::rotation_x(0.0); + next.feet_b.ori = Quaternion::rotation_x(wave * 0.4); next.feet_b.scale = Vec3::one(); next.tail.offset = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); diff --git a/voxygen/src/anim/src/critter/run.rs b/voxygen/src/anim/src/critter/run.rs index 120277f76b..cb2019a9a0 100644 --- a/voxygen/src/anim/src/critter/run.rs +++ b/voxygen/src/anim/src/critter/run.rs @@ -22,8 +22,8 @@ impl Animation for RunAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let wave = (anim_time as f32 * 13.0).sin(); - let wave_cos = (anim_time as f32 * 13.0).sin(); + let wave = (anim_time as f32 * 8.0).sin(); + let wavealt = (anim_time as f32 * 8.0 + PI / 2.0).sin(); let wave_slow = (anim_time as f32 * 6.5 + PI).sin(); next.head.offset = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); @@ -35,15 +35,17 @@ impl Animation for RunAnimation { skeleton_attr.chest.0 + wave * 1.0, skeleton_attr.chest.1, ) / 18.0; - next.chest.ori = Quaternion::rotation_y(0.0); + next.chest.ori = Quaternion::rotation_x(wave * 0.1); next.chest.scale = Vec3::one() / 18.0; next.feet_f.offset = Vec3::new(0.0, skeleton_attr.feet_f.0, skeleton_attr.feet_f.1); - next.feet_f.ori = Quaternion::rotation_x(wave * 1.0); + next.feet_f.ori = + Quaternion::rotation_x(wave * 0.8) * Quaternion::rotation_z(wavealt / 6.0); next.feet_f.scale = Vec3::one(); next.feet_b.offset = Vec3::new(0.0, skeleton_attr.feet_b.0, skeleton_attr.feet_b.1); - next.feet_b.ori = Quaternion::rotation_x(wave_cos * 1.0); + next.feet_b.ori = + Quaternion::rotation_x(wavealt * 0.8) * Quaternion::rotation_z(wavealt / 6.0); next.feet_b.scale = Vec3::one(); next.tail.offset = Vec3::new(0.0, skeleton_attr.tail.0 + wave * 1.0, skeleton_attr.tail.1);