Index: src/heightmap.cpp
===================================================================
--- src/heightmap.cpp (revision 26981)
+++ src/heightmap.cpp (working copy)
@@ -364,16 +364,16 @@
assert(img_row < img_height);
assert(img_col < img_width);
- /* The height in 1/255ths. */
+ /* The height in 1/256ths. */
uint heightmap_height = map[img_row * img_width + img_col];
- /* The height in 1/255ths of the maximum height. */
- heightmap_height *= _settings_game.construction.max_heightlevel;
+ /* The height in 1/256ths of the maximum height. */
+ heightmap_height *= (1 + _settings_game.construction.max_heightlevel);
/* Scaling should not alter the coastline, thus values in the interval ]0..1] result in a heightlevel of 1 */
- if (IsInsideMM(heightmap_height, 1, UINT8_MAX)) heightmap_height = UINT8_MAX;
+ if (IsInsideMM(heightmap_height, 1, 256)) heightmap_height = 256;
- SetTileHeight(tile, heightmap_height / UINT8_MAX);
+ SetTileHeight(tile, heightmap_height / 256);
}
/* Only clear the tiles within the map area. */
if (IsInnerTile(tile)) {
Index: src/screenshot.cpp
===================================================================
--- src/screenshot.cpp (revision 26981)
+++ src/screenshot.cpp (working copy)
@@ -783,7 +783,7 @@
while (n > 0) {
TileIndex ti = TileXY(MapMaxX(), y);
for (uint x = MapMaxX(); true; x--) {
- *buf = 16 * TileHeight(ti);
+ *buf = 256 * TileHeight(ti) / (1 + _settings_game.construction.max_heightlevel);
buf++;
if (x == 0) break;
ti = TILE_ADDXY(ti, -1, 0);