CavesRandomWalk: Make 'lava_depth' a mapgen parameter
authorparamat <paramat@users.noreply.github.com>
Wed, 21 Jun 2017 03:20:18 +0000 (04:20 +0100)
committerparamat <mat.gregory@virginmedia.com>
Thu, 22 Jun 2017 02:14:56 +0000 (03:14 +0100)
As with 'large_cave_depth', lava depth was previously a fixed y value and
therefore incompatible with the ability to shift terrain vertically.

Add 'lava_depth' mapgen parameter to mgflat, mgfractal, mgv5, mgv7.

14 files changed:
builtin/settingtypes.txt
minetest.conf.example
src/cavegen.cpp
src/cavegen.h
src/mapgen.cpp
src/mapgen.h
src/mapgen_flat.cpp
src/mapgen_flat.h
src/mapgen_fractal.cpp
src/mapgen_fractal.h
src/mapgen_v5.cpp
src/mapgen_v5.h
src/mapgen_v7.cpp
src/mapgen_v7.h

index ebdc9f752e98df1b9d4a516b8ef43ba56e90602a..f15fc679bb8615df632a78f45f87ac1b5b2e49f7 100644 (file)
@@ -1028,9 +1028,12 @@ mgv5_spflags (Mapgen v5 specific flags) flags caverns caverns,nocaverns
 #    Controls width of tunnels, a smaller value creates wider tunnels.
 mgv5_cave_width (Cave width) float 0.125
 
-#    Y of upper limit of large pseudorandom caves.
+#    Y of upper limit of large caves.
 mgv5_large_cave_depth (Large cave depth) int -256
 
+#    Y of upper limit of lava in large caves.
+mgv5_lava_depth (Lava depth) int -256
+
 #    Y-level of cavern upper limit.
 mgv5_cavern_limit (Cavern limit) int -256
 
@@ -1137,9 +1140,12 @@ mgv7_spflags (Mapgen v7 specific flags) flags mountains,ridges,nofloatlands,cave
 #    Controls width of tunnels, a smaller value creates wider tunnels.
 mgv7_cave_width (Cave width) float 0.09
 
-#    Y of upper limit of large pseudorandom caves.
+#    Y of upper limit of large caves.
 mgv7_large_cave_depth (Large cave depth) int -33
 
+#    Y of upper limit of lava in large caves.
+mgv7_lava_depth (Lava depth) int -256
+
 #    Controls the density of floatland mountain terrain.
 #    Is an offset added to the 'np_mountain' noise value.
 mgv7_float_mount_density (Floatland mountain density) float 0.6
@@ -1218,9 +1224,12 @@ mgflat_spflags (Mapgen flat specific flags) flags nolakes,nohills lakes,hills,no
 #    Y of flat ground.
 mgflat_ground_level (Ground level) int 8
 
-#    Y of upper limit of large pseudorandom caves.
+#    Y of upper limit of large caves.
 mgflat_large_cave_depth (Large cave depth) int -33
 
+#    Y of upper limit of lava in large caves.
+mgflat_lava_depth (Lava depth) int -256
+
 #    Controls width of tunnels, a smaller value creates wider tunnels.
 mgflat_cave_width (Cave width) float 0.09
 
@@ -1257,9 +1266,12 @@ mgflat_np_cave2 (Cave2 noise) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2
 #    Controls width of tunnels, a smaller value creates wider tunnels.
 mgfractal_cave_width (Cave width) float 0.09
 
-#    Y of upper limit of large pseudorandom caves.
+#    Y of upper limit of large caves.
 mgfractal_large_cave_depth (Large cave depth) int -33
 
+#    Y of upper limit of lava in large caves.
+mgfractal_lava_depth (Lava depth) int -256
+
 #    Choice of 18 fractals from 9 formulas.
 #    1 = 4D "Roundy" mandelbrot set.
 #    2 = 4D "Roundy" julia set.
index 9a71ec562f43ec449cf94ee39695077c9435e1f7..d0ed146e0405424c4919c37d2d483538f5db4c57 100644 (file)
 #    type: float
 # mgv5_cave_width = 0.125
 
-#    Y of upper limit of large pseudorandom caves.
+#    Y of upper limit of large caves.
 #    type: int
 # mgv5_large_cave_depth = -256
 
+#    Y of upper limit of lava in large caves.
+#    type: int
+# mgv5_lava_depth = -256
+
 #    Y-level of cavern upper limit.
 #    type: int
 # mgv5_cavern_limit = -256
 #    type: float
 # mgv7_cave_width = 0.09
 
-#    Y of upper limit of large pseudorandom caves.
+#    Y of upper limit of large caves.
 #    type: int
 # mgv7_large_cave_depth = -33
 
+#    Y of upper limit of lava in large caves.
+#    type: int
+# mgv7_lava_depth = -256
+
 #    Controls the density of floatland mountain terrain.
 #    Is an offset added to the 'np_mountain' noise value.
 #    type: float
 #    type: int
 # mgflat_ground_level = 8
 
-#    Y of upper limit of large pseudorandom caves.
+#    Y of upper limit of large caves.
 #    type: int
 # mgflat_large_cave_depth = -33
 
+#    Y of upper limit of lava in large caves.
+#    type: int
+# mgflat_lava_depth = -256
+
 #    Controls width of tunnels, a smaller value creates wider tunnels.
 #    type: float
 # mgflat_cave_width = 0.09
 #    type: float
 # mgfractal_cave_width = 0.09
 
-#    Y of upper limit of large pseudorandom caves.
+#    Y of upper limit of large caves.
 #    type: int
 # mgfractal_large_cave_depth = -33
 
+#    Y of upper limit of lava in large caves.
+#    type: int
+# mgfractal_lava_depth = -256
+
 #    Choice of 18 fractals from 9 formulas.
 #    1 = 4D "Roundy" mandelbrot set.
 #    2 = 4D "Roundy" julia set.
index dbed7995111dc5c4a614749f32763bd1f91cae65..a2ecca483027aa02b6f2200ea226ea1bcdd2eaea 100644 (file)
@@ -258,7 +258,8 @@ CavesRandomWalk::CavesRandomWalk(
        s32 seed,
        int water_level,
        content_t water_source,
-       content_t lava_source)
+       content_t lava_source,
+       int lava_depth)
 {
        assert(ndef);
 
@@ -267,7 +268,7 @@ CavesRandomWalk::CavesRandomWalk(
        this->seed           = seed;
        this->water_level    = water_level;
        this->np_caveliquids = &nparams_caveliquids;
-       this->lava_depth     = DEFAULT_LAVA_DEPTH;
+       this->lava_depth     = lava_depth;
 
        c_water_source = water_source;
        if (c_water_source == CONTENT_IGNORE)
index a1140594e0ad9ed1b918eea65777b8dfaf39b194..7230cf6db51f1f0f9601effedcbafc3c4b93a989 100644 (file)
@@ -21,7 +21,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #define CAVEGEN_HEADER
 
 #define VMANIP_FLAG_CAVE VOXELFLAG_CHECKED1
-#define DEFAULT_LAVA_DEPTH (-256)
 
 class GenerateNotifier;
 
@@ -157,7 +156,8 @@ public:
        CavesRandomWalk(INodeDefManager *ndef, GenerateNotifier *gennotify = NULL,
                        s32 seed = 0, int water_level = 1,
                        content_t water_source = CONTENT_IGNORE,
-                       content_t lava_source = CONTENT_IGNORE);
+                       content_t lava_source = CONTENT_IGNORE,
+                       int lava_depth = -256);
 
        // vm and ps are mandatory parameters.
        // If heightmap is NULL, the surface level at all points is assumed to
index 70de8c8e823b177a2a81de053aaf99432d68228c..e40bf2a7ede09e62b2f60684d2256fae5992c37c 100644 (file)
@@ -817,7 +817,7 @@ void MapgenBasic::generateCaves(s16 max_stone_y, s16 large_cave_depth)
        u32 bruises_count = ps.range(0, 2);
        for (u32 i = 0; i < bruises_count; i++) {
                CavesRandomWalk cave(ndef, &gennotify, seed, water_level,
-                       c_water_source, CONTENT_IGNORE);
+                       c_water_source, CONTENT_IGNORE, lava_depth);
 
                cave.makeCave(vm, node_min, node_max, &ps, true, max_stone_y, heightmap);
        }
index dde4e5c256a3b84e9e700af7c3914df0fb34edd2..9369a6c357f9b8898a94b9bce3ef283ebdc6b977 100644 (file)
@@ -294,6 +294,7 @@ protected:
        float cavern_limit;
        float cavern_taper;
        float cavern_threshold;
+       int lava_depth;
 };
 
 #endif
index a6efcee23d465f4b3f0774f03ca6d7853af57802..e7f5f4dfebd4006246802c7f2df43075e7957857 100644 (file)
@@ -54,6 +54,7 @@ MapgenFlat::MapgenFlat(int mapgenid, MapgenFlatParams *params, EmergeManager *em
        this->spflags          = params->spflags;
        this->ground_level     = params->ground_level;
        this->large_cave_depth = params->large_cave_depth;
+       this->lava_depth       = params->lava_depth;
        this->cave_width       = params->cave_width;
        this->lake_threshold   = params->lake_threshold;
        this->lake_steepness   = params->lake_steepness;
@@ -94,6 +95,7 @@ void MapgenFlatParams::readParams(const Settings *settings)
        settings->getFlagStrNoEx("mgflat_spflags",      spflags, flagdesc_mapgen_flat);
        settings->getS16NoEx("mgflat_ground_level",     ground_level);
        settings->getS16NoEx("mgflat_large_cave_depth", large_cave_depth);
+       settings->getS16NoEx("mgflat_lava_depth",       lava_depth);
        settings->getFloatNoEx("mgflat_cave_width",     cave_width);
        settings->getFloatNoEx("mgflat_lake_threshold", lake_threshold);
        settings->getFloatNoEx("mgflat_lake_steepness", lake_steepness);
@@ -112,6 +114,7 @@ void MapgenFlatParams::writeParams(Settings *settings) const
        settings->setFlagStr("mgflat_spflags",      spflags, flagdesc_mapgen_flat, U32_MAX);
        settings->setS16("mgflat_ground_level",     ground_level);
        settings->setS16("mgflat_large_cave_depth", large_cave_depth);
+       settings->setS16("mgflat_lava_depth",       lava_depth);
        settings->setFloat("mgflat_cave_width",     cave_width);
        settings->setFloat("mgflat_lake_threshold", lake_threshold);
        settings->setFloat("mgflat_lake_steepness", lake_steepness);
index ab3531226b39c595b8c2ea48d2916ef33ce4a47f..7c2929d39ffa6c24704cdfb8e38ac4eea09fe58f 100644 (file)
@@ -36,6 +36,7 @@ struct MapgenFlatParams : public MapgenParams
        u32 spflags = 0;
        s16 ground_level = 8;
        s16 large_cave_depth = -33;
+       s16 lava_depth = -256;
        float cave_width = 0.09f;
        float lake_threshold = -0.45f;
        float lake_steepness = 48.0f;
index a99b3006b24368fdb65655923a9fcb9684a09132..b43dcd3f0acef373845f1e314ebcc1d3d11c05e0 100644 (file)
@@ -52,6 +52,7 @@ MapgenFractal::MapgenFractal(int mapgenid, MapgenFractalParams *params, EmergeMa
        this->spflags          = params->spflags;
        this->cave_width       = params->cave_width;
        this->large_cave_depth = params->large_cave_depth;
+       this->lava_depth       = params->lava_depth;
        this->fractal          = params->fractal;
        this->iterations       = params->iterations;
        this->scale            = params->scale;
@@ -95,6 +96,7 @@ void MapgenFractalParams::readParams(const Settings *settings)
        settings->getFlagStrNoEx("mgfractal_spflags",      spflags, flagdesc_mapgen_fractal);
        settings->getFloatNoEx("mgfractal_cave_width",     cave_width);
        settings->getS16NoEx("mgfractal_large_cave_depth", large_cave_depth);
+       settings->getS16NoEx("mgfractal_lava_depth",       lava_depth);
        settings->getU16NoEx("mgfractal_fractal",          fractal);
        settings->getU16NoEx("mgfractal_iterations",       iterations);
        settings->getV3FNoEx("mgfractal_scale",            scale);
@@ -117,6 +119,7 @@ void MapgenFractalParams::writeParams(Settings *settings) const
        settings->setFlagStr("mgfractal_spflags",      spflags, flagdesc_mapgen_fractal, U32_MAX);
        settings->setFloat("mgfractal_cave_width",     cave_width);
        settings->setS16("mgfractal_large_cave_depth", large_cave_depth);
+       settings->setS16("mgfractal_lava_depth",       lava_depth);
        settings->setU16("mgfractal_fractal",          fractal);
        settings->setU16("mgfractal_iterations",       iterations);
        settings->setV3F("mgfractal_scale",            scale);
index 688e41c0a9911143f3c8e66b9a86f192cca49c8f..a14c5c5e100a5a293a7e3d8b4ef6ead9a7dd0b55 100644 (file)
@@ -35,6 +35,7 @@ struct MapgenFractalParams : public MapgenParams
        u32 spflags = 0;
        float cave_width = 0.09f;
        s16 large_cave_depth = -33;
+       s16 lava_depth = -256;
        u16 fractal = 1;
        u16 iterations = 11;
        v3f scale = v3f(4096.0, 1024.0, 4096.0);
index ebf9424e9528b97802f070ddadce316c20da3138..044826705ade51b02078f95ab34009f4b7898574 100644 (file)
@@ -51,6 +51,7 @@ MapgenV5::MapgenV5(int mapgenid, MapgenV5Params *params, EmergeManager *emerge)
        this->spflags          = params->spflags;
        this->cave_width       = params->cave_width;
        this->large_cave_depth = params->large_cave_depth;
+       this->lava_depth       = params->lava_depth;
        this->cavern_limit     = params->cavern_limit;
        this->cavern_taper     = params->cavern_taper;
        this->cavern_threshold = params->cavern_threshold;
@@ -96,6 +97,7 @@ void MapgenV5Params::readParams(const Settings *settings)
        settings->getFlagStrNoEx("mgv5_spflags",        spflags, flagdesc_mapgen_v5);
        settings->getFloatNoEx("mgv5_cave_width",       cave_width);
        settings->getS16NoEx("mgv5_large_cave_depth",   large_cave_depth);
+       settings->getS16NoEx("mgv5_lava_depth",         lava_depth);
        settings->getS16NoEx("mgv5_cavern_limit",       cavern_limit);
        settings->getS16NoEx("mgv5_cavern_taper",       cavern_taper);
        settings->getFloatNoEx("mgv5_cavern_threshold", cavern_threshold);
@@ -115,6 +117,7 @@ void MapgenV5Params::writeParams(Settings *settings) const
        settings->setFlagStr("mgv5_spflags",        spflags, flagdesc_mapgen_v5, U32_MAX);
        settings->setFloat("mgv5_cave_width",       cave_width);
        settings->setS16("mgv5_large_cave_depth",   large_cave_depth);
+       settings->setS16("mgv5_lava_depth",         lava_depth);
        settings->setS16("mgv5_cavern_limit",       cavern_limit);
        settings->setS16("mgv5_cavern_taper",       cavern_taper);
        settings->setFloat("mgv5_cavern_threshold", cavern_threshold);
index 9b3f98d73194e6cba8b8efe229e0d61627eed19e..3aaff58783aa9711caf7f7e531ae0a67d06107d5 100644 (file)
@@ -35,6 +35,7 @@ struct MapgenV5Params : public MapgenParams
        u32 spflags = MGV5_CAVERNS;
        float cave_width = 0.125f;
        s16 large_cave_depth = -256;
+       s16 lava_depth = -256;
        s16 cavern_limit = -256;
        s16 cavern_taper = 256;
        float cavern_threshold = 0.7f;
index 409863fa28193367d04d6f4ac4087859b630fdd2..5d150ee1c9c16976fd071529382b317eb1a182b5 100644 (file)
@@ -57,6 +57,7 @@ MapgenV7::MapgenV7(int mapgenid, MapgenV7Params *params, EmergeManager *emerge)
        this->spflags             = params->spflags;
        this->cave_width          = params->cave_width;
        this->large_cave_depth    = params->large_cave_depth;
+       this->lava_depth          = params->lava_depth;
        this->float_mount_density = params->float_mount_density;
        this->float_mount_height  = params->float_mount_height;
        this->floatland_level     = params->floatland_level;
@@ -145,6 +146,7 @@ void MapgenV7Params::readParams(const Settings *settings)
        settings->getFlagStrNoEx("mgv7_spflags",           spflags, flagdesc_mapgen_v7);
        settings->getFloatNoEx("mgv7_cave_width",          cave_width);
        settings->getS16NoEx("mgv7_large_cave_depth",      large_cave_depth);
+       settings->getS16NoEx("mgv7_lava_depth",            lava_depth);
        settings->getFloatNoEx("mgv7_float_mount_density", float_mount_density);
        settings->getFloatNoEx("mgv7_float_mount_height",  float_mount_height);
        settings->getS16NoEx("mgv7_floatland_level",       floatland_level);
@@ -175,6 +177,7 @@ void MapgenV7Params::writeParams(Settings *settings) const
        settings->setFlagStr("mgv7_spflags",           spflags, flagdesc_mapgen_v7, U32_MAX);
        settings->setFloat("mgv7_cave_width",          cave_width);
        settings->setS16("mgv7_large_cave_depth",      large_cave_depth);
+       settings->setS16("mgv7_lava_depth",            lava_depth);
        settings->setFloat("mgv7_float_mount_density", float_mount_density);
        settings->setFloat("mgv7_float_mount_height",  float_mount_height);
        settings->setS16("mgv7_floatland_level",       floatland_level);
index 3b0d11fffd7a1af5a9b4df302747f3d43edfb0b4..7b4364ef1772010e0fe2f0f991dc5db7df9a7ac3 100644 (file)
@@ -38,6 +38,7 @@ struct MapgenV7Params : public MapgenParams {
        u32 spflags = MGV7_MOUNTAINS | MGV7_RIDGES | MGV7_CAVERNS;
        float cave_width = 0.09f;
        s16 large_cave_depth = -33;
+       s16 lava_depth = -256;
        float float_mount_density = 0.6f;
        float float_mount_height = 128.0f;
        s16 floatland_level = 1280;