Add dead sequoias and align tower walks

This commit is contained in:
chelsea
2026-05-03 01:22:38 -05:00
parent 95bd106a3b
commit aed76c3b1b
2 changed files with 28 additions and 1 deletions

Binary file not shown.

View File

@@ -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, 0}, {-1, 0}, {0, 1}, {0, -1},
{1, 1}, {1, -1}, {-1, 1}, {-1, -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 spire = 3 + rng_range_inclusive(rng, 0, 2);
int crown_start = y + core_height / 2 + 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_x = world_x;
int center_z = world_z; 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) { switch (side) {
case 0: case 0:
center_x = ctx->wall_min_x + wall_center; center_x = ctx->wall_min_x + wall_center;