diff --git a/assets/server/manifests/ship_manifest.ron b/assets/server/manifests/ship_manifest.ron index 36184ce50f..390f1cc11f 100644 --- a/assets/server/manifests/ship_manifest.ron +++ b/assets/server/manifests/ship_manifest.ron @@ -69,4 +69,26 @@ central: ("empty"), ), ), + Galleon: ( + bone0: ( + offset: (-16, -16, -3.0), + phys_offset: (0.0, 0.0, 0.0), + central: ("galleon.structure"), + ), + bone1: ( + offset: (0.0, 0.0, 0.0), + phys_offset: (0.0, 0.0, 0.0), + central: ("empty"), + ), + bone2: ( + offset: (0.0, 0.0, 0.0), + phys_offset: (0.0, 0.0, 0.0), + central: ("empty"), + ), + bone3: ( + offset: (0.0, 0.0, 0.0), + phys_offset: (0.0, 0.0, 0.0), + central: ("empty"), + ), + ), }) diff --git a/assets/server/voxel/galleon/structure.vox b/assets/server/voxel/galleon/structure.vox new file mode 100644 index 0000000000..50be736ce1 --- /dev/null +++ b/assets/server/voxel/galleon/structure.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b8ba947b5ac052bdc70c30350fde7b0a9926d39ecbd6bd945f02cef751c31ab +size 70193 diff --git a/assets/world/manifests/shrubs/jungle.ron b/assets/world/manifests/shrubs/jungle.ron index 594c8e4d22..b641f4b150 100644 --- a/assets/world/manifests/shrubs/jungle.ron +++ b/assets/world/manifests/shrubs/jungle.ron @@ -1,10 +1,6 @@ #![enable(unwrap_newtypes)] [ - ( - specifier: "world.shrub.1", - center: (6, 6, 2), - ), ( specifier: "world.shrub.jungle.bush-0", center: (5, 5, 3), @@ -29,4 +25,16 @@ specifier: "world.shrub.jungle.bush-5", center: (5, 5, 5), ), + ( + specifier: "world.shrub.jungle.bush-6", + center: (8, 7, 5), + ), + ( + specifier: "world.shrub.jungle.bush-7", + center: (7, 5, 5), + ), + ( + specifier: "world.shrub.jungle.bush-8", + center: (8, 8, 5), + ), ] diff --git a/assets/world/manifests/shrubs/savannah.ron b/assets/world/manifests/shrubs/savannah.ron new file mode 100644 index 0000000000..0a634919f2 --- /dev/null +++ b/assets/world/manifests/shrubs/savannah.ron @@ -0,0 +1,44 @@ +#![enable(unwrap_newtypes)] + +[ + ( + specifier: "world.shrub.savannah.bush-0", + center: (5, 3, 8), + ), + ( + specifier: "world.shrub.savannah.bush-1", + center: (5, 6, 6), + ), + ( + specifier: "world.shrub.savannah.bush-2", + center: (4, 4, 3), + ), + ( + specifier: "world.shrub.savannah.bush-3", + center: (5, 6, 3), + ), + ( + specifier: "world.shrub.savannah.bush-4", + center: (7, 7, 5), + ), + ( + specifier: "world.shrub.savannah.bush-5", + center: (4, 5, 4), + ), + ( + specifier: "world.shrub.savannah.bush-6", + center: (3, 3, 3), + ), + ( + specifier: "world.shrub.savannah.bush-7", + center: (3, 3, 3), + ), + ( + specifier: "world.shrub.savannah.bush-8", + center: (2, 2, 3), + ), + ( + specifier: "world.shrub.savannah.bush-9", + center: (4, 3, 3), + ), +] diff --git a/assets/world/manifests/shrubs/taiga.ron b/assets/world/manifests/shrubs/taiga.ron new file mode 100644 index 0000000000..fea4f49aaa --- /dev/null +++ b/assets/world/manifests/shrubs/taiga.ron @@ -0,0 +1,28 @@ +#![enable(unwrap_newtypes)] + +[ + ( + specifier: "world.shrub.taiga.bush-0", + center: (4, 4, 2), + ), + ( + specifier: "world.shrub.taiga.bush-1", + center: (4, 4, 2), + ), + ( + specifier: "world.shrub.taiga.bush-2", + center: (4, 4, 2), + ), + ( + specifier: "world.shrub.taiga.bush-3", + center: (4, 4, 1), + ), + ( + specifier: "world.shrub.taiga.bush-4", + center: (3, 3, 1), + ), + ( + specifier: "world.shrub.taiga.bush-5", + center: (4, 4, 1), + ), +] diff --git a/assets/world/manifests/shrubs/temperate.ron b/assets/world/manifests/shrubs/temperate.ron new file mode 100644 index 0000000000..078d47f58d --- /dev/null +++ b/assets/world/manifests/shrubs/temperate.ron @@ -0,0 +1,24 @@ +#![enable(unwrap_newtypes)] + +[ + ( + specifier: "world.shrub.temperate.bush-0", + center: (4, 4, 2), + ), + ( + specifier: "world.shrub.temperate.bush-1", + center: (3, 3, 2), + ), + ( + specifier: "world.shrub.temperate.bush-2", + center: (4, 4, 2), + ), + ( + specifier: "world.shrub.temperate.bush-3", + center: (4, 4, 2), + ), + ( + specifier: "world.shrub.temperate.bush-4", + center: (5, 5, 3), + ), +] diff --git a/assets/world/manifests/spots/water/shipwreck2.ron b/assets/world/manifests/spots/water/shipwreck2.ron new file mode 100644 index 0000000000..9ae113001d --- /dev/null +++ b/assets/world/manifests/spots/water/shipwreck2.ron @@ -0,0 +1,12 @@ +#![enable(unwrap_newtypes)] + +[ + ( + specifier: "world.structure.natural.shipwreck2", + center: (32, 31, 14), + /// ( X, Y, Z, ) + custom_indices: { + 48: Sprite(Chest), + }, + ), +] diff --git a/assets/world/manifests/spots_general/troll_cave.ron b/assets/world/manifests/spots_general/troll_cave.ron new file mode 100644 index 0000000000..2461241f24 --- /dev/null +++ b/assets/world/manifests/spots_general/troll_cave.ron @@ -0,0 +1,9 @@ +#![enable(unwrap_newtypes)] + +[ + ( + specifier: "world.structure.natural.troll_cave", + center: (23, 25, 12), + /// ( X, Y, Z, ) + ), +] diff --git a/assets/world/manifests/spots_grasslands/gnarling_tree.ron b/assets/world/manifests/spots_grasslands/gnarling_tree.ron new file mode 100644 index 0000000000..b161e03ffa --- /dev/null +++ b/assets/world/manifests/spots_grasslands/gnarling_tree.ron @@ -0,0 +1,12 @@ +#![enable(unwrap_newtypes)] + +[ + ( + specifier: "world.structure.natural.gnarling_tree", + center: (32, 28, 15), + /// ( X, Y, Z, ) + custom_indices: { + 48: Sprite(Chest), + }, + ), +] diff --git a/assets/world/shrub/1.vox b/assets/world/shrub/1.vox deleted file mode 100644 index 8342c6742c..0000000000 --- a/assets/world/shrub/1.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f08946c4ceebc280dfd30e86eeda045b85f0502620bfbff194e425e9550e64e2 -size 1332 diff --git a/assets/world/shrub/jungle/bush-3.vox b/assets/world/shrub/jungle/bush-3.vox index 23d3b19535..e1ce026c96 100644 --- a/assets/world/shrub/jungle/bush-3.vox +++ b/assets/world/shrub/jungle/bush-3.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4673b924a97166c519d8e22a1c6d1839cd570c877cd4b7ecd1469adbf88e37eb -size 1968 +oid sha256:14abb5b60f6b932df83cb02485727fd036ebcf78ae0446bcca6ae1400fa8f1b8 +size 2004 diff --git a/assets/world/shrub/jungle/bush-4.vox b/assets/world/shrub/jungle/bush-4.vox index 1fe19a7154..ac198c20d1 100644 --- a/assets/world/shrub/jungle/bush-4.vox +++ b/assets/world/shrub/jungle/bush-4.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:280c83933dc0e7d98d17564c33efa95fe2416150171a677975ddc2073d25ce26 -size 2020 +oid sha256:1a964bce0f9649d92745922a12e0b41ddbdf008b915e34ebd66bfe2119fcf9ce +size 2076 diff --git a/assets/world/shrub/jungle/bush-5.vox b/assets/world/shrub/jungle/bush-5.vox index 6b51e26884..322e71cf14 100644 --- a/assets/world/shrub/jungle/bush-5.vox +++ b/assets/world/shrub/jungle/bush-5.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f05fbe323c57abd5ce550b83f807ed7af3ea297f4eb284cd3b42b48f336f88c -size 3784 +oid sha256:dd72f3d25b2ff166868e5dd29269d2361001bb3fac0a1ecd3225435eaf0d66c4 +size 3524 diff --git a/assets/world/shrub/jungle/bush-6.vox b/assets/world/shrub/jungle/bush-6.vox new file mode 100644 index 0000000000..d427fda119 --- /dev/null +++ b/assets/world/shrub/jungle/bush-6.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a54b09bf4bd8495e5bb47a7c1d5e18cbeb18f18469340fcb50d8356c08867d5 +size 1764 diff --git a/assets/world/shrub/jungle/bush-7.vox b/assets/world/shrub/jungle/bush-7.vox new file mode 100644 index 0000000000..b77c7d6ce2 --- /dev/null +++ b/assets/world/shrub/jungle/bush-7.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58687d9d1ed97f4ea01a514bac5829bbc2c13926fa464afa0e3f01c4839c1bad +size 1664 diff --git a/assets/world/shrub/jungle/bush-8.vox b/assets/world/shrub/jungle/bush-8.vox new file mode 100644 index 0000000000..a0366d32a9 --- /dev/null +++ b/assets/world/shrub/jungle/bush-8.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cee44976ff0e9f52f4f15ead09d6e1bd5192497edc0de8ece665a6cf1bf987a +size 2080 diff --git a/assets/world/shrub/savannah/bush-0.vox b/assets/world/shrub/savannah/bush-0.vox new file mode 100644 index 0000000000..9bd08f7006 --- /dev/null +++ b/assets/world/shrub/savannah/bush-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e78bbfd1b061ad360fa68e6e8fde2f8702ff3007b78b72511e98e65fc5a7fe3 +size 2108 diff --git a/assets/world/shrub/savannah/bush-1.vox b/assets/world/shrub/savannah/bush-1.vox new file mode 100644 index 0000000000..9c832c46d4 --- /dev/null +++ b/assets/world/shrub/savannah/bush-1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edf26a33287f8cd0e99727d5bdba3539c3b9c9e1b4a62238a5b8f046acbd0545 +size 1740 diff --git a/assets/world/shrub/savannah/bush-2.vox b/assets/world/shrub/savannah/bush-2.vox new file mode 100644 index 0000000000..d79fa58234 --- /dev/null +++ b/assets/world/shrub/savannah/bush-2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4023bfdbcf2bdede91ced60ba282f24d08e64eaad2880711026ce2cddb404ee +size 1632 diff --git a/assets/world/shrub/savannah/bush-3.vox b/assets/world/shrub/savannah/bush-3.vox new file mode 100644 index 0000000000..a4c85629fa --- /dev/null +++ b/assets/world/shrub/savannah/bush-3.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6c32fe0f72664fec0d3e606ea193ff5240884b1e6840a6a34570195ffcb5762 +size 2188 diff --git a/assets/world/shrub/savannah/bush-4.vox b/assets/world/shrub/savannah/bush-4.vox new file mode 100644 index 0000000000..3de1612bec --- /dev/null +++ b/assets/world/shrub/savannah/bush-4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d69c70280fe3f0fe31c8cb2af71be1dd7b17916b01c3e1786313b75c2d899d31 +size 2072 diff --git a/assets/world/shrub/savannah/bush-5.vox b/assets/world/shrub/savannah/bush-5.vox new file mode 100644 index 0000000000..b3a08b3d72 --- /dev/null +++ b/assets/world/shrub/savannah/bush-5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0253d3c74b9782cb4e53199aae28b3a791acd69a37e8e9bc421a1c61279f8b5 +size 1388 diff --git a/assets/world/shrub/savannah/bush-6.vox b/assets/world/shrub/savannah/bush-6.vox new file mode 100644 index 0000000000..27e2b3927f --- /dev/null +++ b/assets/world/shrub/savannah/bush-6.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08c04fcffe864a5f343a1a3d8b4575a8cfb409e918b815d693e6f4f9cfc5ba7f +size 1556 diff --git a/assets/world/shrub/savannah/bush-7.vox b/assets/world/shrub/savannah/bush-7.vox new file mode 100644 index 0000000000..4d552a23e4 --- /dev/null +++ b/assets/world/shrub/savannah/bush-7.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3fdf7128ed2d775ca3a7a901d133c0525114e49fa97049b72735d75619bed3 +size 1504 diff --git a/assets/world/shrub/savannah/bush-8.vox b/assets/world/shrub/savannah/bush-8.vox new file mode 100644 index 0000000000..205a075cef --- /dev/null +++ b/assets/world/shrub/savannah/bush-8.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7354fa2c6536814a1e4c5be883e437c6a77e54c79bd6eb527397874f0b7c948f +size 1488 diff --git a/assets/world/shrub/savannah/bush-9.vox b/assets/world/shrub/savannah/bush-9.vox new file mode 100644 index 0000000000..0f2507109c --- /dev/null +++ b/assets/world/shrub/savannah/bush-9.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fde9886896fc583d79d01f6b5c24997148ca63ca7476c9b1492cd82caafdd5e +size 1344 diff --git a/assets/world/shrub/taiga/bush-0.vox b/assets/world/shrub/taiga/bush-0.vox new file mode 100644 index 0000000000..c9c727bb41 --- /dev/null +++ b/assets/world/shrub/taiga/bush-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6cd9ea97fed9f8014f6ef7dea23e3b4ca699e17e97a9613306e5a8e428e03f1 +size 1724 diff --git a/assets/world/shrub/taiga/bush-1.vox b/assets/world/shrub/taiga/bush-1.vox new file mode 100644 index 0000000000..f47461cc4b --- /dev/null +++ b/assets/world/shrub/taiga/bush-1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bd541012b98b5c095c897263df6a79d331ab8dc80626929977a5ee4e4880037 +size 1580 diff --git a/assets/world/shrub/taiga/bush-2.vox b/assets/world/shrub/taiga/bush-2.vox new file mode 100644 index 0000000000..27c9c48e68 --- /dev/null +++ b/assets/world/shrub/taiga/bush-2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a78450f1ac7bbdbaef2adfd076a7b18eb234ac0a5b01f10dad6dea96437ebba7 +size 1848 diff --git a/assets/world/shrub/taiga/bush-3.vox b/assets/world/shrub/taiga/bush-3.vox new file mode 100644 index 0000000000..c5d4f7c6ad --- /dev/null +++ b/assets/world/shrub/taiga/bush-3.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fda2eef751254dabce63f3811fe1df13db547b91e5e467ab712c7f4dd160a2ff +size 1596 diff --git a/assets/world/shrub/taiga/bush-4.vox b/assets/world/shrub/taiga/bush-4.vox new file mode 100644 index 0000000000..fe4988133a --- /dev/null +++ b/assets/world/shrub/taiga/bush-4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6acaf26c73fcfcf002ab09e97776172b641025a2e28304bddb561a804fa35a28 +size 1732 diff --git a/assets/world/shrub/taiga/bush-5.vox b/assets/world/shrub/taiga/bush-5.vox new file mode 100644 index 0000000000..06e5af280b --- /dev/null +++ b/assets/world/shrub/taiga/bush-5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aed9204e1e6210ef0787fc615eda557df6dad347f5b797043059e2b10c896e4 +size 1668 diff --git a/assets/world/shrub/temperate/bush-0.vox b/assets/world/shrub/temperate/bush-0.vox new file mode 100644 index 0000000000..91148bfcf1 --- /dev/null +++ b/assets/world/shrub/temperate/bush-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c02dcda6ed6ac5dfb69d77fef9e90f4da359098b6e13ca825dfb8479d36dd8e +size 1812 diff --git a/assets/world/shrub/temperate/bush-1.vox b/assets/world/shrub/temperate/bush-1.vox new file mode 100644 index 0000000000..aa825ee348 --- /dev/null +++ b/assets/world/shrub/temperate/bush-1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3542834ebc348da543d024ae565bf8874b8666dd117971792626d4604eeac0ce +size 1660 diff --git a/assets/world/shrub/temperate/bush-2.vox b/assets/world/shrub/temperate/bush-2.vox new file mode 100644 index 0000000000..35f732e0b5 --- /dev/null +++ b/assets/world/shrub/temperate/bush-2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f08e90961c8712aded0dba71c613bfc20268c5846e863740f7e06b8a6cabbe8d +size 1844 diff --git a/assets/world/shrub/temperate/bush-3.vox b/assets/world/shrub/temperate/bush-3.vox new file mode 100644 index 0000000000..4bf43b26ab --- /dev/null +++ b/assets/world/shrub/temperate/bush-3.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3d08f04fc65d5278d7abc4d77f677d111a28bd1e2a72ccf56f558202222896e +size 1776 diff --git a/assets/world/shrub/temperate/bush-4.vox b/assets/world/shrub/temperate/bush-4.vox new file mode 100644 index 0000000000..afd6b3a113 --- /dev/null +++ b/assets/world/shrub/temperate/bush-4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84e88fb03d5eaa09c0fbef979f9140ddbdb252656ae224c0b41c5a40ccd486b2 +size 1968 diff --git a/assets/world/structure/natural/gnarling_tree.vox b/assets/world/structure/natural/gnarling_tree.vox new file mode 100644 index 0000000000..260efaef8e --- /dev/null +++ b/assets/world/structure/natural/gnarling_tree.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37e1e488c3f364ce62ae4c767809677490ae628f70e1c7d242dadd5646038e28 +size 102096 diff --git a/assets/world/structure/natural/igloo.vox b/assets/world/structure/natural/igloo.vox index 36c610cf1b..0a703ed12e 100644 --- a/assets/world/structure/natural/igloo.vox +++ b/assets/world/structure/natural/igloo.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba785df4931e6c7e524b4e04967fe1dc8c69157acde43a8985811ed730394e68 -size 25232 +oid sha256:bd430013c2910b9bf2f5110e77a1bba25bbd128fc970215a251885de040fb50a +size 25176 diff --git a/assets/world/structure/natural/shipwreck.vox b/assets/world/structure/natural/shipwreck.vox index 130626c6f9..f7808aa10a 100644 --- a/assets/world/structure/natural/shipwreck.vox +++ b/assets/world/structure/natural/shipwreck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:389ad5406e96fa49698f8ef397b5c270ac5976abedffae190ee41ea19f3b0504 -size 44728 +oid sha256:5a7941eca742ed7934e07927910d098e743c9f1ff4fff7aa65e47b2c840102f7 +size 44712 diff --git a/assets/world/structure/natural/shipwreck2.vox b/assets/world/structure/natural/shipwreck2.vox new file mode 100644 index 0000000000..3eeffa2305 --- /dev/null +++ b/assets/world/structure/natural/shipwreck2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8001c0c1158eee34479cd55e21d4fadff5b533362490c4922b522640afaf6241 +size 92268 diff --git a/assets/world/structure/natural/troll_cave.vox b/assets/world/structure/natural/troll_cave.vox new file mode 100644 index 0000000000..3759bc84cb --- /dev/null +++ b/assets/world/structure/natural/troll_cave.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b0c0a19909b964e51c341eaf564555385f4f8f7107e915b7c387cde092248e3 +size 154628 diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index c5b8e427f8..2d2db26548 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -858,6 +858,7 @@ impl Body { ship::Body::DefaultAirship => [0.0, 0.0, 10.0], ship::Body::AirBalloon => [0.0, 0.0, 5.0], ship::Body::SailBoat => [-2.0, -5.0, 4.0], + ship::Body::Galleon => [-2.0, -5.0, 4.0], }, _ => [0.0, 0.0, 0.0], } diff --git a/common/src/comp/body/ship.rs b/common/src/comp/body/ship.rs index 1c3a28570b..79121e4aff 100644 --- a/common/src/comp/body/ship.rs +++ b/common/src/comp/body/ship.rs @@ -7,7 +7,12 @@ use rand::prelude::SliceRandom; use serde::{Deserialize, Serialize}; use vek::Vec3; -pub const ALL_BODIES: [Body; 3] = [Body::DefaultAirship, Body::AirBalloon, Body::SailBoat]; +pub const ALL_BODIES: [Body; 4] = [ + Body::DefaultAirship, + Body::AirBalloon, + Body::SailBoat, + Body::Galleon, +]; make_case_elim!( body, @@ -17,6 +22,7 @@ make_case_elim!( DefaultAirship = 0, AirBalloon = 1, SailBoat = 2, + Galleon = 3, } ); @@ -37,6 +43,7 @@ impl Body { Body::DefaultAirship => "airship_human.structure", Body::AirBalloon => "air_balloon.structure", Body::SailBoat => "sail_boat.structure", + Body::Galleon => "galleon.structure", } } @@ -45,6 +52,7 @@ impl Body { Body::DefaultAirship => Vec3::new(25.0, 50.0, 40.0), Body::AirBalloon => Vec3::new(25.0, 50.0, 40.0), Body::SailBoat => Vec3::new(13.0, 31.0, 3.0), + Body::Galleon => Vec3::new(13.0, 32.0, 3.0), } } diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index da1ec5d8a8..039157f7a0 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -202,7 +202,7 @@ impl Body { Body::QuadrupedLow(_) => Some(300.0 * self.mass().0), Body::QuadrupedMedium(_) => Some(300.0 * self.mass().0), Body::QuadrupedSmall(_) => Some(300.0 * self.mass().0), - Body::Ship(ship) if ship.has_water_thrust() => Some(1500.0 * self.mass().0), + Body::Ship(ship) if ship.has_water_thrust() => Some(3500.0 * self.mass().0), Body::Ship(_) => None, } } diff --git a/voxygen/anim/src/ship/mod.rs b/voxygen/anim/src/ship/mod.rs index a1afe338fa..5a32b68326 100644 --- a/voxygen/anim/src/ship/mod.rs +++ b/voxygen/anim/src/ship/mod.rs @@ -94,21 +94,25 @@ impl<'a> From<&'a Body> for SkeletonAttr { DefaultAirship => (0.0, 0.0, 0.0), AirBalloon => (0.0, 0.0, 0.0), SailBoat => (0.0, 0.0, 0.0), + Galleon => (0.0, 0.0, 0.0), }, bone1: match body { DefaultAirship => (-13.0, -25.0, 10.0), AirBalloon => (0.0, 0.0, 0.0), SailBoat => (0.0, 0.0, 0.0), + Galleon => (0.0, 0.0, 0.0), }, bone2: match body { DefaultAirship => (13.0, -25.0, 10.0), AirBalloon => (0.0, 0.0, 0.0), SailBoat => (0.0, 0.0, 0.0), + Galleon => (0.0, 0.0, 0.0), }, bone3: match body { DefaultAirship => (0.0, -27.5, 8.5), AirBalloon => (0.0, -9.0, 8.0), SailBoat => (0.0, 0.0, 0.0), + Galleon => (0.0, 0.0, 0.0), }, } } diff --git a/world/src/all.rs b/world/src/all.rs index b5acc3bfb6..b5164e7708 100644 --- a/world/src/all.rs +++ b/world/src/all.rs @@ -82,6 +82,22 @@ impl ForestKind { } } + pub fn shrub_density_factor(&self) -> f32 { + match self { + ForestKind::Palm => 0.2, + ForestKind::Acacia => 0.3, + ForestKind::Baobab => 0.2, + ForestKind::Oak => 0.4, + ForestKind::Chestnut => 0.3, + ForestKind::Cedar => 0.3, + ForestKind::Pine => 0.4, + ForestKind::Birch => 0.65, + ForestKind::Mangrove => 1.0, + ForestKind::Swamp => 0.4, + _ => 1.0, + } + } + pub fn proclivity(&self, env: &Environment) -> f32 { self.ideal_proclivity() * close(env.humid, self.humid_range()) diff --git a/world/src/layer/shrub.rs b/world/src/layer/shrub.rs index 6f054354a2..cd8a6f56d8 100644 --- a/world/src/layer/shrub.rs +++ b/world/src/layer/shrub.rs @@ -15,6 +15,11 @@ use vek::*; lazy_static! { static ref JUNGLE_SHRUBS: AssetHandle = Structure::load_group("shrubs.jungle"); + static ref SAVANNAH_SHRUBS: AssetHandle = + Structure::load_group("shrubs.savannah"); + static ref TEMPERATE_SHRUBS: AssetHandle = + Structure::load_group("shrubs.temperate"); + static ref TAIGA_SHRUBS: AssetHandle = Structure::load_group("shrubs.taiga"); } struct Shrub { @@ -43,15 +48,20 @@ pub fn apply_shrubs_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) { && col.spawn_rate > 0.9 && col.path.map_or(true, |(d, _, _, _)| d > 6.0) { - Some(Shrub { - wpos: wpos.with_z(col.alt as i32), - seed, - kind: *info - .chunks() - .make_forest_lottery(wpos) - .choose_seeded(seed) - .as_ref()?, - }) + let kind = *info + .chunks() + .make_forest_lottery(wpos) + .choose_seeded(seed) + .as_ref()?; + if rng.gen_bool(kind.shrub_density_factor() as f64) { + Some(Shrub { + wpos: wpos.with_z(col.alt as i32), + seed, + kind, + }) + } else { + None + } } else { None } @@ -65,7 +75,10 @@ pub fn apply_shrubs_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) { let units = UnitChooser::new(shrub.seed).get(shrub.seed).into(); let shrubs = match shrub.kind { - ForestKind::Mangrove => &JUNGLE_SHRUBS, + ForestKind::Mangrove => &*JUNGLE_SHRUBS, + ForestKind::Acacia | ForestKind::Baobab => &*SAVANNAH_SHRUBS, + ForestKind::Oak | ForestKind::Chestnut => &*TEMPERATE_SHRUBS, + ForestKind::Pine => &*TAIGA_SHRUBS, _ => continue, // TODO: Add more shrub varieties } .read(); diff --git a/world/src/layer/spot.rs b/world/src/layer/spot.rs index 1a3590a1dd..6e5276ba2d 100644 --- a/world/src/layer/spot.rs +++ b/world/src/layer/spot.rs @@ -46,7 +46,6 @@ pub enum Spot { //TowerRuin, //WellOfLight, //MerchantOutpost, - //TrollHideout, //RuinedHuntingCabin, <-- Bears! //LionRock, //WolfBurrow, @@ -58,6 +57,9 @@ pub enum Spot { AirshipCrash, FruitTree, Shipwreck, + Shipwreck2, + GnarlingTree, + TrollCave, } impl Spot { @@ -179,6 +181,34 @@ impl Spot { }, false, ); + Self::generate_spots( + Spot::GnarlingTree, + world, + 1.0, + |g, c| { + g < 0.25 + && !c.near_cliffs() + && !c.river.near_water() + && !c.path.0.is_way() + && c.sites.is_empty() + && matches!(c.get_biome(), Forest | Grassland) + }, + false, + ); + Self::generate_spots( + Spot::TrollCave, + world, + 1.0, + |g, c| { + g < 0.25 + && !c.near_cliffs() + && !c.river.near_water() + && !c.path.0.is_way() + && c.sites.is_empty() + && matches!(c.get_biome(), Forest | Grassland | Snowland | Taiga) + }, + false, + ); // Random World Objects -> Themed to their Biome and the NPCs that regularly // spawn there Self::generate_spots( @@ -296,7 +326,16 @@ impl Spot { Self::generate_spots( Spot::Shipwreck, world, - 2.0, + 1.0, + |g, c| { + g < 0.25 && c.is_underwater() && c.sites.is_empty() && c.water_alt > c.alt + 30.0 + }, + true, + ); + Self::generate_spots( + Spot::Shipwreck2, + world, + 1.0, |g, c| { g < 0.25 && c.is_underwater() && c.sites.is_empty() && c.water_alt > c.alt + 30.0 }, @@ -440,6 +479,21 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) { (1..3, "common.entity.dungeon.tier-0.staff"), ], }, + Spot::GnarlingTree => SpotConfig { + base_structures: Some("spots_grasslands.gnarling_tree"), + entity_radius: 64.0, + entities: &[ + (1..5, "common.entity.dungeon.tier-0.spear"), + (2..4, "common.entity.dungeon.tier-0.bow"), + (1..2, "common.entity.dungeon.tier-0.staff"), + (1..4, "common.entity.wild.aggressive.deadwood"), + ], + }, + Spot::TrollCave => SpotConfig { + base_structures: Some("spots_general.troll_cave"), + entity_radius: 40.0, + entities: &[(1..2, "common.entity.wild.aggressive.cave_troll")], + }, // Random World Objects Spot::LionRock => SpotConfig { base_structures: Some("spots_savannah.lion_rock"), @@ -486,6 +540,11 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) { entity_radius: 2.0, entities: &[(0..2, "common.entity.wild.peaceful.clownfish")], }, + Spot::Shipwreck2 => SpotConfig { + base_structures: Some("spots.water.shipwreck2"), + entity_radius: 20.0, + entities: &[(2..6, "common.entity.wild.peaceful.clownfish")], + }, }; // Blit base structure if let Some(base_structures) = spot_config.base_structures {