Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Make caves (this code is relatively horrible)
- */
- double cave_amount = 6.0 + 6.0 * noise2d_perlin(
- 0.5+(double)node_min.X/250, 0.5+(double)node_min.Y/250,
- data->seed+34329, 3, 0.50);
- cave_amount = MYMAX(0.0, cave_amount);
- u32 caves_count = cave_amount * volume_nodes / 50000;
- u32 bruises_count = 1;
- PseudoRandom ps(blockseed+21343);
- PseudoRandom ps2(blockseed+1032);
- if(ps.range(1, 6) == 1)
- bruises_count = ps.range(0, ps.range(0, 2));
- if(get_biome(data->seed, v2s16(node_min.X, node_min.Y)) == BT_DESERT){
- caves_count /= 3;
- bruises_count /= 3;
- }
- for(u32 jj=0; jj<caves_count+bruises_count; jj++)
- {
- int avg_height = (int)
- ((base_rock_level_2d(data->seed, v2s16(node_min.X, node_min.Z)) +
- base_rock_level_2d(data->seed, v2s16(node_max.X, node_max.Z))) / 2);
- if ((node_max.Y + node_min.Y) / 2 > avg_height)
- break;
- bool large_cave = (jj >= caves_count);
- }
- for(u32 jj=0; jj<caves_count+bruises_count; jj++)
- {
- bool large_cave = (jj >= caves_count);
- s16 min_tunnel_diameter = 2;
- s16 max_tunnel_diameter = ps.range(2,6);
- int dswitchint = ps.range(1,14);
- u16 tunnel_routepoints = 0;
- int part_max_length_rs = 0;
- if(large_cave){
- part_max_length_rs = ps.range(2,4);
- tunnel_routepoints = ps.range(5, ps.range(15,30));
- min_tunnel_diameter = 5;
- max_tunnel_diameter = ps.range(7, ps.range(8,24));
- } else {
- part_max_length_rs = ps.range(2,9);
- tunnel_routepoints = ps.range(10, ps.range(15,30));
- }
- bool large_cave_is_flat = (ps.range(0,1) == 0);
- v3f main_direction(0,0,0);
- // Allowed route area size in nodes
- v3s16 ar = central_area_size;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement