diff options
author | planetmaker <planetmaker@openttd.org> | 2013-01-20 12:43:25 +0000 |
---|---|---|
committer | planetmaker <planetmaker@openttd.org> | 2013-01-20 12:43:25 +0000 |
commit | 42883b9543fcb92acc6d3360cfb89f4ac79d2cef (patch) | |
tree | 0b8c99ccc98461f93acfe10e996436868c328d65 /src | |
parent | 5fb6b7b9eb077cce6875467e7756743c8253e889 (diff) | |
download | openttd-42883b9543fcb92acc6d3360cfb89f4ac79d2cef.tar.xz |
(svn r24923) -Fix [FS#5441]: When an object built on a river is removed, restore the river, if possible also on slopes (based on patch by Supercheese)
Diffstat (limited to 'src')
-rw-r--r-- | src/water_cmd.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index 580ffa4d5..ae5efada7 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -161,7 +161,9 @@ void MakeWaterKeepingClass(TileIndex tile, Owner o) /* Autoslope might turn an originally canal or river tile into land */ int z; - if (GetTileSlope(tile, &z) != SLOPE_FLAT) { + Slope slope = GetTileSlope(tile, &z); + + if (slope != SLOPE_FLAT) { if (wc == WATER_CLASS_CANAL) { /* If we clear the canal, we have to remove it from the infrastructure count as well. */ Company *c = Company::GetIfValid(o); @@ -169,8 +171,14 @@ void MakeWaterKeepingClass(TileIndex tile, Owner o) c->infrastructure.water--; DirtyCompanyInfrastructureWindows(c->index); } + /* Sloped canals are locks and no natural water remains whatever the slope direction */ + wc = WATER_CLASS_INVALID; + } + + /* There must not be water sloped invalidly, whatever class it may be */ + if (GetInclinedSlopeDirection(slope) == INVALID_DIAGDIR) { + wc = WATER_CLASS_INVALID; } - wc = WATER_CLASS_INVALID; } if (wc == WATER_CLASS_SEA && z > 0) { |