3 #include "system/angband.h"
5 extern floor_type floor_info;
8 * Grid based version of "creature_bold()"
10 #define player_grid(C, G) \
11 ((G) == &(C)->current_floor_ptr->grid_array[(C)->y][(C)->x])
14 #define cave_have_flag_grid(C,INDEX) \
15 (have_flag(f_info[(C)->feat].flags, (INDEX)))
19 * Determine if a "legal" grid is a "clean" floor grid
20 * Determine if terrain-change spells are allowed in a grid.
22 * Line 1 -- forbid non-floors
23 * Line 2 -- forbid object terrains
24 * Line 3 -- forbid normal objects
26 #define cave_clean_bold(F,Y,X) \
27 (cave_have_flag_bold((F), (Y), (X), FF_FLOOR) && \
28 !((F)->grid_array[Y][X].info & CAVE_OBJECT) && \
29 ((F)->grid_array[Y][X].o_idx == 0))
33 * Determine if an object can be dropped on a "legal" grid
35 * Line 1 -- forbid non-drops
36 * Line 2 -- forbid object terrains
38 #define cave_drop_bold(F,Y,X) \
39 (cave_have_flag_bold((F), (Y), (X), FF_DROP) && \
40 !((F)->grid_array[Y][X].info & CAVE_OBJECT))
44 * Determine if a "legal" grid is an "naked" floor grid
46 * Line 1 -- forbid non-clean gird
47 * Line 2 -- forbid monsters
48 * Line 3 -- forbid the player
50 #define cave_naked_bold(C,F,Y,X) \
51 (cave_clean_bold(F,Y,X) && \
52 !((F)->grid_array[Y][X].m_idx) && \
57 * Determine if a "legal" grid is "permanent"
59 * Line 1 -- permanent flag
61 #define cave_perma_bold(F,Y,X) \
62 (cave_have_flag_bold((F), (Y), (X), FF_PERMANENT))
66 * Grid based version of "cave_perma_bold()"
68 #define cave_perma_grid(C) \
69 (cave_have_flag_grid((C), FF_PERMANENT))
73 * Determine if a "legal" grid is within "los" of the player
75 * Note the use of comparison to zero to force a "boolean" result
77 #define player_has_los_grid(C) \
78 (((C)->info & (CAVE_VIEW)) != 0)
81 * Determine if a "feature" is "permanent wall"
83 #define permanent_wall(F) \
84 (have_flag((F)->flags, FF_WALL) && \
85 have_flag((F)->flags, FF_PERMANENT))
88 * Convert a "location" (Y,X) into a "grid" (G)
94 * Convert a "grid" (G) into a "location" (Y)
100 * Convert a "grid" (G) into a "location" (X)
105 bool pattern_tile(floor_type *floor_ptr, POSITION y, POSITION x);
106 void update_smell(floor_type *floor_ptr, player_type *subject_ptr);
107 void add_door(player_type *player_ptr, POSITION x, POSITION y);
108 void place_secret_door(player_type *player_ptr, POSITION y, POSITION x, int type);
109 void place_locked_door(player_type *player_ptr, POSITION y, POSITION x);
110 void forget_flow(floor_type *floor_ptr);
111 void place_random_stairs(player_type *player_ptr, POSITION y, POSITION x);
112 bool los(player_type *player_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2);
113 bool projectable(player_type *player_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2);
114 void vault_monsters(player_type *player_ptr, POSITION y1, POSITION x1, int num);
115 bool cave_valid_bold(floor_type *floor_ptr, POSITION y, POSITION x);
116 void cave_set_feat(player_type *player_ptr, POSITION y, POSITION x, FEAT_IDX feat);
117 void place_random_door(player_type *player_ptr, POSITION y, POSITION x, bool room);
118 void place_closed_door(player_type *player_ptr, POSITION y, POSITION x, int type);
119 void wipe_o_list(floor_type *floor_ptr);
120 void vault_trap_aux(player_type *player_ptr, POSITION y, POSITION x, POSITION yd, POSITION xd);
121 bool get_is_floor(floor_type *floor_ptr, POSITION x, POSITION y);
122 void try_door(player_type *player_ptr, POSITION y, POSITION x);
123 FEAT_IDX conv_dungeon_feat(floor_type *floor_ptr, FEAT_IDX newfeat);
124 void vault_objects(player_type *player_ptr, POSITION y, POSITION x, int num);
125 int project_path(player_type *player_ptr, u16b *gp, POSITION range, POSITION y1, POSITION x1, POSITION y2, POSITION x2, BIT_FLAGS flg);
126 void set_floor(player_type *player_ptr, POSITION x, POSITION y);
127 void place_object(player_type *owner_ptr, POSITION y, POSITION x, BIT_FLAGS mode);
128 void place_gold(player_type *player_ptr, POSITION y, POSITION x);
129 void delete_monster(player_type *player_ptr, POSITION y, POSITION x);
130 void compact_objects(player_type *owner_ptr, int size);
131 void vault_traps(player_type *player_ptr, POSITION y, POSITION x, POSITION yd, POSITION xd, int num);
132 void scatter(player_type *player_ptr, POSITION *yp, POSITION *xp, POSITION y, POSITION x, POSITION d, BIT_FLAGS mode);