--- freeciv-01-26-02/client/tilespec.c	Mon Jan  7 02:03:46 2002
+++ freeciv/client/tilespec.c	Thu Feb 21 20:29:41 2002
@@ -419,6 +419,17 @@
        assert(sprites.field);\
     } while(0)
 
+/* This one lets you pick a sprite *iff* it's there */
+#define SET_SPRITE_ALT(field, tag, alt) do { \
+       sprites.field = hash_lookup_data(sprite_hash, tag);\
+       if (!sprites.field) { \
+           sprites.field = hash_lookup_data(sprite_hash, alt);\
+       }
+       assert(sprites.field);\
+    } while(0)
+
+
+
 /**********************************************************************
   Initialize 'sprites' structure based on hardwired tags which
   freeciv always requires. 
@@ -588,9 +598,7 @@
   SET_SPRITE(tx.farmland,   "tx.farmland");
   SET_SPRITE(tx.irrigation, "tx.irrigation");
   SET_SPRITE(tx.mine,       "tx.mine");
-  if (!is_isometric) {
-    SET_SPRITE(tx.oil_mine,   "tx.oil_mine");
-  }
+  SET_SPRITE_ALT(tx.oil_mine,   "tx.oil_mine",     "tx.mine");
   SET_SPRITE(tx.pollution,  "tx.pollution");
   SET_SPRITE(tx.village,    "tx.village");
   SET_SPRITE(tx.fortress,   "tx.fortress");
@@ -1217,8 +1225,9 @@
     *solid_bg = 1;
   }
 
-  if (tspecial & S_MINE && draw_mines) {
-    /* We do not have an oil tower in isometric view yet... */
+  if (tspecial & S_MINE && draw_mines
+                        && (ttype == T_HILLS || ttype == T_MOUNTAINS)) {
+    /*Oil mines come later*/
     *sprs++ = sprites.tx.mine;
   }
 
@@ -1236,6 +1245,12 @@
       *sprs++ = tile_types[ttype].special[0].sprite;
     else if (tspecial & S_SPECIAL_2)
       *sprs++ = tile_types[ttype].special[1].sprite;
+  }
+
+  if (tspecial & S_MINE && draw_mines 
+                        && ttype != T_HILLS && ttype != T_MOUNTAINS) {
+    /* Must be Glacier or Dessert -- looks better on top of special*/
+    *sprs++ = sprites.tx.oil_mine;
   }
 
   if (tspecial & S_RAILROAD && draw_roads_rails) {