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