1 #define ALLOW_CAVERNS_AND_LAKES
3 #define SAFE_MAX_ATTEMPTS 5000
6 * Dungeon generation values
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 */
17 * Dungeon tunnel generation values
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
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;
39 * Dungeon streamer generation values
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- */
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 */
59 * Dungeon treausre allocation values
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 */
67 * Hack -- Dungeon allocation "places"
69 #define ALLOC_SET_CORR 1 /* Hallway */
70 #define ALLOC_SET_ROOM 2 /* Room */
71 #define ALLOC_SET_BOTH 3 /* Anywhere */
74 * Hack -- Dungeon allocation "types"
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 */
85 * The "size" of a "generation block" in grids
91 * Maximum numbers of rooms along each axis (currently 6x6)
93 #define MAX_ROOMS_ROW (MAX_HGT / BLOCK_HGT)
94 #define MAX_ROOMS_COL (MAX_WID / BLOCK_WID)
98 * Bounds on some arrays used in the "dun_data" structure.
99 * These bounds are checked, though usually this is a formality.
108 * Structure to hold all "dungeon generation" data
111 typedef struct dun_data dun_data;
115 /* Array of centers of rooms */
117 coord cent[CENT_MAX];
119 /* Array of possible door locations */
121 coord door[DOOR_MAX];
123 /* Array of wall piercing locations */
125 coord wall[WALL_MAX];
127 /* Array of tunnel grids */
129 coord tunn[TUNN_MAX];
131 /* Number of blocks along each axis */
135 /* Array of which blocks are used */
136 bool room_map[MAX_ROOMS_ROW][MAX_ROOMS_COL];
138 /* Various type of dungeon floors */
145 extern dun_data *dun;