diff --git a/CHANGELOG.md b/CHANGELOG.md index 14463b8eef..372ff1f3b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved camera aiming - Made civsim, sites, etc. deterministic from the same seed. - Improved animations by adding orientation variation +- new tail bone for quad_small body +- slim the game size through lossless asset optimization ### Removed diff --git a/assets/voxygen/audio/soundtrack/between_the_fairies.ogg b/assets/voxygen/audio/soundtrack/between_the_fairies.ogg index 46e4e1a987..a18c6ebaef 100644 Binary files a/assets/voxygen/audio/soundtrack/between_the_fairies.ogg and b/assets/voxygen/audio/soundtrack/between_the_fairies.ogg differ diff --git a/assets/voxygen/audio/soundtrack/campfire_stories.ogg b/assets/voxygen/audio/soundtrack/campfire_stories.ogg index d854d85f65..abff30ff16 100644 Binary files a/assets/voxygen/audio/soundtrack/campfire_stories.ogg and b/assets/voxygen/audio/soundtrack/campfire_stories.ogg differ diff --git a/assets/voxygen/audio/soundtrack/down_the_rabbit_hole.ogg b/assets/voxygen/audio/soundtrack/down_the_rabbit_hole.ogg index 6b9d2a5c32..91088105c3 100644 Binary files a/assets/voxygen/audio/soundtrack/down_the_rabbit_hole.ogg and b/assets/voxygen/audio/soundtrack/down_the_rabbit_hole.ogg differ diff --git a/assets/voxygen/audio/soundtrack/field_grazing.ogg b/assets/voxygen/audio/soundtrack/field_grazing.ogg index 5a235e5761..20ba988210 100644 Binary files a/assets/voxygen/audio/soundtrack/field_grazing.ogg and b/assets/voxygen/audio/soundtrack/field_grazing.ogg differ diff --git a/assets/voxygen/audio/soundtrack/just_the_beginning.ogg b/assets/voxygen/audio/soundtrack/just_the_beginning.ogg index 42b6d4318b..fc55c10072 100644 Binary files a/assets/voxygen/audio/soundtrack/just_the_beginning.ogg and b/assets/voxygen/audio/soundtrack/just_the_beginning.ogg differ diff --git a/assets/voxygen/audio/soundtrack/limits.ogg b/assets/voxygen/audio/soundtrack/limits.ogg index 103f349cf0..d820e87600 100644 Binary files a/assets/voxygen/audio/soundtrack/limits.ogg and b/assets/voxygen/audio/soundtrack/limits.ogg differ diff --git a/assets/voxygen/audio/soundtrack/mineral_deposits.ogg b/assets/voxygen/audio/soundtrack/mineral_deposits.ogg index 23f21f1978..18987b8f63 100644 Binary files a/assets/voxygen/audio/soundtrack/mineral_deposits.ogg and b/assets/voxygen/audio/soundtrack/mineral_deposits.ogg differ diff --git a/assets/voxygen/audio/soundtrack/moonbeams.ogg b/assets/voxygen/audio/soundtrack/moonbeams.ogg index bd8428b437..8728a792f1 100644 Binary files a/assets/voxygen/audio/soundtrack/moonbeams.ogg and b/assets/voxygen/audio/soundtrack/moonbeams.ogg differ diff --git a/assets/voxygen/audio/soundtrack/rest_assured.ogg b/assets/voxygen/audio/soundtrack/rest_assured.ogg index 840e5c8849..1511425b7e 100644 Binary files a/assets/voxygen/audio/soundtrack/rest_assured.ogg and b/assets/voxygen/audio/soundtrack/rest_assured.ogg differ diff --git a/assets/voxygen/audio/soundtrack/serene_meadows.ogg b/assets/voxygen/audio/soundtrack/serene_meadows.ogg index 5837692bfb..9ee5671e83 100644 Binary files a/assets/voxygen/audio/soundtrack/serene_meadows.ogg and b/assets/voxygen/audio/soundtrack/serene_meadows.ogg differ diff --git a/assets/voxygen/audio/soundtrack/snowtop_volume.ogg b/assets/voxygen/audio/soundtrack/snowtop_volume.ogg index a40454c2bc..0e374dbc1d 100644 Binary files a/assets/voxygen/audio/soundtrack/snowtop_volume.ogg and b/assets/voxygen/audio/soundtrack/snowtop_volume.ogg differ diff --git a/assets/voxygen/audio/soundtrack/veloren_title_tune.ogg b/assets/voxygen/audio/soundtrack/veloren_title_tune.ogg index 0f784e59ed..6a0b33647e 100644 Binary files a/assets/voxygen/audio/soundtrack/veloren_title_tune.ogg and b/assets/voxygen/audio/soundtrack/veloren_title_tune.ogg differ diff --git a/assets/voxygen/audio/soundtrack/wandering_voices.ogg b/assets/voxygen/audio/soundtrack/wandering_voices.ogg index bc6f2e66c3..10a2b4f750 100644 Binary files a/assets/voxygen/audio/soundtrack/wandering_voices.ogg and b/assets/voxygen/audio/soundtrack/wandering_voices.ogg differ diff --git a/assets/voxygen/background/bg_1.png b/assets/voxygen/background/bg_1.png index c6c118f654..a1e0eb29e1 100644 Binary files a/assets/voxygen/background/bg_1.png and b/assets/voxygen/background/bg_1.png differ diff --git a/assets/voxygen/background/bg_10.png b/assets/voxygen/background/bg_10.png index 48448e11b0..ddb0da59e5 100644 Binary files a/assets/voxygen/background/bg_10.png and b/assets/voxygen/background/bg_10.png differ diff --git a/assets/voxygen/background/bg_11.png b/assets/voxygen/background/bg_11.png index 11d4f9807d..17cf1a0968 100644 Binary files a/assets/voxygen/background/bg_11.png and b/assets/voxygen/background/bg_11.png differ diff --git a/assets/voxygen/background/bg_12.png b/assets/voxygen/background/bg_12.png index 35a369b984..0df2b0bd67 100644 Binary files a/assets/voxygen/background/bg_12.png and b/assets/voxygen/background/bg_12.png differ diff --git a/assets/voxygen/background/bg_13.png b/assets/voxygen/background/bg_13.png index 5c9bacc3c2..57a4b48bba 100644 Binary files a/assets/voxygen/background/bg_13.png and b/assets/voxygen/background/bg_13.png differ diff --git a/assets/voxygen/background/bg_14.png b/assets/voxygen/background/bg_14.png index 2d77aa1bab..8d6cb5b3dd 100644 Binary files a/assets/voxygen/background/bg_14.png and b/assets/voxygen/background/bg_14.png differ diff --git a/assets/voxygen/background/bg_15.png b/assets/voxygen/background/bg_15.png index f3b63de715..52ca5c0b9a 100644 Binary files a/assets/voxygen/background/bg_15.png and b/assets/voxygen/background/bg_15.png differ diff --git a/assets/voxygen/background/bg_2.png b/assets/voxygen/background/bg_2.png index a52721ad4a..47a734b494 100644 Binary files a/assets/voxygen/background/bg_2.png and b/assets/voxygen/background/bg_2.png differ diff --git a/assets/voxygen/background/bg_3.png b/assets/voxygen/background/bg_3.png index 9a388dc235..9aecf5c04c 100644 Binary files a/assets/voxygen/background/bg_3.png and b/assets/voxygen/background/bg_3.png differ diff --git a/assets/voxygen/background/bg_4.png b/assets/voxygen/background/bg_4.png index b4dfdf4dda..cc27b6b129 100644 Binary files a/assets/voxygen/background/bg_4.png and b/assets/voxygen/background/bg_4.png differ diff --git a/assets/voxygen/background/bg_5.png b/assets/voxygen/background/bg_5.png index b74a4f3cc1..877f13776e 100644 Binary files a/assets/voxygen/background/bg_5.png and b/assets/voxygen/background/bg_5.png differ diff --git a/assets/voxygen/background/bg_6.png b/assets/voxygen/background/bg_6.png index 85327d9a0b..ea3a721d79 100644 Binary files a/assets/voxygen/background/bg_6.png and b/assets/voxygen/background/bg_6.png differ diff --git a/assets/voxygen/background/bg_7.png b/assets/voxygen/background/bg_7.png index eec3f51c88..9dc1749e16 100644 Binary files a/assets/voxygen/background/bg_7.png and b/assets/voxygen/background/bg_7.png differ diff --git a/assets/voxygen/background/bg_8.png b/assets/voxygen/background/bg_8.png index 0bf240ca01..c0157936c6 100644 Binary files a/assets/voxygen/background/bg_8.png and b/assets/voxygen/background/bg_8.png differ diff --git a/assets/voxygen/background/bg_9.png b/assets/voxygen/background/bg_9.png index 14e5666eec..1360c496b6 100644 Binary files a/assets/voxygen/background/bg_9.png and b/assets/voxygen/background/bg_9.png differ diff --git a/assets/voxygen/background/bg_main.png b/assets/voxygen/background/bg_main.png index e30ec739eb..c21a36d286 100644 Binary files a/assets/voxygen/background/bg_main.png and b/assets/voxygen/background/bg_main.png differ diff --git a/assets/voxygen/background/death.png b/assets/voxygen/background/death.png index da57a2b2f0..acfe5fafa6 100644 Binary files a/assets/voxygen/background/death.png and b/assets/voxygen/background/death.png differ diff --git a/assets/voxygen/background/hurt.png b/assets/voxygen/background/hurt.png index 370a4f2791..e046917fe5 100644 Binary files a/assets/voxygen/background/hurt.png and b/assets/voxygen/background/hurt.png differ diff --git a/assets/voxygen/voxel/armor/belt/cloth_black.vox b/assets/voxygen/voxel/armor/belt/cloth_black.vox index 47b805ddae..3cd87df9f8 100644 Binary files a/assets/voxygen/voxel/armor/belt/cloth_black.vox and b/assets/voxygen/voxel/armor/belt/cloth_black.vox differ diff --git a/assets/voxygen/voxel/armor/belt/cloth_grey.vox b/assets/voxygen/voxel/armor/belt/cloth_grey.vox index 86f60c5c78..d2a2a00e93 100644 Binary files a/assets/voxygen/voxel/armor/belt/cloth_grey.vox and b/assets/voxygen/voxel/armor/belt/cloth_grey.vox differ diff --git a/assets/voxygen/voxel/armor/belt/dark.vox b/assets/voxygen/voxel/armor/belt/dark.vox index d3d67129ff..2a19853895 100644 Binary files a/assets/voxygen/voxel/armor/belt/dark.vox and b/assets/voxygen/voxel/armor/belt/dark.vox differ diff --git a/assets/voxygen/voxel/armor/chest/cloth_red_kimono.vox b/assets/voxygen/voxel/armor/chest/cloth_red_kimono.vox index aee1265d93..1a864e23a2 100644 Binary files a/assets/voxygen/voxel/armor/chest/cloth_red_kimono.vox and b/assets/voxygen/voxel/armor/chest/cloth_red_kimono.vox differ diff --git a/assets/voxygen/voxel/armor/chest/grayscale.vox b/assets/voxygen/voxel/armor/chest/grayscale.vox index 986210d095..00c0669afa 100644 Binary files a/assets/voxygen/voxel/armor/chest/grayscale.vox and b/assets/voxygen/voxel/armor/chest/grayscale.vox differ diff --git a/assets/voxygen/voxel/armor/chest/leather-0.vox b/assets/voxygen/voxel/armor/chest/leather-0.vox index 29064a535c..64ecd13f0f 100644 Binary files a/assets/voxygen/voxel/armor/chest/leather-0.vox and b/assets/voxygen/voxel/armor/chest/leather-0.vox differ diff --git a/assets/voxygen/voxel/armor/chest/leather-2.vox b/assets/voxygen/voxel/armor/chest/leather-2.vox index 577c0d0018..ab1f713738 100644 Binary files a/assets/voxygen/voxel/armor/chest/leather-2.vox and b/assets/voxygen/voxel/armor/chest/leather-2.vox differ diff --git a/assets/voxygen/voxel/armor/chest/plate_green-0.vox b/assets/voxygen/voxel/armor/chest/plate_green-0.vox index fd0955b15f..684ecca3c7 100644 Binary files a/assets/voxygen/voxel/armor/chest/plate_green-0.vox and b/assets/voxygen/voxel/armor/chest/plate_green-0.vox differ diff --git a/assets/voxygen/voxel/armor/empty.vox b/assets/voxygen/voxel/armor/empty.vox index 85622e158e..611eb13998 100644 Binary files a/assets/voxygen/voxel/armor/empty.vox and b/assets/voxygen/voxel/armor/empty.vox differ diff --git a/assets/voxygen/voxel/armor/foot/assa.vox b/assets/voxygen/voxel/armor/foot/assa.vox index 354253636d..ca9599c6db 100644 Binary files a/assets/voxygen/voxel/armor/foot/assa.vox and b/assets/voxygen/voxel/armor/foot/assa.vox differ diff --git a/assets/voxygen/voxel/armor/foot/dark-0.vox b/assets/voxygen/voxel/armor/foot/dark-0.vox index 8b5a6b2c51..cf8bff4c0e 100644 Binary files a/assets/voxygen/voxel/armor/foot/dark-0.vox and b/assets/voxygen/voxel/armor/foot/dark-0.vox differ diff --git a/assets/voxygen/voxel/armor/foot/dark_jester-elf_shoe.vox b/assets/voxygen/voxel/armor/foot/dark_jester-elf_shoe.vox index 812956a2ed..e6b78c1ca7 100644 Binary files a/assets/voxygen/voxel/armor/foot/dark_jester-elf_shoe.vox and b/assets/voxygen/voxel/armor/foot/dark_jester-elf_shoe.vox differ diff --git a/assets/voxygen/voxel/armor/foot/foot_none.vox b/assets/voxygen/voxel/armor/foot/foot_none.vox index add20f7b34..8f7aabdf3c 100644 Binary files a/assets/voxygen/voxel/armor/foot/foot_none.vox and b/assets/voxygen/voxel/armor/foot/foot_none.vox differ diff --git a/assets/voxygen/voxel/armor/hand/assa_right.vox b/assets/voxygen/voxel/armor/hand/assa_right.vox index 624bccb939..4e34d0c806 100644 Binary files a/assets/voxygen/voxel/armor/hand/assa_right.vox and b/assets/voxygen/voxel/armor/hand/assa_right.vox differ diff --git a/assets/voxygen/voxel/armor/hand/bare_left.vox b/assets/voxygen/voxel/armor/hand/bare_left.vox index f2fb714ef8..0d150e8243 100644 Binary files a/assets/voxygen/voxel/armor/hand/bare_left.vox and b/assets/voxygen/voxel/armor/hand/bare_left.vox differ diff --git a/assets/voxygen/voxel/armor/hand/bare_right.vox b/assets/voxygen/voxel/armor/hand/bare_right.vox index bed4861289..bab8663c9d 100644 Binary files a/assets/voxygen/voxel/armor/hand/bare_right.vox and b/assets/voxygen/voxel/armor/hand/bare_right.vox differ diff --git a/assets/voxygen/voxel/armor/hand/cloth_basic_left.vox b/assets/voxygen/voxel/armor/hand/cloth_basic_left.vox index ce445505ad..0e78e73661 100644 Binary files a/assets/voxygen/voxel/armor/hand/cloth_basic_left.vox and b/assets/voxygen/voxel/armor/hand/cloth_basic_left.vox differ diff --git a/assets/voxygen/voxel/armor/hand/cloth_basic_right.vox b/assets/voxygen/voxel/armor/hand/cloth_basic_right.vox index 32a8ba911b..a8755ffb03 100644 Binary files a/assets/voxygen/voxel/armor/hand/cloth_basic_right.vox and b/assets/voxygen/voxel/armor/hand/cloth_basic_right.vox differ diff --git a/assets/voxygen/voxel/armor/hand/cloth_blue_left-0.vox b/assets/voxygen/voxel/armor/hand/cloth_blue_left-0.vox index fbc9e2e296..314f5f497b 100644 Binary files a/assets/voxygen/voxel/armor/hand/cloth_blue_left-0.vox and b/assets/voxygen/voxel/armor/hand/cloth_blue_left-0.vox differ diff --git a/assets/voxygen/voxel/armor/hand/cloth_green_left-0.vox b/assets/voxygen/voxel/armor/hand/cloth_green_left-0.vox index 275b1199f5..543f969ef3 100644 Binary files a/assets/voxygen/voxel/armor/hand/cloth_green_left-0.vox and b/assets/voxygen/voxel/armor/hand/cloth_green_left-0.vox differ diff --git a/assets/voxygen/voxel/armor/hand/cloth_green_right-0.vox b/assets/voxygen/voxel/armor/hand/cloth_green_right-0.vox index aa280de156..c64ea45475 100644 Binary files a/assets/voxygen/voxel/armor/hand/cloth_green_right-0.vox and b/assets/voxygen/voxel/armor/hand/cloth_green_right-0.vox differ diff --git a/assets/voxygen/voxel/armor/hand/cloth_purple_left-0.vox b/assets/voxygen/voxel/armor/hand/cloth_purple_left-0.vox index 7e6fad6d5c..012a3205c7 100644 Binary files a/assets/voxygen/voxel/armor/hand/cloth_purple_left-0.vox and b/assets/voxygen/voxel/armor/hand/cloth_purple_left-0.vox differ diff --git a/assets/voxygen/voxel/armor/hand/cloth_purple_right-0.vox b/assets/voxygen/voxel/armor/hand/cloth_purple_right-0.vox index 7e6fad6d5c..012a3205c7 100644 Binary files a/assets/voxygen/voxel/armor/hand/cloth_purple_right-0.vox and b/assets/voxygen/voxel/armor/hand/cloth_purple_right-0.vox differ diff --git a/assets/voxygen/voxel/armor/hand/plate_right-0.vox b/assets/voxygen/voxel/armor/hand/plate_right-0.vox index eb7fb33cf9..5540fffa95 100644 Binary files a/assets/voxygen/voxel/armor/hand/plate_right-0.vox and b/assets/voxygen/voxel/armor/hand/plate_right-0.vox differ diff --git a/assets/voxygen/voxel/armor/shoulder/chain_left-1.vox b/assets/voxygen/voxel/armor/shoulder/chain_left-1.vox index 547599a99e..2464298173 100644 Binary files a/assets/voxygen/voxel/armor/shoulder/chain_left-1.vox and b/assets/voxygen/voxel/armor/shoulder/chain_left-1.vox differ diff --git a/assets/voxygen/voxel/armor/shoulder/chain_left.vox b/assets/voxygen/voxel/armor/shoulder/chain_left.vox index 8210150807..ba3a64e5f4 100644 Binary files a/assets/voxygen/voxel/armor/shoulder/chain_left.vox and b/assets/voxygen/voxel/armor/shoulder/chain_left.vox differ diff --git a/assets/voxygen/voxel/armor/shoulder/chain_right-1.vox b/assets/voxygen/voxel/armor/shoulder/chain_right-1.vox index faf8bad902..96e567d32f 100644 Binary files a/assets/voxygen/voxel/armor/shoulder/chain_right-1.vox and b/assets/voxygen/voxel/armor/shoulder/chain_right-1.vox differ diff --git a/assets/voxygen/voxel/armor/shoulder/chain_right.vox b/assets/voxygen/voxel/armor/shoulder/chain_right.vox index 6236addb4e..1ba380e8fc 100644 Binary files a/assets/voxygen/voxel/armor/shoulder/chain_right.vox and b/assets/voxygen/voxel/armor/shoulder/chain_right.vox differ diff --git a/assets/voxygen/voxel/armor/shoulder/cloth_purple_left-0.vox b/assets/voxygen/voxel/armor/shoulder/cloth_purple_left-0.vox index 99d7f66bad..a2ff46e0d8 100644 Binary files a/assets/voxygen/voxel/armor/shoulder/cloth_purple_left-0.vox and b/assets/voxygen/voxel/armor/shoulder/cloth_purple_left-0.vox differ diff --git a/assets/voxygen/voxel/armor/shoulder/leather_left-0.vox b/assets/voxygen/voxel/armor/shoulder/leather_left-0.vox index 6c92d59183..52b86cb401 100644 Binary files a/assets/voxygen/voxel/armor/shoulder/leather_left-0.vox and b/assets/voxygen/voxel/armor/shoulder/leather_left-0.vox differ diff --git a/assets/voxygen/voxel/armor/shoulder/leather_right-0.vox b/assets/voxygen/voxel/armor/shoulder/leather_right-0.vox index 3b0d418a21..9f7c968e73 100644 Binary files a/assets/voxygen/voxel/armor/shoulder/leather_right-0.vox and b/assets/voxygen/voxel/armor/shoulder/leather_right-0.vox differ diff --git a/assets/voxygen/voxel/armor/shoulder/leather_right-1.vox b/assets/voxygen/voxel/armor/shoulder/leather_right-1.vox index 3108ed33c9..868cc18455 100644 Binary files a/assets/voxygen/voxel/armor/shoulder/leather_right-1.vox and b/assets/voxygen/voxel/armor/shoulder/leather_right-1.vox differ diff --git a/assets/voxygen/voxel/armor/shoulder/plate_right-0.vox b/assets/voxygen/voxel/armor/shoulder/plate_right-0.vox index f8730e67fd..d665704b8b 100644 Binary files a/assets/voxygen/voxel/armor/shoulder/plate_right-0.vox and b/assets/voxygen/voxel/armor/shoulder/plate_right-0.vox differ diff --git a/assets/voxygen/voxel/lantern/black-0.vox b/assets/voxygen/voxel/lantern/black-0.vox index 18daf4e8d0..0f9eb69905 100644 Binary files a/assets/voxygen/voxel/lantern/black-0.vox and b/assets/voxygen/voxel/lantern/black-0.vox differ diff --git a/assets/voxygen/voxel/lantern/green-0.vox b/assets/voxygen/voxel/lantern/green-0.vox index cae38e1588..c9bd06a2c7 100644 Binary files a/assets/voxygen/voxel/lantern/green-0.vox and b/assets/voxygen/voxel/lantern/green-0.vox differ diff --git a/assets/voxygen/voxel/npc/boar/female/chest.vox b/assets/voxygen/voxel/npc/boar/female/chest.vox index c27623ee4a..b9de4541e2 100644 Binary files a/assets/voxygen/voxel/npc/boar/female/chest.vox and b/assets/voxygen/voxel/npc/boar/female/chest.vox differ diff --git a/assets/voxygen/voxel/npc/boar/female/tail.vox b/assets/voxygen/voxel/npc/boar/female/tail.vox new file mode 100644 index 0000000000..2b41086924 Binary files /dev/null and b/assets/voxygen/voxel/npc/boar/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/boar/male/chest.vox b/assets/voxygen/voxel/npc/boar/male/chest.vox index cd1f1a9499..6731b56d8a 100644 Binary files a/assets/voxygen/voxel/npc/boar/male/chest.vox and b/assets/voxygen/voxel/npc/boar/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/boar/male/tail.vox b/assets/voxygen/voxel/npc/boar/male/tail.vox new file mode 100644 index 0000000000..ba2d31910e Binary files /dev/null and b/assets/voxygen/voxel/npc/boar/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/cat/female/chest.vox b/assets/voxygen/voxel/npc/cat/female/chest.vox index 894c57e0a4..442986db7d 100644 Binary files a/assets/voxygen/voxel/npc/cat/female/chest.vox and b/assets/voxygen/voxel/npc/cat/female/chest.vox differ diff --git a/assets/voxygen/voxel/npc/cat/female/tail.vox b/assets/voxygen/voxel/npc/cat/female/tail.vox new file mode 100644 index 0000000000..d8852d9e49 Binary files /dev/null and b/assets/voxygen/voxel/npc/cat/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/cat/male/chest.vox b/assets/voxygen/voxel/npc/cat/male/chest.vox index 45bb15f016..a227bcdd23 100644 Binary files a/assets/voxygen/voxel/npc/cat/male/chest.vox and b/assets/voxygen/voxel/npc/cat/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/cat/male/tail.vox b/assets/voxygen/voxel/npc/cat/male/tail.vox new file mode 100644 index 0000000000..ba8d59e9a5 Binary files /dev/null and b/assets/voxygen/voxel/npc/cat/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/duck/male/tail.vox b/assets/voxygen/voxel/npc/duck/male/tail.vox index 7799a36beb..16c46bb07d 100644 Binary files a/assets/voxygen/voxel/npc/duck/male/tail.vox and b/assets/voxygen/voxel/npc/duck/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/female/head.vox b/assets/voxygen/voxel/npc/eagle/female/head.vox index ea10154b89..6fc6ec19c3 100644 Binary files a/assets/voxygen/voxel/npc/eagle/female/head.vox and b/assets/voxygen/voxel/npc/eagle/female/head.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/female/leg_l.vox b/assets/voxygen/voxel/npc/eagle/female/leg_l.vox index f1e5de8623..1962b95931 100644 Binary files a/assets/voxygen/voxel/npc/eagle/female/leg_l.vox and b/assets/voxygen/voxel/npc/eagle/female/leg_l.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/female/leg_r.vox b/assets/voxygen/voxel/npc/eagle/female/leg_r.vox index d0248d0c61..cd3c138268 100644 Binary files a/assets/voxygen/voxel/npc/eagle/female/leg_r.vox and b/assets/voxygen/voxel/npc/eagle/female/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/female/tail.vox b/assets/voxygen/voxel/npc/eagle/female/tail.vox index 215dabfe81..53a6d611c6 100644 Binary files a/assets/voxygen/voxel/npc/eagle/female/tail.vox and b/assets/voxygen/voxel/npc/eagle/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/female/torso.vox b/assets/voxygen/voxel/npc/eagle/female/torso.vox index ee2db5c052..63ce50a1cc 100644 Binary files a/assets/voxygen/voxel/npc/eagle/female/torso.vox and b/assets/voxygen/voxel/npc/eagle/female/torso.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/female/wing_l.vox b/assets/voxygen/voxel/npc/eagle/female/wing_l.vox index e20ea28220..31a595b3e6 100644 Binary files a/assets/voxygen/voxel/npc/eagle/female/wing_l.vox and b/assets/voxygen/voxel/npc/eagle/female/wing_l.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/female/wing_r.vox b/assets/voxygen/voxel/npc/eagle/female/wing_r.vox index d9cf860338..7caf51920f 100644 Binary files a/assets/voxygen/voxel/npc/eagle/female/wing_r.vox and b/assets/voxygen/voxel/npc/eagle/female/wing_r.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/male/head.vox b/assets/voxygen/voxel/npc/eagle/male/head.vox index ea10154b89..6fc6ec19c3 100644 Binary files a/assets/voxygen/voxel/npc/eagle/male/head.vox and b/assets/voxygen/voxel/npc/eagle/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/male/leg_l.vox b/assets/voxygen/voxel/npc/eagle/male/leg_l.vox index f1e5de8623..1962b95931 100644 Binary files a/assets/voxygen/voxel/npc/eagle/male/leg_l.vox and b/assets/voxygen/voxel/npc/eagle/male/leg_l.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/male/leg_r.vox b/assets/voxygen/voxel/npc/eagle/male/leg_r.vox index d0248d0c61..cd3c138268 100644 Binary files a/assets/voxygen/voxel/npc/eagle/male/leg_r.vox and b/assets/voxygen/voxel/npc/eagle/male/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/male/tail.vox b/assets/voxygen/voxel/npc/eagle/male/tail.vox index 34ff08c9c2..53a6d611c6 100644 Binary files a/assets/voxygen/voxel/npc/eagle/male/tail.vox and b/assets/voxygen/voxel/npc/eagle/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/male/torso.vox b/assets/voxygen/voxel/npc/eagle/male/torso.vox index ee2db5c052..63ce50a1cc 100644 Binary files a/assets/voxygen/voxel/npc/eagle/male/torso.vox and b/assets/voxygen/voxel/npc/eagle/male/torso.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/male/wing_l.vox b/assets/voxygen/voxel/npc/eagle/male/wing_l.vox index e20ea28220..31a595b3e6 100644 Binary files a/assets/voxygen/voxel/npc/eagle/male/wing_l.vox and b/assets/voxygen/voxel/npc/eagle/male/wing_l.vox differ diff --git a/assets/voxygen/voxel/npc/eagle/male/wing_r.vox b/assets/voxygen/voxel/npc/eagle/male/wing_r.vox index d9cf860338..7caf51920f 100644 Binary files a/assets/voxygen/voxel/npc/eagle/male/wing_r.vox and b/assets/voxygen/voxel/npc/eagle/male/wing_r.vox differ diff --git a/assets/voxygen/voxel/npc/fox/female/chest.vox b/assets/voxygen/voxel/npc/fox/female/chest.vox index d7dd0ad702..425cad1199 100644 Binary files a/assets/voxygen/voxel/npc/fox/female/chest.vox and b/assets/voxygen/voxel/npc/fox/female/chest.vox differ diff --git a/assets/voxygen/voxel/npc/fox/female/tail.vox b/assets/voxygen/voxel/npc/fox/female/tail.vox new file mode 100644 index 0000000000..5879d89266 Binary files /dev/null and b/assets/voxygen/voxel/npc/fox/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/fox/male/chest.vox b/assets/voxygen/voxel/npc/fox/male/chest.vox index 3c832717b0..9b920f9201 100644 Binary files a/assets/voxygen/voxel/npc/fox/male/chest.vox and b/assets/voxygen/voxel/npc/fox/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/fox/male/tail.vox b/assets/voxygen/voxel/npc/fox/male/tail.vox new file mode 100644 index 0000000000..cb66544d0e Binary files /dev/null and b/assets/voxygen/voxel/npc/fox/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/female/chest.vox b/assets/voxygen/voxel/npc/hyena/female/chest.vox index b1580a2f9e..9c061b66cb 100644 Binary files a/assets/voxygen/voxel/npc/hyena/female/chest.vox and b/assets/voxygen/voxel/npc/hyena/female/chest.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/female/foot_bl.vox b/assets/voxygen/voxel/npc/hyena/female/foot_bl.vox index 0438ebb7a4..8693abaf04 100644 Binary files a/assets/voxygen/voxel/npc/hyena/female/foot_bl.vox and b/assets/voxygen/voxel/npc/hyena/female/foot_bl.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/female/foot_br.vox b/assets/voxygen/voxel/npc/hyena/female/foot_br.vox index fe0c26d0fb..bac562c25e 100644 Binary files a/assets/voxygen/voxel/npc/hyena/female/foot_br.vox and b/assets/voxygen/voxel/npc/hyena/female/foot_br.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/female/foot_fl.vox b/assets/voxygen/voxel/npc/hyena/female/foot_fl.vox index 27d9eb32f4..b168ce0b45 100644 Binary files a/assets/voxygen/voxel/npc/hyena/female/foot_fl.vox and b/assets/voxygen/voxel/npc/hyena/female/foot_fl.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/female/foot_fr.vox b/assets/voxygen/voxel/npc/hyena/female/foot_fr.vox index 7b02e48d0a..6654181cf4 100644 Binary files a/assets/voxygen/voxel/npc/hyena/female/foot_fr.vox and b/assets/voxygen/voxel/npc/hyena/female/foot_fr.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/female/head.vox b/assets/voxygen/voxel/npc/hyena/female/head.vox index 5bcd54231d..9f22a35ed3 100644 Binary files a/assets/voxygen/voxel/npc/hyena/female/head.vox and b/assets/voxygen/voxel/npc/hyena/female/head.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/female/tail.vox b/assets/voxygen/voxel/npc/hyena/female/tail.vox new file mode 100644 index 0000000000..db934266b5 Binary files /dev/null and b/assets/voxygen/voxel/npc/hyena/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/male/chest.vox b/assets/voxygen/voxel/npc/hyena/male/chest.vox index b1580a2f9e..9c061b66cb 100644 Binary files a/assets/voxygen/voxel/npc/hyena/male/chest.vox and b/assets/voxygen/voxel/npc/hyena/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox b/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox index 0438ebb7a4..8693abaf04 100644 Binary files a/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox and b/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_br.vox b/assets/voxygen/voxel/npc/hyena/male/foot_br.vox index fe0c26d0fb..bac562c25e 100644 Binary files a/assets/voxygen/voxel/npc/hyena/male/foot_br.vox and b/assets/voxygen/voxel/npc/hyena/male/foot_br.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox b/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox index 27d9eb32f4..b168ce0b45 100644 Binary files a/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox and b/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_fr.vox b/assets/voxygen/voxel/npc/hyena/male/foot_fr.vox index 7b02e48d0a..6654181cf4 100644 Binary files a/assets/voxygen/voxel/npc/hyena/male/foot_fr.vox and b/assets/voxygen/voxel/npc/hyena/male/foot_fr.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/male/head.vox b/assets/voxygen/voxel/npc/hyena/male/head.vox index 5bcd54231d..9f22a35ed3 100644 Binary files a/assets/voxygen/voxel/npc/hyena/male/head.vox and b/assets/voxygen/voxel/npc/hyena/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/hyena/male/tail.vox b/assets/voxygen/voxel/npc/hyena/male/tail.vox new file mode 100644 index 0000000000..db934266b5 Binary files /dev/null and b/assets/voxygen/voxel/npc/hyena/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/female/head.vox b/assets/voxygen/voxel/npc/parrot/female/head.vox index 8f944833a0..1df613f6f3 100644 Binary files a/assets/voxygen/voxel/npc/parrot/female/head.vox and b/assets/voxygen/voxel/npc/parrot/female/head.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/female/leg_l.vox b/assets/voxygen/voxel/npc/parrot/female/leg_l.vox index 2a696eb8de..a785b52604 100644 Binary files a/assets/voxygen/voxel/npc/parrot/female/leg_l.vox and b/assets/voxygen/voxel/npc/parrot/female/leg_l.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/female/leg_r.vox b/assets/voxygen/voxel/npc/parrot/female/leg_r.vox index f30bf1b478..f856c99013 100644 Binary files a/assets/voxygen/voxel/npc/parrot/female/leg_r.vox and b/assets/voxygen/voxel/npc/parrot/female/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/female/tail.vox b/assets/voxygen/voxel/npc/parrot/female/tail.vox index 17cec9814c..1f18d0fa11 100644 Binary files a/assets/voxygen/voxel/npc/parrot/female/tail.vox and b/assets/voxygen/voxel/npc/parrot/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/female/torso.vox b/assets/voxygen/voxel/npc/parrot/female/torso.vox index d62d89da5c..124b392f53 100644 Binary files a/assets/voxygen/voxel/npc/parrot/female/torso.vox and b/assets/voxygen/voxel/npc/parrot/female/torso.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/female/wing.vox b/assets/voxygen/voxel/npc/parrot/female/wing.vox index 9291b2c6b0..56d39ea50c 100644 Binary files a/assets/voxygen/voxel/npc/parrot/female/wing.vox and b/assets/voxygen/voxel/npc/parrot/female/wing.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/male/head.vox b/assets/voxygen/voxel/npc/parrot/male/head.vox index 8f944833a0..1df613f6f3 100644 Binary files a/assets/voxygen/voxel/npc/parrot/male/head.vox and b/assets/voxygen/voxel/npc/parrot/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/male/leg_l.vox b/assets/voxygen/voxel/npc/parrot/male/leg_l.vox index 2a696eb8de..a785b52604 100644 Binary files a/assets/voxygen/voxel/npc/parrot/male/leg_l.vox and b/assets/voxygen/voxel/npc/parrot/male/leg_l.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/male/leg_r.vox b/assets/voxygen/voxel/npc/parrot/male/leg_r.vox index f30bf1b478..f856c99013 100644 Binary files a/assets/voxygen/voxel/npc/parrot/male/leg_r.vox and b/assets/voxygen/voxel/npc/parrot/male/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/male/tail.vox b/assets/voxygen/voxel/npc/parrot/male/tail.vox index 17cec9814c..1f18d0fa11 100644 Binary files a/assets/voxygen/voxel/npc/parrot/male/tail.vox and b/assets/voxygen/voxel/npc/parrot/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/male/torso.vox b/assets/voxygen/voxel/npc/parrot/male/torso.vox index d62d89da5c..124b392f53 100644 Binary files a/assets/voxygen/voxel/npc/parrot/male/torso.vox and b/assets/voxygen/voxel/npc/parrot/male/torso.vox differ diff --git a/assets/voxygen/voxel/npc/parrot/male/wing.vox b/assets/voxygen/voxel/npc/parrot/male/wing.vox index 9291b2c6b0..56d39ea50c 100644 Binary files a/assets/voxygen/voxel/npc/parrot/male/wing.vox and b/assets/voxygen/voxel/npc/parrot/male/wing.vox differ diff --git a/assets/voxygen/voxel/npc/pig/female/chest.vox b/assets/voxygen/voxel/npc/pig/female/chest.vox index 590cc443fc..ab2d98b4ca 100644 Binary files a/assets/voxygen/voxel/npc/pig/female/chest.vox and b/assets/voxygen/voxel/npc/pig/female/chest.vox differ diff --git a/assets/voxygen/voxel/npc/pig/female/tail.vox b/assets/voxygen/voxel/npc/pig/female/tail.vox new file mode 100644 index 0000000000..3d68754926 Binary files /dev/null and b/assets/voxygen/voxel/npc/pig/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/pig/male/chest.vox b/assets/voxygen/voxel/npc/pig/male/chest.vox index 0c82a2bbd0..a32c399aa7 100644 Binary files a/assets/voxygen/voxel/npc/pig/male/chest.vox and b/assets/voxygen/voxel/npc/pig/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/pig/male/tail.vox b/assets/voxygen/voxel/npc/pig/male/tail.vox new file mode 100644 index 0000000000..83d14385fa Binary files /dev/null and b/assets/voxygen/voxel/npc/pig/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/raccoon/female/chest.vox b/assets/voxygen/voxel/npc/raccoon/female/chest.vox index bac0755262..952c155124 100644 Binary files a/assets/voxygen/voxel/npc/raccoon/female/chest.vox and b/assets/voxygen/voxel/npc/raccoon/female/chest.vox differ diff --git a/assets/voxygen/voxel/npc/raccoon/female/tail.vox b/assets/voxygen/voxel/npc/raccoon/female/tail.vox new file mode 100644 index 0000000000..46931b0f81 Binary files /dev/null and b/assets/voxygen/voxel/npc/raccoon/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/raccoon/male/chest.vox b/assets/voxygen/voxel/npc/raccoon/male/chest.vox index bac0755262..072354dc81 100644 Binary files a/assets/voxygen/voxel/npc/raccoon/male/chest.vox and b/assets/voxygen/voxel/npc/raccoon/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/raccoon/male/tail.vox b/assets/voxygen/voxel/npc/raccoon/male/tail.vox new file mode 100644 index 0000000000..629d96611c Binary files /dev/null and b/assets/voxygen/voxel/npc/raccoon/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/sheep/female/chest.vox b/assets/voxygen/voxel/npc/sheep/female/chest.vox index e79ffd1316..ab3c55de86 100644 Binary files a/assets/voxygen/voxel/npc/sheep/female/chest.vox and b/assets/voxygen/voxel/npc/sheep/female/chest.vox differ diff --git a/assets/voxygen/voxel/npc/sheep/female/tail.vox b/assets/voxygen/voxel/npc/sheep/female/tail.vox new file mode 100644 index 0000000000..5159d78dec Binary files /dev/null and b/assets/voxygen/voxel/npc/sheep/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/sheep/male/chest.vox b/assets/voxygen/voxel/npc/sheep/male/chest.vox index e79ffd1316..ab3c55de86 100644 Binary files a/assets/voxygen/voxel/npc/sheep/male/chest.vox and b/assets/voxygen/voxel/npc/sheep/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/sheep/male/head.vox b/assets/voxygen/voxel/npc/sheep/male/head.vox index fa21800ead..a5158d9f05 100644 Binary files a/assets/voxygen/voxel/npc/sheep/male/head.vox and b/assets/voxygen/voxel/npc/sheep/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/sheep/male/tail.vox b/assets/voxygen/voxel/npc/sheep/male/tail.vox new file mode 100644 index 0000000000..5159d78dec Binary files /dev/null and b/assets/voxygen/voxel/npc/sheep/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/skunk/female/chest.vox b/assets/voxygen/voxel/npc/skunk/female/chest.vox index ba7c1c6095..449c291a50 100644 Binary files a/assets/voxygen/voxel/npc/skunk/female/chest.vox and b/assets/voxygen/voxel/npc/skunk/female/chest.vox differ diff --git a/assets/voxygen/voxel/npc/skunk/female/tail.vox b/assets/voxygen/voxel/npc/skunk/female/tail.vox new file mode 100644 index 0000000000..50ab915399 Binary files /dev/null and b/assets/voxygen/voxel/npc/skunk/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/skunk/male/chest.vox b/assets/voxygen/voxel/npc/skunk/male/chest.vox index ba7c1c6095..449c291a50 100644 Binary files a/assets/voxygen/voxel/npc/skunk/male/chest.vox and b/assets/voxygen/voxel/npc/skunk/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/skunk/male/tail.vox b/assets/voxygen/voxel/npc/skunk/male/tail.vox new file mode 100644 index 0000000000..35c6f4063f Binary files /dev/null and b/assets/voxygen/voxel/npc/skunk/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/female/head.vox b/assets/voxygen/voxel/npc/snowyowl/female/head.vox index 67feafd72b..fe546fc12d 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/female/head.vox and b/assets/voxygen/voxel/npc/snowyowl/female/head.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/female/leg_l.vox b/assets/voxygen/voxel/npc/snowyowl/female/leg_l.vox index 577a1a7734..f44665c7a1 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/female/leg_l.vox and b/assets/voxygen/voxel/npc/snowyowl/female/leg_l.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/female/leg_r.vox b/assets/voxygen/voxel/npc/snowyowl/female/leg_r.vox index 14d197e179..2b515a4be7 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/female/leg_r.vox and b/assets/voxygen/voxel/npc/snowyowl/female/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/female/tail.vox b/assets/voxygen/voxel/npc/snowyowl/female/tail.vox index e302e0d3f3..21210a16e8 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/female/tail.vox and b/assets/voxygen/voxel/npc/snowyowl/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/female/torso.vox b/assets/voxygen/voxel/npc/snowyowl/female/torso.vox index 754031c64a..17a583d3c0 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/female/torso.vox and b/assets/voxygen/voxel/npc/snowyowl/female/torso.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/female/wing_l.vox b/assets/voxygen/voxel/npc/snowyowl/female/wing_l.vox index eae422dfcf..4716787ed8 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/female/wing_l.vox and b/assets/voxygen/voxel/npc/snowyowl/female/wing_l.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/female/wing_r.vox b/assets/voxygen/voxel/npc/snowyowl/female/wing_r.vox index c3e2cc65e8..0303ca626d 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/female/wing_r.vox and b/assets/voxygen/voxel/npc/snowyowl/female/wing_r.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/male/head.vox b/assets/voxygen/voxel/npc/snowyowl/male/head.vox index 67feafd72b..fe546fc12d 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/male/head.vox and b/assets/voxygen/voxel/npc/snowyowl/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox b/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox index 577a1a7734..f44665c7a1 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox and b/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox b/assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox index 14d197e179..2b515a4be7 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox and b/assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/male/tail.vox b/assets/voxygen/voxel/npc/snowyowl/male/tail.vox index e302e0d3f3..21210a16e8 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/male/tail.vox and b/assets/voxygen/voxel/npc/snowyowl/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/male/torso.vox b/assets/voxygen/voxel/npc/snowyowl/male/torso.vox index 754031c64a..17a583d3c0 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/male/torso.vox and b/assets/voxygen/voxel/npc/snowyowl/male/torso.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox b/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox index eae422dfcf..4716787ed8 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox and b/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox differ diff --git a/assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox b/assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox index c3e2cc65e8..0303ca626d 100644 Binary files a/assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox and b/assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox differ diff --git a/assets/voxygen/voxel/object/lantern0.vox b/assets/voxygen/voxel/object/lantern0.vox index 18daf4e8d0..0f9eb69905 100644 Binary files a/assets/voxygen/voxel/object/lantern0.vox and b/assets/voxygen/voxel/object/lantern0.vox differ diff --git a/assets/voxygen/voxel/quadruped_small_central_manifest.ron b/assets/voxygen/voxel/quadruped_small_central_manifest.ron index 90cd011fdd..e8c6798c3b 100644 --- a/assets/voxygen/voxel/quadruped_small_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_central_manifest.ron @@ -5,9 +5,13 @@ central: ("npc.pig.male.head"), ), chest: ( - offset: (-5.0, -4.5, -5.5), + offset: (-5.0, -4.5, -4.5), central: ("npc.pig.male.chest"), ), + tail: ( + offset: (-2.0, -1.0, -2.0), + central: ("npc.pig.male.tail"), + ), ), (Pig, Female):( head: ( @@ -15,9 +19,13 @@ central: ("npc.pig.female.head"), ), chest: ( - offset: (-5.0, -4.5, -5.5), + offset: (-5.0, -4.5, -4.5), central: ("npc.pig.female.chest"), ), + tail: ( + offset: (-2.0, -1.0, -2.0), + central: ("npc.pig.female.tail"), + ), ), (Fox, Male):( @@ -26,9 +34,13 @@ central: ("npc.fox.male.head"), ), chest: ( - offset: (-1.5, -8.0, -2.5), + offset: (-1.5, -4.5, -2.5), central: ("npc.fox.male.chest"), ), + tail: ( + offset: (-2.0, -7.0, -1.5), + central: ("npc.fox.male.tail"), + ), ), (Fox, Female):( @@ -37,9 +49,13 @@ central: ("npc.fox.female.head"), ), chest: ( - offset: (-1.5, -8.0, -2.5), + offset: (-1.5, -4.5, -2.5), central: ("npc.fox.female.chest"), ), + tail: ( + offset: (-1.5, -7.0, -1.5), + central: ("npc.fox.female.tail"), + ), ), (Sheep, Male):( @@ -48,9 +64,13 @@ central: ("npc.sheep.male.head"), ), chest: ( - offset: (-5.0, -6.5, -3.5), + offset: (-5.0, -5.5, -3.5), central: ("npc.sheep.male.chest"), ), + tail: ( + offset: (-2.0, -2.0, -1.5), + central: ("npc.sheep.male.tail"), + ), ), (Sheep, Female):( @@ -59,9 +79,13 @@ central: ("npc.sheep.female.head"), ), chest: ( - offset: (-5.0, -6.5, -3.5), + offset: (-5.0, -5.5, -3.5), central: ("npc.sheep.female.chest"), ), + tail: ( + offset: (-2.0, -2.0, -1.5), + central: ("npc.sheep.female.tail"), + ), ), (Boar, Male):( head: ( @@ -69,9 +93,13 @@ central: ("npc.boar.male.head"), ), chest: ( - offset: (-3.5, -9.5, -4.5), + offset: (-3.5, -8.0, -4.0), central: ("npc.boar.male.chest"), ), + tail: ( + offset: (-1.5, -2.0, -6.0), + central: ("npc.boar.male.tail"), + ), ), (Boar, Female):( head: ( @@ -79,9 +107,13 @@ central: ("npc.boar.female.head"), ), chest: ( - offset: (-3.5, -9.5, -4.5), + offset: (-3.5, -8.0, -4.0), central: ("npc.boar.female.chest"), ), + tail: ( + offset: (-1.5, -2.0, -6.0), + central: ("npc.boar.female.tail"), + ), ), (Jackalope, Male):( head: ( @@ -92,6 +124,10 @@ offset: (-1.5, -7.5, -2.5), central: ("npc.jackalope.male.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), ), (Jackalope, Female):( head: ( @@ -102,6 +138,10 @@ offset: (-1.5, -7.5, -2.5), central: ("npc.jackalope.female.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), ), (Skunk, Male):( head: ( @@ -109,9 +149,13 @@ central: ("npc.skunk.male.head"), ), chest: ( - offset: (-4.0, -10.5, -4.5), + offset: (-3.0, -4.5, -2.5), central: ("npc.skunk.male.chest"), ), + tail: ( + offset: (-3.0, -10.0, -4.5), + central: ("npc.skunk.male.tail"), + ), ), (Skunk, Female):( head: ( @@ -119,9 +163,13 @@ central: ("npc.skunk.female.head"), ), chest: ( - offset: (-4.0, -10.5, -4.5), + offset: (-3.0, -4.5, -2.5), central: ("npc.skunk.female.chest"), ), + tail: ( + offset: (-3.0, -10.0, -4.5), + central: ("npc.skunk.female.tail"), + ), ), (Cat, Male):( head: ( @@ -129,9 +177,13 @@ central: ("npc.cat.male.head"), ), chest: ( - offset: (-1.5, -5.5, -2.5), + offset: (-0.5, -3.0, -4.0), central: ("npc.cat.male.chest"), ), + tail: ( + offset: (-0.5, -3.0, -4.0), + central: ("npc.cat.male.tail"), + ), ), (Cat, Female):( head: ( @@ -139,9 +191,13 @@ central: ("npc.cat.female.head"), ), chest: ( - offset: (-1.5, -5.5, -2.5), + offset: (-1.5, -4.0, -2.0), central: ("npc.cat.female.chest"), ), + tail: ( + offset: (-0.5, -3.0, -4.0), + central: ("npc.cat.female.tail"), + ), ), (Batfox, Male):( head: ( @@ -152,6 +208,10 @@ offset: (-1.5, -7.5, -2.5), central: ("npc.batfox.male.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), ), (Batfox, Female):( @@ -163,6 +223,10 @@ offset: (-1.5, -7.5, -2.5), central: ("npc.batfox.female.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), ), (Raccoon, Male):( @@ -171,9 +235,13 @@ central: ("npc.raccoon.male.head"), ), chest: ( - offset: (-3.0, -7.5, -3.0), + offset: (-3.0, -5.5, -3.0), central: ("npc.raccoon.male.chest"), ), + tail: ( + offset: (-1.0, -5.0, -1.5), + central: ("npc.raccoon.male.tail"), + ), ), (Raccoon, Female):( @@ -182,9 +250,13 @@ central: ("npc.raccoon.female.head"), ), chest: ( - offset: (-3.0, -7.5, -3.0), + offset: (-3.0, -5.5, -3.0), central: ("npc.raccoon.female.chest"), ), + tail: ( + offset: (-1.0, -5.0, -1.5), + central: ("npc.raccoon.female.tail"), + ), ), (Quokka, Male):( @@ -196,6 +268,10 @@ offset: (-5.0, -7.5, -4.0), central: ("npc.quokka.male.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), ), (Quokka, Female):( @@ -207,6 +283,10 @@ offset: (-5.0, -7.5, -4.0), central: ("npc.quokka.female.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), ), (Dodarock, Male):( @@ -218,6 +298,10 @@ offset: (-5.0, -7.5, -4.5), central: ("npc.dodarock.male.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), ), (Dodarock, Female):( @@ -229,6 +313,11 @@ offset: (-5.0, -7.5, -4.5), central: ("npc.dodarock.female.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), + ), (Holladon, Male):( head: ( @@ -239,6 +328,10 @@ offset: (-3.0, -7.5, -3.0), central: ("npc.holladon.male.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), ), (Holladon, Female):( @@ -250,6 +343,10 @@ offset: (-3.0, -7.5, -3.0), central: ("npc.holladon.female.chest"), ), + tail: ( + offset: (-1.5, -7.5, -2.5), + central: ("armor.empty"), + ), ), (Hyena, Male):( @@ -258,9 +355,13 @@ central: ("npc.hyena.male.head"), ), chest: ( - offset: (-3.0, -9.0, -5.0), + offset: (-3.0, -8.0, -4.0), central: ("npc.hyena.male.chest"), ), + tail: ( + offset: (-1.0, -3.0, -6.0), + central: ("npc.hyena.male.tail"), + ), ), (Hyena, Female):( @@ -269,8 +370,12 @@ central: ("npc.hyena.female.head"), ), chest: ( - offset: (-3.0, -9.0, -5.0), + offset: (-3.0, -8.0, -4.0), central: ("npc.hyena.female.chest"), ), + tail: ( + offset: (-1.0, -3.0, -6.0), + central: ("npc.hyena.female.tail"), + ), ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/weapon/axe/rusty_2h.vox b/assets/voxygen/voxel/weapon/axe/rusty_2h.vox index 237c36fe85..610bd9dde4 100644 Binary files a/assets/voxygen/voxel/weapon/axe/rusty_2h.vox and b/assets/voxygen/voxel/weapon/axe/rusty_2h.vox differ diff --git a/assets/voxygen/voxel/weapon/bow/rare_bow-0.vox b/assets/voxygen/voxel/weapon/bow/rare_bow-0.vox index de5ad83a60..538df2d21d 100644 Binary files a/assets/voxygen/voxel/weapon/bow/rare_bow-0.vox and b/assets/voxygen/voxel/weapon/bow/rare_bow-0.vox differ diff --git a/assets/voxygen/voxel/weapon/debug_wand-0.vox b/assets/voxygen/voxel/weapon/debug_wand-0.vox index b7a6ff9ef5..cec4972145 100644 Binary files a/assets/voxygen/voxel/weapon/debug_wand-0.vox and b/assets/voxygen/voxel/weapon/debug_wand-0.vox differ diff --git a/assets/voxygen/voxel/weapon/debug_wand-1.vox b/assets/voxygen/voxel/weapon/debug_wand-1.vox index d1af58a89c..c983bfd8ad 100644 Binary files a/assets/voxygen/voxel/weapon/debug_wand-1.vox and b/assets/voxygen/voxel/weapon/debug_wand-1.vox differ diff --git a/assets/voxygen/voxel/weapon/debug_wand.vox b/assets/voxygen/voxel/weapon/debug_wand.vox index b7a6ff9ef5..cec4972145 100644 Binary files a/assets/voxygen/voxel/weapon/debug_wand.vox and b/assets/voxygen/voxel/weapon/debug_wand.vox differ diff --git a/assets/voxygen/voxel/weapon/hammer/hammer_1_2h.vox b/assets/voxygen/voxel/weapon/hammer/hammer_1_2h.vox index 886c6917e0..b6fbbd755b 100644 Binary files a/assets/voxygen/voxel/weapon/hammer/hammer_1_2h.vox and b/assets/voxygen/voxel/weapon/hammer/hammer_1_2h.vox differ diff --git a/assets/voxygen/voxel/weapon/shield/wood-0.vox b/assets/voxygen/voxel/weapon/shield/wood-0.vox index 91f997d78c..23959d16db 100644 Binary files a/assets/voxygen/voxel/weapon/shield/wood-0.vox and b/assets/voxygen/voxel/weapon/shield/wood-0.vox differ diff --git a/assets/voxygen/voxel/weapon/staff/wood-fire.vox b/assets/voxygen/voxel/weapon/staff/wood-fire.vox index 572e2e980a..a4e7413072 100644 Binary files a/assets/voxygen/voxel/weapon/staff/wood-fire.vox and b/assets/voxygen/voxel/weapon/staff/wood-fire.vox differ diff --git a/assets/voxygen/voxel/weapon/staff/wood-nature.vox b/assets/voxygen/voxel/weapon/staff/wood-nature.vox index 231a3203f5..7a414f822f 100644 Binary files a/assets/voxygen/voxel/weapon/staff/wood-nature.vox and b/assets/voxygen/voxel/weapon/staff/wood-nature.vox differ diff --git a/assets/voxygen/voxel/weapon/staff/wood-simple.vox b/assets/voxygen/voxel/weapon/staff/wood-simple.vox index 984419560d..e0510d6f81 100644 Binary files a/assets/voxygen/voxel/weapon/staff/wood-simple.vox and b/assets/voxygen/voxel/weapon/staff/wood-simple.vox differ diff --git a/assets/voxygen/voxel/weapon/sword/short_2h-0.vox b/assets/voxygen/voxel/weapon/sword/short_2h-0.vox index 8da0e1047c..3befa618ea 100644 Binary files a/assets/voxygen/voxel/weapon/sword/short_2h-0.vox and b/assets/voxygen/voxel/weapon/sword/short_2h-0.vox differ diff --git a/assets/voxygen/voxel/weapon/sword/wood_2h.vox b/assets/voxygen/voxel/weapon/sword/wood_2h.vox index 342cf4180b..213424c17e 100644 Binary files a/assets/voxygen/voxel/weapon/sword/wood_2h.vox and b/assets/voxygen/voxel/weapon/sword/wood_2h.vox differ diff --git a/assets/voxygen/voxel/weapon/sword/zweihander_2h-0.vox b/assets/voxygen/voxel/weapon/sword/zweihander_2h-0.vox index ade2f2ff75..40083bddca 100644 Binary files a/assets/voxygen/voxel/weapon/sword/zweihander_2h-0.vox and b/assets/voxygen/voxel/weapon/sword/zweihander_2h-0.vox differ diff --git a/voxygen/src/anim/quadruped_small/idle.rs b/voxygen/src/anim/quadruped_small/idle.rs index 59a3c2fc0c..38706e65c7 100644 --- a/voxygen/src/anim/quadruped_small/idle.rs +++ b/voxygen/src/anim/quadruped_small/idle.rs @@ -18,6 +18,8 @@ impl Animation for IdleAnimation { let mut next = (*skeleton).clone(); let slow = (anim_time as f32 * 3.5).sin(); + let slowa = (anim_time as f32 * 3.5 + PI / 2.0).sin(); + let slow_alt = (anim_time as f32 * 3.5 + PI).sin(); let head_look = Vec2::new( @@ -42,7 +44,7 @@ impl Animation for IdleAnimation { next.chest.offset = Vec3::new( slow * 0.05, skeleton_attr.chest.0, - skeleton_attr.chest.1 + slow_alt * 0.2, + skeleton_attr.chest.1 + slowa * 0.2, ) / 11.0; next.chest.ori = Quaternion::rotation_y(slow * 0.05); next.chest.scale = Vec3::one() / 11.0; @@ -79,6 +81,10 @@ impl Animation for IdleAnimation { next.leg_rb.ori = Quaternion::rotation_x(slow * 0.08); next.leg_rb.scale = Vec3::one() / 11.0; + next.tail.offset = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); + next.tail.ori = Quaternion::rotation_z(slow * 0.4); + next.tail.scale = Vec3::one(); + next } } diff --git a/voxygen/src/anim/quadruped_small/jump.rs b/voxygen/src/anim/quadruped_small/jump.rs index 60552badfa..9ad8c16499 100644 --- a/voxygen/src/anim/quadruped_small/jump.rs +++ b/voxygen/src/anim/quadruped_small/jump.rs @@ -56,6 +56,9 @@ impl Animation for JumpAnimation { next.leg_rb.ori = Quaternion::rotation_x(0.0); next.leg_rb.scale = Vec3::one() / 11.0; + next.tail.offset = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); + next.tail.ori = Quaternion::rotation_x(-0.3); + next.tail.scale = Vec3::one(); next } } diff --git a/voxygen/src/anim/quadruped_small/mod.rs b/voxygen/src/anim/quadruped_small/mod.rs index 7b2770c077..3254412fb7 100644 --- a/voxygen/src/anim/quadruped_small/mod.rs +++ b/voxygen/src/anim/quadruped_small/mod.rs @@ -18,6 +18,7 @@ pub struct QuadrupedSmallSkeleton { leg_rf: Bone, leg_lb: Bone, leg_rb: Bone, + tail: Bone, } impl QuadrupedSmallSkeleton { @@ -27,18 +28,19 @@ impl QuadrupedSmallSkeleton { impl Skeleton for QuadrupedSmallSkeleton { type Attr = SkeletonAttr; - fn bone_count(&self) -> usize { 6 } + fn bone_count(&self) -> usize { 7 } fn compute_matrices(&self) -> ([FigureBoneData; 16], Vec3) { + let chest_mat = self.chest.compute_base_matrix(); ( [ FigureBoneData::new(self.head.compute_base_matrix()), - FigureBoneData::new(self.chest.compute_base_matrix()), + FigureBoneData::new(chest_mat), FigureBoneData::new(self.leg_lf.compute_base_matrix()), FigureBoneData::new(self.leg_rf.compute_base_matrix()), FigureBoneData::new(self.leg_lb.compute_base_matrix()), FigureBoneData::new(self.leg_rb.compute_base_matrix()), - FigureBoneData::default(), + FigureBoneData::new(chest_mat * self.tail.compute_base_matrix()), FigureBoneData::default(), FigureBoneData::default(), FigureBoneData::default(), @@ -60,6 +62,7 @@ impl Skeleton for QuadrupedSmallSkeleton { self.leg_rf.interpolate(&target.leg_rf, dt); self.leg_lb.interpolate(&target.leg_lb, dt); self.leg_rb.interpolate(&target.leg_rb, dt); + self.tail.interpolate(&target.tail, dt); } } @@ -68,6 +71,7 @@ pub struct SkeletonAttr { chest: (f32, f32), feet_f: (f32, f32, f32), feet_b: (f32, f32, f32), + tail: (f32, f32), } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { type Error = (); @@ -87,6 +91,7 @@ impl Default for SkeletonAttr { chest: (0.0, 0.0), feet_f: (0.0, 0.0, 0.0), feet_b: (0.0, 0.0, 0.0), + tail: (0.0, 0.0), } } } @@ -112,14 +117,14 @@ impl<'a> From<&'a comp::quadruped_small::Body> for SkeletonAttr { }, chest: match (body.species, body.body_type) { (Pig, _) => (0.0, 8.0), - (Fox, _) => (-2.0, 5.0), - (Sheep, _) => (-2.0, 6.0), - (Boar, _) => (-2.0, 7.0), + (Fox, _) => (1.0, 5.0), + (Sheep, _) => (-1.0, 6.0), + (Boar, _) => (0.0, 7.0), (Jackalope, _) => (-2.0, 6.0), - (Skunk, _) => (-5.0, 6.0), - (Cat, _) => (-2.0, 6.0), + (Skunk, _) => (0.0, 6.0), + (Cat, _) => (0.0, 6.0), (Batfox, _) => (-2.0, 6.0), - (Raccoon, _) => (-2.0, 6.0), + (Raccoon, _) => (0.0, 6.0), (Quokka, _) => (2.0, 8.0), (Dodarock, _) => (-2.0, 8.0), (Holladon, _) => (-2.0, 6.0), @@ -155,6 +160,21 @@ impl<'a> From<&'a comp::quadruped_small::Body> for SkeletonAttr { (Holladon, _) => (4.0, -4.0, 3.0), (Hyena, _) => (2.5, -7.0, 6.0), }, + tail: match (body.species, body.body_type) { + (Pig, _) => (-4.0, 3.0), + (Fox, _) => (-3.5, 1.0), + (Sheep, _) => (-5.0, 0.0), + (Boar, _) => (-8.5, 2.0), + (Jackalope, _) => (0.0, 5.0), + (Skunk, _) => (-3.0, 1.5), + (Cat, _) => (-3.0, 2.0), + (Batfox, _) => (0.0, 5.0), + (Raccoon, _) => (-4.0, 1.0), + (Quokka, _) => (0.0, 6.0), + (Dodarock, _) => (0.0, 5.0), + (Holladon, _) => (0.0, 4.0), + (Hyena, _) => (-8.0, 1.0), + }, } } } diff --git a/voxygen/src/anim/quadruped_small/run.rs b/voxygen/src/anim/quadruped_small/run.rs index 801c66ddb4..7e6daa30a1 100644 --- a/voxygen/src/anim/quadruped_small/run.rs +++ b/voxygen/src/anim/quadruped_small/run.rs @@ -68,6 +68,9 @@ impl Animation for RunAnimation { next.leg_rb.ori = Quaternion::rotation_x(fast * 0.3); next.leg_rb.scale = Vec3::one() / 11.0; + next.tail.offset = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); + next.tail.ori = Quaternion::rotation_z(0.0); + next.tail.scale = Vec3::one(); next } } diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs index 3ab463ffdd..0460279033 100644 --- a/voxygen/src/scene/figure/cache.rs +++ b/voxygen/src/scene/figure/cache.rs @@ -221,7 +221,11 @@ impl FigureModelCache { body.body_type, generate_mesh, )), - None, + Some(quadruped_small_central_spec.mesh_tail( + body.species, + body.body_type, + generate_mesh, + )), None, None, None, diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index d52636752c..7128a4fd73 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -972,6 +972,7 @@ pub struct QuadrupedSmallCentralSpec(HashMap<(QSSpecies, QSBodyType), SidedQSCen struct SidedQSCentralVoxSpec { head: QuadrupedSmallCentralSubSpec, chest: QuadrupedSmallCentralSubSpec, + tail: QuadrupedSmallCentralSubSpec, } #[derive(Serialize, Deserialize)] struct QuadrupedSmallCentralSubSpec { @@ -1058,6 +1059,27 @@ impl QuadrupedSmallCentralSpec { generate_mesh(¢ral, Vec3::from(spec.chest.offset)) } + + pub fn mesh_tail( + &self, + species: QSSpecies, + body_type: QSBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + 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), generate_mesh); + }, + }; + let central = graceful_load_segment(&spec.tail.central.0); + + generate_mesh(¢ral, Vec3::from(spec.tail.offset)) + } } impl QuadrupedSmallLateralSpec {