diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -273,16 +273,19 @@ static CommandCost RemoveShipDepot(TileI if (ret.Failed()) return ret; } + bool do_clear = (flags & DC_FORCE_CLEAR_TILE) != 0; + if (flags & DC_EXEC) { delete Depot::GetByTile(tile); Company *c = Company::GetIfValid(GetTileOwner(tile)); if (c != nullptr) { c->infrastructure.water -= 2 * LOCK_DEPOT_TILE_FACTOR; + if (do_clear && GetWaterClass(tile) == WATER_CLASS_CANAL) c->infrastructure.water--; DirtyCompanyInfrastructureWindows(c->index); } - MakeWaterKeepingClass(tile, GetTileOwner(tile)); + if (!do_clear) MakeWaterKeepingClass(tile, GetTileOwner(tile)); MakeWaterKeepingClass(tile2, GetTileOwner(tile2)); }