|  |  |  | @ -28,710 +28,77 @@ distribution. | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | namespace DFHack | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     const TileRow tileTypeTable[TILE_TYPE_ARRAY_LENGTH] = | 
		
	
		
			
				|  |  |  |  |     df::tiletype findSimilarTileType (const df::tiletype sourceTileType, const df::tiletype_shape tshape) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         // 0x000
 | 
		
	
		
			
				|  |  |  |  |         { "void", tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "ramp top", RAMP_TOP, AIR, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "murky pool", POOL, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x010
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "driftwood", FLOOR, DRIFTWOOD, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "tree", TREE_OK, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "ice stair up/down", STAIR_UPDOWN, ICE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "ice stair down", STAIR_DOWN, ICE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "ice stair up", STAIR_UP, ICE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x020
 | 
		
	
		
			
				|  |  |  |  |         { "empty space", EMPTY, AIR, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "shrub", SHRUB_OK, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "chasm", ENDLESS_PIT, AIR, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian stair up/down", STAIR_UPDOWN, OBSIDIAN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian stair down", STAIR_DOWN, OBSIDIAN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian stair up", STAIR_UP, OBSIDIAN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "soil stair up/down", STAIR_UPDOWN, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "soil stair down", STAIR_DOWN, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "soil stair up", STAIR_UP, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "eerie pit", ENDLESS_PIT, HFS, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone floor", FLOOR, STONE, VAR_1, TILE_SMOOTH }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian floor", FLOOR, OBSIDIAN, VAR_1, TILE_SMOOTH }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone floor", FLOOR, FEATSTONE, VAR_1, TILE_SMOOTH }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein floor", FLOOR, VEIN, VAR_1, TILE_SMOOTH }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice floor", FLOOR, ICE, VAR_1, TILE_SMOOTH }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x030
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "light grass stair up/down", STAIR_UPDOWN, GRASS, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "light grass stair down", STAIR_DOWN, GRASS, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "light grass stair up", STAIR_UP, GRASS, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dark grass stair up/down", STAIR_UPDOWN, GRASS2, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dark grass stair down", STAIR_DOWN, GRASS2, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dark grass stair up", STAIR_UP, GRASS2, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "stone stair up/down", STAIR_UPDOWN, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "stone stair down", STAIR_DOWN, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "stone stair up", STAIR_UP, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "vein stair up/down", STAIR_UPDOWN, VEIN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "vein stair down", STAIR_DOWN, VEIN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "vein stair up", STAIR_UP, VEIN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone stair up/down", STAIR_UPDOWN, FEATSTONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone stair down", STAIR_DOWN, FEATSTONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone stair up", STAIR_UP, FEATSTONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x040
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "stone fortification", FORTIFICATION, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "campfire", FLOOR, CAMPFIRE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "fire", FLOOR, FIRE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "stone pillar", PILLAR, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x050
 | 
		
	
		
			
				|  |  |  |  |         { "obsidian pillar", PILLAR, OBSIDIAN, VAR_1, TILE_SMOOTH }, | 
		
	
		
			
				|  |  |  |  |         { "featstone pillar", PILLAR, FEATSTONE, VAR_1, TILE_SMOOTH }, | 
		
	
		
			
				|  |  |  |  |         { "vein pillar", PILLAR, VEIN, VAR_1, TILE_SMOOTH }, | 
		
	
		
			
				|  |  |  |  |         { "ice pillar", PILLAR, ICE, VAR_1, TILE_SMOOTH }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "waterfall", FLOOR, SOIL, VAR_1, TILE_WATERFALL }, // verify material
 | 
		
	
		
			
				|  |  |  |  |         { "river source", FLOOR, SOIL, VAR_1, TILE_RIVER_SOURCE }, // verify material
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x060
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x070
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x080
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x090
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x0A0
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x0B0
 | 
		
	
		
			
				|  |  |  |  |         { "cracked stone wall", WALL, STONE, VAR_1, TILE_CRACKED }, | 
		
	
		
			
				|  |  |  |  |         { "damaged stone wall", WALL, STONE, VAR_1, TILE_DAMAGED }, | 
		
	
		
			
				|  |  |  |  |         { "worn stone wall", WALL, STONE, VAR_1, TILE_WORN }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x0C0
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x0D0
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "stone wall", WALL, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x0E0
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "sapling", SAPLING_OK, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dry grass ramp", RAMP, GRASS_DRY, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dead grass ramp", RAMP, GRASS_DEAD, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "light grass ramp", RAMP, GRASS, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dark grass ramp", RAMP, GRASS2, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "stone ramp", RAMP, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian ramp", RAMP, OBSIDIAN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone ramp", RAMP, FEATSTONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x0F0
 | 
		
	
		
			
				|  |  |  |  |         { "vein ramp", RAMP, VEIN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "soil ramp", RAMP, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "ashes", FLOOR, ASHES, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "ashes", FLOOR, ASHES, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "ashes", FLOOR, ASHES, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "ice ramp", RAMP, ICE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x100
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "ice floor", FLOOR, ICE, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "ice floor", FLOOR, ICE, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "ice floor", FLOOR, ICE, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "furrowed soil", FLOOR, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "ice floor", FLOOR, ICE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "semi-molten rock", WALL, MAGMA, VAR_1 }, // unminable magma wall
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "magma flow", FLOOR, MAGMA, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "soil wall", WALL, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "glowing barrier", WALL, CYAN_GLOW, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "glowing floor", FLOOR, CYAN_GLOW, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall RD2", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "--SS--E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall R2D", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "--S---EE" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall R2U", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "N-----EE" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x110
 | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall RU2", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "NN----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall L2U", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "N---WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall LU2", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "NN--W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall L2D", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "--S-WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall LD2", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "--SSW---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall LRUD", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "N-S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall RUD", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "N-S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall LRD", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "--S-W-E-" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall LRU", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "N---W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall LUD", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "N-S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall RD", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "--S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall RU", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "N-----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall LU", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "N---W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall LD", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "--S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall UD", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "N-S-----" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth obsidian wall LR", WALL, OBSIDIAN, VAR_1, TILE_SMOOTH, "----W-E-" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x120
 | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall RD2", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "--SS--E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall R2D", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "--S---EE" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall R2U", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "N-----EE" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall RU2", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "NN----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall L2U", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "N---WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall LU2", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "NN--W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall L2D", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "--S-WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall LD2", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "--SSW---" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall LRUD", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "N-S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall RUD", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "N-S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall LRD", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "--S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall LRU", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "N---W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall LUD", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "N-S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall RD", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "--S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall RU", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "N-----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall LU", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "N---W---" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x130
 | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall LD", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "--S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall UD", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "N-S-----" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth featstone wall LR", WALL, FEATSTONE, VAR_1, TILE_SMOOTH, "----W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall RD2", WALL, STONE, VAR_1, TILE_SMOOTH, "--SS--E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall R2D", WALL, STONE, VAR_1, TILE_SMOOTH, "--S---EE" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall R2U", WALL, STONE, VAR_1, TILE_SMOOTH, "N-----EE" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall RU2", WALL, STONE, VAR_1, TILE_SMOOTH, "NN----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall L2U", WALL, STONE, VAR_1, TILE_SMOOTH, "N---WW--" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall LU2", WALL, STONE, VAR_1, TILE_SMOOTH, "NN--W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall L2D", WALL, STONE, VAR_1, TILE_SMOOTH, "--S-WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall LD2", WALL, STONE, VAR_1, TILE_SMOOTH, "--SSW---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall LRUD", WALL, STONE, VAR_1, TILE_SMOOTH, "N-S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall RUD", WALL, STONE, VAR_1, TILE_SMOOTH, "N-S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall LRD", WALL, STONE, VAR_1, TILE_SMOOTH, "--S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall LRU", WALL, STONE, VAR_1, TILE_SMOOTH, "N---W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall LUD", WALL, STONE, VAR_1, TILE_SMOOTH, "N-S-W---" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x140
 | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall RD", WALL, STONE, VAR_1, TILE_SMOOTH, "--S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall RU", WALL, STONE, VAR_1, TILE_SMOOTH, "N-----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall LU", WALL, STONE, VAR_1, TILE_SMOOTH, "N---W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall LD", WALL, STONE, VAR_1, TILE_SMOOTH, "--S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall UD", WALL, STONE, VAR_1, TILE_SMOOTH, "N-S-----" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth stone wall LR", WALL, STONE, VAR_1, TILE_SMOOTH, "----W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian fortification", FORTIFICATION, OBSIDIAN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone fortification", FORTIFICATION, FEATSTONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "cracked obsidian wall", WALL, OBSIDIAN, VAR_1, TILE_CRACKED }, | 
		
	
		
			
				|  |  |  |  |         { "damaged obsidian wall", WALL, OBSIDIAN, VAR_1, TILE_DAMAGED }, | 
		
	
		
			
				|  |  |  |  |         { "worn obsidian wall", WALL, OBSIDIAN, VAR_1, TILE_WORN }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian wall", WALL, OBSIDIAN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "cracked featstone wall", WALL, FEATSTONE, VAR_1, TILE_CRACKED }, | 
		
	
		
			
				|  |  |  |  |         { "damaged featstone wall", WALL, FEATSTONE, VAR_1, TILE_DAMAGED }, | 
		
	
		
			
				|  |  |  |  |         { "worn featstone wall", WALL, FEATSTONE, VAR_1, TILE_WORN }, | 
		
	
		
			
				|  |  |  |  |         { "featstone wall", WALL, FEATSTONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x150
 | 
		
	
		
			
				|  |  |  |  |         { "stone floor 1", FLOOR, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "stone floor 2", FLOOR, STONE, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "stone floor 3", FLOOR, STONE, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "stone floor 4", FLOOR, STONE, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian floor 1", FLOOR, OBSIDIAN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian floor 2", FLOOR, OBSIDIAN, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian floor 3", FLOOR, OBSIDIAN, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian floor 4", FLOOR, OBSIDIAN, VAR_4 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "featstone floor 1", FLOOR, FEATSTONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone floor 2", FLOOR, FEATSTONE, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone floor 3", FLOOR, FEATSTONE, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone floor 4", FLOOR, FEATSTONE, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "dark grass 1", FLOOR, GRASS2, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dark grass 2", FLOOR, GRASS2, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "dark grass 3", FLOOR, GRASS2, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "dark grass 4", FLOOR, GRASS2, VAR_4 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x160
 | 
		
	
		
			
				|  |  |  |  |         { "soil floor 1", FLOOR, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "soil floor 2", FLOOR, SOIL, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "soil floor 3", FLOOR, SOIL, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "soil floor 4", FLOOR, SOIL, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "wet soil floor 1", FLOOR, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "wet soil floor 2", FLOOR, SOIL, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "wet soil floor 3", FLOOR, SOIL, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "wet soil floor 4", FLOOR, SOIL, VAR_4 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "ice fortification", FORTIFICATION, ICE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "cracked ice wall", WALL, ICE, VAR_1, TILE_CRACKED }, | 
		
	
		
			
				|  |  |  |  |         { "damaged ice wall", WALL, ICE, VAR_1, TILE_DAMAGED }, | 
		
	
		
			
				|  |  |  |  |         { "worn ice wall", WALL, ICE, VAR_1, TILE_WORN }, | 
		
	
		
			
				|  |  |  |  |         { "ice wall", WALL, ICE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "river N", RIVER_BED, SOIL, VAR_1, TILE_NORMAL, "N" }, | 
		
	
		
			
				|  |  |  |  |         { "river S", RIVER_BED, SOIL, VAR_1, TILE_NORMAL, "S" }, | 
		
	
		
			
				|  |  |  |  |         { "river E", RIVER_BED, SOIL, VAR_1, TILE_NORMAL, "E" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x170
 | 
		
	
		
			
				|  |  |  |  |         { "river W", RIVER_BED, SOIL, VAR_1, TILE_NORMAL, "W" }, | 
		
	
		
			
				|  |  |  |  |         { "river NW", RIVER_BED, SOIL, VAR_1, TILE_NORMAL, "NW" }, | 
		
	
		
			
				|  |  |  |  |         { "river NE", RIVER_BED, SOIL, VAR_1, TILE_NORMAL, "NE" }, | 
		
	
		
			
				|  |  |  |  |         { "river SW", RIVER_BED, SOIL, VAR_1, TILE_NORMAL, "SW" }, | 
		
	
		
			
				|  |  |  |  |         { "river SE", RIVER_BED, SOIL, VAR_1, TILE_NORMAL, "SE" }, | 
		
	
		
			
				|  |  |  |  |         { "brook bed N", BROOK_BED, SOIL, VAR_1, TILE_NORMAL, "N" }, | 
		
	
		
			
				|  |  |  |  |         { "brook bed S", BROOK_BED, SOIL, VAR_1, TILE_NORMAL, "S" }, | 
		
	
		
			
				|  |  |  |  |         { "brook bed E", BROOK_BED, SOIL, VAR_1, TILE_NORMAL, "E" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "brook bed W", BROOK_BED, SOIL, VAR_1, TILE_NORMAL, "W" }, | 
		
	
		
			
				|  |  |  |  |         { "brook bed NW", BROOK_BED, SOIL, VAR_1, TILE_NORMAL, "NW" }, | 
		
	
		
			
				|  |  |  |  |         { "brook bed NE", BROOK_BED, SOIL, VAR_1, TILE_NORMAL, "NE" }, | 
		
	
		
			
				|  |  |  |  |         { "brook bed SW", BROOK_BED, SOIL, VAR_1, TILE_NORMAL, "SW" }, | 
		
	
		
			
				|  |  |  |  |         { "brook bed SE", BROOK_BED, SOIL, VAR_1, TILE_NORMAL, "SE" }, | 
		
	
		
			
				|  |  |  |  |         { "brook top", BROOK_TOP, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x180
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dry grass 1", FLOOR, GRASS_DRY, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dry grass 2", FLOOR, GRASS_DRY, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "dry grass 3", FLOOR, GRASS_DRY, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "dry grass 4", FLOOR, GRASS_DRY, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "dead tree", TREE_DEAD, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "dead sapling", SAPLING_DEAD, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dead shrub", SHRUB_DEAD, SOIL, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dead grass 1", FLOOR, GRASS_DEAD, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "dead grass 2", FLOOR, GRASS_DEAD, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "dead grass 3", FLOOR, GRASS_DEAD, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "dead grass 4", FLOOR, GRASS_DEAD, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "light grass 1", FLOOR, GRASS, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "light grass 2", FLOOR, GRASS, VAR_2 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x190
 | 
		
	
		
			
				|  |  |  |  |         { "light grass 3", FLOOR, GRASS, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "light grass 4", FLOOR, GRASS, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "boulder", BOULDER, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian boulder", BOULDER, OBSIDIAN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone boulder", BOULDER, FEATSTONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "stone pebbles 1", PEBBLES, STONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "stone pebbles 2", PEBBLES, STONE, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "stone pebbles 3", PEBBLES, STONE, VAR_3 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "stone pebbles 4", PEBBLES, STONE, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian pebbles 1", PEBBLES, OBSIDIAN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian pebbles 2", PEBBLES, OBSIDIAN, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian pebbles 3", PEBBLES, OBSIDIAN, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "obsidian pebbles 4", PEBBLES, OBSIDIAN, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone pebbles 1", PEBBLES, FEATSTONE, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone pebbles 2", PEBBLES, FEATSTONE, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "featstone pebbles 3", PEBBLES, FEATSTONE, VAR_3 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x1A0
 | 
		
	
		
			
				|  |  |  |  |         { "featstone pebbles 4", PEBBLES, FEATSTONE, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall RD2", WALL, VEIN, VAR_1, TILE_SMOOTH, "--SS--E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall R2D", WALL, VEIN, VAR_1, TILE_SMOOTH, "--S---EE" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall R2U", WALL, VEIN, VAR_1, TILE_SMOOTH, "N-----EE" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall RU2", WALL, VEIN, VAR_1, TILE_SMOOTH, "NN----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall L2U", WALL, VEIN, VAR_1, TILE_SMOOTH, "N---WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall LU2", WALL, VEIN, VAR_1, TILE_SMOOTH, "NN--W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall L2D", WALL, VEIN, VAR_1, TILE_SMOOTH, "--S-WW--" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall LD2", WALL, VEIN, VAR_1, TILE_SMOOTH, "--SSW---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall LRUD", WALL, VEIN, VAR_1, TILE_SMOOTH, "N-S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall RUD", WALL, VEIN, VAR_1, TILE_SMOOTH, "N-S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall LRD", WALL, VEIN, VAR_1, TILE_SMOOTH, "--S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall LRU", WALL, VEIN, VAR_1, TILE_SMOOTH, "N---W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall LUD", WALL, VEIN, VAR_1, TILE_SMOOTH, "N-S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall RD", WALL, VEIN, VAR_1, TILE_SMOOTH, "--S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall RU", WALL, VEIN, VAR_1, TILE_SMOOTH, "N-----E-" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x1B0
 | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall LU", WALL, VEIN, VAR_1, TILE_SMOOTH, "N---W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall LD", WALL, VEIN, VAR_1, TILE_SMOOTH, "--S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall UD", WALL, VEIN, VAR_1, TILE_SMOOTH, "N-S-----" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth vein wall LR", WALL, VEIN, VAR_1, TILE_SMOOTH, "----W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "vein fortification", FORTIFICATION, VEIN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "cracked vein wall", WALL, VEIN, VAR_1, TILE_CRACKED }, | 
		
	
		
			
				|  |  |  |  |         { "damaged vein wall", WALL, VEIN, VAR_1, TILE_DAMAGED }, | 
		
	
		
			
				|  |  |  |  |         { "worn vein wall", WALL, VEIN, VAR_1, TILE_WORN }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "vein wall", WALL, VEIN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "vein floor 1", FLOOR, VEIN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "vein floor 2", FLOOR, VEIN, VAR_2 }, | 
		
	
		
			
				|  |  |  |  |         { "vein floor 3", FLOOR, VEIN, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "vein floor 4", FLOOR, VEIN, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "vein boulder", BOULDER, VEIN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "vein pebbles 1", PEBBLES, VEIN, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "vein pebbles 2", PEBBLES, VEIN, VAR_2 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x1C0
 | 
		
	
		
			
				|  |  |  |  |         { "vein pebbles 3", PEBBLES, VEIN, VAR_3 }, | 
		
	
		
			
				|  |  |  |  |         { "vein pebbles 4", PEBBLES, VEIN, VAR_4 }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall RD2", WALL, ICE, VAR_1, TILE_SMOOTH, "--SS--E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall R2D", WALL, ICE, VAR_1, TILE_SMOOTH, "--S---EE" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall R2U", WALL, ICE, VAR_1, TILE_SMOOTH, "N-----EE" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall RU2", WALL, ICE, VAR_1, TILE_SMOOTH, "NN----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall L2U", WALL, ICE, VAR_1, TILE_SMOOTH, "N---WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall LU2", WALL, ICE, VAR_1, TILE_SMOOTH, "NN--W---" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall L2D", WALL, ICE, VAR_1, TILE_SMOOTH, "--S-WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall LD2", WALL, ICE, VAR_1, TILE_SMOOTH, "--SSW---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall LRUD", WALL, ICE, VAR_1, TILE_SMOOTH, "N-S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall RUD", WALL, ICE, VAR_1, TILE_SMOOTH, "N-S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall LRD", WALL, ICE, VAR_1, TILE_SMOOTH, "--S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall LRU", WALL, ICE, VAR_1, TILE_SMOOTH, "N---W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall LUD", WALL, ICE, VAR_1, TILE_SMOOTH, "N-S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall RD", WALL, ICE, VAR_1, TILE_SMOOTH, "--S---E-" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x1D0
 | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall RU", WALL, ICE, VAR_1, TILE_SMOOTH, "N-----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall LU", WALL, ICE, VAR_1, TILE_SMOOTH, "N---W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall LD", WALL, ICE, VAR_1, TILE_SMOOTH, "--S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall UD", WALL, ICE, VAR_1, TILE_SMOOTH, "N-S-----" }, | 
		
	
		
			
				|  |  |  |  |         { "smooth ice wall LR", WALL, ICE, VAR_1, TILE_SMOOTH, "----W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x1E0
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "constructed floor", FLOOR, CONSTRUCTED, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "constructed fortification", FORTIFICATION, CONSTRUCTED, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "constructed pillar", PILLAR, CONSTRUCTED, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x1F0
 | 
		
	
		
			
				|  |  |  |  |         { "constructed wall RD2", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "--SS--E-" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall R2D", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "--S---EE" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall R2U", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "N-----EE" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall RU2", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "NN----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall L2U", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "N---WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall LU2", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "NN--W---" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall L2D", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "--S-WW--" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall LD2", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "--SSW---" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         { "constructed wall LRUD", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "N-S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall RUD", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "N-S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall LRD", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "--S-W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall LRU", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "N---W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall LUD", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "N-S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall RD", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "--S---E-" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall RU", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "N-----E-" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall LU", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "N---W---" }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // 0x200
 | 
		
	
		
			
				|  |  |  |  |         { "constructed wall LD", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "--S-W---" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall UD", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "N-S-----" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed wall LR", WALL, CONSTRUCTED, VAR_1, TILE_NORMAL, "----W-E-" }, | 
		
	
		
			
				|  |  |  |  |         { "constructed stair up/down", STAIR_UPDOWN, CONSTRUCTED, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "constructed stair down", STAIR_DOWN, CONSTRUCTED, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "constructed stair up", STAIR_UP, CONSTRUCTED, VAR_1 }, | 
		
	
		
			
				|  |  |  |  |         { "constructed ramp", RAMP, CONSTRUCTED, VAR_1 }, | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // end
 | 
		
	
		
			
				|  |  |  |  |         { 0, tileshape_invalid, tilematerial_invalid, VAR_1 } | 
		
	
		
			
				|  |  |  |  |     }; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     //set tile class string lookup table (e.g. for printing to user)
 | 
		
	
		
			
				|  |  |  |  | #define X(name,comment) #name, | 
		
	
		
			
				|  |  |  |  |     const char * TileShapeString[tileshape_count+1] = { | 
		
	
		
			
				|  |  |  |  |         TILESHAPE_MACRO | 
		
	
		
			
				|  |  |  |  |         0 | 
		
	
		
			
				|  |  |  |  |     }; | 
		
	
		
			
				|  |  |  |  | #undef X | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     //string lookup table (e.g. for printing to user)
 | 
		
	
		
			
				|  |  |  |  | #define X(name,comment) #name, | 
		
	
		
			
				|  |  |  |  |     const char * TileMaterialString[tilematerial_count+1] = { | 
		
	
		
			
				|  |  |  |  |         TILEMATERIAL_MACRO | 
		
	
		
			
				|  |  |  |  |         0 | 
		
	
		
			
				|  |  |  |  |     }; | 
		
	
		
			
				|  |  |  |  | #undef X | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     //string lookup table (e.g. for printing to user)
 | 
		
	
		
			
				|  |  |  |  | #define X(name,comment) #name, | 
		
	
		
			
				|  |  |  |  |     const char * TileSpecialString[tilespecial_count+1] = { | 
		
	
		
			
				|  |  |  |  |         TILESPECIAL_MACRO | 
		
	
		
			
				|  |  |  |  |         0 | 
		
	
		
			
				|  |  |  |  |     }; | 
		
	
		
			
				|  |  |  |  | #undef X | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     int16_t findSimilarTileType( const int16_t sourceTileType, const TileShape tshape ) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         int16_t match=0; | 
		
	
		
			
				|  |  |  |  |         df::tiletype match = tiletype::Void; | 
		
	
		
			
				|  |  |  |  |         int value = 0, matchv = 0; | 
		
	
		
			
				|  |  |  |  |         const TileRow *source = &tileTypeTable[sourceTileType]; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         const df::tiletype_shape cur_shape = tileShape(sourceTileType); | 
		
	
		
			
				|  |  |  |  |         const df::tiletype_material cur_material = tileMaterial(sourceTileType); | 
		
	
		
			
				|  |  |  |  |         const df::tiletype_special cur_special = tileSpecial(sourceTileType); | 
		
	
		
			
				|  |  |  |  |         const df::tiletype_variant cur_variant = tileVariant(sourceTileType); | 
		
	
		
			
				|  |  |  |  |         const TileDirection cur_direction = tileDirection(sourceTileType); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         //Shortcut.
 | 
		
	
		
			
				|  |  |  |  |         //If the current tile is already a shape match, leave.
 | 
		
	
		
			
				|  |  |  |  |         if( tshape == source->shape ) return sourceTileType; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         //Cheap pseudo-entropy, by using address of the variable on the stack.
 | 
		
	
		
			
				|  |  |  |  |         //No need for real random numbers.
 | 
		
	
		
			
				|  |  |  |  |         static int entropy; | 
		
	
		
			
				|  |  |  |  |         entropy += (int)( (void *)(&match) ); | 
		
	
		
			
				|  |  |  |  |         entropy ^= ((entropy & 0xFF000000)>>24) ^ ((entropy & 0x00FF0000)>>16); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         if (tshape == cur_shape) | 
		
	
		
			
				|  |  |  |  |             return sourceTileType; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         #ifdef assert | 
		
	
		
			
				|  |  |  |  |         assert( sourceTileType >=0 && sourceTileType < TILE_TYPE_ARRAY_LENGTH ); | 
		
	
		
			
				|  |  |  |  |         assert(tiletype::is_valid(sourceTileType)); | 
		
	
		
			
				|  |  |  |  |         #endif | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // Special case for smooth pillars.
 | 
		
	
		
			
				|  |  |  |  |         // When you want a smooth wall, no need to search for best match.  Just use a pillar instead.
 | 
		
	
		
			
				|  |  |  |  |         // Choosing the right direction would require knowing neighbors.
 | 
		
	
		
			
				|  |  |  |  |         if( WALL==tshape && (TILE_SMOOTH==source->special || CONSTRUCTED==source->material) ){ | 
		
	
		
			
				|  |  |  |  |             switch( source->material ){ | 
		
	
		
			
				|  |  |  |  |                 case CONSTRUCTED:      match=495;  break; | 
		
	
		
			
				|  |  |  |  |                 case ICE:              match= 83;  break; | 
		
	
		
			
				|  |  |  |  |                 case VEIN:             match= 82;  break; | 
		
	
		
			
				|  |  |  |  |                 case FEATSTONE:        match= 81;  break; | 
		
	
		
			
				|  |  |  |  |                 case OBSIDIAN:         match= 80;  break; | 
		
	
		
			
				|  |  |  |  |                 case STONE:            match= 79;  break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         if ((tshape == tiletype_shape::WALL) && ((cur_special == tiletype_special::SMOOTH) || (cur_material == tiletype_material::CONSTRUCTION))) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             switch (cur_material) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |             case tiletype_material::CONSTRUCTION: | 
		
	
		
			
				|  |  |  |  |                 return tiletype::ConstructedPillar; | 
		
	
		
			
				|  |  |  |  |             case tiletype_material::FROZEN_LIQUID: | 
		
	
		
			
				|  |  |  |  |                 return tiletype::FrozenPillar; | 
		
	
		
			
				|  |  |  |  |             case tiletype_material::MINERAL: | 
		
	
		
			
				|  |  |  |  |                 return tiletype::MineralPillar; | 
		
	
		
			
				|  |  |  |  |             case tiletype_material::FEATURE: | 
		
	
		
			
				|  |  |  |  |                 return tiletype::FeaturePillar; | 
		
	
		
			
				|  |  |  |  |             case tiletype_material::LAVA_STONE: | 
		
	
		
			
				|  |  |  |  |                 return tiletype::LavaPillar; | 
		
	
		
			
				|  |  |  |  |             case tiletype_material::STONE: | 
		
	
		
			
				|  |  |  |  |                 return tiletype::StonePillar; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             if( match ) return match; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // Run through until perfect match found or hit end.
 | 
		
	
		
			
				|  |  |  |  |         for(int16_t tt=0;tt<TILE_TYPE_ARRAY_LENGTH && value<(8|4|1); ++tt) | 
		
	
		
			
				|  |  |  |  |         FOR_ENUM_ITEMS(tiletype, tt) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             if( tshape == tileTypeTable[tt].shape ) | 
		
	
		
			
				|  |  |  |  |             if (value < (8|4|1)) | 
		
	
		
			
				|  |  |  |  |                 break; | 
		
	
		
			
				|  |  |  |  |             if (tileShape(tt) == tshape) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 //shortcut null entries
 | 
		
	
		
			
				|  |  |  |  |                 if(!tileTypeTable[tt].name) continue; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 // Special flag match is absolutely mandatory!
 | 
		
	
		
			
				|  |  |  |  |                 if( source->special != tileTypeTable[tt].special ) continue; | 
		
	
		
			
				|  |  |  |  |                 if (tileSpecial(tt) != cur_special) | 
		
	
		
			
				|  |  |  |  |                     continue; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 // Special case for constructions.
 | 
		
	
		
			
				|  |  |  |  |                 // Never turn a construction into a non-contruction.
 | 
		
	
		
			
				|  |  |  |  |                 if( CONSTRUCTED == source->material && CONSTRUCTED != tileTypeTable[tt].material ) continue; | 
		
	
		
			
				|  |  |  |  |                 if ((cur_material == tiletype_material::CONSTRUCTION) && (tileMaterial(tt) != cur_material)) | 
		
	
		
			
				|  |  |  |  |                     continue; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 value = 0; | 
		
	
		
			
				|  |  |  |  |                 //Material is high-value match
 | 
		
	
		
			
				|  |  |  |  |                 if( tileTypeTable[tt].material == source->material ) value|=8; | 
		
	
		
			
				|  |  |  |  |                 if (cur_material == tileMaterial(tt)) | 
		
	
		
			
				|  |  |  |  |                     value |= 8; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 // Direction is medium value match
 | 
		
	
		
			
				|  |  |  |  |                 if( tileTypeTable[tt].direction.whole == source->direction.whole ) value|=4; | 
		
	
		
			
				|  |  |  |  |                 if (cur_direction == tileDirection(tt)) | 
		
	
		
			
				|  |  |  |  |                     value |= 4; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 // Variant is low-value match
 | 
		
	
		
			
				|  |  |  |  |                 if( tileTypeTable[tt].variant == source->variant ) value|=1; | 
		
	
		
			
				|  |  |  |  |                 if (cur_variant == tileVariant(tt)) | 
		
	
		
			
				|  |  |  |  |                     value |= 1; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 // Check value against last match.
 | 
		
	
		
			
				|  |  |  |  |                 if (value > matchv) | 
		
	
	
		
			
				
					|  |  |  | @ -742,39 +109,24 @@ namespace DFHack | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         //Post-processing for floors.
 | 
		
	
		
			
				|  |  |  |  |         //Give raw floors variation.
 | 
		
	
		
			
				|  |  |  |  |         //Variant matters, but does not matter for source.
 | 
		
	
		
			
				|  |  |  |  |         //Error on the side of caution.
 | 
		
	
		
			
				|  |  |  |  |         if( FLOOR==tshape && CONSTRUCTED!=source->material && !source->special ) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             //Trying to make a floor type with variants, so randomize the variant.
 | 
		
	
		
			
				|  |  |  |  |             //Very picky, only handle known safe tile types.
 | 
		
	
		
			
				|  |  |  |  |             //Some floors have 4 variants, some have 3, so the order of these matters.
 | 
		
	
		
			
				|  |  |  |  |             switch( match ){ | 
		
	
		
			
				|  |  |  |  |                 case 261: | 
		
	
		
			
				|  |  |  |  |                     //Furrowed soil got chosen by accident.  Fix that.
 | 
		
	
		
			
				|  |  |  |  |                     match=352+(3&entropy); | 
		
	
		
			
				|  |  |  |  |                     break; | 
		
	
		
			
				|  |  |  |  |                 case 336:	//STONE
 | 
		
	
		
			
				|  |  |  |  |                 case 340:	//OBSIDIAN
 | 
		
	
		
			
				|  |  |  |  |                 case 344:	//featstone
 | 
		
	
		
			
				|  |  |  |  |                 case 349:	//grass
 | 
		
	
		
			
				|  |  |  |  |                 case 352:	//soil
 | 
		
	
		
			
				|  |  |  |  |                 case 356:	//wet soil
 | 
		
	
		
			
				|  |  |  |  |                 case 387:	//dry grass
 | 
		
	
		
			
				|  |  |  |  |                 case 394:	//dead grass
 | 
		
	
		
			
				|  |  |  |  |                 case 398:	//grass B
 | 
		
	
		
			
				|  |  |  |  |                 case 441:	//vein
 | 
		
	
		
			
				|  |  |  |  |                     match +=  3&entropy; | 
		
	
		
			
				|  |  |  |  |                     break; | 
		
	
		
			
				|  |  |  |  |                 case 242:	//ASHES
 | 
		
	
		
			
				|  |  |  |  |                 case 258:	//ICE
 | 
		
	
		
			
				|  |  |  |  |                     match += (1&entropy) + (2&entropy); | 
		
	
		
			
				|  |  |  |  |                     break; | 
		
	
		
			
				|  |  |  |  |         // If the selected tile has a variant, then pick a random one
 | 
		
	
		
			
				|  |  |  |  |         match = findRandomVariant(match); | 
		
	
		
			
				|  |  |  |  |         if (match) | 
		
	
		
			
				|  |  |  |  |             return match; | 
		
	
		
			
				|  |  |  |  |         return sourceTileType; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     df::tiletype findRandomVariant (const df::tiletype tile) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         if (tileVariant(tile) == tiletype_variant::NONE) | 
		
	
		
			
				|  |  |  |  |             return tile; | 
		
	
		
			
				|  |  |  |  |         std::vector<df::tiletype> matches; | 
		
	
		
			
				|  |  |  |  |         FOR_ENUM_ITEMS(tiletype, tt) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             if (tileShape(tt) == tileShape(tile) && | 
		
	
		
			
				|  |  |  |  |                 tileMaterial(tt) == tileMaterial(tile) && | 
		
	
		
			
				|  |  |  |  |                 tileSpecial(tt) == tileSpecial(tile)) | 
		
	
		
			
				|  |  |  |  |                 matches.push_back(tt); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         if( match ) return match; | 
		
	
		
			
				|  |  |  |  |         return sourceTileType; | 
		
	
		
			
				|  |  |  |  |         return matches[rand() % matches.size()]; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
	
		
			
				
					|  |  |  | 
 |