diff --git a/world/src/layer/scatter.rs b/world/src/layer/scatter.rs index f446729b79..ff521cc1b7 100644 --- a/world/src/layer/scatter.rs +++ b/world/src/layer/scatter.rs @@ -329,6 +329,54 @@ pub fn apply_scatter_to(canvas: &mut Canvas, _rng: &mut impl Rng, calendar: Opti ) }, }, + ScatterConfig { + kind: Hardwood, + water_mode: Ground, + permit: |b| matches!(b, BlockKind::Grass), + f: |_, col| { + ( + close( + col.temp, + CONFIG.tropical_temp + 0.1, + 0.3).min + ( + close( + col.humidity, + CONFIG.jungle_hum, + 0.4, + ) + ) + * (col.tree_density * 1.25 - 0.25).powf(0.5).max(0.0) * 0.15e-3, + None, + ) + }, + }, + ScatterConfig { + kind: Ironwood, + water_mode: Ground, + permit: |b| matches!(b, BlockKind::Grass), + f: |_, col| { + ( + close(col.temp, CONFIG.desert_temp, 0.25) + .min(close(col.humidity, CONFIG.desert_hum, 0.1)) + * MUSH_FACT + * 0.5, + None, + ) + }, + }, + ScatterConfig { + kind: Frostwood, + water_mode: Ground, + permit: |b| matches!(b, + BlockKind::Snow | BlockKind::Ice), + f: |_, col| { + ( + (col.tree_density * 1.25 - 0.25).powf(0.5).max(0.0) * 0.06e-3, + None, + ) + }, + }, ScatterConfig { kind: Stones, water_mode: Ground, @@ -558,9 +606,9 @@ pub fn apply_scatter_to(canvas: &mut Canvas, _rng: &mut impl Rng, calendar: Opti permit: |b| matches!(b, BlockKind::Grass), f: |_, col| { ( - close(col.temp, 1.0, 0.95).min(close(col.humidity, 0.0, 0.3)) + close(col.temp, CONFIG.desert_temp, 0.25).min(close(col.humidity, CONFIG.desert_hum, 0.1)) * MUSH_FACT - * 0.35, + * 0.25, None, ) }, @@ -571,7 +619,7 @@ pub fn apply_scatter_to(canvas: &mut Canvas, _rng: &mut impl Rng, calendar: Opti permit: |b| matches!(b, BlockKind::Grass), f: |_, col| { ( - close(col.temp, 1.0, 0.25).min(close(col.humidity, 0.0, 0.1)) * MUSH_FACT * 1.5, + close(col.temp, CONFIG.desert_temp, 0.25).min(close(col.humidity, CONFIG.desert_hum, 0.1)) * MUSH_FACT * 1.5, None, ) }, @@ -582,7 +630,7 @@ pub fn apply_scatter_to(canvas: &mut Canvas, _rng: &mut impl Rng, calendar: Opti permit: |b| matches!(b, BlockKind::Grass), f: |_, col| { ( - close(col.temp, 1.0, 0.25).min(close(col.humidity, 0.0, 0.1)) * MUSH_FACT * 2.0, + close(col.temp, CONFIG.desert_temp, 0.25).min(close(col.humidity, CONFIG.desert_hum, 0.1)) * MUSH_FACT * 2.0, None, ) }, @@ -593,7 +641,7 @@ pub fn apply_scatter_to(canvas: &mut Canvas, _rng: &mut impl Rng, calendar: Opti permit: |b| matches!(b, BlockKind::Grass), f: |_, col| { ( - close(col.temp, 1.0, 0.25).min(close(col.humidity, 0.0, 0.1)) * MUSH_FACT * 1.5, + close(col.temp, CONFIG.desert_temp, 0.25).min(close(col.humidity, CONFIG.desert_hum, 0.1)) * MUSH_FACT * 1.5, None, ) }, @@ -604,7 +652,7 @@ pub fn apply_scatter_to(canvas: &mut Canvas, _rng: &mut impl Rng, calendar: Opti permit: |b| matches!(b, BlockKind::Grass), f: |_, col| { ( - close(col.temp, 1.0, 0.25).min(close(col.humidity, 0.0, 0.1)) * MUSH_FACT * 2.0, + close(col.temp, CONFIG.desert_temp, 0.25).min(close(col.humidity, CONFIG.desert_hum, 0.1)) * MUSH_FACT * 2.0, None, ) }, @@ -615,7 +663,7 @@ pub fn apply_scatter_to(canvas: &mut Canvas, _rng: &mut impl Rng, calendar: Opti permit: |b| matches!(b, BlockKind::Grass), f: |_, col| { ( - close(col.temp, 1.0, 0.25).min(close(col.humidity, 0.0, 0.1)) * MUSH_FACT * 2.0, + close(col.temp, CONFIG.desert_temp, 0.25).min(close(col.humidity, CONFIG.desert_hum, 0.1)) * MUSH_FACT * 2.0, None, ) }, @@ -626,7 +674,7 @@ pub fn apply_scatter_to(canvas: &mut Canvas, _rng: &mut impl Rng, calendar: Opti permit: |b| matches!(b, BlockKind::Grass), f: |_, col| { ( - close(col.temp, 1.0, 0.25).min(close(col.humidity, 0.0, 0.1)) * MUSH_FACT * 2.0, + close(col.temp, CONFIG.desert_temp, 0.25).min(close(col.humidity, CONFIG.desert_hum, 0.1)) * MUSH_FACT * 2.0, None, ) }, @@ -637,11 +685,11 @@ pub fn apply_scatter_to(canvas: &mut Canvas, _rng: &mut impl Rng, calendar: Opti permit: |b| matches!(b, BlockKind::Grass), f: |_, col| { ( - close(col.temp, 1.0, 0.25).min(close(col.humidity, 0.0, 0.1)) * MUSH_FACT * 2.0, + close(col.temp, CONFIG.desert_temp, 0.25).min(close(col.humidity, CONFIG.desert_hum, 0.1)) * MUSH_FACT * 2.0, None, ) }, - }, + }, // Underwater chests ScatterConfig { kind: ChestBuried,