3 #include "floor-generate.h"
5 #include "rooms-normal.h"
10 * @brief タイプ9の部屋…フラクタルカーブによる洞窟生成 / Type 9 -- Driver routine to create fractal grid
13 bool build_type9(player_type *player_ptr)
15 int grd, roug, cutoff;
16 POSITION xsize, ysize, y0, x0;
18 bool done, light, room;
20 /* get size: note 'Evenness'*/
21 xsize = randint1(22) * 2 + 6;
22 ysize = randint1(15) * 2 + 6;
24 /* Find and reserve some space in the dungeon. Get center of room. */
25 floor_type *floor_ptr = player_ptr->current_floor_ptr;
26 if (!find_space(player_ptr, &y0, &x0, ysize + 1, xsize + 1))
28 /* Limit to the minimum room size, and retry */
32 /* Find and reserve some space in the dungeon. Get center of room. */
33 if (!find_space(player_ptr, &y0, &x0, ysize + 1, xsize + 1))
39 return build_type1(player_ptr);
46 if ((floor_ptr->dun_level <= randint1(25)) && !(d_info[floor_ptr->dungeon_idx].flags1 & DF1_DARKNESS)) light = TRUE;
50 /* Note: size must be even or there are rounding problems
51 * This causes the tunnels not to connect properly to the room */
53 /* testing values for these parameters feel free to adjust */
54 grd = 1 << (randint0(4));
56 /* want average of about 16 */
57 roug = randint1(8) * randint1(4);
60 cutoff = randint1(xsize / 4) + randint1(ysize / 4) +
61 randint1(xsize / 4) + randint1(ysize / 4);
64 generate_hmap(floor_ptr, y0, x0, xsize, ysize, grd, roug, cutoff);
66 /* Convert to normal format + clean up */
67 done = generate_fracave(player_ptr, y0, x0, xsize, ysize, cutoff, light, room);