diff --git a/common/src/terrain/block.rs b/common/src/terrain/block.rs index 5365566f96..6ab58c9e1d 100644 --- a/common/src/terrain/block.rs +++ b/common/src/terrain/block.rs @@ -190,7 +190,11 @@ impl Block { | SpriteKind::Orb => Some(16), SpriteKind::Velorite | SpriteKind::VeloriteFrag - | SpriteKind::Cauldron + | SpriteKind::CavernGrassBlueShort + | SpriteKind::CavernGrassBlueMedium + | SpriteKind::CavernGrassBlueLong + | SpriteKind::CavernLillypadBlue + | SpriteKind::CavernMycelBlue | SpriteKind::CeilingMushroom => Some(6), SpriteKind::CaveMushroom | SpriteKind::CookingPot diff --git a/common/src/terrain/sprite.rs b/common/src/terrain/sprite.rs index 0a56b74d98..f8033004d1 100644 --- a/common/src/terrain/sprite.rs +++ b/common/src/terrain/sprite.rs @@ -267,7 +267,7 @@ impl SpriteKind { | SpriteKind::Tin | SpriteKind::Silver | SpriteKind::Gold => 0.6, - SpriteKind::EnsnaringVines => 0.1, + SpriteKind::EnsnaringVines | SpriteKind::CavernLillypadBlue => 0.1, _ => return None, }) } diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 0bd51d5efb..4d73d36424 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -743,9 +743,9 @@ pub fn apply_caverns_to(canvas: &mut Canvas, dynamic_rng: &mut R) { { use SpriteKind::*; let sprites = if dynamic_rng.gen_bool(0.1) { - &[Beehive, Lantern] + &[Beehive, Lantern] as &[_] } else { - &[Orb, Liana] + &[Orb, CavernMycelBlue, CavernMycelBlue] as &[_] }; return Some(Block::air(*sprites.choose(dynamic_rng).unwrap())); } @@ -860,42 +860,54 @@ pub fn apply_caverns_to(canvas: &mut Canvas, dynamic_rng: &mut R) { } else if let Some(mushroom_block) = get_mushroom(wpos, dynamic_rng) { mushroom_block } else if z > cavern_top - moss as i32 { - let kind = if dynamic_rng.gen_bool(0.05 / (1.0 + ((cavern_top - z).max(0) as f64).mul(0.1))) { + let kind = if dynamic_rng + .gen_bool(0.05 / (1.0 + ((cavern_top - z).max(0) as f64).mul(0.1))) + { BlockKind::GlowingMushroom } else { BlockKind::Leaves }; Block::new(kind, Rgb::new(50, 120, 160)) } else if z < water_level { - Block::water(SpriteKind::Empty) - .with_sprite(if z == cavern_bottom + floor && dynamic_rng.gen_bool(0.01) { + Block::water(SpriteKind::Empty).with_sprite( + if z == cavern_bottom + floor && dynamic_rng.gen_bool(0.01) { SpriteKind::CaveMushroom } else { SpriteKind::Empty - }) - } else if z == cavern_bottom + floor && dynamic_rng.gen_bool(0.025) && on_ground { + }, + ) + } else if z == water_level && dynamic_rng.gen_bool(0.01) && !on_ground { + Block::air(SpriteKind::CavernLillypadBlue) + } else if z == cavern_bottom + floor && dynamic_rng.gen_bool(0.1) && on_ground { Block::air( - *[ - CrystalLow, - CaveMushroom, - LeafyPlant, - Fern, - Reed, - Pyrebloom, - Moonbell, - Welwitch, - LargeGrass, - LongGrass, - MediumGrass, - ShortGrass, - GrassBlue, - ] + *if dynamic_rng.gen_bool(0.9) { + &[ + CavernGrassBlueShort, + CavernGrassBlueMedium, + CavernGrassBlueLong, + ] as &[_] + } else { + &[ + CaveMushroom, + LeafyPlant, + Fern, + Reed, + Pyrebloom, + Moonbell, + Welwitch, + LargeGrass, + LongGrass, + MediumGrass, + ShortGrass, + GrassBlue, + ] as &[_] + } .choose(dynamic_rng) .unwrap(), ) } else if z == cavern_top - 1 && dynamic_rng.gen_bool(0.001) { Block::air( - *[CrystalHigh, CeilingMushroom, Orb] + *[CrystalHigh, CeilingMushroom, Orb, CavernMycelBlue] .choose(dynamic_rng) .unwrap(), )