diff --git a/src/clear_map.h b/src/clear_map.h --- a/src/clear_map.h +++ b/src/clear_map.h @@ -310,14 +310,14 @@ static inline void MakeField(TileIndex t * @param t the tile to make snowy * @pre GetClearGround(t) != CLEAR_SNOW */ -static inline void MakeSnow(TileIndex t) +static inline void MakeSnow(TileIndex t, uint density = 0) { assert(GetClearGround(t) != CLEAR_SNOW); SetBit(_m[t].m3, 4); if (GetClearGround(t) == CLEAR_FIELDS) { - SetClearGroundDensity(t, CLEAR_GRASS, 0); + SetClearGroundDensity(t, CLEAR_GRASS, density); } else { - SetClearDensity(t, 0); + SetClearDensity(t, density); } } diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp --- a/src/tree_cmd.cpp +++ b/src/tree_cmd.cpp @@ -702,16 +702,19 @@ static void TileLoop_Trees(TileIndex til case TREE_GROUND_SHORE: MakeShore(tile); break; case TREE_GROUND_GRASS: MakeClear(tile, CLEAR_GRASS, GetTreeDensity(tile)); break; case TREE_GROUND_ROUGH: MakeClear(tile, CLEAR_ROUGH, 3); break; - case TREE_GROUND_ROUGH_SNOW: + case TREE_GROUND_ROUGH_SNOW: { + uint density = GetTreeDensity(tile); MakeClear(tile, CLEAR_ROUGH, 3); - MakeSnow(tile); + MakeSnow(tile, density); break; + } default: // snow or desert if (_settings_game.game_creation.landscape == LT_TROPIC) { MakeClear(tile, CLEAR_DESERT, GetTreeDensity(tile)); } else { - MakeClear(tile, CLEAR_GRASS, GetTreeDensity(tile)); - MakeSnow(tile); + uint density = GetTreeDensity(tile); + MakeClear(tile, CLEAR_GRASS, 3); + MakeSnow(tile, density); } break; }