1 #pragma once 2 3 #include "tag-version.h" 4 5 // When adding: 6 // * Add an entry in feature-data.h for the feature. 7 // * edit dat/descript/features.txt and add a 8 // long description if appropriate. 9 // * check the feat_* functions in terrain.cc and make sure 10 // they return sane values for your new feature. 11 // * edit mapdef.cc and add a symbol to _glyph_to_feat() for the feature, 12 // if you want vault maps to be able to use it directly . If you do, also 13 // update docs/develop/levels/syntax.txt with the new symbol. 14 enum dungeon_feature_type 15 { 16 DNGN_UNSEEN = 0, // must be zero 17 DNGN_CLOSED_DOOR, 18 #if TAG_MAJOR_VERSION > 34 19 DNGN_CLOSED_CLEAR_DOOR, 20 #endif 21 DNGN_RUNED_DOOR, 22 #if TAG_MAJOR_VERSION > 34 23 DNGN_RUNED_CLEAR_DOOR, 24 #endif 25 DNGN_SEALED_DOOR, 26 #if TAG_MAJOR_VERSION > 34 27 DNGN_SEALED_CLEAR_DOOR, 28 #endif 29 DNGN_TREE, 30 #if TAG_MAJOR_VERSION > 34 31 DNGN_MANGROVE, // Swamp's tree type 32 DNGN_DEMONIC_TREE, // tree used in Abyss and Pan 33 DNGN_PETRIFIED_TREE, // tree but lrd-able 34 #endif 35 36 // Walls 37 DNGN_METAL_WALL, 38 DNGN_CRYSTAL_WALL, 39 DNGN_ROCK_WALL, 40 DNGN_SLIMY_WALL, 41 DNGN_STONE_WALL, 42 DNGN_PERMAROCK_WALL, // for undiggable walls 43 DNGN_CLEAR_ROCK_WALL, // transparent walls 44 DNGN_CLEAR_STONE_WALL, 45 DNGN_CLEAR_PERMAROCK_WALL, 46 47 DNGN_GRATE, 48 49 // Misc solid features 50 DNGN_OPEN_SEA, // Shoals equivalent for permarock 51 DNGN_LAVA_SEA, // Gehenna equivalent for permarock 52 #if TAG_MAJOR_VERSION > 34 53 DNGN_ENDLESS_SALT, // Desolation equivalent for permarock 54 #endif 55 DNGN_ORCISH_IDOL, 56 DNGN_GRANITE_STATUE, 57 DNGN_MALIGN_GATEWAY, 58 59 #if TAG_MAJOR_VERSION == 34 60 DNGN_LAVA = 30, 61 #else 62 DNGN_LAVA, 63 #endif 64 DNGN_DEEP_WATER, 65 66 DNGN_SHALLOW_WATER, 67 #if TAG_MAJOR_VERSION > 34 68 DNGN_TOXIC_BOG, // Eringya's Noxious Bog 69 #endif 70 71 DNGN_FLOOR, 72 DNGN_OPEN_DOOR, 73 #if TAG_MAJOR_VERSION > 34 74 DNGN_OPEN_CLEAR_DOOR, 75 #endif 76 77 #if TAG_MAJOR_VERSION == 34 78 DNGN_TRAP_MECHANICAL, 79 #endif 80 DNGN_TRAP_TELEPORT, 81 #if TAG_MAJOR_VERSION > 34 82 DNGN_TRAP_TELEPORT_PERMANENT, 83 #endif 84 DNGN_TRAP_SHAFT, 85 DNGN_TRAP_WEB, 86 #if TAG_MAJOR_VERSION > 34 87 DNGN_TRAP_ALARM, 88 DNGN_TRAP_ZOT, 89 DNGN_TRAP_DISPERSAL, 90 DNGN_PASSAGE_OF_GOLUBRIA, 91 #endif 92 #if TAG_MAJOR_VERSION > 34 93 DNGN_TRAP_ARROW, 94 DNGN_TRAP_SPEAR, 95 DNGN_TRAP_BLADE, 96 DNGN_TRAP_DART, 97 DNGN_TRAP_BOLT, 98 DNGN_TRAP_NET, 99 DNGN_TRAP_PLATE, 100 #endif 101 #if TAG_MAJOR_VERSION == 34 102 DNGN_UNDISCOVERED_TRAP, 103 #endif 104 105 DNGN_ENTER_SHOP, 106 DNGN_ABANDONED_SHOP, 107 108 DNGN_STONE_STAIRS_DOWN_I, 109 DNGN_STONE_STAIRS_DOWN_II, 110 DNGN_STONE_STAIRS_DOWN_III, 111 DNGN_ESCAPE_HATCH_DOWN, 112 113 // corresponding up stairs (same order as above) 114 DNGN_STONE_STAIRS_UP_I, 115 DNGN_STONE_STAIRS_UP_II, 116 DNGN_STONE_STAIRS_UP_III, 117 DNGN_ESCAPE_HATCH_UP, 118 119 #if TAG_MAJOR_VERSION > 34 120 DNGN_TRANSPORTER, 121 DNGN_TRANSPORTER_LANDING, 122 #endif 123 124 // Various gates 125 DNGN_ENTER_DIS, 126 DNGN_ENTER_GEHENNA, 127 DNGN_ENTER_COCYTUS, 128 DNGN_ENTER_TARTARUS, 129 DNGN_ENTER_ABYSS, 130 DNGN_EXIT_ABYSS, 131 DNGN_STONE_ARCH, 132 DNGN_ENTER_PANDEMONIUM, 133 DNGN_EXIT_PANDEMONIUM, 134 DNGN_TRANSIT_PANDEMONIUM, 135 DNGN_EXIT_DUNGEON, 136 DNGN_EXIT_THROUGH_ABYSS, 137 DNGN_EXIT_HELL, 138 DNGN_ENTER_HELL, 139 #if TAG_MAJOR_VERSION == 34 140 DNGN_ENTER_LABYRINTH, 141 DNGN_TELEPORTER, 142 DNGN_ENTER_PORTAL_VAULT, 143 DNGN_EXIT_PORTAL_VAULT, 144 #endif 145 DNGN_EXPIRED_PORTAL, 146 147 // Entrances to various branches 148 #if TAG_MAJOR_VERSION == 34 149 DNGN_ENTER_DWARF, 150 #endif 151 DNGN_ENTER_ORC, 152 DNGN_ENTER_LAIR, 153 DNGN_ENTER_SLIME, 154 DNGN_ENTER_VAULTS, 155 DNGN_ENTER_CRYPT, 156 #if TAG_MAJOR_VERSION == 34 157 DNGN_ENTER_BLADE, 158 #endif 159 DNGN_ENTER_ZOT, 160 DNGN_ENTER_TEMPLE, 161 DNGN_ENTER_SNAKE, 162 DNGN_ENTER_ELF, 163 DNGN_ENTER_TOMB, 164 DNGN_ENTER_SWAMP, 165 DNGN_ENTER_SHOALS, 166 DNGN_ENTER_SPIDER, 167 #if TAG_MAJOR_VERSION == 34 168 DNGN_ENTER_FOREST, 169 #endif 170 DNGN_ENTER_DEPTHS, 171 172 // Exits from various branches 173 // Order must be the same as above 174 #if TAG_MAJOR_VERSION == 34 175 DNGN_EXIT_DWARF, 176 #endif 177 DNGN_EXIT_ORC, 178 DNGN_EXIT_LAIR, 179 DNGN_EXIT_SLIME, 180 DNGN_EXIT_VAULTS, 181 DNGN_EXIT_CRYPT, 182 #if TAG_MAJOR_VERSION == 34 183 DNGN_EXIT_BLADE, 184 #endif 185 DNGN_EXIT_ZOT, 186 DNGN_EXIT_TEMPLE, 187 DNGN_EXIT_SNAKE, 188 DNGN_EXIT_ELF, 189 DNGN_EXIT_TOMB, 190 DNGN_EXIT_SWAMP, 191 DNGN_EXIT_SHOALS, 192 DNGN_EXIT_SPIDER, 193 #if TAG_MAJOR_VERSION == 34 194 DNGN_EXIT_FOREST, 195 #endif 196 DNGN_EXIT_DEPTHS, 197 198 DNGN_ALTAR_ZIN, 199 DNGN_ALTAR_SHINING_ONE, 200 DNGN_ALTAR_KIKUBAAQUDGHA, 201 DNGN_ALTAR_YREDELEMNUL, 202 DNGN_ALTAR_XOM, 203 DNGN_ALTAR_VEHUMET, 204 DNGN_ALTAR_OKAWARU, 205 DNGN_ALTAR_MAKHLEB, 206 DNGN_ALTAR_SIF_MUNA, 207 DNGN_ALTAR_TROG, 208 DNGN_ALTAR_NEMELEX_XOBEH, 209 DNGN_ALTAR_ELYVILON, 210 DNGN_ALTAR_LUGONU, 211 DNGN_ALTAR_BEOGH, 212 DNGN_ALTAR_JIYVA, 213 DNGN_ALTAR_FEDHAS, 214 DNGN_ALTAR_CHEIBRIADOS, 215 DNGN_ALTAR_ASHENZARI, 216 DNGN_ALTAR_DITHMENOS, 217 #if TAG_MAJOR_VERSION > 34 218 DNGN_ALTAR_GOZAG, 219 DNGN_ALTAR_QAZLAL, 220 DNGN_ALTAR_RU, 221 DNGN_ALTAR_PAKELLAS, 222 DNGN_ALTAR_USKAYAW, 223 DNGN_ALTAR_HEPLIAKLQANA, 224 DNGN_ALTAR_WU_JIAN, 225 DNGN_ALTAR_ECUMENICAL, 226 #endif 227 228 DNGN_FOUNTAIN_BLUE, 229 DNGN_FOUNTAIN_SPARKLING, // aka 'Magic Fountain' {dlb} 230 DNGN_FOUNTAIN_BLOOD, 231 #if TAG_MAJOR_VERSION == 34 232 DNGN_DRY_FOUNTAIN_BLUE, 233 DNGN_DRY_FOUNTAIN_SPARKLING, 234 DNGN_DRY_FOUNTAIN_BLOOD, 235 #endif 236 DNGN_DRY_FOUNTAIN, 237 238 // Not meant to ever appear in env.grid(). 239 DNGN_EXPLORE_HORIZON, // dummy for redefinition 240 #if TAG_MAJOR_VERSION > 34 241 DNGN_TRAVEL_TRAIL, // dummy for redefinition 242 #endif 243 244 DNGN_UNKNOWN_ALTAR, 245 DNGN_UNKNOWN_PORTAL, 246 247 DNGN_ABYSSAL_STAIR, 248 #if TAG_MAJOR_VERSION == 34 249 DNGN_BADLY_SEALED_DOOR, 250 #endif 251 252 DNGN_SEALED_STAIRS_UP, 253 DNGN_SEALED_STAIRS_DOWN, 254 #if TAG_MAJOR_VERSION == 34 255 DNGN_TRAP_ALARM, 256 DNGN_TRAP_ZOT, 257 DNGN_PASSAGE_OF_GOLUBRIA, 258 #endif 259 260 DNGN_ENTER_ZIGGURAT, 261 DNGN_ENTER_BAZAAR, 262 DNGN_ENTER_TROVE, 263 DNGN_ENTER_SEWER, 264 DNGN_ENTER_OSSUARY, 265 DNGN_ENTER_BAILEY, 266 #if TAG_MAJOR_VERSION > 34 267 DNGN_ENTER_GAUNTLET, 268 #endif 269 DNGN_ENTER_ICE_CAVE, 270 DNGN_ENTER_VOLCANO, 271 DNGN_ENTER_WIZLAB, 272 DNGN_ENTER_DESOLATION, 273 274 DNGN_EXIT_ZIGGURAT, 275 DNGN_EXIT_BAZAAR, 276 DNGN_EXIT_TROVE, 277 DNGN_EXIT_SEWER, 278 DNGN_EXIT_OSSUARY, 279 DNGN_EXIT_BAILEY, 280 #if TAG_MAJOR_VERSION > 34 281 DNGN_EXIT_GAUNTLET, 282 #endif 283 DNGN_EXIT_ICE_CAVE, 284 DNGN_EXIT_VOLCANO, 285 DNGN_EXIT_WIZLAB, 286 #if TAG_MAJOR_VERSION == 34 287 DNGN_EXIT_LABYRINTH, 288 #endif 289 DNGN_EXIT_DESOLATION, 290 #if TAG_MAJOR_VERSION == 34 291 292 DNGN_ALTAR_GOZAG, 293 DNGN_ALTAR_QAZLAL, 294 DNGN_ALTAR_RU, 295 296 DNGN_TRAP_SHADOW, 297 DNGN_TRAP_SHADOW_DORMANT, 298 DNGN_ALTAR_ECUMENICAL, 299 DNGN_ALTAR_PAKELLAS, 300 DNGN_ALTAR_USKAYAW, 301 DNGN_ALTAR_HEPLIAKLQANA, 302 303 DNGN_ENDLESS_SALT, 304 DNGN_ALTAR_WU_JIAN, 305 DNGN_TRANSPORTER, 306 DNGN_TRANSPORTER_LANDING, 307 DNGN_TRAP_DISPERSAL, 308 DNGN_ENTER_GAUNTLET, 309 DNGN_EXIT_GAUNTLET, 310 DNGN_CLOSED_CLEAR_DOOR, 311 DNGN_OPEN_CLEAR_DOOR, 312 DNGN_RUNED_CLEAR_DOOR, 313 DNGN_SEALED_CLEAR_DOOR, 314 DNGN_TOXIC_BOG, 315 #endif 316 317 #if TAG_MAJOR_VERSION == 34 318 DNGN_TRAP_ARROW, 319 DNGN_TRAP_SPEAR, 320 DNGN_TRAP_BLADE, 321 DNGN_TRAP_DART, 322 DNGN_TRAP_BOLT, 323 DNGN_TRAP_NET, 324 DNGN_TRAP_PLATE, 325 DNGN_TRAP_TELEPORT_PERMANENT, 326 DNGN_TRAVEL_TRAIL, 327 DNGN_PETRIFIED_TREE, 328 DNGN_MANGROVE, 329 DNGN_DEMONIC_TREE, 330 #endif 331 332 NUM_FEATURES 333 }; 334 COMPILE_CHECK(NUM_FEATURES <= 256); 335