OSDN Git Service

[Refactor] #39970 Moved dungeon*.c/h to dungeon/
[hengband/hengband.git] / src / dungeon / dungeon.h
1 #pragma once
2
3 #define DUNGEON_FEAT_PROB_NUM 3
4
5 #define DUNGEON_ANGBAND  1
6 #define DUNGEON_GALGALS  2
7 #define DUNGEON_ORC      3
8 #define DUNGEON_MAZE     4
9 #define DUNGEON_DRAGON   5
10 #define DUNGEON_GRAVE    6
11 #define DUNGEON_WOOD     7
12 #define DUNGEON_VOLCANO  8
13 #define DUNGEON_HELL     9
14 #define DUNGEON_HEAVEN   10
15 #define DUNGEON_OCEAN    11
16 #define DUNGEON_CASTLE   12
17 #define DUNGEON_CTH      13
18 #define DUNGEON_MOUNTAIN 14
19 #define DUNGEON_GOLD     15
20 #define DUNGEON_NO_MAGIC 16
21 #define DUNGEON_NO_MELEE 17
22 #define DUNGEON_CHAMELEON 18
23 #define DUNGEON_DARKNESS 19
24
25 /* A structure for the != dungeon types */
26 typedef struct dungeon_type dungeon_type;
27 struct dungeon_type {
28
29         STR_OFFSET name; /* Name */
30         STR_OFFSET text; /* Description */
31
32         POSITION dy;
33         POSITION dx;
34
35         feat_prob floor[DUNGEON_FEAT_PROB_NUM]; /* Floor probability */
36         feat_prob fill[DUNGEON_FEAT_PROB_NUM];  /* Cave wall probability */
37         FEAT_IDX outer_wall;                        /* Outer wall tile */
38         FEAT_IDX inner_wall;                        /* Inner wall tile */
39         FEAT_IDX stream1;                           /* stream tile */
40         FEAT_IDX stream2;                           /* stream tile */
41
42         DEPTH mindepth;         /* Minimal depth */
43         DEPTH maxdepth;         /* Maximal depth */
44         PLAYER_LEVEL min_plev;         /* Minimal plev needed to enter -- it's an anti-cheating mesure */
45         BIT_FLAGS16 pit;
46         BIT_FLAGS16 nest;
47         BIT_FLAGS8 mode; /* Mode of combinaison of the monster flags */
48
49         int min_m_alloc_level;  /* Minimal number of monsters per level */
50         int max_m_alloc_chance; /* There is a 1/max_m_alloc_chance chance per round of creating a new monster */
51
52         BIT_FLAGS flags1;               /* Flags 1 */
53
54         BIT_FLAGS mflags1;              /* The monster flags that are allowed */
55         BIT_FLAGS mflags2;
56         BIT_FLAGS mflags3;
57         BIT_FLAGS mflags4;
58         BIT_FLAGS mflags7;
59         BIT_FLAGS mflags8;
60         BIT_FLAGS mflags9;
61         BIT_FLAGS mflagsr;
62
63         BIT_FLAGS m_a_ability_flags1;
64         BIT_FLAGS m_a_ability_flags2;
65         BIT_FLAGS m_a_ability_flags3;
66         BIT_FLAGS m_a_ability_flags4;
67
68         char r_char[5];         /* Monster race allowed */
69         KIND_OBJECT_IDX final_object;   /* The object you'll find at the bottom */
70         ARTIFACT_IDX final_artifact;    /* The artifact you'll find at the bottom */
71         MONRACE_IDX final_guardian;     /* The artifact's guardian. If an artifact is specified, then it's NEEDED */
72
73         PROB special_div;       /* % of monsters affected by the flags/races allowed, to add some variety */
74         int tunnel_percent;
75         int obj_great;
76         int obj_good;
77 };
78
79 extern DEPTH *max_dlv;
80 extern dungeon_type *d_info;
81 extern char *d_name;
82 extern char *d_text;
83
84 extern DUNGEON_IDX choose_dungeon(concptr note, POSITION y, POSITION x);