worldgen for context..
Most people are familiar with what occurs normally or naturally in the caverns. There are generally pools of water, fungus trees, and shrubs of varying kinds, with the crops required by a dwarven civ (like pigtails, plump helmets, quarry bushes, and similar).
How to get those is pretty straightforward, set your cavern water to a reasonably high value, you get the crops you need, all good.
From time to time, however, you'll find a cavern that has 0-9 water in it, and there are no shrubs. Some people call these "Dry Caverns". The wiki says "Any cavern layer without a pool of water will have only muddy dense floor fungus, and no plants or trees except blood thorns."
Yet, there are two extra types, that aren't that well documented.
The "no fungus trees, but shrubs" and "no trees, no shrubs, brown hell" variants.
Today, using the worldgen above, I managed to find examples of these and posit a theory as to the scenarios that lead to their creation.
like any time there is a wet/dry underground region adjacency, there is a chance one of these two variants can be created.
At the edges of each underground biome (on the pre-embark map) where they meet, you can get one of these:
So, if you ever wanted to create a challenge embark with nothing in the caverns, or something very specific, with respect to trees, shrubs, or the lack of either or both, now you can.
Thanks to PatrikLundell who pointed me in the right direction to gather this information..
Underground region is:0 Water is:13 Openness Min: 89 Layer depth: 0 <- dwarven civ starting area, water 10+.
type = 0
name = <language_name: 0000022D335DED08>
index = 0
layer_depth = 0
layer_depth_p1a = 1
layer_depth_p1b = 3
water = 13
unk_7c = 69
openness_min = 89
openness_max = 100
passage_density_min = 0
passage_density_max = 0
region_coords = <coord2d_path: 0000022D335DED98>
region_min_z = <vector<int16_t>[112]: 0000022D335DEDC8>
region_max_z = <vector<int16_t>[112]: 0000022D335DEDE0>
feature_init = <feature_init_subterranean_from_layerst: 0000022D33C130B0>
########################################################################################################
0,0|0,1|0,2|0,3|0,4|0,5|0,6|0,7|0,8|0,9|0,10|0,11|1,0|1,1|1,2|1,3|1,4|1,5|1,6|1,7|1,8|1,9|1,10|1,11|2,0|2,1|2,2|2,3|2,4|2,5|2,6|2,7|2,8|2,9|2,10|2,11|3,0|3,1|3,2|3,3|3,4|3,5|3,6|3,7|3,8|3,9|3,10|3,11|4,0|4,1|4,2|4,3|4,4|4,5|4,6|4,7|4,8|4,9|4,10|4,11|5,0|5,1|5,2|5,3|5,4|5,5|5,6|5,7|5,8|5,9|5,10|5,11|6,0|6,1|6,2|6,3|6,4|6,5|6,6|6,7|6,8|6,9|6,10|7,0|7,1|7,2|7,3|7,4|7,5|7,6|7,7|7,8|7,9|8,0|8,1|8,2|8,3|8,4|8,5|8,6|8,7|9,0|9,1|9,2|9,3|9,4|9,5|9,6|9,7|10,3|10,4|10,5|
########################################################################################################
Underground region is:1 Water is:1 Openness Min: 100 Layer depth: 0 <- dry/bloodthorn caverns
type = 0
name = <language_name: 0000022D335DDF88>
index = 1
layer_depth = 0
layer_depth_p1a = 1
layer_depth_p1b = 3
water = 1
unk_7c = 0
openness_min = 100
openness_max = 100
passage_density_min = 0
passage_density_max = 0
region_coords = <coord2d_path: 0000022D335DE018>
region_min_z = <vector<int16_t>[26]: 0000022D335DE048>
region_max_z = <vector<int16_t>[26]: 0000022D335DE060>
feature_init = <feature_init_subterranean_from_layerst: 0000022D33C13FB0>
########################################################################################################
0,12|0,13|0,14|0,15|0,16|1,12|1,13|1,14|1,15|1,16|2,12|2,13|2,14|2,15|2,16|3,12|3,13|3,14|3,15|3,16|4,12|4,13|4,14|4,15|4,16|5,16|
########################################################################################################
Underground region is:2 Water is:4 Openness Min: 93 Layer depth: 0 <- dry/bloodthorn caverns
type = 0
name = <language_name: 0000022D335DD328>
index = 2
layer_depth = 0
layer_depth_p1a = 1
layer_depth_p1b = 3
water = 4
unk_7c = 2
openness_min = 93
openness_max = 100
passage_density_min = 0
passage_density_max = 0
region_coords = <coord2d_path: 0000022D335DD3B8>
region_min_z = <vector<int16_t>[46]: 0000022D335DD3E8>
region_max_z = <vector<int16_t>[46]: 0000022D335DD400>
feature_init = <feature_init_subterranean_from_layerst: 0000022D33C141F0>
########################################################################################################
10,0|10,1|10,2|10,6|11,0|11,1|11,2|11,3|11,4|11,5|11,6|12,0|12,1|12,2|12,3|12,4|12,5|12,6|13,0|13,1|13,2|13,3|13,4|13,5|13,6|14,0|14,1|14,2|14,3|14,4|14,5|14,6|15,0|15,1|15,2|15,3|15,4|15,5|15,6|16,0|16,1|16,2|16,3|16,4|16,5|16,6|
########################################################################################################
Underground region is:3 Water is:2 Openness Min: 100 Layer depth: 0 <- dry/bloodthorn caverns
type = 0
name = <language_name: 0000022D335DCB48>
index = 3
layer_depth = 0
layer_depth_p1a = 1
layer_depth_p1b = 3
water = 2
unk_7c = 65
openness_min = 100
openness_max = 100
passage_density_min = 0
passage_density_max = 0
region_coords = <coord2d_path: 0000022D335DCBD8>
region_min_z = <vector<int16_t>[105]: 0000022D335DCC08>
region_max_z = <vector<int16_t>[105]: 0000022D335DCC20>
feature_init = <feature_init_subterranean_from_layerst: 0000022D33C131D0>
########################################################################################################
5,12|5,13|5,14|5,15|6,11|6,12|6,13|6,14|6,15|6,16|7,10|7,11|7,12|7,13|7,14|7,15|7,16|8,8|8,9|8,10|8,11|8,12|8,13|8,14|8,15|8,16|9,8|9,9|9,10|9,11|9,12|9,13|9,14|9,15|9,16|10,7|10,8|10,9|10,10|10,11|10,12|10,13|10,14|10,15|10,16|11,7|11,8|11,9|11,10|11,11|11,12|11,13|11,14|11,15|11,16|12,7|12,8|12,9|12,10|12,11|12,12|12,13|12,14|12,15|12,16|13,7|13,8|13,9|13,10|13,11|13,12|13,13|13,14|13,15|13,16|14,7|14,8|14,9|14,10|14,11|14,12|14,13|14,14|14,15|14,16|15,7|15,8|15,9|15,10|15,11|15,12|15,13|15,14|15,15|15,16|16,7|16,8|16,9|16,10|16,11|16,12|16,13|16,14|16,15|16,16|
########################################################################################################