Advertisement
Guest User

Untitled

a guest
Dec 23rd, 2012
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. /*
  2. Make caves (this code is relatively horrible)
  3. */
  4. double cave_amount = 6.0 + 6.0 * noise2d_perlin(
  5. 0.5+(double)node_min.X/250, 0.5+(double)node_min.Y/250,
  6. data->seed+34329, 3, 0.50);
  7. cave_amount = MYMAX(0.0, cave_amount);
  8. u32 caves_count = cave_amount * volume_nodes / 50000;
  9. u32 bruises_count = 1;
  10. PseudoRandom ps(blockseed+21343);
  11. PseudoRandom ps2(blockseed+1032);
  12. if(ps.range(1, 6) == 1)
  13. bruises_count = ps.range(0, ps.range(0, 2));
  14. if(get_biome(data->seed, v2s16(node_min.X, node_min.Y)) == BT_DESERT){
  15. caves_count /= 3;
  16. bruises_count /= 3;
  17. }
  18. for(u32 jj=0; jj<caves_count+bruises_count; jj++)
  19. {
  20. int avg_height = (int)
  21. ((base_rock_level_2d(data->seed, v2s16(node_min.X, node_min.Z)) +
  22. base_rock_level_2d(data->seed, v2s16(node_max.X, node_max.Z))) / 2);
  23. if ((node_max.Y + node_min.Y) / 2 > avg_height)
  24. break;
  25. bool large_cave = (jj >= caves_count);
  26. }
  27. for(u32 jj=0; jj<caves_count+bruises_count; jj++)
  28. {
  29. bool large_cave = (jj >= caves_count);
  30. s16 min_tunnel_diameter = 2;
  31. s16 max_tunnel_diameter = ps.range(2,6);
  32. int dswitchint = ps.range(1,14);
  33. u16 tunnel_routepoints = 0;
  34. int part_max_length_rs = 0;
  35. if(large_cave){
  36. part_max_length_rs = ps.range(2,4);
  37. tunnel_routepoints = ps.range(5, ps.range(15,30));
  38. min_tunnel_diameter = 5;
  39. max_tunnel_diameter = ps.range(7, ps.range(8,24));
  40. } else {
  41. part_max_length_rs = ps.range(2,9);
  42. tunnel_routepoints = ps.range(10, ps.range(15,30));
  43. }
  44. bool large_cave_is_flat = (ps.range(0,1) == 0);
  45.  
  46. v3f main_direction(0,0,0);
  47.  
  48. // Allowed route area size in nodes
  49. v3s16 ar = central_area_size;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement