17 #define set_cave_feat(Y,X,F) (cave[(Y)][(X)].feat = (F)) 18 #define add_cave_info(Y,X,I) (cave[(Y)][(X)].info |= (I)) 29 #define place_rubble(Y,X) set_cave_feat(Y,X,feat_rubble) 37 #define place_up_stairs(Y,X) set_cave_feat(Y,X,feat_up_stair) 45 #define place_down_stairs(Y,X) set_cave_feat(Y,X,feat_down_stair) 53 #define is_floor_bold(Y,X) (cave[Y][X].info & CAVE_FLOOR) 54 #define is_extra_bold(Y,X) (cave[Y][X].info & CAVE_EXTRA) 56 #define is_inner_bold(Y,X) (cave[Y][X].info & CAVE_INNER) 57 #define is_outer_bold(Y,X) (cave[Y][X].info & CAVE_OUTER) 58 #define is_solid_bold(Y,X) (cave[Y][X].info & CAVE_SOLID) 60 #define is_floor_grid(C) ((C)->info & CAVE_FLOOR) 61 #define is_extra_grid(C) ((C)->info & CAVE_EXTRA) 62 #define is_inner_grid(C) ((C)->info & CAVE_INNER) 63 #define is_outer_grid(C) ((C)->info & CAVE_OUTER) 64 #define is_solid_grid(C) ((C)->info & CAVE_SOLID) 66 #define place_floor_bold(Y, X) \ 68 set_cave_feat(Y,X,floor_type[randint0(100)]); \ 69 cave[Y][X].info &= ~(CAVE_MASK); \ 70 add_cave_info(Y,X,CAVE_FLOOR); \ 71 delete_monster(Y, X); \ 74 #define place_floor_grid(C) \ 76 (C)->feat = floor_type[randint0(100)]; \ 77 (C)->info &= ~(CAVE_MASK); \ 78 (C)->info |= CAVE_FLOOR; \ 79 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 82 #define place_extra_bold(Y, X) \ 84 set_cave_feat(Y,X,fill_type[randint0(100)]); \ 85 cave[Y][X].info &= ~(CAVE_MASK); \ 86 add_cave_info(Y,X,CAVE_EXTRA); \ 87 delete_monster(Y, X); \ 90 #define place_extra_grid(C) \ 92 (C)->feat = fill_type[randint0(100)]; \ 93 (C)->info &= ~(CAVE_MASK); \ 94 (C)->info |= CAVE_EXTRA; \ 95 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 98 #define place_extra_perm_bold(Y, X) \ 100 set_cave_feat(Y,X,feat_permanent); \ 101 cave[Y][X].info &= ~(CAVE_MASK); \ 102 add_cave_info(Y,X,CAVE_EXTRA); \ 103 delete_monster(Y, X); \ 106 #define place_extra_perm_grid(C) \ 108 (C)->feat = feat_permanent; \ 109 (C)->info &= ~(CAVE_MASK); \ 110 (C)->info |= CAVE_EXTRA; \ 111 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 114 #define place_extra_noperm_bold(Y, X) \ 116 feature_type *_f_ptr; \ 117 set_cave_feat(Y,X,fill_type[randint0(100)]); \ 118 _f_ptr = &f_info[cave[Y][X].feat]; \ 119 if (permanent_wall(_f_ptr)) cave[Y][X].feat = feat_state(cave[Y][X].feat, FF_UNPERM); \ 120 cave[Y][X].info &= ~(CAVE_MASK); \ 121 add_cave_info(Y,X,CAVE_EXTRA); \ 122 delete_monster(Y, X); \ 125 #define place_inner_bold(Y, X) \ 127 set_cave_feat(Y,X,feat_wall_inner); \ 128 cave[Y][X].info &= ~(CAVE_MASK); \ 129 add_cave_info(Y,X,CAVE_INNER); \ 130 delete_monster(Y, X); \ 133 #define place_inner_grid(C) \ 135 (C)->feat = feat_wall_inner; \ 136 (C)->info &= ~(CAVE_MASK); \ 137 (C)->info |= CAVE_INNER; \ 138 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 141 #define place_inner_perm_bold(Y, X) \ 143 set_cave_feat(Y,X,feat_permanent); \ 144 cave[Y][X].info &= ~(CAVE_MASK); \ 145 add_cave_info(Y,X,CAVE_INNER); \ 146 delete_monster(Y, X); \ 149 #define place_inner_perm_grid(C) \ 151 (C)->feat = feat_permanent; \ 152 (C)->info &= ~(CAVE_MASK); \ 153 (C)->info |= CAVE_INNER; \ 154 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 157 #define place_outer_bold(Y, X) \ 159 set_cave_feat(Y,X,feat_wall_outer); \ 160 cave[Y][X].info &= ~(CAVE_MASK); \ 161 add_cave_info(Y,X,CAVE_OUTER); \ 162 delete_monster(Y, X); \ 165 #define place_outer_grid(C) \ 167 (C)->feat = feat_wall_outer; \ 168 (C)->info &= ~(CAVE_MASK); \ 169 (C)->info |= CAVE_OUTER; \ 170 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 173 #define place_outer_perm_bold(Y, X) \ 175 set_cave_feat(Y,X,feat_permanent); \ 176 cave[Y][X].info &= ~(CAVE_MASK); \ 177 add_cave_info(Y,X,CAVE_OUTER); \ 178 delete_monster(Y, X); \ 181 #define place_outer_perm_grid(C) \ 183 (C)->feat = feat_permanent; \ 184 (C)->info &= ~(CAVE_MASK); \ 185 (C)->info |= CAVE_OUTER; \ 186 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 189 #define place_outer_noperm_bold(Y, X) \ 191 feature_type *_f_ptr = &f_info[feat_wall_outer]; \ 192 if (permanent_wall(_f_ptr)) set_cave_feat(Y, X, (s16b)feat_state(feat_wall_outer, FF_UNPERM)); \ 193 else set_cave_feat(Y,X,feat_wall_outer); \ 194 cave[Y][X].info &= ~(CAVE_MASK); \ 195 add_cave_info(Y,X,(CAVE_OUTER | CAVE_VAULT)); \ 196 delete_monster(Y, X); \ 199 #define place_outer_noperm_grid(C) \ 201 feature_type *_f_ptr = &f_info[feat_wall_outer]; \ 202 if (permanent_wall(_f_ptr)) (C)->feat = (s16b)feat_state(feat_wall_outer, FF_UNPERM); \ 203 else (C)->feat = feat_wall_outer; \ 204 (C)->info &= ~(CAVE_MASK); \ 205 (C)->info |= (CAVE_OUTER | CAVE_VAULT); \ 206 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 209 #define place_solid_bold(Y, X) \ 211 set_cave_feat(Y,X,feat_wall_solid); \ 212 cave[Y][X].info &= ~(CAVE_MASK); \ 213 add_cave_info(Y,X,CAVE_SOLID); \ 214 delete_monster(Y, X); \ 217 #define place_solid_grid(C) \ 219 (C)->feat = feat_wall_solid; \ 220 (C)->info &= ~(CAVE_MASK); \ 221 (C)->info |= CAVE_SOLID; \ 222 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 225 #define place_solid_perm_bold(Y, X) \ 227 set_cave_feat(Y,X,feat_permanent); \ 228 cave[Y][X].info &= ~(CAVE_MASK); \ 229 add_cave_info(Y,X,CAVE_SOLID); \ 230 delete_monster(Y, X); \ 233 #define place_solid_perm_grid(C) \ 235 (C)->feat = feat_permanent; \ 236 (C)->info &= ~(CAVE_MASK); \ 237 (C)->info |= CAVE_SOLID; \ 238 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 241 #define place_solid_noperm_bold(Y, X) \ 243 feature_type *_f_ptr = &f_info[feat_wall_solid]; \ 244 if ((cave[Y][X].info & CAVE_VAULT) && permanent_wall(_f_ptr)) \ 245 set_cave_feat(Y, X, feat_state(feat_wall_solid, FF_UNPERM)); \ 246 else set_cave_feat(Y,X,feat_wall_solid); \ 247 cave[Y][X].info &= ~(CAVE_MASK); \ 248 add_cave_info(Y,X,CAVE_SOLID); \ 249 delete_monster(Y, X); \ 252 #define place_solid_noperm_grid(C) \ 254 feature_type *_f_ptr = &f_info[feat_wall_solid]; \ 255 if (((C)->info & CAVE_VAULT) && permanent_wall(_f_ptr)) \ 256 (C)->feat = feat_state(feat_wall_solid, FF_UNPERM); \ 257 else (C)->feat = feat_wall_solid; \ 258 (C)->info &= ~(CAVE_MASK); \ 259 (C)->info |= CAVE_SOLID; \ 260 if ((C)->m_idx) delete_monster_idx((C)->m_idx); \ 271 extern void place_floor(
int x1,
int x2,
int y1,
int y2,
bool light);
272 extern void place_room(
int x1,
int x2,
int y1,
int y2,
bool light);
276 extern void vault_traps(
int y,
int x,
int yd,
int xd,
int num);
278 extern void correct_dir(
int *rdir,
int *cdir,
int y1,
int x1,
int y2,
int x2);
280 extern void rand_dir(
int *rdir,
int *cdir);
285 extern bool build_tunnel(
int row1,
int col1,
int row2,
int col2);
286 extern bool build_tunnel2(
int x1,
int y1,
int x2,
int y2,
int type,
int cutoff);
bool build_tunnel2(int x1, int y1, int x2, int y2, int type, int cutoff)
特定の壁(永久壁など)を避けながら部屋間の通路を作成する / This routine maps a path from (x1, y1) to (x2, y2) avoiding SOLID wall...
Definition: grid.c:1118
void vault_objects(int y, int x, int num)
特殊な部屋向けに各種アイテムを配置する / Create up to "num" objects near the given coordinates
Definition: grid.c:334
void vault_traps(int y, int x, int yd, int xd, int num)
特殊な部屋向けに各種アイテムを配置する(メインルーチン) / Place some traps with a given displacement of given location
Definition: grid.c:461
bool new_player_spot(void)
新規フロアに入りたてのプレイヤーをランダムな場所に配置する / Returns random co-ordinates for player/monster/object
Definition: grid.c:24
void correct_dir(int *rdir, int *cdir, int y1, int x1, int y2, int x2)
build_tunnel用に通路を掘るための方向を位置関係通りに決める / Always picks a correct direction
Definition: grid.c:519
void place_random_door(int y, int x, bool room)
所定の位置にさまざまな状態や種類のドアを配置する / Place a random type of door at the given location
Definition: grid.c:138
void place_floor(int x1, int x2, int y1, int y2, bool light)
長方形の空洞を生成する / Make an empty square floor, for the middle of rooms
Definition: grid.c:279
void set_floor(int x, int y)
指定のマスを床地形に変える / Set a square to be floor.
Definition: grid.c:577
void vault_trap_aux(int y, int x, int yd, int xd)
特殊な部屋向けに各種アイテムを配置する(vault_trapのサブセット) / Place a trap with a given displacement of point
Definition: grid.c:405
bool build_tunnel(int row1, int col1, int row2, int col2)
部屋間のトンネルを生成する / Constructs a tunnel between two points
Definition: grid.c:632
void vault_monsters(int y1, int x1, int num)
特殊な部屋地形向けにモンスターを配置する / Hack – Place some sleeping monsters near the given location
Definition: grid.c:480
void rand_dir(int *rdir, int *cdir)
build_tunnel用に通路を掘るための方向をランダムに決める / Pick a random direction
Definition: grid.c:541
void place_random_stairs(int y, int x)
所定の位置に上り階段か下り階段を配置する / Place an up/down staircase at given location
Definition: grid.c:88
void place_closed_door(int y, int x, int type)
所定の位置に各種の閉じたドアを配置する / Place a random type of normal door at the given location.
Definition: grid.c:222
bool get_is_floor(int x, int y)
指定のマスが床系地形であるかを返す / Function that sees if a square is a floor.
Definition: grid.c:557
void place_room(int x1, int x2, int y1, int y2, bool light)
長方形の部屋を生成する / Make an empty square room, only floor and wall grids
Definition: grid.c:305