Add dead sequoias and align tower walks
This commit is contained in:
@@ -1598,6 +1598,33 @@ static void build_redwood_titan(worldgen_ctx *ctx, int x, int y, int z, int heig
|
||||
{1, 0}, {-1, 0}, {0, 1}, {0, -1},
|
||||
{1, 1}, {1, -1}, {-1, 1}, {-1, -1}
|
||||
};
|
||||
if (rng_next_f64(rng) < 0.10) {
|
||||
int snag_height = core_height - rng_range_inclusive(rng, 4, 10);
|
||||
if (snag_height < 22) snag_height = 22;
|
||||
int taper_start = snag_height - 5;
|
||||
for (int dy = 0; dy < snag_height; ++dy) {
|
||||
int radius = (dy >= taper_start) ? 0 : 1;
|
||||
for (int dx = -radius; dx <= radius; ++dx) {
|
||||
for (int dz = -radius; dz <= radius; ++dz) {
|
||||
if (radius == 1 && abs(dx) == 1 && abs(dz) == 1 && dy > 10 && (dy % 3) == 0) continue;
|
||||
block_list_push(out, x + dx, y + dy, z + dz, (uint16_t)arch->log_block);
|
||||
}
|
||||
}
|
||||
if (dy > 8 && dy < snag_height - 4 && (dy % 7) == 0) {
|
||||
int dir = (dy / 7 + rng_range_inclusive(rng, 0, 3)) & 7;
|
||||
int branch_log = redwood_axis_log(arch->log_block, dirs8[dir][0], dirs8[dir][1]);
|
||||
int len = 2 + rng_range_inclusive(rng, 0, 2);
|
||||
for (int step = 2; step <= len + 1; ++step) {
|
||||
block_list_push(out, x + dirs8[dir][0] * step, y + dy, z + dirs8[dir][1] * step, (uint16_t)branch_log);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 6; ++i) {
|
||||
int root_len = 3 + rng_range_inclusive(rng, 0, 2);
|
||||
place_redwood_root(ctx, x, y, z, dirs8[i][0], dirs8[i][1], root_len, arch->log_block, rng, out);
|
||||
}
|
||||
return;
|
||||
}
|
||||
int spire = 3 + rng_range_inclusive(rng, 0, 2);
|
||||
int crown_start = y + core_height / 2 + rng_range_inclusive(rng, 0, 2);
|
||||
|
||||
@@ -3709,7 +3736,7 @@ static void generate_chunk_border_wall(worldgen_ctx *ctx, int chunk_x, int chunk
|
||||
|
||||
int center_x = world_x;
|
||||
int center_z = world_z;
|
||||
int base_along = (floor_div_int(along, tower_spacing) * tower_spacing) + tower_spacing / 2;
|
||||
int base_along = floor_div_int(along + tower_spacing / 2, tower_spacing) * tower_spacing;
|
||||
switch (side) {
|
||||
case 0:
|
||||
center_x = ctx->wall_min_x + wall_center;
|
||||
|
||||
Reference in New Issue
Block a user