Necromancer!
2 main problems with this:tile display and item handling.
the "robust" solution: this would be to simply expand the z levels to 7 (or whatever realy) times what they are now. creatures would then be x number of tiles tall, and you would be able to dig and build on multeple levels at the same time.
pros: (ignoring coding requirements) allows for creatures to have a different height, e.g. dorfs are 4 tiles high, and humies are 6. dorfs dig 5 unit high tunnels, and build 5 unit high walls. material usage is made consistent (more or less) as a wall would now need the right amount of material to build (depending on how high it is). floors are now one tile thick, instead of existing between tiles. slops are natural. no more x/7 water, so no more strange flows. a puddle is only on tile deep, and water would only slosh around if there was a tile of water under it. items would also have to be given a height. tables would be 2 units high for example. chairs might be 3. for dorfs that is, for humies it would be different. this would also help to define an exact volume for tiles, as 1 tile would be about 1 foot thick.
cons: requires multi-tile creature support, as creatures will need to travel through a volume. item definitions just got crazy. display and designations also just got really complicated. the learning curve is no longer wall, it is an overhang.
mitigation: many possibilities, but here is my idea: set the default "height view". what i mean by this is set the volume you want to be viewed in one display tile. for dorfs this would be 5. so looking at a tile would also show the contents of that tile and the next 4 tiles up. volume of water wold be conveyed as it is now, with a number, but the number would be a different fraction. volumes of dirt would have to be conveyed as well. in the case of a 7 height standard you would use . , ` ' " : ; and # the standard full tile.
. is completely empty, with a floor
, is on unit of rock/dirt/ruble
` is two units
' is three
etc.
# is displayed as a solid wall like we have now.
you will have to either k over the tile or switch to a finer z level resolution to see the exact distribution of those tiles. i do not think there is any way around that. any item that is contained in a z slice that you are looking at would also have to show up in the tile, even if it also occupies space outside your current view. moving up and down should move you up and down in blocks of whatever your resolution is set to. so for dorfs ever press of > or < would move you up or down 5 tiles. designations would start on the bottom tiles and designate the entire 5 unit volume, including any partial tiles. you could also enter a finer resolution mode to carve out only x tiles high from this location. so you would carve out a 2 tile high crawl space for water, or a 1 tile high shelf in the wall. you would also be able to manually dig out stairs and slopes, though a designation tool for these should also exist (our current stairs would become a carved out ladder). since items would now have volume as well, things could now be on top of other items. a barrel falling onto a table would be supported 2 units above the floor the table was on. if your view only contained the legs of he table you would only see that as occupying the tile, you would have to scroll up to see the barrel. this also solves the quantum stockpile problem, but would be very difficult to code. there would also be the issue of unusual items balancing on top of each other. a "balance" mechanic could be added to prevent a bin on a statue on a table on a chair. items may also have to have a weight limit to prevent other weirdness, but this whole thing is already complex enough, and i thing we can make due without it (and without balance for that matter)
there is also the problem of multi-tile items. once a volume is more rigidly defined, and multi-tile creatures are in multi-tile furniture is a must. a 2x2x8 golem race is not going to want to use a 1x1x4 chair to sit on. how do you handle a 3x3 table sitting on a slope? or on the edge of a cliff? at this point a balance mechanic is almost a requirement. also how do you display it? if it were me i would just stretch the table/item/creature character over the required number of tiles. there will also have to be a rotation mechanic of some kine to handle items/creatures who are not square. . .
the "simple" way: this would keep the display more or less the way it is now, but would add the concept of "dirt" volume
as above this volume would be displaye with . , ` ' " : ; and #
. is a standard floor
, is one unit of "rubble"
` is two
etc.
# is walls as we currently have them.
slopes would not exist anymore, and transitioning from one z level to another would only be allowed if the volume of the adjacent tile was 4 or more. so . ; #
would be considered the same type of slope we have now. . ' #
would be a wall. i know the volume math does not add up, but i am trying to keep this very simple. any more complex and you basically run into the above complications. you may be able to get away with "creature cannot traverse x difference in volume" and not run into to many issues though. so a dorf traverseable slope wold be . " #
for the steepest, . ` ; #
for the next steepest etc. i would buy that. slope and item handling would be just as it is now, with items falling onto a volume of "rubble" only showing up on that z level. in this version there is not such thing as a crawl space, and rubble is assumed to occupy space from the floor up. material composition its really irrelevant to this solution, but i suppose if the material rework and hauling is ever done, then one unit of stone/dirt/sand would be produced for each volume contained in the tile. the only other issue is water. near as i can figure it the current water display would have to be modified to tell the player how much volume that tile is capable of holding. so water would be displayed as 7/7 or 5/5 to communicate an empty tile and a 2/7 rock tile, respectively. dig and smooth commands should work on a tile with any volume, and reduce tiles to 0 volume and an appropriate number of items. a fill command would also be nice, and would move aggregate to that tile to fill it, where it would become generic " rock rubble". this would allow a large number of other suggestions to be implemented as well. building can either be built only on an empty tile, or would automatically empty the tile. limitations could be placed as needed, for example smooth would only work on tiles less than 3/7, dig would only work on tiles more than 2/7, and building can only be placed on tile 1/7 or less. this solution also leaves the tile volume question ambiguous, so the multi-tile creature/item problem is put off (again).
conclusion:
the "expand the z levels" idea, while very robust, would basically require a rewrite of almost everything. while i like this idea the most, as it adds the most complexity and realism, it would also add a lot of problems, weirdness and inconsistencies. by the time it is fully implemented you may as well just switch the display to the 3rd dimension as well. it would make more sense that way.
the "simple" solution, as the current solution does, simply ignores the problems and makes the gameplay work. i think it does add slightly to the game though, and does solve a few of the more interesting issues, such as the ice volume issues, and allows us to implement a few nice features such as earthen dams and sea walls, refilling moats for sieges, rubble in mining and other ideas, while at the same time allowing us to preserve the spirit of the game and its ascii based roots. it can (probably) be added with a "simple" addition to the map data, which means that it may actually have a shot at happening.
either way the current slope handling seems just a bit off. we don not really have the ability to have gentile hills, mounds of trash and other niceties. i think some sort of revamp is in order.