Mgv7: Raise spawn point by 1 node for no mountain case
authorparamat <paramat@users.noreply.github.com>
Mon, 7 Aug 2017 05:35:34 +0000 (06:35 +0100)
committerparamat <mat.gregory@virginmedia.com>
Wed, 9 Aug 2017 10:06:33 +0000 (11:06 +0100)
src/mapgen_v7.cpp

index f254a74d89ab58b49dda22357e48167b63dcc12f..3ce22dbb18214a924e2851842ed7c1c5b801e8b0 100644 (file)
@@ -238,20 +238,21 @@ int MapgenV7::getSpawnLevelAtPoint(v2s16 p)
        // If mountains are disabled, terrain level is base terrain level.
        // Avoids mid-air spawn where mountain terrain would have been.
        if (!(spflags & MGV7_MOUNTAINS)) {
-               if (y <= water_level || y > max_spawn_y)
+               if (y < water_level || y > max_spawn_y)
                        return MAX_MAP_GENERATION_LIMIT;  // Unsuitable spawn point
                else
-                       // + 1 to not be half-buried in a potential node-deep biome 'dust'
-                       return y + 1;
+                       // y + 2 because y is surface level and due to biome 'dust'
+                       return y + 2;
        }
 
        // Search upwards for first node without mountain terrain
        int iters = 256;
        while (iters > 0 && y <= max_spawn_y) {
-               if (!getMountainTerrainAtPoint(p.X, y + 1, p.Y)) {  // If air above
+               if (!getMountainTerrainAtPoint(p.X, y + 1, p.Y)) {
                        if (y <= water_level || y > max_spawn_y)
                                return MAX_MAP_GENERATION_LIMIT;  // Unsuitable spawn point
                        else
+                               // y + 1 due to biome 'dust'
                                return y + 1;
                }
                y++;