3 #include "system/angband.h"
4 #include "grid/feature.h"
7 #define DUNGEON_FEAT_PROB_NUM 3
9 #define DUNGEON_ANGBAND 1
10 #define DUNGEON_GALGALS 2
12 #define DUNGEON_MAZE 4
13 #define DUNGEON_DRAGON 5
14 #define DUNGEON_GRAVE 6
15 #define DUNGEON_WOOD 7
16 #define DUNGEON_VOLCANO 8
17 #define DUNGEON_HELL 9
18 #define DUNGEON_HEAVEN 10
19 #define DUNGEON_OCEAN 11
20 #define DUNGEON_CASTLE 12
21 #define DUNGEON_CTH 13
22 #define DUNGEON_MOUNTAIN 14
23 #define DUNGEON_GOLD 15
24 #define DUNGEON_NO_MAGIC 16
25 #define DUNGEON_NO_MELEE 17
26 #define DUNGEON_CHAMELEON 18
27 #define DUNGEON_DARKNESS 19
29 /* A structure for the != dungeon types */
30 typedef struct dungeon_type dungeon_type;
33 std::string name; /* Name */
34 std::string text; /* Description */
39 feat_prob floor[DUNGEON_FEAT_PROB_NUM]{}; /* Floor probability */
40 feat_prob fill[DUNGEON_FEAT_PROB_NUM]{}; /* Cave wall probability */
41 FEAT_IDX outer_wall{}; /* Outer wall tile */
42 FEAT_IDX inner_wall{}; /* Inner wall tile */
43 FEAT_IDX stream1{}; /* stream tile */
44 FEAT_IDX stream2{}; /* stream tile */
46 DEPTH mindepth{}; /* Minimal depth */
47 DEPTH maxdepth{}; /* Maximal depth */
48 PLAYER_LEVEL min_plev{}; /* Minimal plev needed to enter -- it's an anti-cheating mesure */
51 BIT_FLAGS8 mode{}; /* Mode of combinaison of the monster flags */
53 int min_m_alloc_level{}; /* Minimal number of monsters per level */
54 int max_m_alloc_chance{}; /* There is a 1/max_m_alloc_chance chance per round of creating a new monster */
56 BIT_FLAGS flags1{}; /* Flags 1 */
58 BIT_FLAGS mflags1{}; /* The monster flags that are allowed */
67 BIT_FLAGS m_a_ability_flags1{};
68 BIT_FLAGS m_a_ability_flags2{};
69 BIT_FLAGS m_a_ability_flags3{};
70 BIT_FLAGS m_a_ability_flags4{};
72 char r_char[5]{}; /* Monster race allowed */
73 KIND_OBJECT_IDX final_object{}; /* The object you'll find at the bottom */
74 ARTIFACT_IDX final_artifact{}; /* The artifact you'll find at the bottom */
75 MONRACE_IDX final_guardian{}; /* The artifact's guardian. If an artifact is specified, then it's NEEDED */
77 PROB special_div{}; /* % of monsters affected by the flags/races allowed, to add some variety */
83 extern DEPTH *max_dlv;
84 extern dungeon_type *d_info;
86 extern DUNGEON_IDX choose_dungeon(concptr note, POSITION y, POSITION x);