summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/.gitignore3
-rw-r--r--crawl-ref/source/invent.cc6
-rw-r--r--crawl-ref/source/makefile10
-rw-r--r--crawl-ref/source/menu.cc5
-rw-r--r--crawl-ref/source/rltiles/Makefile2
-rw-r--r--crawl-ref/source/rltiles/dc-dngn.txt1568
-rw-r--r--crawl-ref/source/rltiles/dc-feat.txt365
-rw-r--r--crawl-ref/source/rltiles/dc-floor.txt480
-rw-r--r--crawl-ref/source/rltiles/dc-wall.txt736
-rw-r--r--crawl-ref/source/tag-version.h3
-rw-r--r--crawl-ref/source/tags.cc11
-rw-r--r--crawl-ref/source/tiledgnbuf.cc47
-rw-r--r--crawl-ref/source/tiledgnbuf.h4
-rw-r--r--crawl-ref/source/tiletex.cc32
-rw-r--r--crawl-ref/source/tiletex.h6
15 files changed, 1671 insertions, 1607 deletions
diff --git a/crawl-ref/.gitignore b/crawl-ref/.gitignore
index ab95391eef..7b50e6cdfe 100644
--- a/crawl-ref/.gitignore
+++ b/crawl-ref/.gitignore
@@ -45,6 +45,9 @@ mapgen.log
# Tile copied files
/source/dat/tiles/dngn.png
+/source/dat/tiles/floor.png
+/source/dat/tiles/wall.png
+/source/dat/tiles/feat.png
/source/dat/tiles/main.png
/source/dat/tiles/player.png
/source/dat/tiles/gui.png
diff --git a/crawl-ref/source/invent.cc b/crawl-ref/source/invent.cc
index aca3bc7dd0..46b87dd4ec 100644
--- a/crawl-ref/source/invent.cc
+++ b/crawl-ref/source/invent.cc
@@ -519,7 +519,7 @@ bool InvEntry::get_tiles(std::vector<tile_def>& tileset) const
else if (item_known_cursed(*item))
tileset.push_back(tile_def(TILE_ITEM_SLOT_CURSED, TEX_DEFAULT));
- tileset.push_back(tile_def(TILE_ITEM_SLOT, TEX_DUNGEON));
+ tileset.push_back(tile_def(TILE_ITEM_SLOT, TEX_FEAT));
tileset.push_back(tile_def(idx, TEX_DEFAULT));
if (eq != EQ_NONE && you.melded[eq])
@@ -535,7 +535,7 @@ bool InvEntry::get_tiles(std::vector<tile_def>& tileset) const
if (c.x == 0)
{
// Store items.
- tileset.push_back(tile_def(TILE_ITEM_SLOT, TEX_DUNGEON));
+ tileset.push_back(tile_def(TILE_ITEM_SLOT, TEX_FEAT));
}
else if (c != coord_def())
{
@@ -545,7 +545,7 @@ bool InvEntry::get_tiles(std::vector<tile_def>& tileset) const
else if (ch == TILE_WALL_NORMAL)
ch = env.tile_flv(c).wall;
- tileset.push_back(tile_def(ch, TEX_DUNGEON));
+ tileset.push_back(tile_def(ch, get_dngn_tex(ch)));
}
tileset.push_back(tile_def(idx, TEX_DEFAULT));
diff --git a/crawl-ref/source/makefile b/crawl-ref/source/makefile
index 0270357a96..c2e96f02de 100644
--- a/crawl-ref/source/makefile
+++ b/crawl-ref/source/makefile
@@ -747,18 +747,14 @@ endif
endif
ifdef TILES
-TILEDEFS = dngn main player gui unrand
+TILEIMAGEFILES := floor wall feat main player gui
+TILEDEFS = $(TILEIMAGEFILES) dngn unrand
TILEDEFPRES = $(TILEDEFS:%=$(RLTILES)/tiledef-%)
-TILEDEFTXTS = $(TILEDEFPRES:%=%.txt)
TILEDEFOBJS = $(TILEDEFPRES:%=%.o)
TILEDEFSRCS = $(TILEDEFPRES:%=%.cc)
TILEDEFHDRS = $(TILEDEFPRES:%=%.h)
-TILEFILES = \
- main.png \
- player.png \
- dngn.png \
- gui.png
+TILEFILES = $(TILEIMAGEFILES:%=%.png)
ORIGTILEFILES = $(TILEFILES:%=$(RLTILES)/%)
DESTTILEFILES = $(TILEFILES:%=dat/tiles/%)
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc
index 81ea9f2615..c386007e7f 100644
--- a/crawl-ref/source/menu.cc
+++ b/crawl-ref/source/menu.cc
@@ -860,7 +860,7 @@ bool MonsterMenuEntry::get_tiles(std::vector<tile_def>& tileset) const
ch = env.tile_flv(c).wall;
}
- tileset.push_back(tile_def(ch, TEX_DUNGEON));
+ tileset.push_back(tile_def(ch, get_dngn_tex(ch)));
if (m->type == MONS_DANCING_WEAPON)
{
@@ -960,7 +960,8 @@ bool FeatureMenuEntry::get_tiles(std::vector<tile_def>& tileset) const
MenuEntry::get_tiles(tileset);
- tileset.push_back(tile_def(tileidx_feature(feat, pos), TEX_DUNGEON));
+ tileidx_t tile = tileidx_feature(feat, pos);
+ tileset.push_back(tile_def(tile, get_dngn_tex(tile)));
if (in_bounds(pos) && is_unknown_stair(pos))
tileset.push_back(tile_def(TILE_NEW_STAIR, TEX_DEFAULT));
diff --git a/crawl-ref/source/rltiles/Makefile b/crawl-ref/source/rltiles/Makefile
index 8bc8304045..98559f1f29 100644
--- a/crawl-ref/source/rltiles/Makefile
+++ b/crawl-ref/source/rltiles/Makefile
@@ -43,7 +43,7 @@ DELETE = rm -f
TOOLDIR := tool
TILEGEN := $(TOOLDIR)/tilegen.elf
-INPUTS := main dngn player gui
+INPUTS := main dngn floor wall feat player gui
INPUTFILES := $(INPUTS:%=dc-%.txt)
HEADERS := $(INPUTS:%=tiledef-%.h)
HTML := $(INPUTS:%=tile-%.html)
diff --git a/crawl-ref/source/rltiles/dc-dngn.txt b/crawl-ref/source/rltiles/dc-dngn.txt
index 6175e319ea..9eb32b8b96 100644
--- a/crawl-ref/source/rltiles/dc-dngn.txt
+++ b/crawl-ref/source/rltiles/dc-dngn.txt
@@ -1,1566 +1,4 @@
%name dngn
-%prefix TILE
-
-%sdir dc-dngn
-
-dngn_unseen DNGN_UNSEEN
-
-
-# Multiple tile definitions are STATIC, that is they may change between
-# saves but are otherwise fixed.
-
-%weight 5
-wall/brick_brown0 WALL_NORMAL WALL_BRICK WALL_BRICK_BROWN
-wall/brick_brown1
-wall/brick_brown2
-wall/brick_brown4
-wall/brick_brown5
-%weight 2
-wall/brick_brown3
-wall/brick_brown6
-%weight 1
-wall/brick_brown7
-
-%variation WALL_BRICK blue
-%hue 30 240
-%hue 0 240
-%repeat WALL_BRICK WALL_BRICK_BLUE
-%resetcol
-
-%variation WALL_BRICK green
-%hue 30 90
-%hue 0 90
-%repeat WALL_BRICK WALL_BRICK_GREEN WALL_SNAKE
-%resetcol
-
-%variation WALL_BRICK cyan
-%hue 30 180
-%hue 0 180
-%repeat WALL_BRICK WALL_BRICK_CYAN
-%resetcol
-
-%variation WALL_BRICK red
-%hue 30 0
-%repeat WALL_BRICK WALL_BRICK_RED
-%resetcol
-
-%variation WALL_BRICK magenta
-%hue 30 300
-%hue 0 300
-%repeat WALL_BRICK WALL_BRICK_MAGENTA
-%resetcol
-
-%variation WALL_BRICK lightgray
-%desat 30
-%desat 0
-%lum 0 10
-%repeat WALL_BRICK WALL_BRICK_LIGHTGRAY
-%resetcol
-
-%variation WALL_BRICK darkgray
-%desat 30
-%lum 30 -20
-%desat 0
-%repeat WALL_BRICK WALL_BRICK_DARKGRAY
-%resetcol
-
-%variation WALL_BRICK lightblue
-%hue 30 240
-%lum 30 15
-%hue 0 240
-%repeat WALL_BRICK WALL_BRICK_LIGHTBLUE
-%resetcol
-
-%variation WALL_BRICK lightgreen
-%hue 30 90
-%lum 30 15
-%hue 0 90
-%lum 0 5
-%repeat WALL_BRICK WALL_BRICK_LIGHTGREEN
-%resetcol
-
-%variation WALL_BRICK lightcyan
-%hue 30 180
-%lum 30 15
-%hue 0 180
-%lum 0 5
-%repeat WALL_BRICK WALL_BRICK_LIGHTCYAN
-%resetcol
-
-%variation WALL_BRICK lightred
-%hue 30 0
-%lum 30 15
-%lum 0 5
-%repeat WALL_BRICK WALL_BRICK_LIGHTRED
-%resetcol
-
-%variation WALL_BRICK lightmagenta
-%hue 30 300
-%lum 30 15
-%hue 0 300
-%lum 0 5
-%repeat WALL_BRICK WALL_BRICK_LIGHTMAGENTA
-%resetcol
-
-%variation WALL_BRICK yellow
-%hue 30 60
-%hue 0 60
-%repeat WALL_BRICK WALL_BRICK_YELLOW
-%resetcol
-
-%variation WALL_BRICK white
-%desat 30
-%lum 30 30
-%desat 0
-%lum 0 15
-%repeat WALL_BRICK WALL_BRICK_WHITE
-%resetcol
-
-# Variant of BRICK_WALL_BROWN with vines
-wall/brick_brown-vines1 WALL_BRICK_VINES WALL_BRICK_BROWN_VINES
-wall/brick_brown-vines2
-wall/brick_brown-vines3
-wall/brick_brown-vines4
-
-# The colorized versions of FLOOR_PEBBLE were made from
-# pebble_gray*.png, by colorizing the non-border color
-# with hue 30, sat 50, lum +20 in GIMP.
-%desat 28
-%desat 29
-%desat 30
-floor/pebble_brown0 FLOOR_PEBBLE FLOOR_PEBBLE_LIGHTGRAY FLOOR_NORMAL
-floor/pebble_brown1
-floor/pebble_brown2
-floor/pebble_brown3
-floor/pebble_brown4
-floor/pebble_brown5
-floor/pebble_brown6
-floor/pebble_brown7
-floor/pebble_brown8
-%resetcol
-
-%variation FLOOR_PEBBLE brown
-%hue 28 30
-%hue 29 30
-# Can't just use %repeat here, as we want the coloured versions.
-floor/pebble_brown0 FLOOR_PEBBLE_BROWN
-floor/pebble_brown1
-floor/pebble_brown2
-floor/pebble_brown3
-floor/pebble_brown4
-floor/pebble_brown5
-floor/pebble_brown6
-floor/pebble_brown7
-floor/pebble_brown8
-%resetcol
-
-%variation FLOOR_PEBBLE blue
-%hue 28 240
-%hue 29 240
-%hue 30 240
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_BLUE
-%resetcol
-
-%variation FLOOR_PEBBLE green
-%hue 28 90
-%hue 29 90
-%hue 30 90
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_GREEN
-%resetcol
-
-%variation FLOOR_PEBBLE cyan
-%hue 28 180
-%hue 29 180
-%hue 30 180
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_CYAN
-%resetcol
-
-%variation FLOOR_PEBBLE red
-%hue 28 0
-%hue 29 0
-%hue 30 0
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_RED
-%resetcol
-
-%variation FLOOR_PEBBLE magenta
-%hue 28 300
-%hue 29 300
-%hue 30 300
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_MAGENTA
-%resetcol
-
-%variation FLOOR_PEBBLE darkgray
-%desat 28
-%desat 29
-%desat 30
-%lum 28 -7
-%lum 29 -7
-%lum 30 -7
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_DARKGRAY
-%resetcol
-
-%variation FLOOR_PEBBLE lightblue
-%hue 28 240
-%hue 29 240
-%hue 30 240
-%lum 28 7
-%lum 29 7
-%lum 30 7
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTBLUE
-%resetcol
-
-%variation FLOOR_PEBBLE lightgreen
-%hue 28 90
-%hue 29 90
-%hue 30 90
-%lum 28 7
-%lum 29 7
-%lum 30 7
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTGREEN
-%resetcol
-
-%variation FLOOR_PEBBLE lightcyan
-%hue 28 180
-%hue 29 180
-%hue 30 180
-%lum 28 7
-%lum 29 7
-%lum 30 7
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTCYAN
-%resetcol
-
-%variation FLOOR_PEBBLE lightred
-%hue 28 0
-%hue 29 0
-%hue 30 0
-%lum 28 7
-%lum 29 7
-%lum 30 7
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTRED
-%resetcol
-
-%variation FLOOR_PEBBLE lightmagenta
-%hue 28 300
-%hue 29 300
-%hue 30 300
-%lum 28 7
-%lum 29 7
-%lum 30 7
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTMAGENTA
-%resetcol
-
-%variation FLOOR_PEBBLE yellow
-%hue 28 60
-%hue 29 60
-%hue 30 60
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_YELLOW
-%resetcol
-
-%variation FLOOR_PEBBLE white
-%desat 28
-%desat 29
-%desat 30
-%lum 0 20
-%lum 28 40
-%lum 29 40
-%lum 30 40
-%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_WHITE
-%resetcol
-
-wall/relief0 WALL_HALL
-wall/relief1
-wall/relief2
-wall/relief3
-
-%variation WALL_HALL white
-%lum 0 40
-%lum 28 40
-%lum 29 40
-%lum 30 40
-%repeat WALL_HALL WALL_HALL_WHITE
-%resetcol
-
-%variation WALL_HALL darkgray
-%lum 0 -25
-%repeat WALL_HALL WALL_HALL_DARKGRAY
-%resetcol
-
-floor/mesh0 FLOOR_HALL
-floor/mesh1
-floor/mesh2
-floor/mesh3
-
-# Maybe move these down to the "pebble" section?
-#wall/hive0 WALL_HIVE_OLD
-#wall/hive1
-#wall/hive2
-#wall/hive3
-
-wall/beehives0 WALL_HIVE
-wall/beehives1
-wall/beehives2
-wall/beehives3
-wall/beehives4
-wall/beehives5
-wall/beehives6
-wall/beehives7
-wall/beehives8
-wall/beehives9
-
-floor/hive0 FLOOR_HIVE FLOOR_ORC
-floor/hive1
-floor/hive2
-floor/hive3
-
-floor/ice0 FLOOR_ICE
-floor/ice1
-floor/ice2
-floor/ice3
-
-wall/lair0 WALL_LAIR WALL_ORC WALL_SWAMP
-wall/lair1
-wall/lair2
-wall/lair3
-floor/lair0 FLOOR_LAIR
-floor/lair1
-floor/lair2
-floor/lair3
-
-wall/slime0 WALL_SLIME
-wall/slime1
-wall/slime2
-wall/slime3
-floor/bog_green0 FLOOR_SLIME
-floor/bog_green1
-floor/bog_green2
-floor/bog_green3
-
-floor/snake0 FLOOR_SNAKE
-floor/snake1
-floor/snake2
-floor/snake3
-
-## swamp also doesn't have any unique walls...
-floor/swamp0 FLOOR_SWAMP
-floor/swamp1
-floor/swamp2
-floor/swamp3
-
-wall/tomb0 WALL_TOMB
-wall/tomb1
-wall/tomb2
-wall/tomb3
-floor/tomb0 FLOOR_TOMB
-floor/tomb1
-floor/tomb2
-floor/tomb3
-
-wall/vault0 WALL_VAULT
-wall/vault1
-wall/vault2
-wall/vault3
-floor/rect_gray0 FLOOR_VAULT
-floor/rect_gray1
-floor/rect_gray2
-floor/rect_gray3
-
-wall/zot_blue0 WALL_ZOT WALL_ZOT_BLUE
-wall/zot_blue1
-wall/zot_blue2
-wall/zot_blue3
-
-%variation WALL_ZOT green
-%hue 240 120
-%repeat WALL_ZOT WALL_ZOT_GREEN
-%resetcol
-
-%variation WALL_ZOT cyan
-%hue 240 180
-%repeat WALL_ZOT WALL_ZOT_CYAN WALL_ICE
-%resetcol
-
-%variation WALL_ZOT red
-%hue 240 0
-%repeat WALL_ZOT WALL_ZOT_RED
-%resetcol
-
-%variation WALL_ZOT magenta
-%hue 240 300
-%repeat WALL_ZOT WALL_ZOT_MAGENTA
-%resetcol
-
-%variation WALL_ZOT brown
-%hue 240 30
-%repeat WALL_ZOT WALL_ZOT_BROWN
-%resetcol
-
-%variation WALL_ZOT lightgray
-%desat 240
-%lum 240 -15
-%repeat WALL_ZOT WALL_ZOT_LIGHTGRAY
-%resetcol
-
-%variation WALL_ZOT darkgray
-%desat 240
-%lum 240 -30
-%repeat WALL_ZOT WALL_ZOT_DARKGRAY
-%resetcol
-
-%variation WALL_ZOT lightblue
-%lum 240 40
-%repeat WALL_ZOT WALL_ZOT_LIGHTBLUE
-%resetcol
-
-%variation WALL_ZOT lightgreen
-%hue 240 120
-%lum 240 15
-%repeat WALL_ZOT WALL_ZOT_LIGHTGREEN
-%resetcol
-
-%variation WALL_ZOT lightcyan
-%hue 240 180
-%lum 240 15
-%repeat WALL_ZOT WALL_ZOT_LIGHTCYAN
-%resetcol
-
-%variation WALL_ZOT lightred
-%hue 240 0
-%lum 240 40
-%repeat WALL_ZOT WALL_ZOT_LIGHTRED
-%resetcol
-
-%variation WALL_ZOT lightmagenta
-%hue 240 300
-%lum 240 40
-%repeat WALL_ZOT WALL_ZOT_LIGHTMAGENTA
-%resetcol
-
-%variation WALL_ZOT yellow
-%hue 240 60
-%repeat WALL_ZOT WALL_ZOT_YELLOW
-%resetcol
-
-%variation WALL_ZOT white
-%desat 240
-%lum 240 10
-%repeat WALL_ZOT WALL_ZOT_WHITE
-%resetcol
-
-%weight 2
-wall/wall_flesh0 WALL_FLESH
-wall/wall_flesh1
-wall/wall_flesh2
-wall/wall_flesh3
-%weight 1
-wall/wall_flesh4
-wall/wall_flesh5
-wall/wall_flesh6
-%weight 2
-wall/transparent_flesh1 WALL_TRANSPARENT_FLESH
-wall/transparent_flesh2
-wall/transparent_flesh3
-%weight 1
-wall/transparent_flesh4
-wall/transparent_flesh5
-wall/transparent_flesh6
-
-wall/wall_vines0 WALL_VINES
-wall/wall_vines1
-wall/wall_vines2
-wall/wall_vines3
-wall/wall_vines4
-wall/wall_vines5
-wall/wall_vines6
-
-floor/floor_vines0 FLOOR_VINES
-floor/floor_vines1
-floor/floor_vines2
-floor/floor_vines3
-floor/floor_vines4
-floor/floor_vines5
-floor/floor_vines6
-
-wall/pebble_red0 WALL_PEBBLE WALL_PEBBLE_RED
-wall/pebble_red1
-wall/pebble_red2
-wall/pebble_red3
-
-%variation WALL_PEBBLE blue
-%hue 0 240
-%repeat WALL_PEBBLE WALL_PEBBLE_BLUE
-%resetcol
-
-%variation WALL_PEBBLE green
-%hue 0 90
-%repeat WALL_PEBBLE WALL_PEBBLE_GREEN
-%resetcol
-
-%variation WALL_PEBBLE cyan
-%hue 0 180
-%repeat WALL_PEBBLE WALL_PEBBLE_CYAN
-%resetcol
-
-%variation WALL_PEBBLE magenta
-%hue 0 300
-%repeat WALL_PEBBLE WALL_PEBBLE_MAGENTA
-%resetcol
-
-%variation WALL_PEBBLE brown
-%hue 0 30
-%repeat WALL_PEBBLE WALL_PEBBLE_BROWN
-%resetcol
-
-%variation WALL_PEBBLE lightgray
-%desat 0
-%lum 0 -10
-%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTGRAY
-%resetcol
-
-%variation WALL_PEBBLE darkgray
-%desat 0
-%lum 0 -30
-%repeat WALL_PEBBLE WALL_PEBBLE_DARKGRAY
-%resetcol
-
-%variation WALL_PEBBLE lightblue
-%hue 0 240
-%lum 0 15
-%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTBLUE
-%resetcol
-
-%variation WALL_PEBBLE lightgreen
-%hue 0 90
-%lum 0 15
-%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTGREEN
-%resetcol
-
-%variation WALL_PEBBLE lightcyan
-%hue 0 180
-%lum 0 15
-%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTCYAN
-%resetcol
-
-%variation WALL_PEBBLE lightred
-%lum 0 15
-%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTRED
-%resetcol
-
-%variation WALL_PEBBLE lightmagenta
-%hue 0 300
-%lum 0 15
-%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTMAGENTA
-%resetcol
-
-%variation WALL_PEBBLE yellow
-%hue 0 60
-%repeat WALL_PEBBLE WALL_PEBBLE_YELLOW
-%resetcol
-
-%variation WALL_PEBBLE white
-%desat 0
-%lum 0 20
-%repeat WALL_PEBBLE WALL_PEBBLE_WHITE
-%resetcol
-
-floor/rough_red0 FLOOR_ROUGH FLOOR_ROUGH_RED
-floor/rough_red1
-floor/rough_red2
-floor/rough_red3
-
-%variation FLOOR_ROUGH blue
-%hue 0 240
-%repeat FLOOR_ROUGH FLOOR_ROUGH_BLUE
-%resetcol
-
-%variation FLOOR_ROUGH green
-%hue 0 90
-%repeat FLOOR_ROUGH FLOOR_ROUGH_GREEN
-%resetcol
-
-%variation FLOOR_ROUGH cyan
-%hue 0 180
-%repeat FLOOR_ROUGH FLOOR_ROUGH_CYAN
-%resetcol
-
-%variation FLOOR_ROUGH magenta
-%hue 0 300
-%repeat FLOOR_ROUGH FLOOR_ROUGH_MAGENTA
-%resetcol
-
-%variation FLOOR_ROUGH brown
-%hue 0 30
-%repeat FLOOR_ROUGH FLOOR_ROUGH_BROWN
-%resetcol
-
-%variation FLOOR_ROUGH lightgray
-%desat 0
-%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTGRAY
-%resetcol
-
-%variation FLOOR_ROUGH darkgray
-%desat 0
-%lum 0 -10
-%repeat FLOOR_ROUGH FLOOR_ROUGH_DARKGRAY
-%resetcol
-
-%variation FLOOR_ROUGH lightblue
-%hue 0 240
-%lum 0 10
-%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTBLUE
-%resetcol
-
-%variation FLOOR_ROUGH lightgreen
-%hue 0 90
-%lum 0 10
-%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTGREEN
-%resetcol
-
-%variation FLOOR_ROUGH lightcyan
-%hue 0 180
-%lum 0 10
-%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTCYAN
-%resetcol
-
-%variation FLOOR_ROUGH lightred
-%lum 0 10
-%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTRED
-%resetcol
-
-%variation FLOOR_ROUGH lightmagenta
-%hue 0 300
-%lum 0 10
-%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTMAGENTA
-%resetcol
-
-%variation FLOOR_ROUGH yellow
-%hue 0 60
-%repeat FLOOR_ROUGH FLOOR_ROUGH_YELLOW
-%resetcol
-
-%variation FLOOR_ROUGH white
-%desat 0
-%lum 0 20
-%repeat FLOOR_ROUGH FLOOR_ROUGH_WHITE
-%resetcol
-
-%weight 5
-floor/floor_sand_stone0 FLOOR_SAND_STONE
-floor/floor_sand_stone1
-floor/floor_sand_stone2
-floor/floor_sand_stone3
-%weight 2
-floor/floor_sand_stone4
-floor/floor_sand_stone5
-floor/floor_sand_stone7
-%weight 1
-floor/floor_sand_stone6
-
-wall/wall_yellow_rock0 WALL_YELLOW_ROCK
-wall/wall_yellow_rock1
-wall/wall_yellow_rock2
-wall/wall_yellow_rock3
-
-wall/brick_gray0 WALL_BRICK_GRAY
-wall/brick_gray1
-wall/brick_gray2
-wall/brick_gray3
-
-%weight 2
-wall/stone_brick1 WALL_STONE_BRICK
-wall/stone_brick2
-wall/stone_brick3
-wall/stone_brick4
-wall/stone_brick5
-wall/stone_brick6
-wall/stone_brick7
-wall/stone_brick8
-wall/stone_brick9
-wall/stone_brick10
-%weight 1
-wall/stone_brick11
-wall/stone_brick12
-
-%weight 5
-floor/cobble_blood1 FLOOR_COBBLE_BLOOD
-floor/cobble_blood2
-floor/cobble_blood3
-floor/cobble_blood4
-floor/cobble_blood5
-%weight 3
-floor/cobble_blood6
-floor/cobble_blood7
-%weight 2
-floor/cobble_blood8
-floor/cobble_blood9
-floor/cobble_blood10
-floor/cobble_blood11
-%weight 1
-floor/cobble_blood12
-
-%weight 5
-wall/marble_wall1 WALL_MARBLE
-wall/marble_wall2
-wall/marble_wall3
-wall/marble_wall4
-wall/marble_wall5
-%weight 3
-wall/marble_wall6
-wall/marble_wall7
-wall/marble_wall8
-%weight 1
-wall/marble_wall9
-wall/marble_wall10
-wall/marble_wall11
-wall/marble_wall12
-
-floor/marble_floor1 FLOOR_MARBLE
-floor/marble_floor2
-floor/marble_floor3
-floor/marble_floor4
-floor/marble_floor5
-floor/marble_floor6
-
-%weight 5
-wall/sandstone_wall0 WALL_SANDSTONE
-wall/sandstone_wall1
-wall/sandstone_wall2
-wall/sandstone_wall3
-wall/sandstone_wall4
-%weight 1
-wall/sandstone_wall5
-wall/sandstone_wall6
-wall/sandstone_wall7
-wall/sandstone_wall8
-wall/sandstone_wall9
-
-%weight 5
-floor/sandstone_floor0 FLOOR_SANDSTONE
-floor/sandstone_floor1
-floor/sandstone_floor2
-floor/sandstone_floor3
-floor/sandstone_floor4
-%weight 2
-floor/sandstone_floor5
-%weight 1
-floor/sandstone_floor6
-floor/sandstone_floor7
-floor/sandstone_floor8
-floor/sandstone_floor9
-
-wall/volcanic_wall0 WALL_VOLCANIC
-wall/volcanic_wall1
-wall/volcanic_wall2
-wall/volcanic_wall3
-wall/volcanic_wall4
-wall/volcanic_wall5
-wall/volcanic_wall6
-
-floor/volcanic_floor0 FLOOR_VOLCANIC
-floor/volcanic_floor1
-floor/volcanic_floor2
-floor/volcanic_floor3
-floor/volcanic_floor4
-floor/volcanic_floor5
-floor/volcanic_floor6
-
-%weight 5
-wall/crystal_wall00 WALL_CRYSTAL_SQUARES
-%weight 3
-wall/crystal_wall01
-%weight 6
-wall/crystal_wall02
-%weight 2
-wall/crystal_wall03
-%weight 4
-wall/crystal_wall04
-wall/crystal_wall06
-wall/crystal_wall08
-wall/crystal_wall10
-%weight 2
-wall/crystal_wall05
-wall/crystal_wall07
-wall/crystal_wall09
-wall/crystal_wall11
-%weight 3
-wall/crystal_wall12
-%weight 1
-wall/crystal_wall13
-
-%weight 8
-floor/crystal_floor0 FLOOR_CRYSTAL_SQUARES
-%weight 4
-floor/crystal_floor1
-floor/crystal_floor2
-%weight 2
-floor/crystal_floor3
-floor/crystal_floor4
-%weight 1
-floor/crystal_floor5
-
-
-wall/stone_gray0 WALL_STONE_GRAY
-wall/stone_gray1
-wall/stone_gray2
-wall/stone_gray3
-
-%variation WALL_STONE_GRAY white
-%lum 0 35
-%repeat WALL_STONE_GRAY WALL_STONE_WHITE
-%resetcol
-
-wall/stone_dark0 WALL_STONE_DARK
-wall/stone_dark1
-wall/stone_dark2
-wall/stone_dark3
-
-# For the Doroklohe WizLab
-wall/stone_black_marked0 WALL_STONE_BLACK_MARKED
-wall/stone_black_marked1
-wall/stone_black_marked2
-wall/stone_black_marked3
-wall/stone_black_marked4
-wall/stone_black_marked5
-wall/stone_black_marked6
-wall/stone_black_marked7
-%weight 1
-wall/stone_black_marked8
-
-%sdir dc-dngn/floor/grass
-%weight 15
-grass0 FLOOR_GRASS
-grass1
-grass2
-%weight 1
-grass_flowers_blue1
-grass_flowers_blue2
-grass_flowers_blue3
-grass_flowers_red1
-grass_flowers_red2
-grass_flowers_red3
-grass_flowers_yellow1
-grass_flowers_yellow2
-grass_flowers_yellow3
-
-grass_n HALO_GRASS
-grass_ne
-grass_e
-grass_se
-grass_s
-grass_sw
-grass_w
-grass_nw
-grass_full
-
-grass0-dirt-mix1 FLOOR_GRASS_DIRT_MIX
-grass0-dirt-mix2
-grass0-dirt-mix3
-
-%sdir dc-dngn
-wall/undead0 WALL_UNDEAD
-wall/undead1
-wall/undead2
-wall/undead3
-
-floor/floor_nerves0 FLOOR_NERVES
-floor/floor_nerves1
-floor/floor_nerves2
-floor/floor_nerves3
-floor/floor_nerves4
-floor/floor_nerves5
-floor/floor_nerves6
-
-%start
-%compose floor/grass/grass0
-%compose floor/pedestal_n
-%finish HALO_GRASS2
-%start
-%compose floor/grass/grass1
-%compose floor/pedestal_ne
-%finish
-%start
-%compose floor/grass/grass2
-%compose floor/pedestal_e
-%finish
-%start
-%compose floor/grass/grass1
-%compose floor/pedestal_se
-%finish
-%start
-%compose floor/grass/grass0
-%compose floor/pedestal_s
-%finish
-%start
-%compose floor/grass/grass1
-%compose floor/pedestal_sw
-%finish
-%start
-%compose floor/grass/grass2
-%compose floor/pedestal_w
-%finish
-%start
-%compose floor/grass/grass0
-%compose floor/pedestal_nw
-%finish
-floor/pedestal_full
-
-%start
-%compose floor/rect_gray0
-%compose floor/pedestal_n
-%finish HALO_VAULT
-%start
-%compose floor/rect_gray1
-%compose floor/pedestal_ne
-%finish
-%start
-%compose floor/rect_gray2
-%compose floor/pedestal_e
-%finish
-%start
-%compose floor/rect_gray3
-%compose floor/pedestal_se
-%finish
-%start
-%compose floor/rect_gray2
-%compose floor/pedestal_s
-%finish
-%start
-%compose floor/rect_gray1
-%compose floor/pedestal_sw
-%finish
-%start
-%compose floor/rect_gray0
-%compose floor/pedestal_w
-%finish
-%start
-%compose floor/rect_gray3
-%compose floor/pedestal_nw
-%finish
-floor/pedestal_full
-
-floor/dirt0 FLOOR_DIRT
-floor/dirt1
-floor/dirt2
-
-floor/dirt_n HALO_DIRT
-floor/dirt_ne
-floor/dirt_e
-floor/dirt_se
-floor/dirt_s
-floor/dirt_sw
-floor/dirt_w
-floor/dirt_nw
-floor/dirt_full
-
-wall/stone2_gray0 DNGN_STONE_WALL DNGN_STONE_WALL_LIGHTGRAY
-wall/stone2_gray1
-wall/stone2_gray2
-wall/stone2_gray3
-
-wall/stone2_dark0 DNGN_STONE_DARK
-wall/stone2_dark1
-wall/stone2_dark2
-wall/stone2_dark3
-
-%variation DNGN_STONE_WALL blue
-%hue 26 240
-%hue 27 240
-%hue 28 240
-%hue 29 240
-%hue 30 240
-%hue 31 240
-%hue 32 240
-%hue 33 240
-wall/stone2_brown0 DNGN_STONE_WALL_BLUE
-wall/stone2_brown1
-wall/stone2_brown2
-wall/stone2_brown3
-%resetcol
-
-%variation DNGN_STONE_WALL green
-%hue 240 120
-%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_GREEN
-%resetcol
-
-%variation DNGN_STONE_WALL cyan
-%hue 240 180
-%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_CYAN
-%resetcol
-
-%variation DNGN_STONE_WALL red
-%hue 240 0
-%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_RED
-%resetcol
-
-%variation DNGN_STONE_WALL magenta
-%hue 240 300
-%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_MAGENTA
-%resetcol
-
-%variation DNGN_STONE_WALL brown
-%hue 240 30
-%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_BROWN
-%resetcol
-
-%variation DNGN_STONE_WALL darkgray
-%lum 0 -20
-%repeat DNGN_STONE_WALL DNGN_STONE_WALL_DARKGRAY
-%resetcol
-
-%variation DNGN_STONE_WALL yellow
-%hue 240 60
-%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_YELLOW
-%resetcol
-
-%variation DNGN_STONE_WALL white
-%lum 0 30
-%repeat DNGN_STONE_WALL DNGN_STONE_WALL_WHITE
-%resetcol
-
-wall/dngn_wax_wall DNGN_WAX_WALL
-
-# Coloured glass walls
-wall/dngn_transparent_wall DNGN_TRANSPARENT_WALL DNGN_TRANSPAREN_WALL_CYAN
-
-%variation DNGN_TRANSPARENT_WALL blue
-%hue 180 240
-%repeat DNGN_TRANSPARENT_WALL DNGN_TRANSPARENT_WALL_BLUE
-%resetcol
-
-%variation DNGN_TRANSPARENT_WALL green
-%hue 240 120
-%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_GREEN
-%resetcol
-
-%variation DNGN_TRANSPARENT_WALL red
-%hue 240 0
-%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_RED
-%resetcol
-
-%variation DNGN_TRANSPARENT_WALL magenta
-%hue 240 300
-%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_MAGENTA
-%resetcol
-
-%variation DNGN_TRANSPARENT_WALL brown
-%hue 240 30
-%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_BROWN
-%resetcol
-
-%variation DNGN_TRANSPARENT_WALL darkgray
-%desat 180
-%lum 180 -40
-%repeat DNGN_TRANSPARENT_WALL DNGN_TRANSPARENT_WALL_DARKGRAY
-%resetcol
-
-%variation DNGN_TRANSPARENT_WALL yellow
-%hue 240 60
-%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_YELLOW
-%resetcol
-
-%variation DNGN_TRANSPARENT_WALL white
-%desat 180
-%lum 0 35
-%repeat DNGN_TRANSPARENT_WALL DNGN_TRANSPARENT_WALL_WHITE
-%resetcol
-
-
-# Coloured metal walls
-wall/dngn_mirrored_wall DNGN_MIRROR_WALL
-
-wall/dngn_metal_wall DNGN_METAL_WALL
-
-%variation DNGN_METAL_WALL blue
-%hue 26 240
-%hue 27 240
-%hue 28 240
-%hue 29 240
-%hue 30 240
-%hue 31 240
-%hue 32 240
-%hue 33 240
-wall/dngn_metal_wall_brown DNGN_METAL_WALL_BLUE
-%resetcol
-
-%variation DNGN_METAL_WALL green
-%hue 240 120
-%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_GREEN
-%resetcol
-
-%variation DNGN_METAL_WALL cyan
-%hue 240 180
-%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_CYAN
-%resetcol
-
-%variation DNGN_METAL_WALL red
-%hue 240 0
-%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_RED
-%resetcol
-
-%variation DNGN_METAL_WALL magenta
-%hue 240 300
-%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_MAGENTA
-%resetcol
-
-%variation DNGN_METAL_WALL brown
-%hue 240 30
-%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_BROWN
-%resetcol
-
-%variation DNGN_METAL_WALL darkgray
-%lum 0 -20
-%repeat DNGN_METAL_WALL DNGN_METAL_WALL_DARKGRAY
-%resetcol
-
-%variation DNGN_METAL_WALL yellow
-%hue 240 60
-%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_YELLOW
-%resetcol
-
-%variation DNGN_METAL_WALL white
-%lum 0 30
-%repeat DNGN_METAL_WALL DNGN_METAL_WALL_WHITE
-%resetcol
-
-wall/dngn_metal_wall_cracked DNGN_METAL_WALL_CRACKED
-
-%hue 150 120
-wall/dngn_green_crystal_wall DNGN_GREEN_CRYSTAL_WALL DNGN_CRYSTAL DNGN_CRYSTAL_GREEN
-%resetcol
-
-%variation DNGN_CRYSTAL blue
-%hue 120 240
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_BLUE
-%resetcol
-
-%variation DNGN_CRYSTAL cyan
-%hue 120 180
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_CYAN
-%resetcol
-
-%variation DNGN_CRYSTAL red
-%hue 120 0
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_RED
-%resetcol
-
-%variation DNGN_CRYSTAL magenta
-%hue 120 300
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_MAGENTA
-%resetcol
-
-%variation DNGN_CRYSTAL brown
-%hue 120 30
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_BROWN
-%resetcol
-
-%variation DNGN_CRYSTAL lightgray
-%desat 120
-%lum 120 -20
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTGRAY
-%resetcol
-
-%variation DNGN_CRYSTAL darkgray
-%desat 120
-%lum 120 -40
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_DARKGRAY
-%resetcol
-
-%variation DNGN_CRYSTAL lightblue
-%hue 120 240
-%lum 120 30
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTBLUE
-%resetcol
-
-%variation DNGN_CRYSTAL lightgreen
-%lum 120 30
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTGREEN
-%resetcol
-
-%variation DNGN_CRYSTAL lightcyan
-%hue 120 180
-%lum 120 30
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTCYAN
-%resetcol
-
-%variation DNGN_CRYSTAL lightred
-%hue 120 0
-%lum 120 30
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTRED
-%resetcol
-
-%variation DNGN_CRYSTAL lightmagenta
-%hue 120 300
-%lum 120 30
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTMAGENTA
-%resetcol
-
-%variation DNGN_CRYSTAL yellow
-%hue 120 60
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_YELLOW
-%resetcol
-
-%variation DNGN_CRYSTAL white
-%desat 120
-%repeat DNGN_CRYSTAL DNGN_CRYSTAL_WHITE
-%resetcol
-
-wall/tree1 DNGN_TREE
-wall/tree2
-
-%variation DNGN_TREE yellow
-wall/tree1_yellow DNGN_TREE_YELLOW
-wall/tree2_yellow
-
-%variation DNGN_TREE lightred
-wall/tree1_lightred DNGN_TREE_LIGHTRED
-wall/tree2_lightred
-
-%variation DNGN_TREE red
-wall/tree1_red DNGN_TREE_RED
-wall/tree2_red
-
-# this may need to change, but it should make things a bit simpler
-%variation DNGN_TREE darkgray
-wall/tree1_dead DNGN_TREE_DEAD
-wall/tree2_dead
-
-## doors
-dngn_detected_secret_door DNGN_DETECTED_SECRET_DOOR
-dngn_closed_door DNGN_CLOSED_DOOR
-gate_closed_left DNGN_GATE_CLOSED_LEFT
-gate_closed_middle DNGN_GATE_CLOSED_MIDDLE
-gate_closed_right DNGN_GATE_CLOSED_RIGHT
-dngn_open_door DNGN_OPEN_DOOR
-gate_open_left DNGN_GATE_OPEN_LEFT
-gate_open_middle DNGN_GATE_OPEN_MIDDLE
-gate_open_right DNGN_GATE_OPEN_RIGHT
-
-## Alternate doors for vaults, etc. Should be in the order listed above for
-## doors which also provide gateways; otherwise detected, closed, open, or
-## closed, open.
-%sdir dc-dngn/gateways
-fleshy_orifice_closed DNGN_FLESHY_ORIFICE
-fleshy_orifice_open
-
-%sdir dc-dngn
-dngn_orcish_idol DNGN_ORCISH_IDOL
-dngn_granite_statue DNGN_GRANITE_STATUE
-
-## Features only used in certain minivaults
-%sdir dc-dngn/vaults
-
-## Reworked statues for Zonguldrok Wizlab: gravestones
-gravestone_blank DNGN_GRAVESTONE
-gravestone_writing1
-gravestone_writing2
-gravestone_ornate DNGN_GRAVESTONE_ORNATE
-
-## strange machine for Tukima's Wizlab
-machine_tukima DNGN_MACHINE_TUKIMA
-
-## tiles for the_teleporter vaults
-the_teleporter_vaults DNGN_THE_TELEPORTER_VAULTS
-the_teleporter_ice_cave DNGN_THE_TELEPORTER_ICE_CAVE
-
-# A couple of placeholders in case we absolutely need
-# to add some more tiles for vault design.
-# (In response to error messages, basically.)
-dc-misc/error PLACEHOLDER1
-dc-misc/error PLACEHOLDER2
-dc-misc/error PLACEHOLDER3
-dc-misc/error PLACEHOLDER4
-dc-misc/error PLACEHOLDER5
-dc-misc/error PLACEHOLDER6
-dc-misc/error PLACEHOLDER7
-dc-misc/error PLACEHOLDER8
-
-%sdir dc-dngn
-## traps
-dngn_trap_dart DNGN_TRAP_DART
-dngn_trap_arrow DNGN_TRAP_ARROW
-dngn_trap_needle DNGN_TRAP_NEEDLE
-dngn_trap_bolt DNGN_TRAP_BOLT
-dngn_trap_spear DNGN_TRAP_SPEAR
-dngn_trap_axe DNGN_TRAP_AXE
-dngn_trap_blade DNGN_TRAP_BLADE
-dngn_trap_net DNGN_TRAP_NET
-dngn_trap_alarm DNGN_TRAP_ALARM
-dngn_trap_shaft DNGN_TRAP_SHAFT
-dngn_trap_teleport DNGN_TRAP_TELEPORT
-dngn_trap_zot DNGN_TRAP_ZOT
-
-## stairs
-%sdir dc-dngn/gateways
-stone_stairs_down DNGN_STONE_STAIRS_DOWN
-stone_stairs_up DNGN_STONE_STAIRS_UP
-escape_hatch_down DNGN_ESCAPE_HATCH_DOWN
-escape_hatch_up DNGN_ESCAPE_HATCH_UP
-dngn_enter DNGN_ENTER
-%rim 1
-dngn_return DNGN_RETURN
-%rim 0
-
-%sdir dc-dngn/shops
-##dngn_enter_shop DNGN_ENTER_SHOP
-%shrink 0
-%back dngn_enter_shop
-shop_general SHOP_GENERAL
-shop_weapon SHOP_WEAPONS
-shop_armour SHOP_ARMOUR
-shop_food SHOP_FOOD
-shop_books SHOP_BOOKS
-shop_scrolls SHOP_SCROLLS
-shop_wands SHOP_WANDS
-shop_jewellery SHOP_JEWELLERY
-shop_potions SHOP_POTIONS
-%back none
-%shrink 1
-dngn_abandoned_shop DNGN_ABANDONED_SHOP
-%sdir dc-dngn
-
-## from here on multiple tile definitions are CHANGEABLE, i.e. they may
-## change from turn to turn
-floor/lava0 DNGN_LAVA
-floor/lava1
-floor/lava2
-floor/lava3
-
-## water
-%sdir dc-dngn/water
-%weight 3
-dngn_open_sea DNGN_OPEN_SEA
-%weight 1
-dngn_open_sea2
-
-%weight 2
-dngn_deep_water DNGN_DEEP_WATER
-%weight 1
-dngn_deep_water2
-
-%weight 3
-dngn_shallow_water DNGN_SHALLOW_WATER
-%weight 1
-dngn_shallow_water2
-dngn_shallow_water_disturbance DNGN_SHALLOW_WATER_DISTURBANCE
-dngn_shallow_water_disturbance2
-%weight 2
-dngn_deep_water_murky DNGN_DEEP_WATER_MURKY
-%weight 1
-dngn_deep_water_murky2
-%weight 3
-dngn_shallow_water_murky DNGN_SHALLOW_WATER_MURKY
-%weight 1
-dngn_shallow_water_murky2
-dngn_shallow_water_murky_disturbance DNGN_SHALLOW_WATER_MURKY_DISTURBANCE
-dngn_shallow_water_murky_disturbance2
-# Make all base variants equally likely, but their special ones less so.
-%weight 4
-dngn_shoals_deep_water1 SHOALS_DEEP_WATER
-%weight 2
-dngn_shoals_deep_water1_shape
-%weight 4
-dngn_shoals_deep_water2
-%weight 1
-dngn_shoals_deep_water2_shape
-dngn_shoals_deep_water2_bubbles
-%weight 4
-dngn_shoals_deep_water3
-%weight 2
-dngn_shoals_deep_water3_bubbles
-%weight 4
-dngn_shoals_deep_water4
-%weight 2
-dngn_shoals_deep_water4_bubbles
-%weight 1
-dngn_shoals_shallow_water1 SHOALS_SHALLOW_WATER
-dngn_shoals_shallow_water2
-dngn_shoals_shallow_water3
-dngn_shoals_shallow_water4
-dngn_shoals_shallow_water_disturbance1 SHOALS_SHALLOW_WATER_DISTURBANCE
-dngn_shoals_shallow_water_disturbance2
-dngn_shoals_shallow_water_disturbance3
-
-## deep water waves
-# corner waves (diagonals)
-deep_water_wave_corner_NE WAVE_DEEP_CORNER_NE
-deep_water_wave_corner_NW WAVE_DEEP_CORNER_NW
-deep_water_wave_corner_SE WAVE_DEEP_CORNER_SE
-deep_water_wave_corner_SW WAVE_DEEP_CORNER_SW
-
-# orthogonal waves
-deep_water_wave_N WAVE_DEEP_N
-deep_water_wave_S WAVE_DEEP_S
-deep_water_wave_E WAVE_DEEP_E
-deep_water_wave_W WAVE_DEEP_W
-
-## shallow water waves
-# corner waves (diagonals)
-shallow_water_wave_corner_NE WAVE_CORNER_NE
-shallow_water_wave_corner_NW WAVE_CORNER_NW
-shallow_water_wave_corner_SE WAVE_CORNER_SE
-shallow_water_wave_corner_SW WAVE_CORNER_SW
-
-# orthogonal waves
-shallow_water_wave_N WAVE_N
-shallow_water_wave_S WAVE_S
-shallow_water_wave_E WAVE_E
-shallow_water_wave_W WAVE_W
-
-## ink sheen
-# corner waves (diagonals)
-ink_wave_corner_NE WAVE_INK_CORNER_NE
-ink_wave_corner_NW WAVE_INK_CORNER_NW
-ink_wave_corner_SE WAVE_INK_CORNER_SE
-ink_wave_corner_SW WAVE_INK_CORNER_SW
-
-# orthogonal waves
-ink_wave_N WAVE_INK_N
-ink_wave_S WAVE_INK_S
-ink_wave_E WAVE_INK_E
-ink_wave_W WAVE_INK_W
-
-#full
-ink_full WAVE_INK_FULL
-
-%sdir dc-dngn/gateways
-dngn_entrance DNGN_UNSEEN_ENTRANCE
-%rim 1
-dngn_enter_hell DNGN_ENTER_HELL
-dngn_enter_zot_closed DNGN_ENTER_ZOT_CLOSED
-dngn_enter_zot_open DNGN_ENTER_ZOT_OPEN
-%rim 0
-dngn_return_zot DNGN_RETURN_ZOT
-dngn_enter_dis DNGN_ENTER_DIS
-dngn_enter_gehenna DNGN_ENTER_GEHENNA
-dngn_enter_cocytus DNGN_ENTER_COCYTUS
-dngn_enter_tartarus DNGN_ENTER_TARTARUS
-dngn_return_hell DNGN_RETURN_HELL
-
-dngn_enter_abyss DNGN_ENTER_ABYSS
-dngn_exit_abyss DNGN_EXIT_ABYSS
-dngn_exit_abyss_flickering
-
-dngn_stone_arch DNGN_STONE_ARCH
-dngn_enter_labyrinth DNGN_ENTER_LABYRINTH
-dngn_enter_pandemonium DNGN_ENTER_PANDEMONIUM
-dngn_portal DNGN_PORTAL
-dngn_portal_rotated
-%rim 1
-dngn_transit_pandemonium DNGN_TRANSIT_PANDEMONIUM
-%rim 0
-
-# portal vault entrances
-volcano_portal DNGN_PORTAL_VOLCANO
-sewer_portal DNGN_PORTAL_SEWER
-sewer_portal_rusted DNGN_PORTAL_SEWER_RUSTED
-ice_cave_portal DNGN_PORTAL_ICE_CAVE
-wizlab_portal0 DNGN_PORTAL_WIZARD_LAB
-wizlab_portal1
-wizlab_portal2
-wizlab_portal3
-wizlab_portal4
-wizlab_portal5
-wizlab_portal6
-wizlab_portal7
-wizlab_portal8
-# More placeholders for portal vault entries
-dc-misc/error PLACEHOLDER9
-dc-misc/error PLACEHOLDER10
-dc-misc/error PLACEHOLDER11
-dc-misc/error PLACEHOLDER12
-dc-misc/error PLACEHOLDER13
-dc-misc/error PLACEHOLDER14
-dc-misc/error PLACEHOLDER15
-dc-misc/error PLACEHOLDER16
-dc-misc/error PLACEHOLDER17
-dc-misc/error PLACEHOLDER18
-
-%sdir dc-dngn/altars
-dngn_altar DNGN_UNSEEN_ALTAR
-dngn_altar_zin DNGN_ALTAR_ZIN
-dngn_altar_shining_one DNGN_ALTAR_SHINING_ONE
-dngn_altar_kikubaaqudgha DNGN_ALTAR_KIKUBAAQUDGHA
-dngn_altar_yredelemnul DNGN_ALTAR_YREDELEMNUL
-dngn_altar_xom_blue DNGN_ALTAR_XOM
-dngn_altar_xom_green
-dngn_altar_xom_pink
-dngn_altar_xom_red
-dngn_altar_xom_turquoise
-dngn_altar_xom_yellow
-dngn_altar_vehumet DNGN_ALTAR_VEHUMET
-dngn_altar_okawaru DNGN_ALTAR_OKAWARU
-dngn_altar_makhleb_flame1 DNGN_ALTAR_MAKHLEB
-dngn_altar_makhleb_flame2
-dngn_altar_makhleb_flame3
-dngn_altar_makhleb_flame4
-dngn_altar_makhleb_flame5
-dngn_altar_makhleb_flame6
-dngn_altar_makhleb_flame7
-dngn_altar_makhleb_flame8
-dngn_altar_sif_muna DNGN_ALTAR_SIF_MUNA
-dngn_altar_trog DNGN_ALTAR_TROG
-dngn_altar_nemelex_xobeh DNGN_ALTAR_NEMELEX_XOBEH
-dngn_altar_elyvilon DNGN_ALTAR_ELYVILON
-dngn_altar_lugonu DNGN_ALTAR_LUGONU
-dngn_altar_beogh DNGN_ALTAR_BEOGH
-dngn_altar_jiyva01 DNGN_ALTAR_JIYVA
-dngn_altar_jiyva02
-dngn_altar_jiyva03
-dngn_altar_jiyva04
-dngn_altar_jiyva05
-dngn_altar_jiyva06
-dngn_altar_jiyva07
-dngn_altar_jiyva08
-dngn_altar_jiyva09
-dngn_altar_jiyva10
-dngn_altar_jiyva11
-%rim 1
-dngn_altar_fedhas DNGN_ALTAR_FEDHAS
-%rim 0
-dngn_altar_cheibriados_12 DNGN_ALTAR_CHEIBRIADOS
-dngn_altar_cheibriados_10
-dngn_altar_cheibriados_09
-dngn_altar_cheibriados_08
-dngn_altar_cheibriados_06
-dngn_altar_cheibriados_04
-dngn_altar_cheibriados_03
-dngn_altar_cheibriados_02
-
-%sdir dc-dngn
-dngn_blue_fountain DNGN_FOUNTAIN DNGN_BLUE_FOUNTAIN
-dngn_blue_fountain2
-
-dngn_sparkling_fountain DNGN_SPARKLING_FOUNTAIN
-dngn_sparkling_fountain2
-dngn_blood_fountain DNGN_BLOOD_FOUNTAIN
-dngn_blood_fountain2
-dngn_dry_fountain DNGN_DRY_FOUNTAIN
-
-%variation DNGN_DRY_FOUNTAIN white
-%desat 30
-%lum 30 80
-%desat 0
-%lum 0 45
-%repeat DNGN_DRY_FOUNTAIN DNGN_DRY_FOUNTAIN_WHITE
-%resetcol
-
-## Miscellaneous entries that get drawn on the background.
-## Flavour is fixed again.
-dc-misc/blood_red BLOOD
-dc-misc/blood_red1
-dc-misc/blood_red2
-dc-misc/blood_red3
-dc-misc/blood_red4
-dc-misc/halo HALO
-dc-misc/ray RAY
-dc-misc/ray_out_of_range RAY_OUT_OF_RANGE
-dc-misc/travel_exclusion TRAVEL_EXCLUSION_BG
-dc-misc/travel_exclusion_centre TRAVEL_EXCLUSION_CENTRE_BG
-dc-misc/slot ITEM_SLOT
-effect/sanctuary SANCTUARY
-dc-misc/mold_small1 MOLD
-dc-misc/mold_small2
-dc-misc/mold_small3
-dc-misc/mold_small4
-effect/silenced SILENCED
-
-dc-misc/error DNGN_ERROR
+%abstract floor TILE
+%abstract wall TILE
+%abstract feat TILE
diff --git a/crawl-ref/source/rltiles/dc-feat.txt b/crawl-ref/source/rltiles/dc-feat.txt
new file mode 100644
index 0000000000..c26681aeb8
--- /dev/null
+++ b/crawl-ref/source/rltiles/dc-feat.txt
@@ -0,0 +1,365 @@
+%name feat
+%prefix TILE
+%startvalue TILE_WALL_MAX tiledef-wall.h
+
+%sdir dc-dngn
+
+wall/tree1 DNGN_TREE
+wall/tree2
+
+%variation DNGN_TREE yellow
+wall/tree1_yellow DNGN_TREE_YELLOW
+wall/tree2_yellow
+
+%variation DNGN_TREE lightred
+wall/tree1_lightred DNGN_TREE_LIGHTRED
+wall/tree2_lightred
+
+%variation DNGN_TREE red
+wall/tree1_red DNGN_TREE_RED
+wall/tree2_red
+
+# this may need to change, but it should make things a bit simpler
+%variation DNGN_TREE darkgray
+wall/tree1_dead DNGN_TREE_DEAD
+wall/tree2_dead
+
+## doors
+dngn_detected_secret_door DNGN_DETECTED_SECRET_DOOR
+dngn_closed_door DNGN_CLOSED_DOOR
+gate_closed_left DNGN_GATE_CLOSED_LEFT
+gate_closed_middle DNGN_GATE_CLOSED_MIDDLE
+gate_closed_right DNGN_GATE_CLOSED_RIGHT
+dngn_open_door DNGN_OPEN_DOOR
+gate_open_left DNGN_GATE_OPEN_LEFT
+gate_open_middle DNGN_GATE_OPEN_MIDDLE
+gate_open_right DNGN_GATE_OPEN_RIGHT
+
+## Alternate doors for vaults, etc. Should be in the order listed above for
+## doors which also provide gateways; otherwise detected, closed, open, or
+## closed, open.
+%sdir dc-dngn/gateways
+fleshy_orifice_closed DNGN_FLESHY_ORIFICE
+fleshy_orifice_open
+
+%sdir dc-dngn
+dngn_orcish_idol DNGN_ORCISH_IDOL
+dngn_granite_statue DNGN_GRANITE_STATUE
+
+## Features only used in certain minivaults
+%sdir dc-dngn/vaults
+
+## Reworked statues for Zonguldrok Wizlab: gravestones
+gravestone_blank DNGN_GRAVESTONE
+gravestone_writing1
+gravestone_writing2
+gravestone_ornate DNGN_GRAVESTONE_ORNATE
+
+## strange machine for Tukima's Wizlab
+machine_tukima DNGN_MACHINE_TUKIMA
+
+## tiles for the_teleporter vaults
+the_teleporter_vaults DNGN_THE_TELEPORTER_VAULTS
+the_teleporter_ice_cave DNGN_THE_TELEPORTER_ICE_CAVE
+
+# A couple of placeholders in case we absolutely need
+# to add some more tiles for vault design.
+# (In response to error messages, basically.)
+dc-misc/error PLACEHOLDER1
+dc-misc/error PLACEHOLDER2
+dc-misc/error PLACEHOLDER3
+dc-misc/error PLACEHOLDER4
+dc-misc/error PLACEHOLDER5
+dc-misc/error PLACEHOLDER6
+dc-misc/error PLACEHOLDER7
+dc-misc/error PLACEHOLDER8
+
+%sdir dc-dngn
+## traps
+dngn_trap_dart DNGN_TRAP_DART
+dngn_trap_arrow DNGN_TRAP_ARROW
+dngn_trap_needle DNGN_TRAP_NEEDLE
+dngn_trap_bolt DNGN_TRAP_BOLT
+dngn_trap_spear DNGN_TRAP_SPEAR
+dngn_trap_axe DNGN_TRAP_AXE
+dngn_trap_blade DNGN_TRAP_BLADE
+dngn_trap_net DNGN_TRAP_NET
+dngn_trap_alarm DNGN_TRAP_ALARM
+dngn_trap_shaft DNGN_TRAP_SHAFT
+dngn_trap_teleport DNGN_TRAP_TELEPORT
+dngn_trap_zot DNGN_TRAP_ZOT
+
+## stairs
+%sdir dc-dngn/gateways
+stone_stairs_down DNGN_STONE_STAIRS_DOWN
+stone_stairs_up DNGN_STONE_STAIRS_UP
+escape_hatch_down DNGN_ESCAPE_HATCH_DOWN
+escape_hatch_up DNGN_ESCAPE_HATCH_UP
+dngn_enter DNGN_ENTER
+%rim 1
+dngn_return DNGN_RETURN
+%rim 0
+
+%sdir dc-dngn/shops
+##dngn_enter_shop DNGN_ENTER_SHOP
+%shrink 0
+%back dngn_enter_shop
+shop_general SHOP_GENERAL
+shop_weapon SHOP_WEAPONS
+shop_armour SHOP_ARMOUR
+shop_food SHOP_FOOD
+shop_books SHOP_BOOKS
+shop_scrolls SHOP_SCROLLS
+shop_wands SHOP_WANDS
+shop_jewellery SHOP_JEWELLERY
+shop_potions SHOP_POTIONS
+%back none
+%shrink 1
+dngn_abandoned_shop DNGN_ABANDONED_SHOP
+%sdir dc-dngn
+
+## from here on multiple tile definitions are CHANGEABLE, i.e. they may
+## change from turn to turn
+floor/lava0 DNGN_LAVA
+floor/lava1
+floor/lava2
+floor/lava3
+
+## water
+%sdir dc-dngn/water
+%weight 3
+dngn_open_sea DNGN_OPEN_SEA
+%weight 1
+dngn_open_sea2
+
+%weight 2
+dngn_deep_water DNGN_DEEP_WATER
+%weight 1
+dngn_deep_water2
+
+%weight 3
+dngn_shallow_water DNGN_SHALLOW_WATER
+%weight 1
+dngn_shallow_water2
+dngn_shallow_water_disturbance DNGN_SHALLOW_WATER_DISTURBANCE
+dngn_shallow_water_disturbance2
+%weight 2
+dngn_deep_water_murky DNGN_DEEP_WATER_MURKY
+%weight 1
+dngn_deep_water_murky2
+%weight 3
+dngn_shallow_water_murky DNGN_SHALLOW_WATER_MURKY
+%weight 1
+dngn_shallow_water_murky2
+dngn_shallow_water_murky_disturbance DNGN_SHALLOW_WATER_MURKY_DISTURBANCE
+dngn_shallow_water_murky_disturbance2
+# Make all base variants equally likely, but their special ones less so.
+%weight 4
+dngn_shoals_deep_water1 SHOALS_DEEP_WATER
+%weight 2
+dngn_shoals_deep_water1_shape
+%weight 4
+dngn_shoals_deep_water2
+%weight 1
+dngn_shoals_deep_water2_shape
+dngn_shoals_deep_water2_bubbles
+%weight 4
+dngn_shoals_deep_water3
+%weight 2
+dngn_shoals_deep_water3_bubbles
+%weight 4
+dngn_shoals_deep_water4
+%weight 2
+dngn_shoals_deep_water4_bubbles
+%weight 1
+dngn_shoals_shallow_water1 SHOALS_SHALLOW_WATER
+dngn_shoals_shallow_water2
+dngn_shoals_shallow_water3
+dngn_shoals_shallow_water4
+dngn_shoals_shallow_water_disturbance1 SHOALS_SHALLOW_WATER_DISTURBANCE
+dngn_shoals_shallow_water_disturbance2
+dngn_shoals_shallow_water_disturbance3
+
+## deep water waves
+# corner waves (diagonals)
+deep_water_wave_corner_NE WAVE_DEEP_CORNER_NE
+deep_water_wave_corner_NW WAVE_DEEP_CORNER_NW
+deep_water_wave_corner_SE WAVE_DEEP_CORNER_SE
+deep_water_wave_corner_SW WAVE_DEEP_CORNER_SW
+
+# orthogonal waves
+deep_water_wave_N WAVE_DEEP_N
+deep_water_wave_S WAVE_DEEP_S
+deep_water_wave_E WAVE_DEEP_E
+deep_water_wave_W WAVE_DEEP_W
+
+## shallow water waves
+# corner waves (diagonals)
+shallow_water_wave_corner_NE WAVE_CORNER_NE
+shallow_water_wave_corner_NW WAVE_CORNER_NW
+shallow_water_wave_corner_SE WAVE_CORNER_SE
+shallow_water_wave_corner_SW WAVE_CORNER_SW
+
+# orthogonal waves
+shallow_water_wave_N WAVE_N
+shallow_water_wave_S WAVE_S
+shallow_water_wave_E WAVE_E
+shallow_water_wave_W WAVE_W
+
+## ink sheen
+# corner waves (diagonals)
+ink_wave_corner_NE WAVE_INK_CORNER_NE
+ink_wave_corner_NW WAVE_INK_CORNER_NW
+ink_wave_corner_SE WAVE_INK_CORNER_SE
+ink_wave_corner_SW WAVE_INK_CORNER_SW
+
+# orthogonal waves
+ink_wave_N WAVE_INK_N
+ink_wave_S WAVE_INK_S
+ink_wave_E WAVE_INK_E
+ink_wave_W WAVE_INK_W
+
+#full
+ink_full WAVE_INK_FULL
+
+%sdir dc-dngn/gateways
+dngn_entrance DNGN_UNSEEN_ENTRANCE
+%rim 1
+dngn_enter_hell DNGN_ENTER_HELL
+dngn_enter_zot_closed DNGN_ENTER_ZOT_CLOSED
+dngn_enter_zot_open DNGN_ENTER_ZOT_OPEN
+%rim 0
+dngn_return_zot DNGN_RETURN_ZOT
+dngn_enter_dis DNGN_ENTER_DIS
+dngn_enter_gehenna DNGN_ENTER_GEHENNA
+dngn_enter_cocytus DNGN_ENTER_COCYTUS
+dngn_enter_tartarus DNGN_ENTER_TARTARUS
+dngn_return_hell DNGN_RETURN_HELL
+
+dngn_enter_abyss DNGN_ENTER_ABYSS
+dngn_exit_abyss DNGN_EXIT_ABYSS
+dngn_exit_abyss_flickering
+
+dngn_stone_arch DNGN_STONE_ARCH
+dngn_enter_labyrinth DNGN_ENTER_LABYRINTH
+dngn_enter_pandemonium DNGN_ENTER_PANDEMONIUM
+dngn_portal DNGN_PORTAL
+dngn_portal_rotated
+%rim 1
+dngn_transit_pandemonium DNGN_TRANSIT_PANDEMONIUM
+%rim 0
+
+# portal vault entrances
+volcano_portal DNGN_PORTAL_VOLCANO
+sewer_portal DNGN_PORTAL_SEWER
+sewer_portal_rusted DNGN_PORTAL_SEWER_RUSTED
+ice_cave_portal DNGN_PORTAL_ICE_CAVE
+wizlab_portal0 DNGN_PORTAL_WIZARD_LAB
+wizlab_portal1
+wizlab_portal2
+wizlab_portal3
+wizlab_portal4
+wizlab_portal5
+wizlab_portal6
+wizlab_portal7
+wizlab_portal8
+# More placeholders for portal vault entries
+dc-misc/error PLACEHOLDER9
+dc-misc/error PLACEHOLDER10
+dc-misc/error PLACEHOLDER11
+dc-misc/error PLACEHOLDER12
+dc-misc/error PLACEHOLDER13
+dc-misc/error PLACEHOLDER14
+dc-misc/error PLACEHOLDER15
+dc-misc/error PLACEHOLDER16
+dc-misc/error PLACEHOLDER17
+dc-misc/error PLACEHOLDER18
+
+%sdir dc-dngn/altars
+dngn_altar DNGN_UNSEEN_ALTAR
+dngn_altar_zin DNGN_ALTAR_ZIN
+dngn_altar_shining_one DNGN_ALTAR_SHINING_ONE
+dngn_altar_kikubaaqudgha DNGN_ALTAR_KIKUBAAQUDGHA
+dngn_altar_yredelemnul DNGN_ALTAR_YREDELEMNUL
+dngn_altar_xom_blue DNGN_ALTAR_XOM
+dngn_altar_xom_green
+dngn_altar_xom_pink
+dngn_altar_xom_red
+dngn_altar_xom_turquoise
+dngn_altar_xom_yellow
+dngn_altar_vehumet DNGN_ALTAR_VEHUMET
+dngn_altar_okawaru DNGN_ALTAR_OKAWARU
+dngn_altar_makhleb_flame1 DNGN_ALTAR_MAKHLEB
+dngn_altar_makhleb_flame2
+dngn_altar_makhleb_flame3
+dngn_altar_makhleb_flame4
+dngn_altar_makhleb_flame5
+dngn_altar_makhleb_flame6
+dngn_altar_makhleb_flame7
+dngn_altar_makhleb_flame8
+dngn_altar_sif_muna DNGN_ALTAR_SIF_MUNA
+dngn_altar_trog DNGN_ALTAR_TROG
+dngn_altar_nemelex_xobeh DNGN_ALTAR_NEMELEX_XOBEH
+dngn_altar_elyvilon DNGN_ALTAR_ELYVILON
+dngn_altar_lugonu DNGN_ALTAR_LUGONU
+dngn_altar_beogh DNGN_ALTAR_BEOGH
+dngn_altar_jiyva01 DNGN_ALTAR_JIYVA
+dngn_altar_jiyva02
+dngn_altar_jiyva03
+dngn_altar_jiyva04
+dngn_altar_jiyva05
+dngn_altar_jiyva06
+dngn_altar_jiyva07
+dngn_altar_jiyva08
+dngn_altar_jiyva09
+dngn_altar_jiyva10
+dngn_altar_jiyva11
+%rim 1
+dngn_altar_fedhas DNGN_ALTAR_FEDHAS
+%rim 0
+dngn_altar_cheibriados_12 DNGN_ALTAR_CHEIBRIADOS
+dngn_altar_cheibriados_10
+dngn_altar_cheibriados_09
+dngn_altar_cheibriados_08
+dngn_altar_cheibriados_06
+dngn_altar_cheibriados_04
+dngn_altar_cheibriados_03
+dngn_altar_cheibriados_02
+
+%sdir dc-dngn
+dngn_blue_fountain DNGN_FOUNTAIN DNGN_BLUE_FOUNTAIN
+dngn_blue_fountain2
+
+dngn_sparkling_fountain DNGN_SPARKLING_FOUNTAIN
+dngn_sparkling_fountain2
+dngn_blood_fountain DNGN_BLOOD_FOUNTAIN
+dngn_blood_fountain2
+dngn_dry_fountain DNGN_DRY_FOUNTAIN
+
+%variation DNGN_DRY_FOUNTAIN white
+%desat 30
+%lum 30 80
+%desat 0
+%lum 0 45
+%repeat DNGN_DRY_FOUNTAIN DNGN_DRY_FOUNTAIN_WHITE
+%resetcol
+
+## Miscellaneous entries that get drawn on the background.
+## Flavour is fixed again.
+dc-misc/blood_red BLOOD
+dc-misc/blood_red1
+dc-misc/blood_red2
+dc-misc/blood_red3
+dc-misc/blood_red4
+dc-misc/halo HALO
+dc-misc/ray RAY
+dc-misc/ray_out_of_range RAY_OUT_OF_RANGE
+dc-misc/travel_exclusion TRAVEL_EXCLUSION_BG
+dc-misc/travel_exclusion_centre TRAVEL_EXCLUSION_CENTRE_BG
+dc-misc/slot ITEM_SLOT
+effect/sanctuary SANCTUARY
+dc-misc/mold_small1 MOLD
+dc-misc/mold_small2
+dc-misc/mold_small3
+dc-misc/mold_small4
+effect/silenced SILENCED
diff --git a/crawl-ref/source/rltiles/dc-floor.txt b/crawl-ref/source/rltiles/dc-floor.txt
new file mode 100644
index 0000000000..1c7eb15ad2
--- /dev/null
+++ b/crawl-ref/source/rltiles/dc-floor.txt
@@ -0,0 +1,480 @@
+%name floor
+%prefix TILE
+
+%sdir dc-dngn
+
+dngn_unseen DNGN_UNSEEN
+dc-misc/error DNGN_ERROR
+
+# Multiple tile definitions are STATIC, that is they may change between
+# saves but are otherwise fixed.
+
+# The colorized versions of FLOOR_PEBBLE were made from
+# pebble_gray*.png, by colorizing the non-border color
+# with hue 30, sat 50, lum +20 in GIMP.
+%desat 28
+%desat 29
+%desat 30
+floor/pebble_brown0 FLOOR_PEBBLE FLOOR_PEBBLE_LIGHTGRAY FLOOR_NORMAL
+floor/pebble_brown1
+floor/pebble_brown2
+floor/pebble_brown3
+floor/pebble_brown4
+floor/pebble_brown5
+floor/pebble_brown6
+floor/pebble_brown7
+floor/pebble_brown8
+%resetcol
+
+%variation FLOOR_PEBBLE brown
+%hue 28 30
+%hue 29 30
+# Can't just use %repeat here, as we want the coloured versions.
+floor/pebble_brown0 FLOOR_PEBBLE_BROWN
+floor/pebble_brown1
+floor/pebble_brown2
+floor/pebble_brown3
+floor/pebble_brown4
+floor/pebble_brown5
+floor/pebble_brown6
+floor/pebble_brown7
+floor/pebble_brown8
+%resetcol
+
+%variation FLOOR_PEBBLE blue
+%hue 28 240
+%hue 29 240
+%hue 30 240
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_BLUE
+%resetcol
+
+%variation FLOOR_PEBBLE green
+%hue 28 90
+%hue 29 90
+%hue 30 90
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_GREEN
+%resetcol
+
+%variation FLOOR_PEBBLE cyan
+%hue 28 180
+%hue 29 180
+%hue 30 180
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_CYAN
+%resetcol
+
+%variation FLOOR_PEBBLE red
+%hue 28 0
+%hue 29 0
+%hue 30 0
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_RED
+%resetcol
+
+%variation FLOOR_PEBBLE magenta
+%hue 28 300
+%hue 29 300
+%hue 30 300
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_MAGENTA
+%resetcol
+
+%variation FLOOR_PEBBLE darkgray
+%desat 28
+%desat 29
+%desat 30
+%lum 28 -7
+%lum 29 -7
+%lum 30 -7
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_DARKGRAY
+%resetcol
+
+%variation FLOOR_PEBBLE lightblue
+%hue 28 240
+%hue 29 240
+%hue 30 240
+%lum 28 7
+%lum 29 7
+%lum 30 7
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTBLUE
+%resetcol
+
+%variation FLOOR_PEBBLE lightgreen
+%hue 28 90
+%hue 29 90
+%hue 30 90
+%lum 28 7
+%lum 29 7
+%lum 30 7
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTGREEN
+%resetcol
+
+%variation FLOOR_PEBBLE lightcyan
+%hue 28 180
+%hue 29 180
+%hue 30 180
+%lum 28 7
+%lum 29 7
+%lum 30 7
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTCYAN
+%resetcol
+
+%variation FLOOR_PEBBLE lightred
+%hue 28 0
+%hue 29 0
+%hue 30 0
+%lum 28 7
+%lum 29 7
+%lum 30 7
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTRED
+%resetcol
+
+%variation FLOOR_PEBBLE lightmagenta
+%hue 28 300
+%hue 29 300
+%hue 30 300
+%lum 28 7
+%lum 29 7
+%lum 30 7
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_LIGHTMAGENTA
+%resetcol
+
+%variation FLOOR_PEBBLE yellow
+%hue 28 60
+%hue 29 60
+%hue 30 60
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_YELLOW
+%resetcol
+
+%variation FLOOR_PEBBLE white
+%desat 28
+%desat 29
+%desat 30
+%lum 0 20
+%lum 28 40
+%lum 29 40
+%lum 30 40
+%repeat FLOOR_PEBBLE_BROWN FLOOR_PEBBLE_WHITE
+%resetcol
+
+floor/mesh0 FLOOR_HALL
+floor/mesh1
+floor/mesh2
+floor/mesh3
+
+floor/hive0 FLOOR_HIVE FLOOR_ORC
+floor/hive1
+floor/hive2
+floor/hive3
+
+floor/ice0 FLOOR_ICE
+floor/ice1
+floor/ice2
+floor/ice3
+
+floor/lair0 FLOOR_LAIR
+floor/lair1
+floor/lair2
+floor/lair3
+
+floor/bog_green0 FLOOR_SLIME
+floor/bog_green1
+floor/bog_green2
+floor/bog_green3
+
+floor/snake0 FLOOR_SNAKE
+floor/snake1
+floor/snake2
+floor/snake3
+
+## swamp also doesn't have any unique walls...
+floor/swamp0 FLOOR_SWAMP
+floor/swamp1
+floor/swamp2
+floor/swamp3
+
+floor/tomb0 FLOOR_TOMB
+floor/tomb1
+floor/tomb2
+floor/tomb3
+
+floor/rect_gray0 FLOOR_VAULT
+floor/rect_gray1
+floor/rect_gray2
+floor/rect_gray3
+
+floor/floor_vines0 FLOOR_VINES
+floor/floor_vines1
+floor/floor_vines2
+floor/floor_vines3
+floor/floor_vines4
+floor/floor_vines5
+floor/floor_vines6
+
+floor/rough_red0 FLOOR_ROUGH FLOOR_ROUGH_RED
+floor/rough_red1
+floor/rough_red2
+floor/rough_red3
+
+%variation FLOOR_ROUGH blue
+%hue 0 240
+%repeat FLOOR_ROUGH FLOOR_ROUGH_BLUE
+%resetcol
+
+%variation FLOOR_ROUGH green
+%hue 0 90
+%repeat FLOOR_ROUGH FLOOR_ROUGH_GREEN
+%resetcol
+
+%variation FLOOR_ROUGH cyan
+%hue 0 180
+%repeat FLOOR_ROUGH FLOOR_ROUGH_CYAN
+%resetcol
+
+%variation FLOOR_ROUGH magenta
+%hue 0 300
+%repeat FLOOR_ROUGH FLOOR_ROUGH_MAGENTA
+%resetcol
+
+%variation FLOOR_ROUGH brown
+%hue 0 30
+%repeat FLOOR_ROUGH FLOOR_ROUGH_BROWN
+%resetcol
+
+%variation FLOOR_ROUGH lightgray
+%desat 0
+%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTGRAY
+%resetcol
+
+%variation FLOOR_ROUGH darkgray
+%desat 0
+%lum 0 -10
+%repeat FLOOR_ROUGH FLOOR_ROUGH_DARKGRAY
+%resetcol
+
+%variation FLOOR_ROUGH lightblue
+%hue 0 240
+%lum 0 10
+%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTBLUE
+%resetcol
+
+%variation FLOOR_ROUGH lightgreen
+%hue 0 90
+%lum 0 10
+%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTGREEN
+%resetcol
+
+%variation FLOOR_ROUGH lightcyan
+%hue 0 180
+%lum 0 10
+%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTCYAN
+%resetcol
+
+%variation FLOOR_ROUGH lightred
+%lum 0 10
+%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTRED
+%resetcol
+
+%variation FLOOR_ROUGH lightmagenta
+%hue 0 300
+%lum 0 10
+%repeat FLOOR_ROUGH FLOOR_ROUGH_LIGHTMAGENTA
+%resetcol
+
+%variation FLOOR_ROUGH yellow
+%hue 0 60
+%repeat FLOOR_ROUGH FLOOR_ROUGH_YELLOW
+%resetcol
+
+%variation FLOOR_ROUGH white
+%desat 0
+%lum 0 20
+%repeat FLOOR_ROUGH FLOOR_ROUGH_WHITE
+%resetcol
+
+%weight 5
+floor/floor_sand_stone0 FLOOR_SAND_STONE
+floor/floor_sand_stone1
+floor/floor_sand_stone2
+floor/floor_sand_stone3
+%weight 2
+floor/floor_sand_stone4
+floor/floor_sand_stone5
+floor/floor_sand_stone7
+%weight 1
+floor/floor_sand_stone6
+
+%weight 5
+floor/cobble_blood1 FLOOR_COBBLE_BLOOD
+floor/cobble_blood2
+floor/cobble_blood3
+floor/cobble_blood4
+floor/cobble_blood5
+%weight 3
+floor/cobble_blood6
+floor/cobble_blood7
+%weight 2
+floor/cobble_blood8
+floor/cobble_blood9
+floor/cobble_blood10
+floor/cobble_blood11
+%weight 1
+floor/cobble_blood12
+
+floor/marble_floor1 FLOOR_MARBLE
+floor/marble_floor2
+floor/marble_floor3
+floor/marble_floor4
+floor/marble_floor5
+floor/marble_floor6
+
+%weight 5
+floor/sandstone_floor0 FLOOR_SANDSTONE
+floor/sandstone_floor1
+floor/sandstone_floor2
+floor/sandstone_floor3
+floor/sandstone_floor4
+%weight 2
+floor/sandstone_floor5
+%weight 1
+floor/sandstone_floor6
+floor/sandstone_floor7
+floor/sandstone_floor8
+floor/sandstone_floor9
+
+floor/volcanic_floor0 FLOOR_VOLCANIC
+floor/volcanic_floor1
+floor/volcanic_floor2
+floor/volcanic_floor3
+floor/volcanic_floor4
+floor/volcanic_floor5
+floor/volcanic_floor6
+
+%weight 8
+floor/crystal_floor0 FLOOR_CRYSTAL_SQUARES
+%weight 4
+floor/crystal_floor1
+floor/crystal_floor2
+%weight 2
+floor/crystal_floor3
+floor/crystal_floor4
+%weight 1
+floor/crystal_floor5
+
+%sdir dc-dngn/floor/grass
+%weight 15
+grass0 FLOOR_GRASS
+grass1
+grass2
+%weight 1
+grass_flowers_blue1
+grass_flowers_blue2
+grass_flowers_blue3
+grass_flowers_red1
+grass_flowers_red2
+grass_flowers_red3
+grass_flowers_yellow1
+grass_flowers_yellow2
+grass_flowers_yellow3
+
+grass_n HALO_GRASS
+grass_ne
+grass_e
+grass_se
+grass_s
+grass_sw
+grass_w
+grass_nw
+grass_full
+
+grass0-dirt-mix1 FLOOR_GRASS_DIRT_MIX
+grass0-dirt-mix2
+grass0-dirt-mix3
+
+%sdir dc-dngn
+floor/floor_nerves0 FLOOR_NERVES
+floor/floor_nerves1
+floor/floor_nerves2
+floor/floor_nerves3
+floor/floor_nerves4
+floor/floor_nerves5
+floor/floor_nerves6
+
+%start
+%compose floor/grass/grass0
+%compose floor/pedestal_n
+%finish HALO_GRASS2
+%start
+%compose floor/grass/grass1
+%compose floor/pedestal_ne
+%finish
+%start
+%compose floor/grass/grass2
+%compose floor/pedestal_e
+%finish
+%start
+%compose floor/grass/grass1
+%compose floor/pedestal_se
+%finish
+%start
+%compose floor/grass/grass0
+%compose floor/pedestal_s
+%finish
+%start
+%compose floor/grass/grass1
+%compose floor/pedestal_sw
+%finish
+%start
+%compose floor/grass/grass2
+%compose floor/pedestal_w
+%finish
+%start
+%compose floor/grass/grass0
+%compose floor/pedestal_nw
+%finish
+floor/pedestal_full
+
+%start
+%compose floor/rect_gray0
+%compose floor/pedestal_n
+%finish HALO_VAULT
+%start
+%compose floor/rect_gray1
+%compose floor/pedestal_ne
+%finish
+%start
+%compose floor/rect_gray2
+%compose floor/pedestal_e
+%finish
+%start
+%compose floor/rect_gray3
+%compose floor/pedestal_se
+%finish
+%start
+%compose floor/rect_gray2
+%compose floor/pedestal_s
+%finish
+%start
+%compose floor/rect_gray1
+%compose floor/pedestal_sw
+%finish
+%start
+%compose floor/rect_gray0
+%compose floor/pedestal_w
+%finish
+%start
+%compose floor/rect_gray3
+%compose floor/pedestal_nw
+%finish
+floor/pedestal_full
+
+floor/dirt0 FLOOR_DIRT
+floor/dirt1
+floor/dirt2
+
+floor/dirt_n HALO_DIRT
+floor/dirt_ne
+floor/dirt_e
+floor/dirt_se
+floor/dirt_s
+floor/dirt_sw
+floor/dirt_w
+floor/dirt_nw
+floor/dirt_full
diff --git a/crawl-ref/source/rltiles/dc-wall.txt b/crawl-ref/source/rltiles/dc-wall.txt
new file mode 100644
index 0000000000..303291c802
--- /dev/null
+++ b/crawl-ref/source/rltiles/dc-wall.txt
@@ -0,0 +1,736 @@
+%name wall
+%prefix TILE
+%startvalue TILE_FLOOR_MAX tiledef-floor.h
+
+%sdir dc-dngn
+
+# Multiple tile definitions are STATIC, that is they may change between
+# saves but are otherwise fixed.
+
+%weight 5
+wall/brick_brown0 WALL_NORMAL WALL_BRICK WALL_BRICK_BROWN
+wall/brick_brown1
+wall/brick_brown2
+wall/brick_brown4
+wall/brick_brown5
+%weight 2
+wall/brick_brown3
+wall/brick_brown6
+%weight 1
+wall/brick_brown7
+
+%variation WALL_BRICK blue
+%hue 30 240
+%hue 0 240
+%repeat WALL_BRICK WALL_BRICK_BLUE
+%resetcol
+
+%variation WALL_BRICK green
+%hue 30 90
+%hue 0 90
+%repeat WALL_BRICK WALL_BRICK_GREEN WALL_SNAKE
+%resetcol
+
+%variation WALL_BRICK cyan
+%hue 30 180
+%hue 0 180
+%repeat WALL_BRICK WALL_BRICK_CYAN
+%resetcol
+
+%variation WALL_BRICK red
+%hue 30 0
+%repeat WALL_BRICK WALL_BRICK_RED
+%resetcol
+
+%variation WALL_BRICK magenta
+%hue 30 300
+%hue 0 300
+%repeat WALL_BRICK WALL_BRICK_MAGENTA
+%resetcol
+
+%variation WALL_BRICK lightgray
+%desat 30
+%desat 0
+%lum 0 10
+%repeat WALL_BRICK WALL_BRICK_LIGHTGRAY
+%resetcol
+
+%variation WALL_BRICK darkgray
+%desat 30
+%lum 30 -20
+%desat 0
+%repeat WALL_BRICK WALL_BRICK_DARKGRAY
+%resetcol
+
+%variation WALL_BRICK lightblue
+%hue 30 240
+%lum 30 15
+%hue 0 240
+%repeat WALL_BRICK WALL_BRICK_LIGHTBLUE
+%resetcol
+
+%variation WALL_BRICK lightgreen
+%hue 30 90
+%lum 30 15
+%hue 0 90
+%lum 0 5
+%repeat WALL_BRICK WALL_BRICK_LIGHTGREEN
+%resetcol
+
+%variation WALL_BRICK lightcyan
+%hue 30 180
+%lum 30 15
+%hue 0 180
+%lum 0 5
+%repeat WALL_BRICK WALL_BRICK_LIGHTCYAN
+%resetcol
+
+%variation WALL_BRICK lightred
+%hue 30 0
+%lum 30 15
+%lum 0 5
+%repeat WALL_BRICK WALL_BRICK_LIGHTRED
+%resetcol
+
+%variation WALL_BRICK lightmagenta
+%hue 30 300
+%lum 30 15
+%hue 0 300
+%lum 0 5
+%repeat WALL_BRICK WALL_BRICK_LIGHTMAGENTA
+%resetcol
+
+%variation WALL_BRICK yellow
+%hue 30 60
+%hue 0 60
+%repeat WALL_BRICK WALL_BRICK_YELLOW
+%resetcol
+
+%variation WALL_BRICK white
+%desat 30
+%lum 30 30
+%desat 0
+%lum 0 15
+%repeat WALL_BRICK WALL_BRICK_WHITE
+%resetcol
+
+# Variant of BRICK_WALL_BROWN with vines
+wall/brick_brown-vines1 WALL_BRICK_VINES WALL_BRICK_BROWN_VINES
+wall/brick_brown-vines2
+wall/brick_brown-vines3
+wall/brick_brown-vines4
+
+wall/relief0 WALL_HALL
+wall/relief1
+wall/relief2
+wall/relief3
+
+%variation WALL_HALL white
+%lum 0 40
+%lum 28 40
+%lum 29 40
+%lum 30 40
+%repeat WALL_HALL WALL_HALL_WHITE
+%resetcol
+
+%variation WALL_HALL darkgray
+%lum 0 -25
+%repeat WALL_HALL WALL_HALL_DARKGRAY
+%resetcol
+
+# Maybe move these down to the "pebble" section?
+#wall/hive0 WALL_HIVE_OLD
+#wall/hive1
+#wall/hive2
+#wall/hive3
+
+wall/beehives0 WALL_HIVE
+wall/beehives1
+wall/beehives2
+wall/beehives3
+wall/beehives4
+wall/beehives5
+wall/beehives6
+wall/beehives7
+wall/beehives8
+wall/beehives9
+
+wall/lair0 WALL_LAIR WALL_ORC WALL_SWAMP
+wall/lair1
+wall/lair2
+wall/lair3
+
+wall/slime0 WALL_SLIME
+wall/slime1
+wall/slime2
+wall/slime3
+
+wall/tomb0 WALL_TOMB
+wall/tomb1
+wall/tomb2
+wall/tomb3
+
+wall/vault0 WALL_VAULT
+wall/vault1
+wall/vault2
+wall/vault3
+
+wall/zot_blue0 WALL_ZOT WALL_ZOT_BLUE
+wall/zot_blue1
+wall/zot_blue2
+wall/zot_blue3
+
+%variation WALL_ZOT green
+%hue 240 120
+%repeat WALL_ZOT WALL_ZOT_GREEN
+%resetcol
+
+%variation WALL_ZOT cyan
+%hue 240 180
+%repeat WALL_ZOT WALL_ZOT_CYAN WALL_ICE
+%resetcol
+
+%variation WALL_ZOT red
+%hue 240 0
+%repeat WALL_ZOT WALL_ZOT_RED
+%resetcol
+
+%variation WALL_ZOT magenta
+%hue 240 300
+%repeat WALL_ZOT WALL_ZOT_MAGENTA
+%resetcol
+
+%variation WALL_ZOT brown
+%hue 240 30
+%repeat WALL_ZOT WALL_ZOT_BROWN
+%resetcol
+
+%variation WALL_ZOT lightgray
+%desat 240
+%lum 240 -15
+%repeat WALL_ZOT WALL_ZOT_LIGHTGRAY
+%resetcol
+
+%variation WALL_ZOT darkgray
+%desat 240
+%lum 240 -30
+%repeat WALL_ZOT WALL_ZOT_DARKGRAY
+%resetcol
+
+%variation WALL_ZOT lightblue
+%lum 240 40
+%repeat WALL_ZOT WALL_ZOT_LIGHTBLUE
+%resetcol
+
+%variation WALL_ZOT lightgreen
+%hue 240 120
+%lum 240 15
+%repeat WALL_ZOT WALL_ZOT_LIGHTGREEN
+%resetcol
+
+%variation WALL_ZOT lightcyan
+%hue 240 180
+%lum 240 15
+%repeat WALL_ZOT WALL_ZOT_LIGHTCYAN
+%resetcol
+
+%variation WALL_ZOT lightred
+%hue 240 0
+%lum 240 40
+%repeat WALL_ZOT WALL_ZOT_LIGHTRED
+%resetcol
+
+%variation WALL_ZOT lightmagenta
+%hue 240 300
+%lum 240 40
+%repeat WALL_ZOT WALL_ZOT_LIGHTMAGENTA
+%resetcol
+
+%variation WALL_ZOT yellow
+%hue 240 60
+%repeat WALL_ZOT WALL_ZOT_YELLOW
+%resetcol
+
+%variation WALL_ZOT white
+%desat 240
+%lum 240 10
+%repeat WALL_ZOT WALL_ZOT_WHITE
+%resetcol
+
+%weight 2
+wall/wall_flesh0 WALL_FLESH
+wall/wall_flesh1
+wall/wall_flesh2
+wall/wall_flesh3
+%weight 1
+wall/wall_flesh4
+wall/wall_flesh5
+wall/wall_flesh6
+%weight 2
+wall/transparent_flesh1 WALL_TRANSPARENT_FLESH
+wall/transparent_flesh2
+wall/transparent_flesh3
+%weight 1
+wall/transparent_flesh4
+wall/transparent_flesh5
+wall/transparent_flesh6
+
+wall/wall_vines0 WALL_VINES
+wall/wall_vines1
+wall/wall_vines2
+wall/wall_vines3
+wall/wall_vines4
+wall/wall_vines5
+wall/wall_vines6
+
+wall/pebble_red0 WALL_PEBBLE WALL_PEBBLE_RED
+wall/pebble_red1
+wall/pebble_red2
+wall/pebble_red3
+
+%variation WALL_PEBBLE blue
+%hue 0 240
+%repeat WALL_PEBBLE WALL_PEBBLE_BLUE
+%resetcol
+
+%variation WALL_PEBBLE green
+%hue 0 90
+%repeat WALL_PEBBLE WALL_PEBBLE_GREEN
+%resetcol
+
+%variation WALL_PEBBLE cyan
+%hue 0 180
+%repeat WALL_PEBBLE WALL_PEBBLE_CYAN
+%resetcol
+
+%variation WALL_PEBBLE magenta
+%hue 0 300
+%repeat WALL_PEBBLE WALL_PEBBLE_MAGENTA
+%resetcol
+
+%variation WALL_PEBBLE brown
+%hue 0 30
+%repeat WALL_PEBBLE WALL_PEBBLE_BROWN
+%resetcol
+
+%variation WALL_PEBBLE lightgray
+%desat 0
+%lum 0 -10
+%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTGRAY
+%resetcol
+
+%variation WALL_PEBBLE darkgray
+%desat 0
+%lum 0 -30
+%repeat WALL_PEBBLE WALL_PEBBLE_DARKGRAY
+%resetcol
+
+%variation WALL_PEBBLE lightblue
+%hue 0 240
+%lum 0 15
+%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTBLUE
+%resetcol
+
+%variation WALL_PEBBLE lightgreen
+%hue 0 90
+%lum 0 15
+%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTGREEN
+%resetcol
+
+%variation WALL_PEBBLE lightcyan
+%hue 0 180
+%lum 0 15
+%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTCYAN
+%resetcol
+
+%variation WALL_PEBBLE lightred
+%lum 0 15
+%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTRED
+%resetcol
+
+%variation WALL_PEBBLE lightmagenta
+%hue 0 300
+%lum 0 15
+%repeat WALL_PEBBLE WALL_PEBBLE_LIGHTMAGENTA
+%resetcol
+
+%variation WALL_PEBBLE yellow
+%hue 0 60
+%repeat WALL_PEBBLE WALL_PEBBLE_YELLOW
+%resetcol
+
+%variation WALL_PEBBLE white
+%desat 0
+%lum 0 20
+%repeat WALL_PEBBLE WALL_PEBBLE_WHITE
+%resetcol
+
+wall/wall_yellow_rock0 WALL_YELLOW_ROCK
+wall/wall_yellow_rock1
+wall/wall_yellow_rock2
+wall/wall_yellow_rock3
+
+wall/brick_gray0 WALL_BRICK_GRAY
+wall/brick_gray1
+wall/brick_gray2
+wall/brick_gray3
+
+%weight 2
+wall/stone_brick1 WALL_STONE_BRICK
+wall/stone_brick2
+wall/stone_brick3
+wall/stone_brick4
+wall/stone_brick5
+wall/stone_brick6
+wall/stone_brick7
+wall/stone_brick8
+wall/stone_brick9
+wall/stone_brick10
+%weight 1
+wall/stone_brick11
+wall/stone_brick12
+
+%weight 5
+wall/marble_wall1 WALL_MARBLE
+wall/marble_wall2
+wall/marble_wall3
+wall/marble_wall4
+wall/marble_wall5
+%weight 3
+wall/marble_wall6
+wall/marble_wall7
+wall/marble_wall8
+%weight 1
+wall/marble_wall9
+wall/marble_wall10
+wall/marble_wall11
+wall/marble_wall12
+
+%weight 5
+wall/sandstone_wall0 WALL_SANDSTONE
+wall/sandstone_wall1
+wall/sandstone_wall2
+wall/sandstone_wall3
+wall/sandstone_wall4
+%weight 1
+wall/sandstone_wall5
+wall/sandstone_wall6
+wall/sandstone_wall7
+wall/sandstone_wall8
+wall/sandstone_wall9
+
+wall/volcanic_wall0 WALL_VOLCANIC
+wall/volcanic_wall1
+wall/volcanic_wall2
+wall/volcanic_wall3
+wall/volcanic_wall4
+wall/volcanic_wall5
+wall/volcanic_wall6
+
+%weight 5
+wall/crystal_wall00 WALL_CRYSTAL_SQUARES
+%weight 3
+wall/crystal_wall01
+%weight 6
+wall/crystal_wall02
+%weight 2
+wall/crystal_wall03
+%weight 4
+wall/crystal_wall04
+wall/crystal_wall06
+wall/crystal_wall08
+wall/crystal_wall10
+%weight 2
+wall/crystal_wall05
+wall/crystal_wall07
+wall/crystal_wall09
+wall/crystal_wall11
+%weight 3
+wall/crystal_wall12
+%weight 1
+wall/crystal_wall13
+
+
+wall/stone_gray0 WALL_STONE_GRAY
+wall/stone_gray1
+wall/stone_gray2
+wall/stone_gray3
+
+%variation WALL_STONE_GRAY white
+%lum 0 35
+%repeat WALL_STONE_GRAY WALL_STONE_WHITE
+%resetcol
+
+wall/stone_dark0 WALL_STONE_DARK
+wall/stone_dark1
+wall/stone_dark2
+wall/stone_dark3
+
+# For the Doroklohe WizLab
+wall/stone_black_marked0 WALL_STONE_BLACK_MARKED
+wall/stone_black_marked1
+wall/stone_black_marked2
+wall/stone_black_marked3
+wall/stone_black_marked4
+wall/stone_black_marked5
+wall/stone_black_marked6
+wall/stone_black_marked7
+%weight 1
+wall/stone_black_marked8
+
+wall/undead0 WALL_UNDEAD
+wall/undead1
+wall/undead2
+wall/undead3
+
+wall/stone2_gray0 DNGN_STONE_WALL DNGN_STONE_WALL_LIGHTGRAY
+wall/stone2_gray1
+wall/stone2_gray2
+wall/stone2_gray3
+
+wall/stone2_dark0 DNGN_STONE_DARK
+wall/stone2_dark1
+wall/stone2_dark2
+wall/stone2_dark3
+
+%variation DNGN_STONE_WALL blue
+%hue 26 240
+%hue 27 240
+%hue 28 240
+%hue 29 240
+%hue 30 240
+%hue 31 240
+%hue 32 240
+%hue 33 240
+wall/stone2_brown0 DNGN_STONE_WALL_BLUE
+wall/stone2_brown1
+wall/stone2_brown2
+wall/stone2_brown3
+%resetcol
+
+%variation DNGN_STONE_WALL green
+%hue 240 120
+%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_GREEN
+%resetcol
+
+%variation DNGN_STONE_WALL cyan
+%hue 240 180
+%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_CYAN
+%resetcol
+
+%variation DNGN_STONE_WALL red
+%hue 240 0
+%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_RED
+%resetcol
+
+%variation DNGN_STONE_WALL magenta
+%hue 240 300
+%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_MAGENTA
+%resetcol
+
+%variation DNGN_STONE_WALL brown
+%hue 240 30
+%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_BROWN
+%resetcol
+
+%variation DNGN_STONE_WALL darkgray
+%lum 0 -20
+%repeat DNGN_STONE_WALL DNGN_STONE_WALL_DARKGRAY
+%resetcol
+
+%variation DNGN_STONE_WALL yellow
+%hue 240 60
+%repeat DNGN_STONE_WALL_BLUE DNGN_STONE_WALL_YELLOW
+%resetcol
+
+%variation DNGN_STONE_WALL white
+%lum 0 30
+%repeat DNGN_STONE_WALL DNGN_STONE_WALL_WHITE
+%resetcol
+
+wall/dngn_wax_wall DNGN_WAX_WALL
+
+# Coloured glass walls
+wall/dngn_transparent_wall DNGN_TRANSPARENT_WALL DNGN_TRANSPAREN_WALL_CYAN
+
+%variation DNGN_TRANSPARENT_WALL blue
+%hue 180 240
+%repeat DNGN_TRANSPARENT_WALL DNGN_TRANSPARENT_WALL_BLUE
+%resetcol
+
+%variation DNGN_TRANSPARENT_WALL green
+%hue 240 120
+%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_GREEN
+%resetcol
+
+%variation DNGN_TRANSPARENT_WALL red
+%hue 240 0
+%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_RED
+%resetcol
+
+%variation DNGN_TRANSPARENT_WALL magenta
+%hue 240 300
+%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_MAGENTA
+%resetcol
+
+%variation DNGN_TRANSPARENT_WALL brown
+%hue 240 30
+%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_BROWN
+%resetcol
+
+%variation DNGN_TRANSPARENT_WALL darkgray
+%desat 180
+%lum 180 -40
+%repeat DNGN_TRANSPARENT_WALL DNGN_TRANSPARENT_WALL_DARKGRAY
+%resetcol
+
+%variation DNGN_TRANSPARENT_WALL yellow
+%hue 240 60
+%repeat DNGN_TRANSPARENT_WALL_BLUE DNGN_TRANSPARENT_WALL_YELLOW
+%resetcol
+
+%variation DNGN_TRANSPARENT_WALL white
+%desat 180
+%lum 0 35
+%repeat DNGN_TRANSPARENT_WALL DNGN_TRANSPARENT_WALL_WHITE
+%resetcol
+
+
+# Coloured metal walls
+wall/dngn_mirrored_wall DNGN_MIRROR_WALL
+
+wall/dngn_metal_wall DNGN_METAL_WALL
+
+%variation DNGN_METAL_WALL blue
+%hue 26 240
+%hue 27 240
+%hue 28 240
+%hue 29 240
+%hue 30 240
+%hue 31 240
+%hue 32 240
+%hue 33 240
+wall/dngn_metal_wall_brown DNGN_METAL_WALL_BLUE
+%resetcol
+
+%variation DNGN_METAL_WALL green
+%hue 240 120
+%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_GREEN
+%resetcol
+
+%variation DNGN_METAL_WALL cyan
+%hue 240 180
+%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_CYAN
+%resetcol
+
+%variation DNGN_METAL_WALL red
+%hue 240 0
+%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_RED
+%resetcol
+
+%variation DNGN_METAL_WALL magenta
+%hue 240 300
+%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_MAGENTA
+%resetcol
+
+%variation DNGN_METAL_WALL brown
+%hue 240 30
+%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_BROWN
+%resetcol
+
+%variation DNGN_METAL_WALL darkgray
+%lum 0 -20
+%repeat DNGN_METAL_WALL DNGN_METAL_WALL_DARKGRAY
+%resetcol
+
+%variation DNGN_METAL_WALL yellow
+%hue 240 60
+%repeat DNGN_METAL_WALL_BLUE DNGN_METAL_WALL_YELLOW
+%resetcol
+
+%variation DNGN_METAL_WALL white
+%lum 0 30
+%repeat DNGN_METAL_WALL DNGN_METAL_WALL_WHITE
+%resetcol
+
+wall/dngn_metal_wall_cracked DNGN_METAL_WALL_CRACKED
+
+%hue 150 120
+wall/dngn_green_crystal_wall DNGN_GREEN_CRYSTAL_WALL DNGN_CRYSTAL DNGN_CRYSTAL_GREEN
+%resetcol
+
+%variation DNGN_CRYSTAL blue
+%hue 120 240
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_BLUE
+%resetcol
+
+%variation DNGN_CRYSTAL cyan
+%hue 120 180
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_CYAN
+%resetcol
+
+%variation DNGN_CRYSTAL red
+%hue 120 0
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_RED
+%resetcol
+
+%variation DNGN_CRYSTAL magenta
+%hue 120 300
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_MAGENTA
+%resetcol
+
+%variation DNGN_CRYSTAL brown
+%hue 120 30
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_BROWN
+%resetcol
+
+%variation DNGN_CRYSTAL lightgray
+%desat 120
+%lum 120 -20
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTGRAY
+%resetcol
+
+%variation DNGN_CRYSTAL darkgray
+%desat 120
+%lum 120 -40
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_DARKGRAY
+%resetcol
+
+%variation DNGN_CRYSTAL lightblue
+%hue 120 240
+%lum 120 30
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTBLUE
+%resetcol
+
+%variation DNGN_CRYSTAL lightgreen
+%lum 120 30
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTGREEN
+%resetcol
+
+%variation DNGN_CRYSTAL lightcyan
+%hue 120 180
+%lum 120 30
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTCYAN
+%resetcol
+
+%variation DNGN_CRYSTAL lightred
+%hue 120 0
+%lum 120 30
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTRED
+%resetcol
+
+%variation DNGN_CRYSTAL lightmagenta
+%hue 120 300
+%lum 120 30
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_LIGHTMAGENTA
+%resetcol
+
+%variation DNGN_CRYSTAL yellow
+%hue 120 60
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_YELLOW
+%resetcol
+
+%variation DNGN_CRYSTAL white
+%desat 120
+%repeat DNGN_CRYSTAL DNGN_CRYSTAL_WHITE
+%resetcol
diff --git a/crawl-ref/source/tag-version.h b/crawl-ref/source/tag-version.h
index 34f8764a71..e99821e049 100644
--- a/crawl-ref/source/tag-version.h
+++ b/crawl-ref/source/tag-version.h
@@ -9,7 +9,8 @@
enum tag_minor_version
{
TAG_MINOR_RESET = 0, // Minor tags were reset
- TAG_MINOR_VERSION = 0 // Current version. (Keep equal to max.)
+ TAG_MINOR_TILE_CHANGES = 1,
+ TAG_MINOR_VERSION = 1 // Current version. (Keep equal to max.)
};
#endif
diff --git a/crawl-ref/source/tags.cc b/crawl-ref/source/tags.cc
index cdd7931fa0..757d6a5708 100644
--- a/crawl-ref/source/tags.cc
+++ b/crawl-ref/source/tags.cc
@@ -2567,6 +2567,17 @@ void tag_read_level_tiles(reader &th)
mcache.read(th);
+ {
+ // Tiles were reordered, so this would likely cause huge
+ // issues on saved levels.
+ //
+ // FIXME: This should happen automatically.
+ bool reset_due_to_tile_reordering =
+ (_tag_minor_version < TAG_MINOR_TILE_CHANGES);
+
+ if (reset_due_to_tile_reordering)
+ tag_missing_level_tiles();
+ }
#endif
}
diff --git a/crawl-ref/source/tiledgnbuf.cc b/crawl-ref/source/tiledgnbuf.cc
index aabf813639..2a5ddec4a0 100644
--- a/crawl-ref/source/tiledgnbuf.cc
+++ b/crawl-ref/source/tiledgnbuf.cc
@@ -19,7 +19,9 @@
#include "tilepick-p.h"
DungeonCellBuffer::DungeonCellBuffer(ImageManager *im) :
- m_buf_dngn(&im->m_textures[TEX_DUNGEON]),
+ m_buf_floor(&im->m_textures[TEX_FLOOR]),
+ m_buf_wall(&im->m_textures[TEX_WALL]),
+ m_buf_feat(&im->m_textures[TEX_FEAT]),
m_buf_doll(&im->m_textures[TEX_PLAYER], 17),
m_buf_main_trans(&im->m_textures[TEX_DEFAULT], 17),
m_buf_main(&im->m_textures[TEX_DEFAULT]),
@@ -78,7 +80,14 @@ void DungeonCellBuffer::add(const packed_cell &cell, int x, int y)
void DungeonCellBuffer::add_dngn_tile(int tileidx, int x, int y)
{
- m_buf_dngn.add(tileidx, x, y);
+ assert(tileidx < TILE_FEAT_MAX);
+
+ if (tileidx < TILE_FLOOR_MAX)
+ m_buf_floor.add(tileidx, x, y);
+ else if (tileidx < TILE_WALL_MAX)
+ m_buf_wall.add(tileidx, x, y);
+ else
+ m_buf_feat.add(tileidx, x, y);
}
void DungeonCellBuffer::add_main_tile(int tileidx, int x, int y)
@@ -98,7 +107,9 @@ void DungeonCellBuffer::add_spell_tile(int tileidx, int x, int y)
void DungeonCellBuffer::clear()
{
- m_buf_dngn.clear();
+ m_buf_floor.clear();
+ m_buf_wall.clear();
+ m_buf_feat.clear();
m_buf_doll.clear();
m_buf_main_trans.clear();
m_buf_main.clear();
@@ -107,7 +118,9 @@ void DungeonCellBuffer::clear()
void DungeonCellBuffer::draw()
{
- m_buf_dngn.draw();
+ m_buf_floor.draw();
+ m_buf_wall.draw();
+ m_buf_feat.draw();
m_buf_doll.draw();
m_buf_main_trans.draw();
m_buf_main.draw();
@@ -324,51 +337,51 @@ void DungeonCellBuffer::pack_background(int x, int y, const packed_cell &cell)
if (bg_idx >= TILE_DNGN_WAX_WALL)
{
- m_buf_dngn.add(cell.flv.floor, x, y);
+ add_dngn_tile(cell.flv.floor, x, y);
}
- m_buf_dngn.add(bg_idx, x, y);
+ add_dngn_tile(bg_idx, x, y);
if (bg_idx > TILE_DNGN_UNSEEN)
{
if (bg & TILE_FLAG_WAS_SECRET)
- m_buf_dngn.add(TILE_DNGN_DETECTED_SECRET_DOOR, x, y);
+ m_buf_feat.add(TILE_DNGN_DETECTED_SECRET_DOOR, x, y);
if (bg & TILE_FLAG_BLOOD)
{
int offset = cell.flv.special % tile_dngn_count(TILE_BLOOD);
- m_buf_dngn.add(TILE_BLOOD + offset, x, y);
+ m_buf_feat.add(TILE_BLOOD + offset, x, y);
}
else if (bg & TILE_FLAG_MOLD)
{
int offset = cell.flv.special % tile_dngn_count(TILE_MOLD);
- m_buf_dngn.add(TILE_MOLD + offset, x, y);
+ m_buf_feat.add(TILE_MOLD + offset, x, y);
}
for (int i = 0; i < cell.num_dngn_overlay; ++i)
- m_buf_dngn.add(cell.dngn_overlay[i], x, y);
+ add_dngn_tile(cell.dngn_overlay[i], x, y);
if (bg & TILE_FLAG_HALO)
- m_buf_dngn.add(TILE_HALO, x, y);
+ m_buf_feat.add(TILE_HALO, x, y);
if (!(bg & TILE_FLAG_UNSEEN))
{
if (bg & TILE_FLAG_SANCTUARY)
- m_buf_dngn.add(TILE_SANCTUARY, x, y);
+ m_buf_feat.add(TILE_SANCTUARY, x, y);
if (bg & TILE_FLAG_SILENCED)
- m_buf_dngn.add(TILE_SILENCED, x, y);
+ m_buf_feat.add(TILE_SILENCED, x, y);
// Apply the travel exclusion under the foreground if the cell is
// visible. It will be applied later if the cell is unseen.
if (bg & TILE_FLAG_EXCL_CTR)
- m_buf_dngn.add(TILE_TRAVEL_EXCLUSION_CENTRE_BG, x, y);
+ m_buf_feat.add(TILE_TRAVEL_EXCLUSION_CENTRE_BG, x, y);
else if (bg & TILE_FLAG_TRAV_EXCL)
- m_buf_dngn.add(TILE_TRAVEL_EXCLUSION_BG, x, y);
+ m_buf_feat.add(TILE_TRAVEL_EXCLUSION_BG, x, y);
}
if (bg & TILE_FLAG_RAY)
- m_buf_dngn.add(TILE_RAY, x, y);
+ m_buf_feat.add(TILE_RAY, x, y);
else if (bg & TILE_FLAG_RAY_OOR)
- m_buf_dngn.add(TILE_RAY_OUT_OF_RANGE, x, y);
+ m_buf_feat.add(TILE_RAY_OUT_OF_RANGE, x, y);
}
}
diff --git a/crawl-ref/source/tiledgnbuf.h b/crawl-ref/source/tiledgnbuf.h
index 2df2b0a833..123d5cf4e2 100644
--- a/crawl-ref/source/tiledgnbuf.h
+++ b/crawl-ref/source/tiledgnbuf.h
@@ -61,7 +61,9 @@ protected:
void pack_doll(const dolls_data &doll, int x, int y,
bool submerged, bool ghost);
- TileBuffer m_buf_dngn;
+ TileBuffer m_buf_floor;
+ TileBuffer m_buf_wall;
+ TileBuffer m_buf_feat;
SubmergedTileBuffer m_buf_doll;
SubmergedTileBuffer m_buf_main_trans;
TileBuffer m_buf_main;
diff --git a/crawl-ref/source/tiletex.cc b/crawl-ref/source/tiletex.cc
index a22c219a7e..dedf4214fa 100644
--- a/crawl-ref/source/tiletex.cc
+++ b/crawl-ref/source/tiletex.cc
@@ -12,6 +12,17 @@
#include "tiletex.h"
#include "windowmanager.h"
+TextureID get_dngn_tex(tileidx_t idx)
+{
+ assert(idx < TILE_FEAT_MAX);
+ if (idx < TILE_FLOOR_MAX)
+ return (TEX_FLOOR);
+ else if (idx < TILE_WALL_MAX)
+ return (TEX_WALL);
+ else
+ return (TEX_FEAT);
+}
+
GenericTexture::GenericTexture() :
m_handle(0),
m_width(0),
@@ -81,9 +92,12 @@ void TilesTexture::set_info(int tile_max, tile_info_func *info_func)
m_info_func = info_func;
}
+// This array should correspond to the TEXTURE_ enum.
const char *ImageManager::filenames[TEX_MAX] =
{
- "dngn.png",
+ "floor.png",
+ "wall.png",
+ "feat.png",
"player.png",
"main.png",
"gui.png"
@@ -102,16 +116,16 @@ bool ImageManager::load_textures(bool need_mips)
{
MipMapOptions mip = need_mips ?
MIPMAP_CREATE : MIPMAP_NONE;
- if (!m_textures[TEX_DUNGEON].load_texture(filenames[TEX_DUNGEON], mip))
- return (false);
- if (!m_textures[TEX_PLAYER].load_texture(filenames[TEX_PLAYER], mip))
- return (false);
-
- if (!m_textures[TEX_GUI].load_texture(filenames[TEX_GUI], mip))
- return (false);
+ for (size_t i = 0; i < sizeof(filenames) / sizeof(filenames[0]); ++i)
+ {
+ if (!m_textures[i].load_texture(filenames[i], mip))
+ return (false);
+ }
- m_textures[TEX_DUNGEON].set_info(TILE_DNGN_MAX, &tile_dngn_info);
+ m_textures[TEX_FLOOR].set_info(TILE_FLOOR_MAX, &tile_floor_info);
+ m_textures[TEX_WALL].set_info(TILE_DNGN_MAX, &tile_wall_info);
+ m_textures[TEX_FEAT].set_info(TILE_DNGN_MAX, &tile_feat_info);
m_textures[TEX_PLAYER].set_info(TILEP_PLAYER_MAX, &tile_player_info);
m_textures[TEX_GUI].set_info(TILEG_GUI_MAX, &tile_gui_info);
diff --git a/crawl-ref/source/tiletex.h b/crawl-ref/source/tiletex.h
index 187a5b62e5..ba5a15cb26 100644
--- a/crawl-ref/source/tiletex.h
+++ b/crawl-ref/source/tiletex.h
@@ -10,7 +10,9 @@
// The different texture types.
enum TextureID
{
- TEX_DUNGEON, // dngn.png
+ TEX_FLOOR, // floor.png
+ TEX_WALL, // wall.png
+ TEX_FEAT, // feat.png
TEX_PLAYER, // player.png
TEX_DEFAULT, // main.png
TEX_GUI, // gui.png
@@ -34,6 +36,8 @@ struct tile_def
int ymax;
};
+TextureID get_dngn_tex(tileidx_t idx);
+
// Arbitrary post-load texture processing
typedef bool(*tex_proc_func)(unsigned char *pixels, unsigned int w,
unsigned int h);