From 25ef582f1ac2a2eb22446ddd6fc07885cffeabad Mon Sep 17 00:00:00 2001 From: flo666 Date: Tue, 11 Apr 2023 21:25:24 +0200 Subject: [PATCH] - sprites IceCrystal, GlowIceCrystal for yetipit - rough creature balance --- .../items/npc_armor/biped_large/yeti.ron | 4 +- .../npc_armor/quadruped_medium/frostfang.ron | 14 +++ .../npc_armor/quadruped_medium/roshwalr.ron | 2 +- .../sprite/crystal/glow_ice_crystal_0.vox | 3 + .../sprite/crystal/glow_ice_crystal_1.vox | 3 + .../sprite/crystal/glow_ice_crystal_2.vox | 3 + .../sprite/crystal/glow_ice_crystal_3.vox | 3 + .../sprite/crystal/glow_ice_crystal_4.vox | 3 + .../sprite/crystal/glow_ice_crystal_5.vox | 3 + .../voxel/sprite/crystal/ice_crystal_0.vox | 3 + .../voxel/sprite/crystal/ice_crystal_1.vox | 3 + .../voxel/sprite/crystal/ice_crystal_10.vox | 3 + .../voxel/sprite/crystal/ice_crystal_11.vox | 3 + .../voxel/sprite/crystal/ice_crystal_2.vox | 3 + .../voxel/sprite/crystal/ice_crystal_3.vox | 3 + .../voxel/sprite/crystal/ice_crystal_4.vox | 3 + .../voxel/sprite/crystal/ice_crystal_5.vox | 3 + .../voxel/sprite/crystal/ice_crystal_6.vox | 3 + .../voxel/sprite/crystal/ice_crystal_7.vox | 3 + .../voxel/sprite/crystal/ice_crystal_8.vox | 3 + .../voxel/sprite/crystal/ice_crystal_9.vox | 3 + assets/voxygen/voxel/sprite_manifest.ron | 100 ++++++++++++++++++ common/src/comp/body.rs | 2 +- common/src/comp/inventory/loadout_builder.rs | 7 +- common/src/terrain/block.rs | 2 +- common/src/terrain/sprite.rs | 4 + world/src/site2/plot/adlet.rs | 58 +++++++++- 27 files changed, 238 insertions(+), 9 deletions(-) create mode 100644 assets/common/items/npc_armor/quadruped_medium/frostfang.ron create mode 100644 assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_0.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_1.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_2.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_3.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_4.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_5.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_0.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_1.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_10.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_11.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_2.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_3.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_4.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_5.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_6.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_7.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_8.vox create mode 100644 assets/voxygen/voxel/sprite/crystal/ice_crystal_9.vox diff --git a/assets/common/items/npc_armor/biped_large/yeti.ron b/assets/common/items/npc_armor/biped_large/yeti.ron index 12e262a993..c16629a043 100644 --- a/assets/common/items/npc_armor/biped_large/yeti.ron +++ b/assets/common/items/npc_armor/biped_large/yeti.ron @@ -4,8 +4,8 @@ ItemDef( kind: Armor(( kind: Chest, stats: Direct(( - protection: Some(Normal(0.0)), - poise_resilience: Some(Normal(0.0)), + protection: Some(Normal(60.0)), + poise_resilience: Some(Normal(8.0)), )), )), quality: Legendary, diff --git a/assets/common/items/npc_armor/quadruped_medium/frostfang.ron b/assets/common/items/npc_armor/quadruped_medium/frostfang.ron new file mode 100644 index 0000000000..53f52283f2 --- /dev/null +++ b/assets/common/items/npc_armor/quadruped_medium/frostfang.ron @@ -0,0 +1,14 @@ +ItemDef( + name: "Frostfang's Thick Skin", + description: "testing123", + kind: Armor(( + kind: Chest, + stats: Direct(( + protection: Some(Normal(60.0)), + poise_resilience: Some(Normal(2.0)), + energy_max: Some(10), + )), + )), + quality: Epic, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/quadruped_medium/roshwalr.ron b/assets/common/items/npc_armor/quadruped_medium/roshwalr.ron index 717e55706f..45b253b657 100644 --- a/assets/common/items/npc_armor/quadruped_medium/roshwalr.ron +++ b/assets/common/items/npc_armor/quadruped_medium/roshwalr.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Chest, stats: Direct(( - protection: Some(Normal(100.0)), + protection: Some(Normal(75.0)), poise_resilience: Some(Normal(2.0)), energy_max: Some(10), )), diff --git a/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_0.vox b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_0.vox new file mode 100644 index 0000000000..0daf87dfcf --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d63b1400c334992691c2a2ab4f73fb4da6f4951a4a2dbfbe851d4e608c243575 +size 4556 diff --git a/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_1.vox b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_1.vox new file mode 100644 index 0000000000..89e3ec457b --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f6f0e848cbb6e58730037fe0534f23c50594a0e290c758cd1b47ce801fbf5f4 +size 4888 diff --git a/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_2.vox b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_2.vox new file mode 100644 index 0000000000..b2caf6de7d --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ad74b7df72c51cf48924fbb04bce3d8c764504d5d9eaad6ced5c6dd216ed96d +size 8660 diff --git a/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_3.vox b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_3.vox new file mode 100644 index 0000000000..0daf87dfcf --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_3.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d63b1400c334992691c2a2ab4f73fb4da6f4951a4a2dbfbe851d4e608c243575 +size 4556 diff --git a/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_4.vox b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_4.vox new file mode 100644 index 0000000000..89e3ec457b --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f6f0e848cbb6e58730037fe0534f23c50594a0e290c758cd1b47ce801fbf5f4 +size 4888 diff --git a/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_5.vox b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_5.vox new file mode 100644 index 0000000000..b2caf6de7d --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/glow_ice_crystal_5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ad74b7df72c51cf48924fbb04bce3d8c764504d5d9eaad6ced5c6dd216ed96d +size 8660 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_0.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_0.vox new file mode 100644 index 0000000000..23071bc1f1 --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7e29e2d9bc65e99db4863061fb600c41be7297a2fa583d12167d2dc59bd6c56 +size 1400 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_1.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_1.vox new file mode 100644 index 0000000000..4fd36da9cc --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da1e9fba0c978de0e32e740569ece65165f4b7f1f6e8c12c758e01eba44dc398 +size 1680 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_10.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_10.vox new file mode 100644 index 0000000000..eff7868806 --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_10.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a974dbdfb26b19399380df3879e13b2e5a70d9b8a56de9980cb9a3d6aa19af5 +size 1536 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_11.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_11.vox new file mode 100644 index 0000000000..b1d1df5f2a --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_11.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8712ac888aca908dae2d757b48bb04594e1c733c2f8d4dffed5246f91dec6273 +size 1420 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_2.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_2.vox new file mode 100644 index 0000000000..69c2aec997 --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea19c6aaa8dd5f9846faa2a368b43fb3d77fae98dfaac28b3084c063f4eca719 +size 1684 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_3.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_3.vox new file mode 100644 index 0000000000..7dafdb9bdf --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_3.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:991f55bdbe60ccec7bc77f9f0d0db3141f8af8f2b3a0d6bc305480879a406f61 +size 1448 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_4.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_4.vox new file mode 100644 index 0000000000..69c2aec997 --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea19c6aaa8dd5f9846faa2a368b43fb3d77fae98dfaac28b3084c063f4eca719 +size 1684 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_5.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_5.vox new file mode 100644 index 0000000000..7dafdb9bdf --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:991f55bdbe60ccec7bc77f9f0d0db3141f8af8f2b3a0d6bc305480879a406f61 +size 1448 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_6.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_6.vox new file mode 100644 index 0000000000..39d9e273d9 --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_6.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8f890bcb88d2957248a502c8f4cb276bae86fec9bc626c238bfea4837e1b4c0 +size 2012 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_7.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_7.vox new file mode 100644 index 0000000000..ae2dddddcd --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_7.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d888bbb86c0f68c5385e917c9b96cbb4786a3c4bb72b1c63f61e2a8a090dd8e5 +size 2128 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_8.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_8.vox new file mode 100644 index 0000000000..d8756d2dac --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_8.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad25d35fe4bc355dd4054309734c8febb670ce07eb7992aef127c19c0bc132cf +size 1496 diff --git a/assets/voxygen/voxel/sprite/crystal/ice_crystal_9.vox b/assets/voxygen/voxel/sprite/crystal/ice_crystal_9.vox new file mode 100644 index 0000000000..a3a4c2f5a1 --- /dev/null +++ b/assets/voxygen/voxel/sprite/crystal/ice_crystal_9.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9025cfffee42462ff9425f3063f31a11e5a17b88899b163d22023b7b33f92075 +size 1328 diff --git a/assets/voxygen/voxel/sprite_manifest.ron b/assets/voxygen/voxel/sprite_manifest.ron index 9766303700..18c5e4cd1f 100644 --- a/assets/voxygen/voxel/sprite_manifest.ron +++ b/assets/voxygen/voxel/sprite_manifest.ron @@ -4316,4 +4316,104 @@ Candle: Some(( ], wind_sway: 0.0, )), +IceCrystal: Some(( + variations: [ + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_0", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_1", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_2", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_3", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_4", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_5", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_6", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_7", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_8", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_9", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_10", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.ice_crystal_11", + offset: (-5.5, -5.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ], + wind_sway: 0.0, +)), +GlowIceCrystal: Some(( + variations: [ + ( + model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_0", + offset: (8.5, -9.0, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_1", + offset: (-8.0, -8.0, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_2", + offset: (-11.5, -22.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_3", + offset: (-8.5, -9.0, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_4", + offset: (-8.0, -8.0, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ( + model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_5", + offset: (-11.5, -22.5, 0.0), + lod_axes: (0.0, 0.0, 0.0), + ), + ], + wind_sway: 0.0, +)), } diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 94ed10bd46..5143606755 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -794,7 +794,7 @@ impl Body { biped_large::Species::Dullahan => 600, biped_large::Species::Mindflayer => 1250, biped_large::Species::Tidalwarrior => 1600, - biped_large::Species::Yeti => 1200, + biped_large::Species::Yeti => 1800, biped_large::Species::Minotaur => 3000, biped_large::Species::Harvester => 1500, biped_large::Species::Blueoni => 240, diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index cb1f24eba3..20b7bbec59 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -923,6 +923,7 @@ impl LoadoutBuilder { | biped_large::Species::Blueoni | biped_large::Species::Redoni | biped_large::Species::Cavetroll + | biped_large::Species::Tursus | biped_large::Species::Wendigo => { Some("common.items.npc_armor.biped_large.generic") }, @@ -964,7 +965,8 @@ impl LoadoutBuilder { | quadruped_low::Species::Rocksnapper | quadruped_low::Species::Rootsnapper | quadruped_low::Species::Reefsnapper - | quadruped_low::Species::Sandshark => { + | quadruped_low::Species::Sandshark + | quadruped_low::Species::Icedrake => { Some("common.items.npc_armor.quadruped_low.generic") }, quadruped_low::Species::Dagon => Some("common.items.npc_armor.quadruped_low.dagon"), @@ -974,6 +976,9 @@ impl LoadoutBuilder { _ => None, }, Body::QuadrupedMedium(body) => match body.species { + quadruped_medium::Species::Frostfang => { + Some("common.items.npc_armor.quadruped_medium.frostfang") + }, quadruped_medium::Species::Roshwalr => { Some("common.items.npc_armor.quadruped_medium.roshwalr") }, diff --git a/common/src/terrain/block.rs b/common/src/terrain/block.rs index 078f4c9d98..10f0461726 100644 --- a/common/src/terrain/block.rs +++ b/common/src/terrain/block.rs @@ -335,7 +335,7 @@ impl Block { | SpriteKind::EmeraldSmall | SpriteKind::SapphireSmall => Some(3), SpriteKind::Lantern => Some(24), - SpriteKind::SeashellLantern => Some(16), + SpriteKind::SeashellLantern | SpriteKind::GlowIceCrystal => Some(16), SpriteKind::SeaDecorEmblem => Some(12), SpriteKind::SeaDecorBlock => Some(10), _ => None, diff --git a/common/src/terrain/sprite.rs b/common/src/terrain/sprite.rs index 212502a390..1a129aaea3 100644 --- a/common/src/terrain/sprite.rs +++ b/common/src/terrain/sprite.rs @@ -248,6 +248,8 @@ make_case_elim!( BoneKeyDoor = 0xDE, // FireBlock for Burning Buff FireBlock = 0xDF, + IceCrystal = 0xE0, + GlowIceCrystal = 0xE1, } ); @@ -658,6 +660,8 @@ impl SpriteKind { | SpriteKind::DoorWide, | SpriteKind::BoneKeyhole | SpriteKind::BoneKeyDoor + | SpriteKind::IceCrystal + | SpriteKind::GlowIceCrystal ) } } diff --git a/world/src/site2/plot/adlet.rs b/world/src/site2/plot/adlet.rs index f3040aad3c..2272d9a47b 100644 --- a/world/src/site2/plot/adlet.rs +++ b/world/src/site2/plot/adlet.rs @@ -425,7 +425,6 @@ impl Structure for AdletStronghold { #[cfg_attr(feature = "be-dyn-lib", export_name = "render_adletstronghold")] fn render_inner(&self, _site: &Site, land: &Land, painter: &Painter) { - // let wall_mat = Fill::Brick(BlockKind::Snow, Rgb::new(175, 175, 175), 25); let snow_ice_fill = Fill::Sampling(Arc::new(|wpos| { Some(match (RandomField::new(0).get(wpos)) % 80 { 0..=3 => Block::new(BlockKind::Ice, Rgb::new(120, 160, 255)), @@ -461,6 +460,21 @@ impl Structure for AdletStronghold { _ => Block::new(BlockKind::Air, Rgb::new(0, 0, 0)), }) })); + let yeti_sprites_fill = Fill::Sampling(Arc::new(|wpos| { + Some(match (RandomField::new(0).get(wpos)) % 80 { + 0..=2 => Block::air(SpriteKind::Bones), + 4..=5 => Block::air(SpriteKind::GlowIceCrystal), + 6..=8 => Block::air(SpriteKind::IceCrystal), + 9..=15 => Block::new(BlockKind::Snow, Rgb::new(255, 255, 255)), + _ => Block::new(BlockKind::Air, Rgb::new(0, 0, 0)), + }) + })); + let yeti_bones_fill = Fill::Sampling(Arc::new(|wpos| { + Some(match (RandomField::new(0).get(wpos)) % 20 { + 0 => Block::air(SpriteKind::Bones), + _ => Block::new(BlockKind::Air, Rgb::new(0, 0, 0)), + }) + })); let mut rng = thread_rng(); // Tunnel @@ -688,8 +702,8 @@ impl Structure for AdletStronghold { ) .clear(); // Foundation - let foundation = match RandomField::new(0).get((wpos).with_z(alt as i32)) % 3 { - 1 => painter + let foundation = match RandomField::new(0).get((wpos).with_z(alt as i32)) % 5 { + 0 => painter .sphere(Aabb { min: (igloo_pos - 15).with_z(alt as i32 - 45 + height_handle), max: (igloo_pos + 15).with_z(alt as i32 - 15 + height_handle), @@ -1081,6 +1095,44 @@ impl Structure for AdletStronghold { ((room_size / 3) + 5) as f32, ) .clear(); + painter + .cylinder_with_radius( + yetipit_center.with_z(level - (3 * down) - 6), + room_size as f32, + 1.0, + ) + .fill(snow_ice_fill.clone()); + // sprites: icecrystals, bones + for r in 0..4 { + painter + .cylinder_with_radius( + yetipit_center.with_z(level - (3 * down) - 2 - r), + (room_size + 2 - r) as f32, + 1.0, + ) + .fill(snow_ice_fill.clone()); + painter + .cylinder_with_radius( + yetipit_center.with_z(level - (3 * down) - 1 - r), + (room_size - r) as f32, + 1.0, + ) + .fill(yeti_sprites_fill.clone()); + painter + .cylinder_with_radius( + yetipit_center.with_z(level - (3 * down) - 2 - r), + (room_size - 1 - r) as f32, + 2.0, + ) + .clear(); + } + painter + .cylinder_with_radius( + yetipit_center.with_z(level - (3 * down) - 5), + (room_size - 4) as f32, + 1.0, + ) + .fill(yeti_bones_fill.clone()); painter .cone_with_radius( yetipit_center.with_z(level - (3 * down) + (room_size / 3) - 2),