OSDN Git Service

refactor compare_weapon_aux
[hengband/hengband.git] / src / generate.h
1 #define ALLOW_CAVERNS_AND_LAKES
2
3 #define SAFE_MAX_ATTEMPTS 5000
4
5 /*
6  * Dungeon generation values
7  */
8 #define DUN_UNUSUAL 250 /* Level/chance of unusual room (was 200) */
9 #define DUN_DEST    18  /* 1/chance of having a destroyed level */
10 #define SMALL_LEVEL 3   /* 1/chance of smaller size (3) */
11 #define EMPTY_LEVEL 24  /* 1/chance of being 'empty' (15) */
12 #define LAKE_LEVEL  24  /* 1/chance of being a lake on the level */
13 #define DARK_EMPTY  5   /* 1/chance of arena level NOT being lit (2) */
14 #define DUN_CAVERN  20  /* 1/chance of having a cavern level */
15
16 /*
17  * Dungeon tunnel generation values
18  */
19 #define DUN_TUN_RND_MIN  5 /* Chance of random direction (was 10) */
20 #define DUN_TUN_RND_MAX 20
21 #define DUN_TUN_CHG_MIN 20 /* Chance of changing direction (was 30) */
22 #define DUN_TUN_CHG_MAX 60
23 #define DUN_TUN_CON_MIN 10 /* Chance of extra tunneling (was 15) */
24 #define DUN_TUN_CON_MAX 40
25 #define DUN_TUN_PEN_MIN 30 /* Chance of doors at room entrances (was 25) */
26 #define DUN_TUN_PEN_MAX 70
27 #define DUN_TUN_JCT_MIN 60 /* Chance of doors at tunnel junctions (was 90) */
28 #define DUN_TUN_JCT_MAX 90
29
30 extern int dun_rooms;
31
32 extern int dun_tun_rnd;
33 extern int dun_tun_chg;
34 extern int dun_tun_con;
35 extern int dun_tun_pen;
36 extern int dun_tun_jct;
37
38 /*
39  * Dungeon streamer generation values
40  */
41 #define DUN_STR_DEN     5       /* Density of streamers */
42 #define DUN_STR_RNG     5       /* Width of streamers */
43 #define DUN_STR_MAG     6       /* Number of magma streamers */
44 #define DUN_STR_MC     30       /* 1/chance of treasure per magma */
45 #define DUN_STR_QUA     4       /* Number of quartz streamers */
46 #define DUN_STR_QC     15       /* 1/chance of treasure per quartz */
47 #define DUN_STR_WLW     1       /* Width of lava & water streamers -KMW- */
48 #define DUN_STR_DWLW    8       /* Density of water & lava streams -KMW- */
49
50 #define DUN_MOS_DEN     2       /* Density of moss streamers */
51 #define DUN_MOS_RNG     10      /* Width of moss streamers */
52 #define DUN_STR_MOS     2       /* Number of moss streamers */
53 #define DUN_WAT_DEN     15      /* Density of rivers */
54 #define DUN_WAT_RNG     2       /* Width of rivers */
55 #define DUN_STR_WAT     3       /* Max number of rivers */
56 #define DUN_WAT_CHG     50      /* 1 in 50 chance of junction in river */
57
58 /*
59  * Dungeon treausre allocation values
60  */
61 #define DUN_AMT_ROOM    9       /* Amount of objects for rooms */
62 #define DUN_AMT_ITEM    3       /* Amount of objects for rooms/corridors */
63 #define DUN_AMT_GOLD    3       /* Amount of treasure for rooms/corridors */
64 #define DUN_AMT_INVIS 3 /* Amount of invisible walls for rooms/corridors */
65
66 /*
67  * Hack -- Dungeon allocation "places"
68  */
69 #define ALLOC_SET_CORR          1       /* Hallway */
70 #define ALLOC_SET_ROOM          2       /* Room */
71 #define ALLOC_SET_BOTH          3       /* Anywhere */
72
73 /*
74  * Hack -- Dungeon allocation "types"
75  */
76 #define ALLOC_TYP_RUBBLE        1       /* Rubble */
77 #define ALLOC_TYP_TRAP          3       /* Trap */
78 #define ALLOC_TYP_GOLD          4       /* Gold */
79 #define ALLOC_TYP_OBJECT        5       /* Object */
80 #define ALLOC_TYP_INVIS         6       /* Invisible wall */
81
82
83
84 /*
85  * The "size" of a "generation block" in grids
86  */
87 #define BLOCK_HGT       11
88 #define BLOCK_WID       11
89
90 /*
91  * Maximum numbers of rooms along each axis (currently 6x6)
92  */
93 #define MAX_ROOMS_ROW   (MAX_HGT / BLOCK_HGT)
94 #define MAX_ROOMS_COL   (MAX_WID / BLOCK_WID)
95
96
97 /*
98  * Bounds on some arrays used in the "dun_data" structure.
99  * These bounds are checked, though usually this is a formality.
100  */
101 #define CENT_MAX        100
102 #define DOOR_MAX        200
103 #define WALL_MAX        500
104 #define TUNN_MAX        900
105
106
107 /*
108  * Structure to hold all "dungeon generation" data
109  */
110
111 typedef struct dun_data dun_data;
112
113 struct dun_data
114 {
115         /* Array of centers of rooms */
116         int cent_n;
117         coord cent[CENT_MAX];
118
119         /* Array of possible door locations */
120         int door_n;
121         coord door[DOOR_MAX];
122
123         /* Array of wall piercing locations */
124         int wall_n;
125         coord wall[WALL_MAX];
126
127         /* Array of tunnel grids */
128         int tunn_n;
129         coord tunn[TUNN_MAX];
130
131         /* Number of blocks along each axis */
132         int row_rooms;
133         int col_rooms;
134
135         /* Array of which blocks are used */
136         bool room_map[MAX_ROOMS_ROW][MAX_ROOMS_COL];
137
138         /* Various type of dungeon floors */
139         bool destroyed;
140         bool empty_level;
141         bool cavern;
142         int laketype;
143 };
144
145 extern dun_data *dun;