OSDN Git Service

[Feature] *_infoのname、text、tagをstd::stringにする
[hengbandforosx/hengbandosx.git] / src / dungeon / dungeon.h
1 #pragma once
2
3 #include "system/angband.h"
4 #include "grid/feature.h"
5 #include <string>
6
7 #define DUNGEON_FEAT_PROB_NUM 3
8
9 #define DUNGEON_ANGBAND  1
10 #define DUNGEON_GALGALS  2
11 #define DUNGEON_ORC      3
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
28
29 /* A structure for the != dungeon types */
30 typedef struct dungeon_type dungeon_type;
31 struct dungeon_type {
32
33         std::string name; /* Name */
34     std::string text; /* Description */
35
36         POSITION dy{};
37         POSITION dx{};
38
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 */
45
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 */
49         BIT_FLAGS16 pit{};
50         BIT_FLAGS16 nest{};
51         BIT_FLAGS8 mode{}; /* Mode of combinaison of the monster flags */
52
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 */
55
56         BIT_FLAGS flags1{};             /* Flags 1 */
57
58         BIT_FLAGS mflags1{};            /* The monster flags that are allowed */
59         BIT_FLAGS mflags2{};
60         BIT_FLAGS mflags3{};
61         BIT_FLAGS mflags4{};
62         BIT_FLAGS mflags7{};
63         BIT_FLAGS mflags8{};
64         BIT_FLAGS mflags9{};
65         BIT_FLAGS mflagsr{};
66
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{};
71
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 */
76
77         PROB special_div{};     /* % of monsters affected by the flags/races allowed, to add some variety */
78         int tunnel_percent{};
79         int obj_great{};
80         int obj_good{};
81 };
82
83 extern DEPTH *max_dlv;
84 extern dungeon_type *d_info;
85
86 extern DUNGEON_IDX choose_dungeon(concptr note, POSITION y, POSITION x);