Skip to content

Commit

Permalink
Mgv7: Avoid mid-air spawn on disabled mountain terrain, optimise func…
Browse files Browse the repository at this point in the history
…tion

'getSpawnLevelAtPoint()' did not account for disabled mountains, it
was possible to be spawned in mid-air where a mountain surface would
have been.

Avoid check for river area if rivers are disabled.
  • Loading branch information
paramat committed Sep 30, 2016
1 parent 33a606c commit 56ea77e
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions src/mapgen_v7.cpp
Expand Up @@ -154,17 +154,27 @@ int MapgenV7::getSpawnLevelAtPoint(v2s16 p)
// Base terrain calculation
s16 y = baseTerrainLevelAtPoint(p.X, p.Y);

// Ridge/river terrain calculation
float width = 0.2;
float uwatern = NoisePerlin2D(&noise_ridge_uwater->np, p.X, p.Y, seed) * 2;
// if inside a river this is an unsuitable spawn point
if (fabs(uwatern) <= width)
return MAX_MAP_GENERATION_LIMIT;
// If enabled, check if inside a river
if (spflags & MGV7_RIDGES) {
float width = 0.2;
float uwatern = NoisePerlin2D(&noise_ridge_uwater->np, p.X, p.Y, seed) * 2;
if (fabs(uwatern) <= width)
return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point
}

// If mountains are disabled, terrain level is base terrain level
// Avoids spawn on non-existant mountain terrain
if (!(spflags & MGV7_MOUNTAINS)) {
if (y <= water_level || y > water_level + 16)
return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point
else
return y;
}

// Mountain terrain calculation
int iters = 128;
while (iters--) {
if (!getMountainTerrainAtPoint(p.X, y + 1, p.Y)) { // Air, y is ground level
if (!getMountainTerrainAtPoint(p.X, y + 1, p.Y)) { // If air above
if (y <= water_level || y > water_level + 16)
return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point
else
Expand All @@ -173,7 +183,7 @@ int MapgenV7::getSpawnLevelAtPoint(v2s16 p)
y++;
}

// Unsuitable spawn point, no ground surface found
// Unsuitable spawn point, no mountain surface found
return MAX_MAP_GENERATION_LIMIT;
}

Expand Down

0 comments on commit 56ea77e

Please sign in to comment.