#define ROOM_T_TRAP 13 /*!<部屋型ID:トラップ部屋 / Piranha/Armageddon trap room */
#define ROOM_T_GLASS 14 /*!<部屋型ID:ガラス部屋 / Glass room */
#define ROOM_T_ARCADE 15 /*!<部屋型ID:商店 / Arcade */
+#define ROOM_T_FIXED 16 /*!<部屋型ID:固定部屋 / Fixed room */
-#define ROOM_T_MAX 16 /*!<部屋型ID最大数 */
+#define ROOM_T_MAX 17 /*!<部屋型ID最大数 */
/*
};
+/*!
+* vaultに配置可能なモンスターの条件を指定するマクロ / Monster validation macro
+*
+* Line 1 -- forbid town monsters
+* Line 2 -- forbid uniques
+* Line 3 -- forbid aquatic monsters
+*/
+#define vault_monster_okay(I) \
+ (mon_hook_dungeon(I) && \
+ !(r_info[I].flags1 & RF1_UNIQUE) && \
+ !(r_info[I].flags7 & RF7_UNIQUE2) && \
+ !(r_info[I].flagsr & RFR_RES_ALL) && \
+ !(r_info[I].flags7 & RF7_AQUATIC))
+
+
/* Externs */
#ifdef ALLOW_CAVERNS_AND_LAKES
extern void build_lake(int type);
#endif /* ALLOW_CAVERNS_AND_LAKES */
extern bool generate_rooms(void);
-extern void build_maze_vault(int x0, int y0, int xsize, int ysize, bool is_vault);
-
+extern void build_maze_vault(POSITION x0, POSITION y0, POSITION xsize, POSITION ysize, bool is_vault);
+extern bool find_space(POSITION *y, POSITION *x, POSITION height, POSITION width);
+extern void build_small_room(POSITION x0, POSITION y0);
+extern void add_outer_wall(POSITION x, POSITION y, int light, POSITION x1, POSITION y1, POSITION x2, POSITION y2);
+extern POSITION dist2(POSITION x1, POSITION y1, POSITION x2, POSITION y2, POSITION h1, POSITION h2, POSITION h3, POSITION h4);
+extern void generate_room_floor(POSITION y1, POSITION x1, POSITION y2, POSITION x2, int light);
+extern void generate_fill_perm_bold(POSITION y1, POSITION x1, POSITION y2, POSITION x2);
+extern void generate_hmap(POSITION y0, POSITION x0, POSITION xsiz, POSITION ysiz, int grd, int roug, int cutoff);
+extern bool generate_fracave(POSITION y0, POSITION x0, POSITION xsize, POSITION ysize, int cutoff, bool light, bool room);
+extern void fill_treasure(POSITION x1, POSITION x2, POSITION y1, POSITION y2, int difficulty);
+extern bool generate_lake(POSITION y0, POSITION x0, POSITION xsize, POSITION ysize, int c1, int c2, int c3, int type);
+extern void build_recursive_room(POSITION x1, POSITION y1, POSITION x2, POSITION y2, int power);
+extern void build_room(POSITION x1, POSITION x2, POSITION y1, POSITION y2);
+extern void r_visit(POSITION y1, POSITION x1, POSITION y2, POSITION x2, int node, DIRECTION dir, int *visited);